From bfe4dd60330cc498a865f759417cf416e1cefe68 Mon Sep 17 00:00:00 2001 From: Dmitry Akimov Date: Mon, 6 Jul 2026 14:31:59 +0300 Subject: [PATCH] # Phase 5 - alpha-pyinstaller packed version of service-tui (Win tested) --- ...3bd2c585b0f4821__mypyc.cp313-win_amd64.pyd | Bin 0 -> 218624 bytes .../service_tui/_internal/_asyncio.pyd | Bin 0 -> 72928 bytes .../service_tui/_internal/_bz2.pyd | Bin 0 -> 86752 bytes .../_cffi_backend.cp313-win_amd64.pyd | Bin 0 -> 180224 bytes .../service_tui/_internal/_ctypes.pyd | Bin 0 -> 134368 bytes .../service_tui/_internal/_decimal.pyd | Bin 0 -> 286432 bytes .../service_tui/_internal/_hashlib.pyd | Bin 0 -> 69344 bytes .../service_tui/_internal/_lzma.pyd | Bin 0 -> 159456 bytes .../_internal/_multiprocessing.pyd | Bin 0 -> 38112 bytes .../service_tui/_internal/_overlapped.pyd | Bin 0 -> 57568 bytes .../service_tui/_internal/_queue.pyd | Bin 0 -> 35552 bytes .../_ruamel_yaml.cp313-win_amd64.pyd | Bin 0 -> 266240 bytes .../service_tui/_internal/_socket.pyd | Bin 0 -> 86752 bytes .../service_tui/_internal/_sqlite3.pyd | Bin 0 -> 131296 bytes .../service_tui/_internal/_ssl.pyd | Bin 0 -> 181984 bytes .../service_tui/_internal/_uuid.pyd | Bin 0 -> 27872 bytes .../service_tui/_internal/_wmi.pyd | Bin 0 -> 39648 bytes .../service_tui/_internal/app/app.tcss | 391 + .../service_tui/_internal/base_library.zip | Bin 0 -> 1409329 bytes .../service_tui/_internal/certifi/cacert.pem | 3863 +++ .../service_tui/_internal/certifi/py.typed | 0 .../charset_normalizer/cd.cp313-win_amd64.pyd | Bin 0 -> 10752 bytes .../charset_normalizer/md.cp313-win_amd64.pyd | Bin 0 -> 10752 bytes .../_internal/click-8.4.2.dist-info/INSTALLER | 1 + .../_internal/click-8.4.2.dist-info/METADATA | 84 + .../_internal/click-8.4.2.dist-info/RECORD | 24 + .../_internal/click-8.4.2.dist-info/REQUESTED | 0 .../_internal/click-8.4.2.dist-info/WHEEL | 4 + .../licenses/LICENSE.txt | 28 + .../crcmod/_crcfunext.cp313-win_amd64.pyd | Bin 0 -> 15872 bytes .../cryptography-46.0.7.dist-info/INSTALLER | 1 + .../cryptography-46.0.7.dist-info/METADATA | 139 + .../cryptography-46.0.7.dist-info/RECORD | 109 + .../cryptography-46.0.7.dist-info/REQUESTED | 0 .../cryptography-46.0.7.dist-info/WHEEL | 4 + .../licenses/LICENSE | 3 + .../licenses/LICENSE.APACHE | 202 + .../licenses/LICENSE.BSD | 27 + .../cryptography/hazmat/bindings/_rust.pyd | Bin 0 -> 9121280 bytes .../service_tui/_internal/data/dcd.bin | Bin 0 -> 1208 bytes .../_internal/data/ivt_flashloader.bin | Bin 0 -> 87104 bytes .../_internal/data/w25q128_fdcb.bin | Bin 0 -> 512 bytes .../_internal/data/w25q512_fdcb.bin | Bin 0 -> 512 bytes .../_internal/data/w25q64_fdcb.bin | Bin 0 -> 512 bytes .../INSTALLER | 1 + .../METADATA | 130 + .../importlib_metadata-8.9.0.dist-info/RECORD | 20 + .../REQUESTED | 0 .../importlib_metadata-8.9.0.dist-info/WHEEL | 5 + .../licenses/LICENSE | 73 + .../top_level.txt | 1 + .../service_tui/_internal/pyexpat.pyd | Bin 0 -> 221920 bytes .../service_tui/_internal/pyproject.toml | 26 + .../pyreadline3-3.5.6.dist-info/INSTALLER | 1 + .../pyreadline3-3.5.6.dist-info/METADATA | 110 + .../pyreadline3-3.5.6.dist-info/RECORD | 57 + .../pyreadline3-3.5.6.dist-info/REQUESTED | 0 .../pyreadline3-3.5.6.dist-info/WHEEL | 5 + .../licenses/LICENSE.md | 53 + .../pyreadline3-3.5.6.dist-info/top_level.txt | 2 + .../service_tui/_internal/select.pyd | Bin 0 -> 32992 bytes .../setuptools-80.10.2.dist-info/INSTALLER | 1 + .../setuptools-80.10.2.dist-info/METADATA | 141 + .../setuptools-80.10.2.dist-info/RECORD | 460 + .../setuptools-80.10.2.dist-info/REQUESTED | 0 .../setuptools-80.10.2.dist-info/WHEEL | 5 + .../entry_points.txt | 51 + .../licenses/LICENSE | 17 + .../top_level.txt | 3 + .../_vendor/jaraco/text/Lorem ipsum.txt | 2 + .../_internal/spsdk/apps/README.md | 26 + .../spsdk/data/common/certgen_config.yaml | 65 + .../spsdk/data/common/crypto/oscca.asn | 27 + .../spsdk/data/common/crypto/ultimaco_puk.asn | 25 + .../spsdk/data/common/database_defaults.yaml | 480 + .../spsdk/data/common/dice/fmc_template.yaml | 28 + .../spsdk/data/common/dice/tcg_dice.asn | 65 + .../common/fcb_flexspi_nor_modification.yaml | 508 + .../spsdk/data/common/memcfg/memcfg_data.yaml | 380 + .../data/common/memcfg/opt_word_emmc.json | 395 + .../common/memcfg/opt_word_flexspi_nand.json | 276 + .../common/memcfg/opt_word_flexspi_nor.json | 338 + .../memcfg/opt_word_flexspi_nor_legacy.json | 273 + .../data/common/memcfg/opt_word_mmc.json | 430 + .../spsdk/data/common/memcfg/opt_word_sd.json | 183 + .../common/memcfg/opt_word_semc_nand.json | 195 + .../data/common/memcfg/opt_word_semc_nor.json | 289 + .../data/common/memcfg/opt_word_spi_nor.json | 356 + .../memcfg/opt_word_spi_nor_legacy.json | 267 + .../data/common/memcfg/opt_word_xspi_nor.json | 318 + .../spsdk/data/common/pfrc_rules.yaml | 77 + .../spsdk/data/common/uuu/emmc_burn_all.lst | 38 + .../data/common/uuu/emmc_burn_loader.lst | 35 + .../spsdk/data/common/uuu/fat_write.lst | 12 + .../data/common/uuu/fspinand_burn_loader.lst | 36 + .../data/common/uuu/nand_burn_loader.lst | 35 + .../spsdk/data/common/uuu/nvme_burn_all.lst | 34 + .../data/common/uuu/qspi_burn_loader.lst | 43 + .../spsdk/data/common/uuu/sd_burn_all.lst | 35 + .../spsdk/data/common/uuu/sd_burn_loader.lst | 33 + .../spsdk/data/common/uuu/spl_boot.lst | 26 + .../data/common/xmcd/flexspi_ram_full.json | 2075 ++ .../data/common/xmcd/flexspi_ram_header.json | 89 + .../common/xmcd/flexspi_ram_simplified.json | 312 + .../data/common/xmcd/semc_sdram_full.json | 715 + .../data/common/xmcd/semc_sdram_header.json | 89 + .../common/xmcd/semc_sdram_simplified.json | 178 + .../data/common/xmcd/xspi_ram_header.json | 96 + .../data/common/xmcd/xspi_ram_simplified.json | 310 + .../spsdk/data/devices/k32w148/database.yaml | 28 + .../data/devices/k32w148/ifr_romcfg_a0.json | 1347 + .../data/devices/k32w148/ifr_romcfg_a1.json | 1422 + .../data/devices/k32w148/ifr_romcfg_a2.json | 1422 + .../data/devices/kw45b41z5/database.yaml | 36 + .../data/devices/kw45b41z8/database.yaml | 211 + .../spsdk/data/devices/kw45b41z8/fuses.json | 1015 + .../devices/kw45b41z8/ifr_cmactable_a0.json | 188 + .../data/devices/kw45b41z8/ifr_romcfg_a0.json | 1382 + .../data/devices/kw45b41z8/ifr_romcfg_a1.json | 1457 + .../data/devices/kw45b41z8/ifr_romcfg_a2.json | 1457 + .../spsdk/data/devices/kw45b41z8/tz.json | 2213 ++ .../data/devices/kw45z41052/database.yaml | 5 + .../data/devices/kw45z41053/database.yaml | 5 + .../data/devices/kw45z41082/database.yaml | 5 + .../data/devices/kw45z41083/database.yaml | 5 + .../data/devices/kw47b42z83/database.yaml | 17 + .../data/devices/kw47b42z96/database.yaml | 17 + .../data/devices/kw47b42z97/database.yaml | 17 + .../data/devices/kw47b42zb2/database.yaml | 17 + .../data/devices/kw47b42zb3/database.yaml | 17 + .../data/devices/kw47b42zb6/database.yaml | 17 + .../data/devices/kw47b42zb7/database.yaml | 197 + .../spsdk/data/devices/kw47b42zb7/fuses.json | 1434 + .../devices/kw47b42zb7/ifr_cmactable_a0.json | 188 + .../devices/kw47b42zb7/ifr_romcfg_a0.json | 1462 + .../devices/kw47b42zb7/ifr_romcfg_a1.json | 1727 ++ .../devices/kw47b42zb7/ifr_romcfg_a2.1.json | 1771 ++ .../spsdk/data/devices/kw47b42zb7/tz.json | 2725 ++ .../data/devices/kw47z42082/database.yaml | 17 + .../data/devices/kw47z42092/database.yaml | 17 + .../data/devices/kw47z420b2/database.yaml | 17 + .../data/devices/kw47z420b3/database.yaml | 17 + .../spsdk/data/devices/lpc5502/database.yaml | 26 + .../spsdk/data/devices/lpc5504/database.yaml | 26 + .../spsdk/data/devices/lpc5506/database.yaml | 103 + .../spsdk/data/devices/lpc5506/pfr_cfpa.json | 1129 + .../spsdk/data/devices/lpc5506/pfr_cmpa.json | 1517 + .../spsdk/data/devices/lpc5512/database.yaml | 26 + .../spsdk/data/devices/lpc5514/database.yaml | 26 + .../spsdk/data/devices/lpc5516/database.yaml | 18 + .../spsdk/data/devices/lpc5516/pfr_cmpa.json | 1544 + .../spsdk/data/devices/lpc5526/database.yaml | 110 + .../spsdk/data/devices/lpc5526/pfr_cfpa.json | 1129 + .../spsdk/data/devices/lpc5526/pfr_cmpa.json | 1471 + .../spsdk/data/devices/lpc5528/database.yaml | 27 + .../spsdk/data/devices/lpc5534/database.yaml | 144 + .../data/devices/lpc5534/fcb_flexspi_nor.json | 25587 +++++++++++++++ .../spsdk/data/devices/lpc5534/fuses.json | 172 + .../data/devices/lpc5534/pfr_cfpa_0a.json | 1367 + .../data/devices/lpc5534/pfr_cfpa_1a.json | 1039 + .../data/devices/lpc5534/pfr_cmpa_0a.json | 2122 ++ .../data/devices/lpc5534/pfr_cmpa_1a.json | 2181 ++ .../spsdk/data/devices/lpc5536/database.yaml | 26 + .../spsdk/data/devices/lpc55s04/database.yaml | 30 + .../spsdk/data/devices/lpc55s06/database.yaml | 195 + .../spsdk/data/devices/lpc55s06/pfr_cfpa.json | 1666 + .../spsdk/data/devices/lpc55s06/pfr_cmpa.json | 2141 ++ .../data/devices/lpc55s06/pfrc_rules.yaml | 19 + .../spsdk/data/devices/lpc55s06/tz.json | 837 + .../spsdk/data/devices/lpc55s14/database.yaml | 31 + .../spsdk/data/devices/lpc55s16/database.yaml | 195 + .../spsdk/data/devices/lpc55s16/pfr_cfpa.json | 1666 + .../spsdk/data/devices/lpc55s16/pfr_cmpa.json | 2187 ++ .../data/devices/lpc55s16/pfrc_rules.yaml | 19 + .../spsdk/data/devices/lpc55s16/tz.json | 837 + .../spsdk/data/devices/lpc55s26/database.yaml | 189 + .../spsdk/data/devices/lpc55s26/pfr_cfpa.json | 1600 + .../spsdk/data/devices/lpc55s26/pfr_cmpa.json | 1994 ++ .../data/devices/lpc55s26/pfrc_rules.yaml | 19 + .../spsdk/data/devices/lpc55s28/database.yaml | 34 + .../spsdk/data/devices/lpc55s36/database.yaml | 345 + .../data/devices/lpc55s36/dice_had_a1.json | 522 + .../devices/lpc55s36/fcb_flexspi_nor.json | 25617 +++++++++++++++ .../spsdk/data/devices/lpc55s36/fuses.json | 236 + .../data/devices/lpc55s36/pfr_cfpa_a0.json | 1710 + .../data/devices/lpc55s36/pfr_cfpa_a1.json | 1723 ++ .../data/devices/lpc55s36/pfr_cmpa_a0.json | 3191 ++ .../data/devices/lpc55s36/pfr_cmpa_a1.json | 3535 +++ .../data/devices/lpc55s36/pfrc_rules.yaml | 18 + .../spsdk/data/devices/lpc55s36/tz_a0.json | 1013 + .../spsdk/data/devices/lpc55s36/tz_a1.json | 1125 + .../spsdk/data/devices/lpc55s66/database.yaml | 30 + .../spsdk/data/devices/lpc55s69/database.yaml | 196 + .../spsdk/data/devices/lpc55s69/pfr_cfpa.json | 1738 ++ .../spsdk/data/devices/lpc55s69/pfr_cmpa.json | 2132 ++ .../data/devices/lpc55s69/pfrc_rules.yaml | 19 + .../spsdk/data/devices/lpc55s69/tz_a0.json | 933 + .../spsdk/data/devices/lpc55s69/tz_a1.json | 941 + .../spsdk/data/devices/lpc804/database.yaml | 35 + .../spsdk/data/devices/lpc810/database.yaml | 33 + .../spsdk/data/devices/lpc812/database.yaml | 32 + .../spsdk/data/devices/lpc845/database.yaml | 34 + .../spsdk/data/devices/lpc865/database.yaml | 33 + .../data/devices/mc56f81646/database.yaml | 5 + .../data/devices/mc56f81648/database.yaml | 17 + .../data/devices/mc56f81666/database.yaml | 5 + .../data/devices/mc56f81668/database.yaml | 8 + .../data/devices/mc56f81746/database.yaml | 5 + .../data/devices/mc56f81748/database.yaml | 17 + .../data/devices/mc56f81766/database.yaml | 5 + .../spsdk/data/devices/mc56f81768/bca.json | 260 + .../data/devices/mc56f81768/database.yaml | 87 + .../spsdk/data/devices/mc56f81768/fcf.json | 147 + .../spsdk/data/devices/mc56f81768/ifr_ns.json | 121 + .../data/devices/mc56f81866/database.yaml | 5 + .../spsdk/data/devices/mc56f81868/bca.json | 260 + .../data/devices/mc56f81868/database.yaml | 95 + .../spsdk/data/devices/mc56f81868/fcf.json | 147 + .../spsdk/data/devices/mc56f81868/ifr_s.json | 165 + .../spsdk/data/devices/mcxa132/database.yaml | 21 + .../spsdk/data/devices/mcxa133/database.yaml | 21 + .../spsdk/data/devices/mcxa142/database.yaml | 95 + .../spsdk/data/devices/mcxa142/pfr_cmpa.json | 1756 ++ .../spsdk/data/devices/mcxa143/database.yaml | 17 + .../spsdk/data/devices/mcxa144/database.yaml | 17 + .../spsdk/data/devices/mcxa145/database.yaml | 17 + .../spsdk/data/devices/mcxa146/database.yaml | 17 + .../spsdk/data/devices/mcxa152/database.yaml | 17 + .../spsdk/data/devices/mcxa153/database.yaml | 17 + .../spsdk/data/devices/mcxa154/database.yaml | 17 + .../spsdk/data/devices/mcxa155/database.yaml | 17 + .../spsdk/data/devices/mcxa156/database.yaml | 93 + .../spsdk/data/devices/mcxa156/pfr_cmpa.json | 4200 +++ .../spsdk/data/devices/mcxa173/database.yaml | 21 + .../spsdk/data/devices/mcxa174/database.yaml | 25 + .../spsdk/data/devices/mcxa175/database.yaml | 17 + .../spsdk/data/devices/mcxa176/database.yaml | 17 + .../spsdk/data/devices/mcxa185/database.yaml | 28 + .../spsdk/data/devices/mcxa186/database.yaml | 27 + .../spsdk/data/devices/mcxa255/database.yaml | 115 + .../spsdk/data/devices/mcxa255/pfr_cmpa.json | 7775 +++++ .../spsdk/data/devices/mcxa256/database.yaml | 27 + .../spsdk/data/devices/mcxa265/database.yaml | 27 + .../spsdk/data/devices/mcxa266/database.yaml | 27 + .../spsdk/data/devices/mcxa343/database.yaml | 88 + .../spsdk/data/devices/mcxa343/pfr_cmpa.json | 2700 ++ .../spsdk/data/devices/mcxa344/database.yaml | 25 + .../spsdk/data/devices/mcxa345/database.yaml | 26 + .../spsdk/data/devices/mcxa346/database.yaml | 98 + .../spsdk/data/devices/mcxa346/pfr_cmpa.json | 7736 +++++ .../spsdk/data/devices/mcxa355/database.yaml | 30 + .../spsdk/data/devices/mcxa356/database.yaml | 31 + .../spsdk/data/devices/mcxa365/database.yaml | 26 + .../spsdk/data/devices/mcxa366/database.yaml | 118 + .../spsdk/data/devices/mcxa366/pfr_cmpa.json | 7775 +++++ .../spsdk/data/devices/mcxc041/bca.json | 309 + .../spsdk/data/devices/mcxc041/database.yaml | 71 + .../spsdk/data/devices/mcxc041/fcf.json | 336 + .../spsdk/data/devices/mcxc141/bca.json | 327 + .../spsdk/data/devices/mcxc141/database.yaml | 69 + .../spsdk/data/devices/mcxc141/fcf.json | 336 + .../spsdk/data/devices/mcxc142/database.yaml | 21 + .../spsdk/data/devices/mcxc143/database.yaml | 25 + .../spsdk/data/devices/mcxc144/database.yaml | 25 + .../spsdk/data/devices/mcxc242/database.yaml | 21 + .../spsdk/data/devices/mcxc243/database.yaml | 25 + .../spsdk/data/devices/mcxc244/database.yaml | 25 + .../spsdk/data/devices/mcxc443/database.yaml | 25 + .../spsdk/data/devices/mcxc444/database.yaml | 25 + .../spsdk/data/devices/mcxe245/database.yaml | 62 + .../spsdk/data/devices/mcxe245/fcf.json | 562 + .../spsdk/data/devices/mcxe246/database.yaml | 5 + .../spsdk/data/devices/mcxe247/database.yaml | 5 + .../spsdk/data/devices/mcxe315/database.yaml | 21 + .../spsdk/data/devices/mcxe316/database.yaml | 26 + .../spsdk/data/devices/mcxe317/database.yaml | 25 + .../spsdk/data/devices/mcxe31b/database.yaml | 92 + .../spsdk/data/devices/mcxl253/database.yaml | 27 + .../spsdk/data/devices/mcxl254/database.yaml | 27 + .../spsdk/data/devices/mcxl255/database.yaml | 118 + .../spsdk/data/devices/mcxl255/pfr_cmpa.json | 4591 +++ .../spsdk/data/devices/mcxn235/database.yaml | 39 + .../spsdk/data/devices/mcxn236/database.yaml | 344 + .../spsdk/data/devices/mcxn236/fuses.json | 2769 ++ .../spsdk/data/devices/mcxn236/pfr_cfpa.json | 4377 +++ .../spsdk/data/devices/mcxn236/pfr_cmpa.json | 3393 ++ .../spsdk/data/devices/mcxn236/tz.json | 1661 + .../spsdk/data/devices/mcxn247/database.yaml | 6 + .../spsdk/data/devices/mcxn526/database.yaml | 6 + .../spsdk/data/devices/mcxn527/database.yaml | 6 + .../spsdk/data/devices/mcxn536/database.yaml | 6 + .../spsdk/data/devices/mcxn537/database.yaml | 6 + .../spsdk/data/devices/mcxn546/database.yaml | 8 + .../spsdk/data/devices/mcxn547/database.yaml | 8 + .../spsdk/data/devices/mcxn556s/database.yaml | 396 + .../spsdk/data/devices/mcxn556s/fuses.json | 3186 ++ .../spsdk/data/devices/mcxn556s/pfr_cfpa.json | 5119 +++ .../spsdk/data/devices/mcxn556s/pfr_cmpa.json | 3674 +++ .../spsdk/data/devices/mcxn557s/database.yaml | 13 + .../spsdk/data/devices/mcxn946/database.yaml | 487 + .../data/devices/mcxn946/dice_had_a1.json | 1068 + .../data/devices/mcxn946/fcb_flexspi_nor.json | 25587 +++++++++++++++ .../spsdk/data/devices/mcxn946/fuses.json | 3341 ++ .../data/devices/mcxn946/pfr_cfpa_a0.json | 2399 ++ .../data/devices/mcxn946/pfr_cfpa_a1.json | 6300 ++++ .../data/devices/mcxn946/pfr_cmpa_a0.json | 4368 +++ .../data/devices/mcxn946/pfr_cmpa_a1.json | 4693 +++ .../spsdk/data/devices/mcxn946/tz_a0.json | 1525 + .../spsdk/data/devices/mcxn946/tz_a1.json | 1973 ++ .../spsdk/data/devices/mcxn947/database.yaml | 47 + .../spsdk/data/devices/mcxw235/database.yaml | 37 + .../spsdk/data/devices/mcxw236/database.yaml | 182 + .../spsdk/data/devices/mcxw236/pfr_cfpa.json | 1523 + .../spsdk/data/devices/mcxw236/pfr_cmpa.json | 4261 +++ .../spsdk/data/devices/mcxw236/tz.json | 861 + .../spsdk/data/devices/mcxw716a/database.yaml | 17 + .../spsdk/data/devices/mcxw716c/database.yaml | 11 + .../spsdk/data/devices/mcxw727a/database.yaml | 21 + .../spsdk/data/devices/mcxw727c/database.yaml | 21 + .../spsdk/data/devices/mcxw727d/database.yaml | 21 + .../spsdk/data/devices/mimx28/database.yaml | 29 + .../spsdk/data/devices/mimx8dxl/database.yaml | 116 + .../spsdk/data/devices/mimx8m/database.yaml | 28 + .../spsdk/data/devices/mimx8mm/database.yaml | 27 + .../spsdk/data/devices/mimx8mn/database.yaml | 28 + .../spsdk/data/devices/mimx8mp/database.yaml | 28 + .../spsdk/data/devices/mimx8qm/database.yaml | 111 + .../spsdk/data/devices/mimx8qxp/database.yaml | 109 + .../spsdk/data/devices/mimx8ulp/database.yaml | 296 + .../spsdk/data/devices/mimx8x/database.yaml | 29 + .../spsdk/data/devices/mimx9131/database.yaml | 243 + .../spsdk/data/devices/mimx9131/fuses.json | 10176 ++++++ .../spsdk/data/devices/mimx9352/database.yaml | 358 + .../devices/mimx9352/fcb_flexspi_nor.json | 1621 + .../spsdk/data/devices/mimx9352/fuses.json | 9828 ++++++ .../spsdk/data/devices/mimx943/database.yaml | 408 + .../spsdk/data/devices/mimx943/fuses.json | 12918 ++++++++ .../data/devices/mimx95294/database.yaml | 454 + .../spsdk/data/devices/mimx95294/fuses.json | 11632 +++++++ .../spsdk/data/devices/mimx9596/database.yaml | 538 + .../devices/mimx9596/fcb_flexspi_nor.json | 25685 ++++++++++++++++ .../spsdk/data/devices/mimx9596/fuses.json | 11246 +++++++ .../data/devices/mimxrt1010/database.yaml | 141 + .../devices/mimxrt1010/fcb_flexspi_nor.json | 25588 +++++++++++++++ .../spsdk/data/devices/mimxrt1010/fuses.json | 2350 ++ .../data/devices/mimxrt1015/database.yaml | 127 + .../devices/mimxrt1015/fcb_flexspi_nor.json | 25568 +++++++++++++++ .../spsdk/data/devices/mimxrt1015/fuses.json | 2568 ++ .../data/devices/mimxrt1020/database.yaml | 5 + .../data/devices/mimxrt1024/database.yaml | 161 + .../devices/mimxrt1024/fcb_flexspi_nor.json | 25568 +++++++++++++++ .../spsdk/data/devices/mimxrt1024/fuses.json | 2568 ++ .../data/devices/mimxrt1040/database.yaml | 55 + .../spsdk/data/devices/mimxrt1040/fuses.json | 2868 ++ .../data/devices/mimxrt1043/database.yaml | 5 + .../data/devices/mimxrt1046/database.yaml | 5 + .../data/devices/mimxrt1050/database.yaml | 49 + .../spsdk/data/devices/mimxrt1050/fuses.json | 2568 ++ .../data/devices/mimxrt1060/database.yaml | 58 + .../data/devices/mimxrt1064/database.yaml | 61 + .../spsdk/data/devices/mimxrt1064/fuses.json | 2868 ++ .../data/devices/mimxrt1165/database.yaml | 5 + .../data/devices/mimxrt1166/database.yaml | 277 + .../devices/mimxrt1166/fcb_flexspi_nor.json | 25568 +++++++++++++++ .../spsdk/data/devices/mimxrt1166/fuses.json | 5393 ++++ .../data/devices/mimxrt1171/database.yaml | 5 + .../data/devices/mimxrt1172/database.yaml | 54 + .../data/devices/mimxrt1173/database.yaml | 5 + .../data/devices/mimxrt1175/database.yaml | 5 + .../data/devices/mimxrt1176/database.yaml | 68 + .../data/devices/mimxrt1181/database.yaml | 5 + .../data/devices/mimxrt1182/database.yaml | 69 + .../data/devices/mimxrt1186/database.yaml | 13 + .../data/devices/mimxrt1187/database.yaml | 5 + .../data/devices/mimxrt1189/database.yaml | 315 + .../devices/mimxrt1189/fcb_flexspi_nor.json | 25685 ++++++++++++++++ .../spsdk/data/devices/mimxrt1189/fuses.json | 3592 +++ .../data/devices/mimxrt533s/database.yaml | 37 + .../spsdk/data/devices/mimxrt533s/tz.json | 2293 ++ .../data/devices/mimxrt555s/database.yaml | 5 + .../data/devices/mimxrt595s/database.yaml | 322 + .../devices/mimxrt595s/fcb_flexspi_nor.json | 25599 +++++++++++++++ .../spsdk/data/devices/mimxrt595s/fuses.json | 3975 +++ .../spsdk/data/devices/mimxrt595s/tz.json | 2293 ++ .../data/devices/mimxrt685s/database.yaml | 57 + .../devices/mimxrt685s/fcb_flexspi_nor.json | 25599 +++++++++++++++ .../spsdk/data/devices/mimxrt685s/fuses.json | 3939 +++ .../spsdk/data/devices/mimxrt685s/tz_a0.json | 2005 ++ .../spsdk/data/devices/mimxrt685s/tz_b0.json | 2117 ++ .../data/devices/mimxrt735s/database.yaml | 22 + .../data/devices/mimxrt758s/database.yaml | 5 + .../data/devices/mimxrt798s/database.yaml | 496 + .../devices/mimxrt798s/fcb_xspi_nor_a0.json | 2101 ++ .../devices/mimxrt798s/fcb_xspi_nor_b0.json | 2091 ++ .../data/devices/mimxrt798s/fuses_a0.json | 4741 +++ .../data/devices/mimxrt798s/fuses_b0.json | 5978 ++++ .../spsdk/data/devices/mimxrt798s/tz.json | 5253 ++++ .../spsdk/data/devices/mwct2012/database.yaml | 32 + .../data/devices/mwct2012a/database.yaml | 5 + .../data/devices/mwct2014s/database.yaml | 5 + .../data/devices/mwct2015s/database.yaml | 5 + .../data/devices/mwct2016s/database.yaml | 5 + .../spsdk/data/devices/mwct20d2/database.yaml | 22 + .../spsdk/data/devices/mwct20d2/ifr.json | 149 + .../data/devices/mwct20d2a/database.yaml | 5 + .../data/devices/mwct2d16s/database.yaml | 5 + .../data/devices/mwct2d17s/database.yaml | 37 + .../spsdk/data/devices/nhs52s04/database.yaml | 184 + .../spsdk/data/devices/nhs52s04/pfr_cfpa.json | 1523 + .../spsdk/data/devices/nhs52s04/pfr_cmpa.json | 4261 +++ .../spsdk/data/devices/nhs52s04/tz.json | 861 + .../spsdk/data/devices/rw610/database.yaml | 5 + .../spsdk/data/devices/rw612/database.yaml | 250 + .../data/devices/rw612/fcb_flexspi_nor.json | 25599 +++++++++++++++ .../spsdk/data/devices/rw612/fuses.json | 5392 ++++ .../spsdk/data/devices/rw612/tz.json | 1933 ++ .../spsdk/data/jsonschemas/sch_ahab.yaml | 882 + .../spsdk/data/jsonschemas/sch_bca.yaml | 14 + .../spsdk/data/jsonschemas/sch_bee.yaml | 149 + .../spsdk/data/jsonschemas/sch_binary.yaml | 113 + .../data/jsonschemas/sch_bootable_image.yaml | 277 + .../data/jsonschemas/sch_cert_block.yaml | 282 + .../spsdk/data/jsonschemas/sch_dat.yaml | 308 + .../spsdk/data/jsonschemas/sch_devhsm.yaml | 122 + .../spsdk/data/jsonschemas/sch_el2go_tp.yaml | 182 + .../spsdk/data/jsonschemas/sch_fcb.yaml | 25 + .../spsdk/data/jsonschemas/sch_fcf.yaml | 14 + .../spsdk/data/jsonschemas/sch_fuses.yaml | 11 + .../spsdk/data/jsonschemas/sch_general.yaml | 20 + .../spsdk/data/jsonschemas/sch_hab.yaml | 559 + .../spsdk/data/jsonschemas/sch_hse.yaml | 620 + .../spsdk/data/jsonschemas/sch_iee.yaml | 260 + .../spsdk/data/jsonschemas/sch_mbi.yaml | 584 + .../spsdk/data/jsonschemas/sch_memcfg.yaml | 31 + .../spsdk/data/jsonschemas/sch_otfad.yaml | 182 + .../spsdk/data/jsonschemas/sch_pfr.yaml | 31 + .../spsdk/data/jsonschemas/sch_sb21.yaml | 611 + .../spsdk/data/jsonschemas/sch_sb31.yaml | 579 + .../spsdk/data/jsonschemas/sch_sb40.yaml | 93 + .../spsdk/data/jsonschemas/sch_sbc.yaml | 181 + .../spsdk/data/jsonschemas/sch_sbx.yaml | 197 + .../data/jsonschemas/sch_shadow_regs.yaml | 11 + .../spsdk/data/jsonschemas/sch_she_scec.yaml | 129 + .../data/jsonschemas/sch_signed_msg.yaml | 563 + .../spsdk/data/jsonschemas/sch_tlv_blob.yaml | 286 + .../spsdk/data/jsonschemas/sch_tz.yaml | 160 + .../spsdk/data/jsonschemas/sch_wpc.yaml | 137 + .../spsdk/data/jsonschemas/sch_xmcd.yaml | 35 + .../_internal/spsdk/data/readme.md | 230 + .../service_tui/_internal/spsdk/py.typed | 0 .../spsdk/sbfile/sb2/bd_ebnf_grammar.txt | 174 + .../_internal/spsdk/sbfile/sb2/bd_grammer.txt | 210 + .../textual-8.2.7.dist-info/INSTALLER | 1 + .../textual-8.2.7.dist-info/METADATA | 266 + .../_internal/textual-8.2.7.dist-info/RECORD | 270 + .../textual-8.2.7.dist-info/REQUESTED | 0 .../_internal/textual-8.2.7.dist-info/WHEEL | 4 + .../textual-8.2.7.dist-info/licenses/LICENSE | 21 + .../service_tui/_internal/unicodedata.pyd | Bin 0 -> 712928 bytes .../service_tui/_internal/wcwidth/py.typed | 0 .../_internal/yaml/_yaml.cp313-win_amd64.pyd | Bin 0 -> 253952 bytes .../custom_binaries/TFT_BOOTLOADER_NEW.bin | Bin 0 -> 39676 bytes .../custom_binaries/TFT_BOOTLOADER_OLD.bin | Bin 0 -> 47432 bytes .../custom_binaries/firmware_test_debug.bin | Bin 0 -> 131928 bytes 464 files changed, 639322 insertions(+) create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/81d243bd2c585b0f4821__mypyc.cp313-win_amd64.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_asyncio.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_bz2.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_cffi_backend.cp313-win_amd64.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_ctypes.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_decimal.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_hashlib.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_lzma.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_multiprocessing.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_overlapped.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_queue.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_ruamel_yaml.cp313-win_amd64.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_socket.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_sqlite3.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_ssl.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_uuid.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_wmi.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/app/app.tcss create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/base_library.zip create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/certifi/cacert.pem create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/certifi/py.typed create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/charset_normalizer/cd.cp313-win_amd64.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/charset_normalizer/md.cp313-win_amd64.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/INSTALLER create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/METADATA create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/RECORD create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/REQUESTED create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/WHEEL create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/licenses/LICENSE.txt create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/crcmod/_crcfunext.cp313-win_amd64.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/INSTALLER create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/METADATA create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/RECORD create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/REQUESTED create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/WHEEL create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.APACHE create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.BSD create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography/hazmat/bindings/_rust.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/dcd.bin create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/ivt_flashloader.bin create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/w25q128_fdcb.bin create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/w25q512_fdcb.bin create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/w25q64_fdcb.bin create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/INSTALLER create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/METADATA create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/RECORD create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/REQUESTED create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/WHEEL create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/licenses/LICENSE create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/top_level.txt create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyexpat.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyproject.toml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/INSTALLER create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/METADATA create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/RECORD create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/REQUESTED create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/WHEEL create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/licenses/LICENSE.md create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/top_level.txt create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/select.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/INSTALLER create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/METADATA create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/RECORD create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/REQUESTED create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/WHEEL create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/entry_points.txt create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/licenses/LICENSE create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/top_level.txt create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/apps/README.md create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/certgen_config.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/crypto/oscca.asn create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/crypto/ultimaco_puk.asn create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/database_defaults.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/dice/fmc_template.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/dice/tcg_dice.asn create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/fcb_flexspi_nor_modification.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/memcfg_data.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_emmc.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nand.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nor_legacy.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_mmc.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_sd.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_semc_nand.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_semc_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_spi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_spi_nor_legacy.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_xspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/pfrc_rules.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/emmc_burn_all.lst create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/emmc_burn_loader.lst create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/fat_write.lst create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/fspinand_burn_loader.lst create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/nand_burn_loader.lst create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/nvme_burn_all.lst create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/qspi_burn_loader.lst create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/sd_burn_all.lst create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/sd_burn_loader.lst create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/spl_boot.lst create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_full.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_header.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_simplified.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_full.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_header.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_simplified.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/xspi_ram_header.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/xspi_ram_simplified.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a2.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z5/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_cmactable_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a2.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41052/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41053/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41082/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41083/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z83/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z96/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z97/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb2/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb3/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb6/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_cmactable_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a2.1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z42082/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z42092/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z420b2/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z420b3/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5502/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5504/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/pfr_cfpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5512/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5514/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5516/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5516/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/pfr_cfpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5528/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cfpa_0a.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cfpa_1a.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cmpa_0a.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cmpa_1a.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5536/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s04/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfr_cfpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfrc_rules.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s14/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfr_cfpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfrc_rules.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfr_cfpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfrc_rules.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s28/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/dice_had_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cfpa_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cfpa_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cmpa_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cmpa_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfrc_rules.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/tz_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/tz_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s66/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfr_cfpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfrc_rules.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/tz_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/tz_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc804/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc810/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc812/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc845/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc865/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81646/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81648/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81666/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81668/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81746/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81748/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81766/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/bca.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/fcf.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/ifr_ns.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81866/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/bca.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/fcf.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/ifr_s.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa132/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa133/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa142/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa142/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa143/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa144/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa145/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa146/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa152/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa153/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa154/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa155/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa156/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa156/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa173/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa174/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa175/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa176/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa185/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa186/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa255/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa255/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa256/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa265/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa266/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa343/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa343/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa344/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa345/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa346/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa346/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa355/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa356/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa365/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa366/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa366/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/bca.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/fcf.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/bca.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/fcf.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc142/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc143/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc144/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc242/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc243/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc244/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc443/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc444/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe245/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe245/fcf.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe246/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe247/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe315/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe316/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe317/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe31b/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl253/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl254/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl255/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl255/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn235/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/pfr_cfpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn247/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn526/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn527/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn536/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn537/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn546/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn547/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/pfr_cfpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn557s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/dice_had_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cfpa_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cfpa_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cmpa_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cmpa_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/tz_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/tz_a1.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn947/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw235/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/pfr_cfpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw716a/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw716c/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727a/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727c/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727d/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx28/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8dxl/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8m/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mm/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mn/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mp/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8qm/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8qxp/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8ulp/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8x/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9131/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9131/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx943/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx943/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx95294/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx95294/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1020/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1040/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1040/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1043/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1046/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1050/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1050/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1060/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1064/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1064/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1165/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1171/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1172/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1173/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1175/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1176/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1181/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1182/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1186/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1187/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt533s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt533s/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt555s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/tz_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/tz_b0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt735s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt758s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fcb_xspi_nor_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fcb_xspi_nor_b0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fuses_a0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fuses_b0.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2012/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2012a/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2014s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2015s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2016s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2/ifr.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2a/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2d16s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2d17s/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/pfr_cfpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/pfr_cmpa.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw610/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/database.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/fcb_flexspi_nor.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/fuses.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/tz.json create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_ahab.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bca.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bee.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_binary.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bootable_image.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_cert_block.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_dat.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_devhsm.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_el2go_tp.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fcb.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fcf.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fuses.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_general.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_hab.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_hse.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_iee.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_mbi.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_memcfg.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_otfad.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_pfr.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb21.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb31.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb40.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sbc.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sbx.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_shadow_regs.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_she_scec.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_signed_msg.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_tlv_blob.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_tz.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_wpc.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_xmcd.yaml create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/readme.md create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/py.typed create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/sbfile/sb2/bd_ebnf_grammar.txt create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/sbfile/sb2/bd_grammer.txt create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/INSTALLER create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/METADATA create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/RECORD create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/REQUESTED create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/WHEEL create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/licenses/LICENSE create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/unicodedata.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/wcwidth/py.typed create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/yaml/_yaml.cp313-win_amd64.pyd create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/custom_binaries/TFT_BOOTLOADER_NEW.bin create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/custom_binaries/TFT_BOOTLOADER_OLD.bin create mode 100644 tools/production/dist/service-tui-v0.2.0-windows/service_tui/custom_binaries/firmware_test_debug.bin diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/81d243bd2c585b0f4821__mypyc.cp313-win_amd64.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/81d243bd2c585b0f4821__mypyc.cp313-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..4b9f69dd7ddfb7b8ae40e8efe6751f8b5d35f0f3 GIT binary patch literal 218624 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

dX(0d~Xo9(0i5m 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 E0RP@O!~g&Q literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_bz2.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_bz2.pyd new file mode 100644 index 0000000000000000000000000000000000000000..34ae33ef83091931916517b3f877c9156729ae3a GIT binary patch literal 86752 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

y%+bSvEC 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�*|>%wI9QFlL14niiUu4IN=jIAh%` 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 SdL8d)AGZGP`a-uc_Wuj>=0ZvU literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_decimal.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_decimal.pyd new file mode 100644 index 0000000000000000000000000000000000000000..10de2c5814256c6db7addd9a65a27063cb085b38 GIT binary patch literal 286432 zcmd?Sd3;pW8TdVu1;P?;5TbFbQKOBGOBAZXfX+Y$?!XM72x1F@f{Ilu!i*xa1ZPGw zxsK4*wbiO!(b~Er;Fb_b0s#_m12@2>-f>U^DhY1$exGyiBoj7m-@d=!A1@!x+e+=eXI+2Qtjn$|oOao-e|>$R@bW7PX9a&{b8lk-@t$;QX9E>UT&^j`}?}Crka7=Q#Pjmwb)iV7XPU_sa8oJfYHu z>v1@y-`35s;IdPGmC9>%oKV;+qtB_1 z)fo=Ql}ws{u0o#k)MKSek!O;+sie+d$4ns0f5-T;$(~A4t5WJ`|92~;aCxTVfx{h+ z7dK`)-jO!PW;q^~(H3SoW|Z(-oaNYlHosG|9M5Ju9HqN692fC=uz#(s84i~WZqn7&r{|uM3VNekls(9HT|-{We&$@P8z38M+U!*{HFbLIUKIj ztzwR{pOVoE#ht+KI-$JIe=dik=Jc6XK{ZF_>Nu7Bo%@w@ojz;!tZ8H^m;f6`PhJYT z4v_XJcg3~WQ&3-AgCMTa!k)+hpJPp>WnHdm;7BSZ_y()fiXTqI*VOg z;0@K}=`p>)7xNX(F#Xp!9L7aOGgOo2asQGQf_-$OPB$hMjnzY|T~q2p<&Jrp9x8DL zd+0K@y^L)@P2yc%%qvcIs)3hEC!d7M9P=W2sMx7RZb>GS@ex0f0p_;LIAi(IH{`8H zGT&qliI>)|?*gme(JHX=z5he7`b?ThhgG~~KUkf;O<>hXMhaE~X+8~BN8Y&)tfv3% z2Vr&HSZ5lnzIgn{z-j|iO~Go=Nr!?}$+0rP-1RcfSpMYK z^Li>m2v0kPp-IKq_$@x8;T3WnMzeX>u}(#-IlSB1+kJ+om8_fXtg_CUCRy!dU2117 zOOg0L|B^zR7Vb-V-SD*dV<nW4@`!MiuBraJvr0`;6cgU-Y7)Vqa`bfts!_HoU+a zn^0h`@;e=#LFdiu=?$Ik)WY8$ox$+Wo7YX}HQ=cjbiNS(8H)Iullk8Q2SeKTx0tPu zDI$t&p$bdJ7n@Wx(`)>aMLfIMYur-mH9l}pabG%_#k4V*zlxfPC#krlV$h&@+4?Di z0)F1Mcf6egp}e40@-2qd@apfANoZoZ06doORm&ZkSh|sxHmeo6UaiQhr0LpZ{uKHB zhqbN_N-IC35VUflMJr|pt(XFqQkc`^~l@7g}#`-%op_)75a=u z^Bjb!J9M5Sh2v-FN4*M;weUSclH*wj&E~O>T9AK4wcl`Xlrj@0w4EyJjqr^W zL3P8k&JmdwA0cc`IK z5l&PxCz0tDGP*_H&X=M>lyB)qbE0|u`t`1Hw#*qtKIjdwYHgV_L-7KHj&5wVNk98h z7)DCgJlbSoQNW-ZqeRy1*(%VlB18D+3>N*D>*aZDVc=ZdxG=}uS|xA_jM0_wkcAdn zm1mwaURua~QZ*Rx8_rOTGf0_Q5hTB48LTr07FtYjh6s$GiokeL_(X77e6WIFZWH5Y z1d|k#f!JT5F+lMW?Ji{uiN~VO#6Q)17wr`F5AIjB1-3U}wH^%@!J-`%hWk_?F!U`_ zjjbzhmTATAC~D!?{5kod_Bq<^?-j7jjbZSE+#@Mym+}>jH4jS_d4VFnX~PDJoF3~l zMiuI@-1)<$(Qz>0iXxXD3#(Q~8(FpF?SO_Qz04R^CQHc}HkO}a-56$30P9l$^bR#j zeZYEiN+vZHt(Iy0vd)%=dh}Z1@qwZO(IN_UW0luv)s6gTm^_QqC*U#Sy3wc`hnbtH zX-jx`Nu${ZMG+cfl?eYTaR$ouNHTDidpH+5r!x$7#a&`h0V{v~UrDJAJqL#{1? zsRfu+Xm#O~Iw1bBqRie5Ik9s8vAHjDTQZ0-4*0a*`Ac8yX6JxC{>WN))fv9n&nu9? z9>er&o?WrINuRO9Yiu(%E@!-sSGT)QToX9;(UoYS!RdaZ57W9%$ZHxyY%>3ZGO15% zjMU5-SKd5-jGno*WN)(G8>-I4787L_ zQ)L#yd)<@Wlcv-~J`KL~l60N;O{g)Mc$M{{bdQ6!{Qn0>K=*ZHh6s+M! zhlcgu-*&?K(}o`b>xV&zf^}#oRO8O^8JjDNs-^Vf)>iH~YIa|>paL0Dr?sSt>m>ci z*}a%;v7S7s6g$Cdw0Mnm$^0NyzEiB4{vBRCsY3-drpl|LgYBfnGfWK14mJ zh)ypmOy<8M0}i!kYLNsqg(^_+662s_cTQxf3`q;4+`%M%M@Pn%Pm>x6*VKWK?^^m`hXGM4G4S&B3s&X zsMP#j^Z+*It`iWBDHOVYO9@8NY_;&e)Ea0^=AXileFkEG&XJIKGJh@gbk>d(I-a44 z#tU5Eq^$|6tw!@~dLX;%1hVz}^zsHRc7!~}2ABFHp9Us-grYxPaJesbOM%zW(q})L zZW%9q8m1cUy8g`myB^x@myi>hS5)W-_HLc$F>{_?Np_g9ciJW)BX z=oClrf%@*H{k7X~lzvdj(XWsp;p5fx zS>Iw4z*Bl9oy>Gnkqb=(k#-Hgvvpe&u~q}z^>VfJf%j?k!utb(^t2;YnihVYZb=`W zD(ke;BmY+E0?XuDJy}~(c6_ki$S$W?)LET<4!>3ItoSfNQ7nI;s-1h9qJP-=&NV`p zalZ&Kg^%<$GF2PcM+garBkrJyWd7w+6{}=zy!AUO8M!+c2QB|fp_eA_r^z&cT-{H~ z?+M(mgl7OdJ8`FCWp3)lH>qLmJNT8Vb)|TQo;U^EURH=LnQocf~$qqYwThvmyzKgv;gVp|u(4PdEcY zYm-o*E+VpQ%B7Q)9EfGV)Sl_6vw75kb^cWio-%3AXY69gLWc+duhE{&k27V9QEB0! ziaM12c*16p>Ce(7YPfE^>NDmPqHGnITko|QS!;@>etwt&p%%`hx;Hkuz&r(B?X%a? z$>gevrT0ssrI4LT;+5L<+25k1Dn-m#kb@4^sKfFfnCSB!x4Xf!Q=B>2321F7;W1B{ z-r(8(@+i^y-cX9k7urHkV}r+(c{O-it)DN27Q79^bL7?h7PHGIRb%5Dr5Upcjm;Zf zSSb1&iu&nFQAbZ22Nc|Ux@`~k^ctg!llkAYASw2A%R}jyUxu#vQeTWP!eXw-+>Q!jrGa= z4{!*^i>VI83gJ&wi$AECMDAcvl+52Q1fnh#lM1gKxj3m;Fy|vpj&2xHZII1(x>RzOkX6nX>96dTLhhHdd zSRTI!ZWPFro`zmCr7rP>>LbtA5ch)U3Z_9|4+5_5JtT%$h?G=vaG`j3!2Ftx# zKoraWTCF37dqpe=2g z(`VGe5hJ(KN_Au9j*O+wpf|i$i#*4=S=uL<=QVVcGgq-5n%CIw2o!lSguauR$MXNB zu#@`)Kam<;^Q=oL&T!Pfk(k&WUK<>GfJV-dMr7}XMxs_D)lzm_e$<_ssnx{7L zIL+N6*?;C?nGcci`wrh`AvWlKaJr|bg46J>aMGneW5^9JD%=+u-Nk%9Q+TUo%pI+Z z;7$YBkb3}O;!VJ1D(Fp-*SDhG6HV*)IQw8e1dDvIp8+*K!(BXTP(@>Vpr3ABkfSHp z>6sVgdCM=%(;lqB*sJSYm%V5MTKy7!atKrb5AL6%==E}OOV0obr~~M)9>X=({9c;D`n$|hX^j?huwo*j--_9K7HtbZ z>ToIS(9&pDxfC8%H2dfHLp`O_+&MyMvHTv2H9+t)7#A>mDVcxiN&xm{IYBDF!;nXnhMtK|x9o+q&$ zJ{G>ihJ&Y=f`GvDWXk^w?s#3!UV~D+lKFq3XJM}JJBF+j#$649#1I*{DWAj#)C#mL z$L|`|ag%vv9~l+RO4ThSrpcMJdPr&Ma{O|=JpUOgYk96bEl)4h`g$69F4g+_xA1HR zP6P^Ouvj_Ls+Q1>$RdBEnQ@9r3V)R&ZNW-j!f$WOv}^U)*n$CTnFdZAk&+cS`=rt) zD99L(eDyzR`tKGx3syidzSsjrl{AfA1j`V6?gR16vT@S;Mk%C4MvFFKEgm#Wa8E^0u(4)ib);a7sq9wl} zwu^Yp(zN3*MLT8!%*3-D6}JWL*c9z}z-C()7WKHL!P72HHh8`jk!w~W%8c>o2hHYX zY!=Bh-tH~~R|0#gZpTBfCnSOm#w#Nt(B2Ep&# z(ShKZ2idb?4OwI#Z^M-&sQsm?sZa|u z4B)b}MJMi#%VkPps_f|GXL~aGctr)>8XTq@BcYO^DJhAjFfvbAu^920n*>2WR}<(E zFYYHZo_0#Qo9*6^mX-LxOdhKM`W9Je!DO9GRst5%)yD*N74C6DD|?me@)P>k!p~(3 zFKSk<$k(YW>=aIUtxPabq^pUDr1M$WvA!8aqM zDtxDwVRoU>%IE%D8a>Kfa0&uNM|;UPK~DKrG=+vNydLdqwibW&yg{z z=7DMSWtoyiqp9^Z13PCXJa0~+dx8*-tNLeNW2>w3BPYZI{rZgE2rVrF2Zes>%oi}0 z5yxz3(*-tcv$+;G#GdYbf`i3NiNR!(I9UOoxgKv-XhAV^xilyEbG>8=rd6|EUZ-oL zx8MXZ*T2i0osueq4>>}U;suwf3r)H&tf}=T6=NYipGoZ#*{knNRyXJ`vX6sQ3 zcdJw8bhG&r2A6nN=$9FZyH#eS8@q7+lrnxs;T8UHZ;inIl&1y66UlEfkL?cOSw{Wj zG`3ifDMet5Yi>`WCNKnP2iKT@%4F^0mzpp1RUDD=H=Dn-cD5rsGo-3QgR66eDJh`V zSK9udwU0cO#nuOMV6io`*hC7k;JT;}+f(WTy2TV>^f6DnB@t{b;?k$ACC7d+ohvQk zAFs$#}is51T7Yh zo!x5h5ua;k3Bf4XMQ=;NP79x;pfbNzV8{NUiM+M62iXa3JdCbom(bc4l(LANbL?O>R_USKr5`$hTf!j@8ZKnrmR4s@7uq84-T^A^zE|_^$Vexa; zx}dwCV9`TQfJ$NUUD>PMl4!Bz)d6w#GN6_9#2WY^oM|GI_FYeX{$=4zwk_@T^vf3o zXP^GF182Wb=o6f6Q&4R(Tj2H`IQzOQ&eqHJ!2atg`&$cV>-WdmC*N3E&!uoS2qtHV zKP~)dM{_@fv-6MWg0mPEI~Uh^DO5d(2tra$IvA=HN+$ivLdifuNlzM5OXzZ7m3Tf) zrMrLx(D-}`VP6QsK1=*t(EV}ZjYHwB8&$#EIq>Np!rR5d&i2LIgva;8+n?F)Oy>Wb z412BpNue+uZv})Y91L&Qet$r``9ZI&wFBVoEIX?MZ;KXn;?3L9+z;XHmq&KN+i6rh z0Ny@AKK&rx{xTyCZ;yRvClZ@|cddsYslI;jK5*JivOp8zb%@c$;fyb>MC7!cM%!vHGm$eh6>R=Xb%| z1}Yu^Z>J#}e-LjwuS~<+NE%Y>Z8sq4g0~$c{FivUhpOPM;e{VwZy&QX_ru%2m+ptR z0nZEG){tT2?JR}Dbi6G^8XXL8kAIT_bQitj-8~1z+bTP&18;p7bmA@A(cBN=Ewk%- zyN-$nz*`Wx`Ga^HctslCKKa_l+qsYKgSS&i_+h-Idcf!14pJUpxL{j2RW3iB`={ty2Ek zsYTsvWt$f7j!Dbc!mX0|EB|JJ1w)0UEg9p>UO?Uh-i=rW*L-PFT!WR3Rx}>HTyie3 zbFSX&#Hpnm59d8A@ND_3z|%JB40Z-m()uDwqFHUXwO=+-J*EEG=zX-S%jikeU@HQ0 zU?=qrG{%>*D{8hQNJJ$nRm~}#YNlwwbHvf)zI2Km@VJSIC2AF~s8^2?+4dq&z)blJ z@U9S-!d9vnex=xYe)h6uch1YMm9ZP6X(B^m#F&3VH10i)K3e1zNebPP|nGdu3*Ow=g*I$0-N%I?Jm%qG4*L(!E zuCWc#!k}PqjUJtnqqbL@&C}^cEK8{1S{0O33V5(6nRlW2$l;3Aw#83JkD=a5OXqGj zPt~1{L}O>Wjrg$=%h6X-HuDeqq|V-L5lx!Cf8x_Z8qfVXjWlN7+({ahZ9*CcwD)&q zLJ#}*vA^89-`M~0q>Oz?`qKuDmjo^TA{|Gug0Nm#y zRs`;|4>9%$pt;i*ct~GFFEzdg9}(DEzKGu-$PVO-Q2oJf2XzepK)#4NMh&Nh6q?QE z`PNW(e$@eH*8zMHhaBHEPYC?Jd$@CayS_T$_#RW8Fuwb5Oo8`6<11mgr^a`NJ-!8p z9-rb#E0gyIRcu% zn#9%)JETk8r|M&umvA=YYw_O>7Y|onR}WWUa4N8~$^6Sq;XQ2Hf=KVtQIpX2LPVb z(2hRn&>rco2Jl#7yBgZ_oeeb*I^8+6)Y!VnS?KDZayAQjn9RTMAxqA_3jz)xXEQ&Q zKD4kBB^*TPl(X@jR?aP7bjaB^9v7mV@y9fVbRtYTC1=RgTJ1=l?A6mTL zKUeh^8KqiDcUiFI*(qLUF&|sJUZoyIyiVpx#A~Myz0h4<1_AkvTC?)k3XDfq_fm1V zuCtm?Xe{kzk*T5%YVJz;pi=tYH%tc`g9=Eq(wEOAr95YL6kI%0`bn(?suX+aO9 zb=W;L)aAg5A;5~ft%V<>AhCo>cksosf2W4o#DIUp6Xyc{Ky@qhJKdM%Q`M6JoL>!s zX_sgsx-encDJz`ElsCX*&6ssYKi@#Rfyq$a?=f< z4j?y&BDQ37URCqJGXEzszs@~0#qyOdPhjT?Hr$ucwCvvw$0lH7!fU{h!L!bWGP`WG z?ATt9_;ctbtLi;REFs*mj}SrBa~zuX_57YMTev@^*f~;6i~NVTpP) zeokev>e2BZtFTCan{1Xfc#;%l*B2h?a6~=*8a%xqafkW1@`VLPU{YjC!PxkZ&E=I4 zzbEt2?@`=>C)0IigNH}RC+7cHEm2Azp;Xi+^Le)LDSQ&HU`LPcvPmwJw2v{N?th>- zj$Ih%k1V9E%nX(eK{aXNKA$@sl_$2M1Dm(6b`r_9w0CfM(XQUkDh4z>M=$B7Cu=08 zE%7JeEk9a^o%Qj4G%@AxLKD00OQVU$;b|$F`0Zy0rHNqg1JcClXzW50i&V`6(?rkT zr)Z*rU?eLrLtB>NIkDD#Vr@lvP4GzB)fpDca#WNwx{cblEqeLL9Jl7Lt#g+USwpO_ z@s2n8%N%d?nmliGc7Zo~i?!EPsvC2moVcDjH^*^Z9FPp5cSew$qU;KsLZJ;$3_<1JsM-Tp8g#>W-P)@+(w0R}`kFyf`X0|P_b znL%ys_H1_#r&)lXuNvgPS@acs^vHi*h9$jGB{E)|F(M% zX)~YmkwrRUA0q10Wcjgn&bvE1WO>iO3Q;|9Pa08Od~GLDHBvHNmj9PF^J-+4P}*Nq zbBfYt3KI9RnIB|gwow1AdK95v#ghp2jIH7S*tut7pqHM+ZEVA^#vlJaPo1Tp_yuf+7rhlUw+m!7IfowE=R|*K%sP(_m zyi|Ew4oYBlW3PRiB&I#_4EB2Oz_ali5eNS19*9ytYY$V?dk|CVLV<{e? z_QQUhA8h*lg6pS$cSu}M+i@^ld+nUscn7Y}enfEH_}esGhhR!6Tt809{{gOBl|HRS zs#J3a#r0YyX5;#0^(eT0mZ$$UuI1W>G+b}`+ktR>3-(7Ru4BrL@g` z<_?PMcbS-t>&@y>aNWq0!u5aXANC=WlKH=9W=M|kzb#?5uYY*ddk2HnnRd=)4B7S% z|KyJXt0xzy!RneTI$`Bglly<|AKqebnHL`#R!=c88&-c)j{>U)c=~VF#i3+fnWeR+ zWZjBCt97xzteZL|eQC@>H~e8XXnxfx>$J#CaKXgC4l1X`U_nC1iFV@LJt{MyOs$z?=n;D|`vhs4$WvpO9VZohCA7{NJt9HeaJ{+abD6**O+p$9KImDrJPPG`H_-6CF z$@{5>Xoi+*n0U(W&yKhZ-CO_ywl2uirwuLk85zEk8s8vy-a_TEu)WNpEr;LvkTtpd z?7Q9^d+D&7bG>c&%vR~O=J|SNi+;_je!kd9r_|Ld)=@lwhU_KgCqJV{CZV+>jf%DH zquK_p8X3K4E!ym;Vz05uoLdO)%d>XUOj{*5;y8QuZ>=&zl-c~h>imvA>9_}wF8gir|j8u;M z47v0UqJz}&ieiZdv5r?9*7bM=T*!*^?m^+i2b`*SP3Y5bB3w}DHEKwy9Gu|@w&}@6IX`{V2V_7~X&IsRteZB-nG1_g;8>n%o%P38Q18lN zs9Sw8Jx9pYy&N^2gs;tFemNjqilb#%u@(uv4+UaJcGy&9Vob;>E6!(i#Lvor#52+M zK5goe&0?zJX>!~LA+r+FU4Ql6iS?~Ze5zs>(~mde`Pho*qehJ*``CM_DpxIdju3xG z)c@uHjsShl!|iy5UXk3W{|UKg!hbIvNBw_iOE2nwzQWiM^*lS-BX&AYI7dm}Hk8lKOFCFs2(a%N>Db|!7cR)IJD5(zHnM`Qkn82UD|1-(6W43d3lc0AY7 z!>Y=`c|u#!@vo@CJV+zNqev9wJ_^f z(8W1S&%NO4uvmt}oZmx%FmjG6?|*`Pd`zCdlb<2^lkNQOo%tI1&y&BKWoHht^Gjqv zpv9c0Y)h>wQxc5H_oCY2yA3`cU&hHxIh1-wmRKTkuS?`>k}!ml`6H@0r@2!KoKFFH zkVru-^1doS_~pq`;58{A7qrNOI$R%FrwVXRK3fXB$Xlg=U?dOm@HVGo(B#EhWH1kS z8Jhj#Rq?-x7&qUKQ{eBEss_62!_d$KUIr%vhjC!O+8M41e!;PrSK=;G>)Gs$L*fmd z#mvcJE@LO!qS?T-ddHObuQ-%`WrOF7q$3{Yk&@WO5r%U%m31R`^X+JJvHV`j*ujZg zeVb@^lkfE#Uv>cJV>#Gv4DAn) z-_x{k3BQ$t=4#>96sa6k%GqZgv}FMDPoWIQ%cATsh6p?SfW%)|Ip|a^yjGPxT?;== zuJq;!91$D3a`5pt4fYa!=BVUc7w7rCuf{YhG3_{z6KbJC2OFiX}g}eTRg7w4t&aHOZQ+HQ&6GDmim(j$s^JIAlPyk{qyPLcT z9AnvE$a(;dsS??C` zbLgzj9dn)M=HLs|cdT|>KL$q0?OHg`dfKVo*57*i6i2=F^tpDM!+L7fBAGlry~G_G znepT+o+_t5Hq7a%E~q&7tyzBexplL2Pt_$(Z?dKWzjXOqHy(!y@2)P04XYe{{!OR4 ztB&bQ9#YAjT;(l)b>4^GX{(0TXXQAI+W2Ia?0_0K%q@N)k8qd6nowjBXX#u-zvgB?Ow!t|#-0pMpw2NzG=VFGaGX&vG`};G?w&%(v z9A)Z&$S(IwLKF2BMXplzSSpI-u7gri9K8APfDg*h7JoobZegEVrJ~Zv&q%;#DK)le zD-${H$_4!#TE!N3_3*=FO+QYqtZ}SxB870qUnuppmzz^fhvFx(;^{XOcWGg{>cL&Y zWi~_Qp?m`|^luTn*Mw_!c#ha9(cdr}cV+TQE&Nl8NXKf|MT>m6)rncP0RdN4A-;t- z%%{*FWWM-_8|8P7#NSudP|j-%huR%lMDA7dio{c)Ox4VMDTv=ek)`NBpYqG;%PQT7 z2|Pu(?}By^>H=>|s86}{mxO9{LbJR^TRe_>GRIK-3N5@)X2O&r$MWFgAS)4LjM^)# zxT2^~OjJ4VZ)#|%dJO$Dek{0_Z3&WRiXhCVGe#Z}a){^Cww>vsZm6ly{B(@U4|4|} zDh_DNQ0=&%zcSR67heU1D9E=6sTiXRum^0b6-7qULJNokyYnd?JBNot)OC3Gv1w)v zuPW7Gom5_aqGP(EBfY#)TYUAFj?t;1pJi!(k^3kb{{@+fbk@%o?$Yiy*2HDShMIEX z$524wTL>CN`?ZQSzCpwDv^zBtI>#m8Qeaas`}iZ8ZIG&!3;H53{_rOIaCM=^LMY@U z%~NM=iO1=H=?6Khmp=7iUw?@ie}+t`wtM_C9$1EndqPdF_(i;6Y@d>YSa;HRn%`Z? zR_lxv5p`bK8v!iFI(7~)Jd*i67qHx{>mmrh$LM9D+_Uh2o62oc6!kKEAA?o}?*=Sl zQkP9~-2_p422s2VFQm$#4p$;|@Fp$_S zG}_%o8^PDEpk z-)Qh^Ppq~PI#rMLE;VmzWDTQN<7HBjKqVW|=lgRxNuWP>a{Uol-P(Fy0e$h$P~|l&v{LbTiB{KG5G#WvGdXu z^T7;HPA_|nHJly=}EED+6;xUxy^K=Vcy5KE@=`&c*BBx}vd&6JN0 zFA#PdUj3SIj33*c>8Gt%m>3;$jmu*7U>Q4sY<=P#* zsc5sNSh()$KH;^2KHk`HClWP~U5%@GQw?e(~B9gtyRYS`L9u{o##_bhzLLhF)mc4-AFb2jM>p?MaSBf7 zfEolC?MQ9yp&DH^X*Q<0iC1v1yb)%|2(p&z^Q+ zMfG8pWI`CY_pCzwx`}FCPqB0PAFcR|p-iZL&Qx`zeL45dE1~WMG3AXwNn7k!HRs7K zp3UaUfueE*j?kmCp)hf>n+s`0w3KsIxvpW8X_8B%*jSVw<(+RbSDYq9XyVRE25^Ek zON02(mF#RXuOhnJ(6p8D-ce1Yz+IuWuBeuXxhvmid2Mu8Zx%g;&Uc@Vt3CRo?`wI$ zy03+Zd88_G!*6WzRI@O-UC~{+!zq`}7Mf>EFd`Sq;bZ&{_nfxeA|AGrZ?w#~gX}rI z2`3c>xPN@bOLorQ=8iq5$3n8_G&m^Qg?%QWZKObMi(;Z5Qu2rQ=Pm<7huoi=eu0I; z8r2*+v`ESQ<12?ay_@^Wle3J0EOqywHaM_zi9`ZAEzs*J+U> zMUCF$(A?TxHA|iRsSsN&lTX@vM0=7@(6=~q59kIjV7_@B)m4sn;~ zFS-@Why8_{<+uC-B<&Gu5*`k_=1yt_ZplWWm6aP~ zoLZwV+Ur>N`*JN5ll(<{^L~o^A%uU1vFx3$g@~P!r=I%JZ|kAD40WdcZGCx1(``HS z+D|g|Sk`at;}0EKO7&T%w|&&5fQdT9w7kNnZqHUz#{GFaXGR^~Uf2QofB2kxU&0^q zKGMi~%a_^WPS$#pb-wbq=T&*9)p}p(=sMKiZ$39i^|Z{UxPyID<58<-Jx%EqCsi|PRsIWt*FxUh7p)6v;g$Y-@rlj zD3Q4+yye+#cv=J#pUZFg#b9Cr)g^FqK8sZG+-CDv*;2RbmboQ$xM>!(`$#1OSeYH? zIVK&Bi;oB^hih)$7sQ*2xpAvHhTXxeBq=m^1D%mnd;RX)PE@5rqphUM`oAoQ$(R}~ zyyaQfYog_Vz|qEFh5pgTF*S*vX=K9H!EGO>VarE=SqD1(T!dA)*_=R{=awpZJ*t^*hw13$ffMKh1EAj`kMdqjMENwmwYC z*aU2n_>JqGvc^_HlCGheV^%;2b;noPvnIZPi`NmKO(Bv@#DX=&toT$(TJA7!)Q=E! zl{e11kk^N2jV_>u0@!(0iM+qQW?Chzs=4u#tkx>;xzBDbCw`cf^zd!KSkZpBcv8HX z%N-x~x`;*53EW=sf0H5W>_6n455Px~`Jc=@B=7vg%Ln6~i|m{u0hPU9|LX<9I~}yx z!8>2@FjSj&W>NBgz&ne57Vq4SuksMF4NkT`Y~Hzt5hZGcckbj#c&Fvt!Ep=A6yFZf zLE_tyK=AUEp{RRMRCXz6kBgKU;`ibH?t0ICmIr7i@BT{ucpjFgC$-2B*pqdJY=B}^ z_zv7JI(XC~75r7F!OA6vyX;CO`0bXXF+U^Ii%K=Mf8sTc(20j!d<13Ck-TkNy__q% zBS-3X=OmdXbwv;SSjfrPE&Demt@@yg^R&gXU*W@xin%(&PYf*EOJ|;HQ9@*$;QLLL zW%f>$^WSHke=sjRiN@3o!;>f|b_--#$R^2sVz@BW8RqA0*lGafne9lX@F*=S~-hnn-CyaNJMmp9E_ z1g(k|5yAg$&%ey&RDv~B)0gOdLP{!}%>;!hQ-xr6FIRb^VLZ=vepmU-(zoXXMwzzya0`t{eey+eHu+gr(Rm4~u zUL-skubSW7#X5V2Vjb$oySc2yN2KCHDkko==tiw6xuOoID`R$;zwJ=U<^Il#*+rA< zg~&B$jK!3>NKTD3o8KaSaKYe`RCut1f6{K7lh;O|RZMO)(EF1a3CNrgo_=ZNlU zWN*FEmImRXsicS;`1j3F5PeP6aay#HXuJC-A`%E;#w+NmHevFmrLMEMsCIYH47nf* zjsRze@A21Hq%XxryhDM1Y=M0rXbbm&P7=o_yD#u`bziri^Vdeb`R5>eZL}y(^X_a@ zh||0uzc{Fc8G+jy@J;K+9cqxm6Q6oS@kE)0@I-Z4w^HFPr?m7nft%6ff~YPG_eUh$S%GuAH3WZt_hscamSPlU`ruvVlGHuna8vk zn0XlDAueAHQOHf~Oy)m+rMi}tGX~ybd;omjXGgs3?J|Ls`O1`x!}Ze#eVJWjH(En7RfT#P6W7a^e>=H`FPpekrmuJ@OlLMe`n zR20>0HbB7gLN-w(5Q2F(&N#%e>YX}5*+Xdvf|x1oQ;brEIVF+Ed$Gi=04%%rhe1+C8->WKXGw zKFXVjiI<9aWZ!}ezUYDx!-uI1ym=)8-OO58d6~mSo>tK~U~@%msM9ZVl2EZSqFq8;|+QE80* zR9cIq6{OORS7{DOJ2{nh1`oOs6XKTjvG4)4K7{x?oZBoC^Z6#l4_{Z8NV@lQcLq!0 zgyt63S3;&+)}y<~P{!_3-&=qyGUfrBJu$b_T!m7e_`Ss_iO>@pP02DmXe^@Ok#gfP zoUnMLbsaQ%;ko*toAc(SN4x1IH|HrifCK(jb7>*NJ>{01#JlKTsq<;dA6Zxtbrp23 zXZENJccJmMYyj4Np5YFC+noUi2Awf|NQ9^ z_p)8Kpky6Rqx^ukB|Pg&p7io}=MShbt}UAC7AH#NJ<^71%LWg?Z5$^dh7!tPDfI1>~(53so>q5yXftJLJoqFQFLLcsJ{^}fttQ59@ zPhBmDs$$hB6}B0ZiaDOL&OoeYmW?K5yD71T)Y)jB$~t7)N|oDaem`8TN~M&XP-DrU z)A?mhrDRUY{c266%bd?${=}*=*~};Dk$>Y*7d&_>-)s*VACx z`i&AF42!jqusbmCa!qK73K{_axOc5X`9z9U0 zg~vKQ>vG#Ee1$``AZgGrvF;Yc{_-O37z?3w%UQ=Lef+qkH=c zY`??_Vs^+{PH_X-LWL#hmd(uvo(g7p!W!W{uR1{P!4^Kove1U9*0qRFaTb4pIqNKeiZC86e2yf-^xRKo!IH*8zMN%Ko3A)@k0n#hd7XLk zUFhH4RSROznSZ>A_clm_k9wd?pe>(g@Y!hq`=GSJvEX70%2R8!g^1uypCmigEd=7E0idfPomm++GXus!003;M}|7kdhwJ>iYr{JMY!#rNTOv9dFIYau|BlOGd#$5CidQm zK_H=o;TM#CyTSaJ6nW={2ud`WZ`$vFQ1ABnia~tgK?}2UP7#)S=CB-Zc~+6O7>iQ+ z>drSf^Y7Wo)u>!e4RO$pL`T3BFYFT zp<1}B*8T?d{NSbc<5 zEL!2z^c&xmd=Wg()MNe{;TQ8d_>}MlatZ+_+I)0=WpsX(En3XR_mfHN@p+5hmqYtn zdfRE2)by^Gktn`mQ*8Xd)A_EMlNB#emK_RFVXbFO+?d5 zg0z~S%V?y>yH9aA!jqS1k$*weu#2U-;aRTmL8O%=VZoY>t)hko2Bded*s>b*S^E#n zn$7WDXQMcI=a9eQtYmtFUFP#|y6%#Ro<4qw8qBMo!N^4IVZO{3E1^{8dL2`&?j}#u zcq;nd-E(zSH;Z(8Lq%-@K-t1OOpqp;7`~qxMOT*dfPfsOU9_?W z;6>~*T3ik#f3|YXUFYrk<(E0Orw2mm^z;yI@v6COTBlyM7#xUg{}?pSYPUlG!Z@RK z#7T%MEjMhs|#I8r$`@tw(QO^nNSd@J&>) zxnMAte2tRzkhp$+s#4S~O|2&bubY)LK^INtPXt8RWTh&2HkrSPZ7J)!EQMAKHvaGS zWUz#6=72j9P5eb@K; zde6N}czZ>@BgY+c>fbT-o;FFm2{CaKzsK>rkl)XR$092hihft`X;>1Sd=<#?JS2aJ zYrQ`EL3-rH|AhR}B)M6hwux`aoR(>+*@z=dz6Othuu|R~<>rY_ zzCAj5af1i$i>s$x#CB*Ss)r@I(T+h}?qJ$5k5eLjixTNeN%tBP3OR9dm91?xO1M&$ z?C_X9geYU72o#_8u znWZn^nf!zL&YhZrAeoAK!!Trr4AA1{kOJTU#pXbaDQTJ%#qZ3_av6~%DEEN^1%u}( z4dnAL78S#l(x&1e+!oUIo>SB{9L}*cI=)^l`)Ep4CAD%UHh0%}@E*(m8TyJ+ zjCN354n`$@L%+mU`wSx0Fp4EqF+QF@9lA91FJC2b(JfUs2|8V9(%kg8m6&Qop$pRj zq_`t3TBHvX*OncjuTYepOfKZCoVx$98yTE|>tYqPZArAI?V~6gRfMiNAZr(D`}K{y3!whhBD2AFjRAxW>w=I&@SJzgdCOMlDavY61!)&2%&8B z#s+`S=-T!jig|+?hdnO((=(g&L0Yg;4Z~aVg&z8xeY5Yea()e2@R{|{H#}dd{d;$2U0hx{*z67M?Q!F1 z{`R?X0fD`mWkpGduNF?ys`Ye#>M4@_EJAigDnxC-W;vkQhA!^}NVUF_8hbOvvD+qSE)jc8xpiquI^E8bHJKLbvs&%ljV&pT5+hehnsvNQM) z{o8>k@mrXM45xbX9M3doT;QSVMd~Q6FVFwih#hnL|7!%@iMzjKmA=U&ln@6O&N-)k zP0jSUE^y$v0fy>u)X|t7uMt1aZrh4xiRW3bb|g#OX}#Lf9C118L(kcP`PR5g?RjY7 zS~YIqX?=Hg`F9&H3-`Tg{XZ-a9Hj$-t5-=RiDE|dZ%2c~AF`Ts1}4a~Ikm&PzI@ar zx0SuI=DLAa^sB=HMX*_&Q|=%_Q^E$X&^ z*&bF|6ZJfPvMT%1(77MIe%C8+Sp5=wD8rWclz2Dt8MYmT5;xJstO0)^n}W;F7CtZ*6KvUz2dd1?ArsEy?N_uzH0W#qm2G_-pozna4mn8(6(Cjp!4OtQPJLY64+DzY5?U0r>mEpr1k47 zkH^WgDW@;=;fs262GBSgQIM3?sNS~A8zmSuMcsVVg-;N11{f`g?^NqYBTu$)a@HFi zS`e4G9`(&c`Faq(+`vzkD;6cHj`{{B4*UioGsK2yJ~$LSzeKAXbV1>Q*W;_7Or5t+ zeL1~iQ#*{thszB{{g(XV8`$eHnmlOzL4Al7DEAL(Z-^BqcP{;*WDzGPe2}M}{-f9O z{fP`OUrB=fmHAi(BJoX!NMvzU!yTLpN60A;J{i3>&<)&WBXlD*5^3#+4FM|`u(Fu8 z+R%psW)o+XX!Z>{rk0pNI#m-*yiB#=vwCdU_dLwWBOB%XL^USUd2_4Oxd+&Ggpt+G zxb_|h2E86lavY}BgwFmIzq^5ttsWHkDls7ghs8DtoY$9N@{mRT-9o~E`I`E zzM?bgs&@7OUOOVL?8b8AZwr+V5n7w=(TB()u^R0buO-L5q7S1`XLMzB7P~iy%FlA$0N5Ad|FJnxX^X7kTP zfeZYUuSnpV!5R9AU{SQC#J@yjHJNv#dFpIENNh>IMSWf6JkfCtw!zb6hG5bJ7rcYg ztQ-5sF}P>@iM|O@Yg%W8y)em?`E;phbEVkE&6x`fZVRegT?5#IuB7q29LvzRFh3nTA0hnWaw>*I z+sa#TBuNsbpQ4dY-AMx1)W@1cCF8?rIB_@~5myJ2#sKemn}GLwObmEh-$uvhm*+2U z)nejM@N!PCGs>uBqu$0XFI?2Z6)&})aTCdI{hIoI2zbs4IQ`}IaMV`4e47^jyMU_v z=kq7P$Cwd>qP`=%e4nXYfdvh}sWtGA~2{g*V$Ax-s$4zQgIua2Wck z@oMPm=)~y!XXTCNIMxf8RSyok2kp+GB*nM?BgLoj&~yL0x{*-99m}-`!~u+{R0vr?lgMVG5cevZb1Hvjx4L{C$Ae{b$gx6JB};=l z1uim*C^~VLgE?O-E?64JWyF@VR zV$?4T7b7|M4uEs$`-2Z3g*hl@cj_CHeLdFp#Zp-!*2lyy1q8|b)(Wv85x9I!Y!b~| zUt@`=Vom1e`zcO4rQjiOecGqQzIjZ>&T+sw>^|5#o_t15O7iJNZ>T0OweLB@3<7!V z${DH~v-|PFJcH~nqjPlZ$n3l6xr6Z{4c=AXC=x7FWifW|UKwI6zuGG!WkVp&@a6ME z$PBkj4ta~}goWo8r5B~6wg9CHjjF+2$h#vhsS@9V-@cYAg!x~Dmub=0qQ18>1(5#nPr$0B ziENjZMIR|m#4d7}I*|+I!eqP{f$M_3m7=WFw_-lfn+xtFkSXw~d?U0Y_5f~`%)h}c zdy#7EQ&dHGkfp39^B-~v>f4j~qbVYxoLXhML#|{d(xq~cLkLT;f(DBRaQ=pJ4UWSB zaNmTv-iGIz7ewgP@UwJLEiHz(|#=vg4PQKjK?z~4(ZHy@7lNW(Ld%DBjU;aCbsk~+3 zuL+}pFcBK#fZ3R0#m&w7DX@@b+F89ScW9*?zL3q>5jnO#g;dOBBm8pohGoeNokBNVzkSRPs zXh?v@aOM>;9=2Gl0dd(d=Vhbk$|<;Lnd0T5nh+&;%3#m@34_m=ccHcnu`}{~i%tGh za1==fPSutTLuafbzVJTQE6I4 z`CI;6xwnKJ4DghAX7Ck(2jij%u(c|fO9RFM-~kO357?t(M)rClYZsj3O*R?z9%Jpu z=)kQQqdsD^d|;M43vxp7QhnMcP7qb%6&X1)nzhX-1+fQqrl~*}tS)npGv;l>9%}ri@X>n(F-^xieueVP@%2 z`ag@K|94mySvmPwG>#+-*-ptLN1(T~r#j;p5z1<_Dy|>v* zg*(i!j^pp}CvAzkRCudpERBU7dCuBAU@ZqDDcqI8prB=_yThgdvJbkh3qeQf> z5ErAitiRKJE}G~7R2lg#5tSyEy;F(UW~md)ew7#Z3Noa4jw(K%%2J$Ts8W1Qdhv%< zal3V^xa@CBak;<5XZyPumoFApv$M8rT*{y_mA*emLV|F%SJA2WCH~02N_9&7G88zG z&Rid`P69p%O-klh4B{RU?uUvzMn#b-2$?p$T(;dg3u!8OWpF_+U*6ZedH+m zi2Zpg&K@m3gJf^{8ZE3IUP{S8?t#$TK9dtuwVxvfzt*p5z`ft9%LVWnVZ9RWQ!jus zvNLrN^Ka_q?F&Iy3$j|IycX&9u+o-`D@3f-%ZV0I29)tVQO$cCVt-t**QnUso^qwh z##qXghMz_pXwzrSvV2Uo+R0@;nZ9e*^~0(5sV{S_4;$INr-t3ZQ-HMJSZ!~$-F;g6 z+X&f*vlIoP3&SQC`PvwP`0hzl#25HtQ6*i*pA^jw$DP$*M&eE{w_YThedS->2(4|@ z%fHrcZ=x@q@Lz5hI71E+-jVkZlPzf$8jZ)K0p-ckZoO4a$Z|w+tE0oxSIdxE;tIuW znZ!G|mp!XG{HqmZH)U#(krX4Cm7P*9-D)zk{>>Va&4PU@OrwJPNj?)`6?>Q4V5py^ zh5J)hkB!NS-zor1clK$aXRV|z{y7<8x_?d!$?aGqb^7R1N_ZtR+h-X6WOWntlp4ka zYZ#fFpb{v=#&8n&uA)l1HE$mz^k5OYK@Syj z%N*lVtkHBR_jn}lv6E5?K1rjkqz)y&)*5qOd_8Sg{zNOKTb%0zaQW2q*1~c>j%?}P zxt#~;SPg+gr)#x4H>fm+ELMqR<%PNwANzYuudk(svsqMO9e{>owv(63DUl}8{{t7i`6|dUGIXeU?A~w zDKsR_wu*lV;6YM{@nTQ7SNv@pU8a%Di9Ig#dOM|Cf zo*O*hLQD?xLIQD&@nvnRB%CtnvVx_Mh2|ja2(;D1ZEJp}D1&pbyv7pfF}ZGEtG?IS z%Bp{zt@tv_@k_U6bPL{+@nwleZF{W4k7eH(;DSe0G79Tthw(b@L65dft`9I*DdxjT zY@jLs7Q%WthzZmnvEWd}jaB$*I!pGk$drf_)_fc-ND2JPu&iq(GKW}VNKnGJ5~}$Y z@x5C9N;odtT*C_F_`6t$o}TL~s(N*9DEnG)CRmpS+`672V-|O8FmO)&V=Jj+{c=uy zs4P~D=hXToX||Qrv3?u(CpI-42Fh)k_DRfn?gV);Sa+MFlyYGEYGG#_i|Z;s^3${lK3v=6=e?cuMm`BjWynMv9XFsuHCx!vl{b; z`2=EIymq&CY4*QFt>ft9@siWDTf3z8O6`p7C8XYT5=mTJfjG7I^y)$%IAx!?SDh4Y z+^tPqo7m8~S`u%jX`{CNtfIXRb`cVx5Z2m3OBMH-+>&F&-9%SA93za1XTRmbs|*}) zUKJi79)3|U?&J4mfwdmBYI{32O1;MXVq&N4TbT$%3|!+i+Ps|AN%^ReHb2!fF)iz~ zTSwg|M7l~v&dEBpl}R5C;lith)E_9Slx{)|1R8MjR;|zYi={<&bSTR~7QbvV&H;?U zi+uPd=L|D?KkFyLRlY)%xk)eIq}@82&IY{AU5wiA>SkZ$jplii8)aUBo~mx#4fT4( zNnza~)){Vb>Et?p`CcvdS0dU~;}SYMGI~tA7xkPwzic2R458YB8^3v{EVx1dC>IL> zy7Fc%)Jj#q(YujLof>_aP5yGe4b>>kMSH3MZ3}JbJ~Oq`Qob%QPPSWMeshMTvj(^5 zp}`Swud_69BN4YV0>d5uKhlb4942_R*dh_;CVLaIPa?i{^WSr!S~WW6X-CVjw-A79 zv@CeSJl0gsqrWA#n{)qyN8*cgf=b0LD(AI)f_5ge1WOlk(_Hqp!I?mZQzTwA_{+}_ zQN_UzImI-m5a(A}GC#;6I>d6-P9`o;7IbOh$-IeN>8WlN4o_2=a{4SkMvKY(<4#Ba zFywo+GiZl!e0=ngzc2&*N1+;LAX6Mj>bP3|Bvs+F)5J{Lr-HCGt9*tOA5&m1Rw}-w zv-MV}ut-ay+-8bxMKtj60&i>rey4c^O~!D|i3gs5)B^LjMDr5ZTp&zYlzEx!Om(rk zxzBiEWGRgVeC!dqpHsT|Ev(!8vTH9}Ft97X&;+7C3ED9(ts8w;lV?c2! ziMY)F{W<5(60ra8kJl^AUCur0bDs0;j|zu;RTA}{^?x*#+rk-@(l^YECADT-^bVTJ z{{j-A0Wr)>VivwXRMM-GaO>v!Fajpg`?Z<9Fn4fN5uMv)c*eURHSwIVIrseOVDK2V z)QBLu0P50(-ot4kFx-^0-58#lhI(#KSGY{KiYjCs8qZwpa9U93t$P71#dE$mxxj6! z{cjXcwV4ORl>Ue%F!nR)iast?-$V+aoXxARF%;AV* zvN2=cNdu0CaW!k$bc$4Zxk0$zNvRM{GX@@5UrkYFR=#$VhMZqoQpU#&Sd)89nwZJ1 zcUl>GD-@~`woNu#IwN-ZTBO%$FgS4_z$l9~C2oQb}GGaLd;@pDWD%G{0= zeFIP;?>4-riCM3X*cu~et#$!?ID%q&U&*)i{&Bkn5TM5^<=t-x3#;4)l!%&l`bhYsr;K<4C6IqA ztX&L9qdG0`X^@o~$>g4gnPnk`&Hf=2>A5p}Phn~<3#^11IeD*9d4dA2$6*2SK)T}K zqqM1KR+?y^b)Phym#+A+d9)2P9mL1q0?}3SCj`hK#<~2;P*9dt>9ylV;)XV^7I^?? z{``>=VPnsECv0^<=hj#$Hm59fk$0VxO{SCSEj_nB@dWe8~G34Y}o@|FNnv`LW2>xKqkWHRzQ-Lr>wPj?rKek>^qM5k?4w!t+8XnAVn_54z<3 zRa{qecrxYa`P{^XuSV6+uhWXw@OC53skrK7%?X>M)bu}&cw*QrGZ)R31Z6U4Z4$^U zvS7^9#K&P{@bThH&2uc3Rnwu6E$WH6iSZ_vSKwY0v9ZLTtG21@$%;WVM!ZG26FIq3Qkk|Vj46N!g zljE$~ewfp;nCa$fq|^FMuC(8tuBAqfDeHVl7$VZG~>W%z;C^{OWmL~OFDlpta)gcQ(Yt4)M(>nPDuxQWx* zQd8cSHu)qdUvJ)m-frv5R>_PndPm+WQSS*tzpUVjMQZ;l&t2~og{m~%je<{QRv=g( zw95?8IM*|Ohd3>B=>}H^J1w)+A+I8#rO}Dm%)Rj@qY)oXF-GU&^;Ix88sj<5E&MEUhf8BP*#1-*|eM=LNtk`I_AL{F) zz9EJO!E}&NU(db)D9RhI6qRk%7g%zFXU0G@=?*a_F$zQo0Bn*_NBnYvr+)S>RVEq3}apDL&51evA zYK_`jna|j^j^ZVcavY!2`pS(wT9x7YRt{mB04%H1MFi53s-Wr|K&?EVN{Q2aDo@iD zA2PXG!)r{L(?#74gwVhMppO~Lx&sd3CN+dIhBV(|Q&@#|xONP*lYoe(-pTf&3UwRxv2=tPD}9H)2+3m(nL(UJ5|8z zyweN5)gHTE=@7cC0T4BCmStto#MZ2=(V7zk5l4Y(#;RvyjmmA~7-^hj4S{=}s~>f&K?ZKbG#fE@vw^dum5cI-tDSo~#tzB)B&wkI)WY1M(hY z`U*MJU%Y&i#@^5Tvvrkyl$C>I#FRawU28JivPLBWaryofCzrTugjhFzwPtW+!bz?#lR>$;4PG`up9 zkgiMZ$FTZ~dDH5>F^A2FuXpN6PCt=)nR_em-OAO3?vmAvPSWVqkt&&4HhBWn^B{FG z!uLFgj$Tq-8h-pKCOLabBNwjG2>M93SL`Fbr(cUF^L+s%Sic^ z-GzlsFPI(ErTb0XH?Ft$iU7Rcxk*uGRiE=qrM3!J?=C28{3{{HxDJXd@yE!x%!f5kS8V-?a4yU>lyt8lz$kVR`>q+_v~7d<`_L&b{hE2S*%@us zAL)uhl!huh$h@#mo$F^%+-bjz|Lae{Mef*i{o;8GoZohw0_%0I-c@%yXO;eilR_e~ zB)?3#UY^2B*ZY|vQX!GSewNJ{e7!_8KlACg==XKu^cJi#KvDhD#-D|d*vKAUN(fE; zYmY^Sv83?(i3@uZ^F9@^ym@(L(|)Y$DOBu^J-gCb@&VN?{KhV; zE>>9Fu=f#&Y)(;a_cm}!$8`25|rmi z2plLS3k%RvAV6>3L*tMu)|=o?-543}QhPNx;&sNH)4CbCn=crjSS}&UG^PkT8uk;v z>M5K3pO+(IA^pQabcN6s8NIMHElVa+){ZdO`P|U3h_8NVLcn!BydWr~QjIi8p}@(fQdu9@LJ zLsi+~db%;g{jt5md15D#os1!3G#S?k0J%FLny}+NTY$`Xfh;rLKRS@RX27(%_khPy z80xYcAvO9TLt$1L-M}XQ+(}xk3+H&ab8>2&hmKuz*u}vYoF~~Yq8R2O?}}B8^#8^7 zqBjjyM!@9-eNjj3`vXjGcs;y{K;%Zr5dxb*B9 zu1G>KF{LIp9=}dCs0pjvWn82EzEB|uj3j9!?eyGQ|3G2tSJLG{(cOqIw* z&5ng=pD@zkpT@5%{G7AmdHkF4O%mWBZ< zIAenUAvDqQ;Z4o{wZp6?2=yIKXcFgGbIsur?J`Uk9aViXg@;*w-an&AZ?1*rv$lv4`~8Sekv2&bL4u_C3I z2G>oVRDBcTVds%<_mXw4cj6}ZsrQ_=&nRznfEn$E=3=HsTJIcD&q5#3rdC-I+XXXT zmHmrEp6lk#RCOiwPJJW=&G1fAk9aeZy zNfqAL&I)UnQ&w!2M~NatF3UXRLTp0-0j=`0{wra-`WcfRqw>mtz)wGhZL-zMXp=w% z3)KPH$_#{r0TO~oDWlQLR+{+#tMst{UTInXN-V#q-u`cRNC`ilryMBQYu10{Mt*6n-A7ksS2MkoDD$I zgsNSG*P#;kB4yFyh`2UXap}VOM;KsCo&(ApfkORT#L>i($ZdVsyk0=AR2fB;b|U=? zboG6FQ7L_X`=N-Rvc$U~9qgGo`zP7+a;uiloRp)&3$jBH*-N55?0pNo6= z2eIhbA|-xhce2`lTmG-fq1d^vcUs<1{oZ;t-1*6OavEMD7Rc8kH=0o-BzO%&-7_-q zcr0JiA4SXGyGw72Zr`g*iWWXyT##K~-=14bBZ zvIX3_Q>Rq|U{ZAfTR4cFsap*3_cz{E$7u#o@-LaMc7?1CmDmRP*Q|*kR3x$(<|i9I zYbLf|dZJ=UqoyC0LEy2vj@d`T56vl!;r@GgELrk7IFD1qPMQC^3xTKf<8Iyiv-p-QRxLRUE1k9m z^_b0a<5oUQZCgZB{p4{imuX*Q$#gpI5GT|;%JT48gNtr;%*v$gHY!Qor$-2qj!@8s zB%6djOF>MCuRoqcV<@O*2-Zh9gZACHf zf2sr6jD@xf)&t~|nZi()TTBi}<6hKe+J=RIT;Vwnr#nZeJ8YZB&7uJ?T!U#&9O>q; z?IW4}lsnJ8;%F~1LyL(n@uFKdz-j5=%Zb2cT-zIokcH?jL39Aey>G=vb>~BGJEh{H zhrpyy$3t7Ay|3F1HS6+d@pIAQt?Ws6)bnf~cAJ|x&~05?7HxgMuxXKO1E!7HsdIR$ z>oE*7rdXonU{aZZ7P~0-u1P{O&1tU`vVdlqnSXw8NTd!Hgr-;b{DS{dvxU=1ZDp-0 zyKL?yD-E^_IUv;og&Fnclw~l;i?QSgb}$AH>p5ibBWE9)9sF=+zU;_BH@T)cTH?j4 zvpe`YzBD_SIRL5Pw+d1rjpb^mU!61&^l$B-$Tc=7NBtU^x`jPo|`nU52=WFQP zAY<6n`v4SUh7R&hSG;vFEF%#Igr(HBU%!h^FJ@@;HUc-QSs&yV6%uxFvG^M!{}-=8 zSlq13^yTbKv;p5OGYk%qDCec!;;Rw$?s1kJz+|>wTV2p}q$tID*PG4rFXmn>LY+I~ z;&mk?syHe|Rfk$XfQ57G-krb6h0eq1Ugzv{e$jdjsqu;E=pUDby@Oge6owNA!C=!# z$tZ~OSI~HuTX${wyuYRHyq5V2jX^s>78-`0E%2l8qOyWYtriNJy0uPHp(Bwah$9Vc z@gF^jIlp9!X|yYvxC)brP2vuJ`*(4N1FbLDKpnEkRnx=j>p9dC1N(OZttRh!hPid` zIY~uS2joJ;!>Q^vzJ3%|Kq@byJ^3h4T+ra zqz4a{prQS4_Kl*(B_iy^*VYoAT=Kx>BXp6C8saG+m5DZ@=U|gyXl~?&RrXDM< z?^aW)X(dtRYW1z$57`6LkTY%pXkowODAkcb$G5MI_)BAnrd?{GVB*-u)mZHQ0s!0n80sIk#@p}>Z7wVz!i$U>wlUL4k&%ei+AzBQB^_XlX&&WvBP)4G68;xTL`sWrO6zu9R$z+PqCJKQTG1qT2HTA0aN&1q5Zv$YWyHCxBd zwUOo;WR4Bs9qeV=?-se4i1z_8Gj*$lNVG50ye1>d__%!`*ZkhE(==MQh6ssjO~_G; z2y7@uoUaGdjm8aW;WCRhBj3Q@0YzPJR~hhzwt)`^UD$?L&z1Z9VOLxC`6Kz|S+kyn zf@fp-HEo!F%1Um!sT0xYG81#gtd3ud7M<|)H9DNoY}3ka;FkEW>RqyQ#0YH)2wGFx zX@5gFLOoU}A9dLF^Kj+>gK)kKqd72+H|y!DZ2OoZIlK!L`~x{HP4!MYcIki+!UQ4g z>B5;eHUSid5EN)}Dou7nuaI|Qk7PE#&~(b?Q3sqN`~Yyt#~5Nvkte#b`SD*kMxPt; z#4haO<(v`PXyRqW)Jne35<+PCEXC@&T)8cIrBe>DtWefliTDKKg+{2iuoO!)nc{|K z>4Loi6D1)19cM&RJV9mBI8d@EuEBLGgkEM)q)m~W0v0~IVe>X;ZXX_)2_`)y4u_gzemq}DDR3ffCd>Z75mOx`WU%OsXI9_s$$SHhWeP30F9xqyB4g@)RnT+MAYcks44NmK=g1D90 zv6CjQQMXyqg`MX8Q@`S1f`}DDnf*;8cWE)7X6%@>7$vD6t5m+>zx{kjYKr~bL^zs2 zJ=R)99}TdkGx?OY{ir-uX=@9FXRAi2t99!PVeXu^#boHFDieI+lz_mtpW-4Q9?6*J zsEwl3v%1gX-&6@TuQKihvgBXIG!>-o<%-4O$X*FV7Wg->%7jJw6Q##Iy}KB(+#hD4 zbKpq7;w}Q34;Nu!3Y*|c!FkL^;k)$&H3xQQt`wZZNf8BNz%*G4*)>dSRJsODbP#J5Gq zjxTfCWrHPxNXa&UW(YrT+{oxyWrrMq+%W3RM+kcAr^78~!8S}nmL0k^LY4ubmBya0w7>AMvw)NEyB){sxdFcMVDsz__+6dvyDhB9Rm-c;;6+l zwDGDqu|B=^@z9o-w=EvphFbzF9I%~%d;sJA3B@Cd;z?$yciIWZ^M-MPoAluNPKspF#iQUS~Y?c)Tt(`yA{7 zi)Me#77WpaCt;6$@^l{TCJNnT6lR`Kg2(sl)Z$eK38XG8P+5kyWQJT;DRc7o%4W)p+uJ&Vttkux_+-M@jUG zH3vvpH4VQ>l!GkCB(DU}D}Cr{_M=y_&YTc&v|D^#9}A^)%Hp8*r2lS6Q>e}T8p05l%Km@mV2Fv+%NFA$!;(Olqb80lgydTsOXA{}>Xob_qny83aA&0NGAPZ* zw98pK>H#T?8`%^x%S0I1uNiJl5>L6958V>=3eTu3!IW*B0Ueo}#=I*GCeY@Gyaper z)8DVoM+76P;v|DUH;Oce&@G|9sP~^}Xd8YK4c=?y@f{cqJrNC+oiTRkK&Q0=_%g^j zTD-Zz+m3I3F+O!j*>DruYPPsm1nTe7YBQaElxK4z&x+PPHG7KL+=s_QFGiC?pN@q# z?7go~?Ae*w&ngj3UM=I*J<;T0Tg|?9>pq>`nc3H3VQw5RS6Z;8sD&kxSaLRW4HDjb zRr2X9Q3eXlqRy9p3IK~DdyESZckqkQ_}Kpxp6ekfOXTNz3sOGflc7RJV^nUFjM zfk{{Nk#zbU8`IN(g46o80qK%j5$vHCBwmpM8jm2b%n>Oa_IR6w(`&$M4S*ELU|Z@< zNzlHGs98*NF|U2PIaW9Mo9?xurne}cx|Vl}v*NUkgP5Fcq`@8&M_fp~4ZR z_oH~<^R^{nzNxSF>41FGIe=J>cMF}w4cw(euOa`~w~ z)rY}(VJw8mRyy^?ia;_cS@Ind8XH2^pL(CIa8}IQUcbAWyOYiLQ?{$l*Knqz z>o?w|QBgy`>(*>38sU-(WT=WE7LE%dL)5@Kj>Wra>NYE z$Zk2wYh9vVE}23>9qWVWeUP%Kokx_UMgkLX9gNH9n^PGvKRA)RJ6)qPdd`4tCSM$2MrM`(nQFg^EVZjlxlvb@q0ACKgd8QG>_Kj z?H7gjlG@jzMvpv(xm~nI``&8#@!l19F)ygJ3|RVG@3BDmEu<61Tb7-QQE^zfo+wb! zM4>S+p>|^wxaUXe?(_b`U(uvQwx!--S>hghX(QI=e*6w$=;us?aQc*ufV=27te~QJ z8B3by{g=QC^6(lMZ4+)#DAFeUh0rufdpU0}86k@_1j%jTFwEuBVw=< z`XHKKE0ZoaR@cM%$pTMrit_3VTpAoYHF}B`~i+P7a2`cNU#t~s6-&Q(pFR2(R z(Ir;`Br)%@k+Hf@oi@q)Vs+c4{K2+|q(pqPrSSkVNASry^9iKc-KGgVsPUO3g1vCv zsYXq;WHWDK9`SF@gy3I|Vn{$+Ego7ImHrusY)r6;Us4ul^TPS)FDTX8*$3PBfuXM2 z{wY$!EB$p^>tYA7k!DbuRq8wkqaeczMzTQ@BZ_f}DnzCBkfa;&MAJxob23urRavQX zmQlY<6?`U4sh{%Yjc^{_utUEq?J;9|ig%eghdlrEH%4Wl{Sla%~G3+gO6 z8DwA_lgznnd=gMSdW;@RuQqu!YMtEVHR&0gibe}MLZxkc^G)7JKq*)t$YTG zOTOaPm3+l%xt{5jxdEqdr7&1MCSk%C#p)MCEmifD;Urbq^tiE%F^RQ;4J9rSLZvL# zF04jSXVc-&=Z>WVIDp$Sez07?l?@lQ$}LpLa5&0qG|@+Npx>zS%MW6l#Of{?=_Fr(u1)RXKTcfy_k^F8gqbEZ*8Ulf+Ji*SJxCWh4eFg01hje5ul--X zy4$vs&#v5W`)MDk=>e%TDHSCmgcZ5MLHUM1d8ofcbX#h4P_A{0M#NTaIg)0@a_z%k zO)`_dH8q~!c!<=()s;eabPpv(KZNeUu2PuomyjxV38gBCmpm zy(-XvhNbSJoaM%LGedh-r6SmgP^8r#@|gS4V~pZf^@I+j!$rN zY!W9UrO%UoIhKQ|1%eJ~k(9!m7 zpaWudu(M(;a^}wP!tF&6#+W1$n7Sa+hKwn~MU2GgG4IUk39WNiOG(uSaK*gyILSC| zT})chUVWq&vZ@BUyNQ)lC=oBm^kL@vXxT&jf{;#wbh{Fyq};yV8D&_lMvIYkor%H2 z7Hk%p&cx!U>Ec+ZtNGvw2ukCjtw?n^ILfdcZS~7|arJxn{SEcH!Yi4^wA@NZeOjCj zz3SZ6CF>5VHk~4n05%ad7j?D1QwVbr+Lm#!9vtN0tVF8*BqVs0%LfbIX%2j7BRcAwp{O(GR!B{hSCjow0bE@#iVJ`64nBm84SP?9y`4r0sxw0(h8oxFF(L(WCgnu@Ik{l;(Tw35 z{vT)bRvlrjR1q6vr8=G-=B!jR=3{Rgd$vx*E9Nk3SqpqdyHVb=uVmM^m!T{H4xwVO z?F;Opt^FG2&{57Jj@ZJccCBQs&R8(z+^h+zq`8tUMZM3XiJ>X>vhnlkVq{V8-)P&- zxZ)^(IP4$EAh_sb*#YHgG#d1c#`l%{@%?1lmyPe8*r>-bkIRnlIW=g<=YEMHu$W$B zyQuNGqn`be@$EA-MkO0i#3MuZ*yvB#ngCB|jiWHC2r7+a&lUFM_XK{8|G({^cflSc#n>pmCF6V7EslUvBIQmC>Tm!I>gfVYJ-MQuk~f$D zQhvu*Afd8=?Dqb^e2J=oXb&x~(b+Hiav@{zf2J>?MMPxejhe}FqgfkEK}kL77d~=} z@2k>h(YlYE*56YvK|#~IBz?mslI6E&9-JO(F6?i@&MnLcL1R0u-8a_$nj>sAGq5a; zT^5$t0?VLHW1opLJR!9Xd{mBw`cWR3wj*o>lMlmW+9##~ud(mkb z&3ih0lz1FFVKHQcgi#p z0xAz!jEUZ-kd>GwP8=;FsXcvx78zi7TX#a|uR%INS)!p~zsqb0)zv!f*FurSymwq! zX<<=q43sxmM>m)OJt>@83*(4LcMb1VVGTq-omTvu(4HJl2;fi;w>&FHJ z@%A!ul7RFtdJ|jauV%}1rLGRP&g*noTj(v( zhx{HC-2cP=_9WxQXQkmuHpTIeZ&i}5cpVR%7G>T_)v6S8#uzw81ZcSYwadWMg{`XB z-dd&`aqy3G5e63_EfVUNzR{c=%(f0HaaZ#WWhjf*=p-`{3B_5(>LM6`DojM`ry2`! z8Iq>S*w`x{FKA-%{KDpiJs(*4rLm8O%PTbYsQ$mdNyVTQFqe(%b;S9S*V!X4btMFs z+!uqwcLjy(C7#uipUwN!o9AiWpG;Ty??a<~-2e#=z%T0V81AyN7hTk!9X<2Ydbk&85ka6Osn3dSi^zV16<4T$EM+78OyMtv>ttReTO+ zdPQF+7xcNv`)9g|i^@!K69*o5FsjhBPgOx}`03HaVIOOYFt?(5Ftpjv?R*=}BlJ@g zYnLnGMW9n^!x!LIsD^tULox7g#*>1YHF}T6$M6-hhehc53FH%u7C*C>y&K0$$zYW0 zR#pFgPqP1f8*518?0!epI??WncGQa6A^*$HfDUS}1e_pu4@OpB$#1!lSlz#rrz8uA zd3WB-m9=>sb^{u0kd=#Y9}2B2JeWv?2r?2=7PD`sx{0QnjXT#`B>oMHNy^-?_=2kA z5pYG8^Iv?W{E~l!m@#V1Rm1S9lSd*ktIo*gzoB=nb4|*L`$Z6W(ehaG947jl@~Btj zhBib);W8UURxb848A{CiMif;O)`vB^D+ZpX6huQj`QcK5wkrbT#+#{aVzT6G|8M$k zrsrEsk05ipl-?Otq)~WR(Mi{vlc(^Gc^5GhlqnG~^_y<;Dikh&2+oi!cE|mE4`S%J7P=5QUiU}>v5l=1+nORBK4aC;V zUk#=AN@jR5DtnJK8p(OfqQzKeN0y`SzT2p;HDYKo?4OAs(-xJ-OWmuD$1qjS4h`Ws z#Q6EKj01C?Y}iJbvh<4pny3eW8P1&W|8F1W3kbG0Z!A2m?WE} zbmO@?Pp7-dQ`W^oelEozKE@o3XB3wlhwA(|r^Ol)2C*^054Gk1*z6BHP*O)#PTEc# zNKG8n7cM49*HZcF%*WMN`ZgL%4qay@Z*fDpm7dhI&&UEVs*JzXKt^SxZ>h7Dj)^D) zAk!0&oJoODRfq>E>9rtWKFCBhZ^5rwSx`(Ah`_C&o!u%pccaBHYU9dwN0x1uHpT347&h&D8*-jENFi5GkrvAY{O#tF zj^1pXaflAJ(Z6}KRX7bbUc&Mh*tOsY)E`27I#jDi0LqKj2rbJ0-5Lb~>C6*;0(-Q; zg=D#dQ^7sQ+hU&g`M-eQ4r6I-jrb$7s%iYYaqo^4^!yQpQBHgGWvU~m&1m|K=4i9l zTB9{tP2C`QWI|6(^2qOMqVi(A{7$3^=jCLiL!ECGGg80ut0w5hupRH}_&%pBbui@0 zgoM$Pr?w04XAL$*YqYkiavo)zG=aEe@F*i03zl>L)X{3rhUBpp3;hDn3=im}RvNT{ zXFdZi0-cZ@)wfI$BmdQYbC%pp+0<1vR$AD~Iu`|_`;G)vMm52zS;Kk=sFm_2_>JFMl!BG}D;l+4pVp(|M z8-<*cTaj`K63_m*vkkp@l?j2dJUd@TZ}sr0%xQq4kBv z%Trq0re&!al(wfNl{TJDTd2h{P5H02OOzNdC`pZ^Ze%z*kt?l2O`W*<3{!3U9_D}F zw=Y51r(We1{ajTJNccOi<;j!wiM~IEL8x1o2Hm>a$A4;+82}^O=r zrap)zn%9NBm-9$RL?>22gH0$@6t*L*v~@{HanB_4Z)J zvpeoY-eW#OJ+H@QbuV#oG&#;N73Cz|CV%W7)D|qo)x-p_6P@}hrEDk6M~#yqH@t>d z5rHWdOcwDdGd1D_L_5x1>tpyt2UFy<9m^NQvKQQkdeBu;pWFI*(X8>N?c&GrHSUWi zOMGlZUu9EwyLF#f594pdk~ZD89P7Rf4onTyx5UZN1ZY}PZ6KdBk|SQ`y1)%RkIZDV zTrfkafPaK|w#KQjttg+mDc+OH0$>1tQ_jXl2EJt~f?8;m*U9GvHuwax^*zaX_ZPJw zCKls07CH(+Je6bSDJS_fXLc+x9YEbdZm=z3#21vvW={{}$=Ca47?DFD#*r5;m+E~6 zRt*rxLOx)`fH0MRg$3Ga>PZf(I@40A_5A?$NtfeC04pR_<3FHIWT7?=nUfE-w}`CB zgIaO+KyA|?EoM8U6K^f(#=S2Dy5BQQdCdDf9>TkPw|bPRQ9>F6#SNxXJCJztDrIcm zoCnCn>@k20-(vw8=xr<^K=>C1f<=6&rn7e(Jg2pOojPMBRk( z?&*c@SO{1pL?!G(=%PWLzZYDYtpVt8vD0w4i-D~a;0cBg1>NOQ?9vB5+O zR%*(LWabucGXco6`@$W2*jmTQM0!CCKe5Rr%@~}>`XJd6R z=VbHhXz)7xXWE3sO`^I4m#KTG4BNB&`C-S=%;y{GxD&dN6=@XOpN(5>CTI~`Vp1J7>T6p$&z2V#T~&| z+?5so9RJ!iBmOzwkexu+YNbCYCMJcC&3vJIMaK`a!%jI)o8s!2X=@*^t1MBNx<<%9 zOW&u6=7}C}@0{?Ln}qPWVYn;*pVHW8JG*xxdz-~RS0A>FZa2uJprDJsWHflM0wvrA ztWatTx9-aEWlO$!<5X|bzT*ZT7rK{sNQ0amx}d|T=vN*$;qn72Mb@-q1oqp_t%=z#N>%A6``4I-@-y-Xf(Y> zyu742#ZaWq3KUk6j(zRMGDc!zkBHp6HgYp=j-1Yj7qGb!KA&z3mS#5aXsYBm3w5s4 zO02U?_KwEzQP1yo+K1A#^n;iD-V%Lpx+3U;w}P;)CjuyO#s0sk9q;G#8J1LH!@At38aZ=(#_ zdV0ZlY;ONCU~SYaT*pFhn-rR{oyt{_wcMhGhU&OeCxoVqy|t!Y>q~x&#h~6*;cx=g5GKdh8@i&e-|+* zdN$jMF@Y~I=2VT9{&|>I+K`9<-|^doKQ{TFykcie`965bnEw(H*NdHnqICKX-c5B2 z)vrO?h;6Sk!@M;%n|lA`45)$&bvQ8nYmi)P`j=7&NZo0|g4@OmPcg6BPoSu?;@iex z$*kMnlldo}7B*f4Pn#Lh@HxQx9;#&OS+@MCciI%yjAd&&Ht&O%ui}ICydd3+-8NVT z6t8axbvBUSJ<{HB_0##bN1ObI7xBT(e2|$d)>3@B2H2doX2H@3_53sH9ahEcee@h# zH@z_k?Let}f5r^-zNDC!hU@{ii+3gBCmbvJfwKWF>dBJaUB3M8|;0lq3mSoL{g`-zSxkmkLKZ8CC)-kyWU8q3lGt90)pJnLCW;X8xqaQUom z{I*mH0pg31-5hz{`zdeX7e5vzcu`L>WkXF-93_PXKb=HKX z1bdp-j4@3YZGC9aC6*+a{`}h}Fu9@}cY*AhPL^K-Sc+=ObtIbCm;T*=8d2do;T&fQYc&f_ z7piot&9ZqBQtI!O8_7j1gsUNGmys0!pN`uRUDPL%%W1uf54f>G8{W~4`Ul{?HZ`3&v@+INl~$}d`$QX4dlhg| zU@{~+r)@|buX3h6U;REcuQ{tUHd07pWYr_IG!E0kM7dez40KwX!)8_ky45@yqer={ z00`l+@m>Ak5Pq3J(=3BCj^QybM6~wrm_x_R#N|kXhTNDxoSQ%9&qS82O*PUp>axb8 z%jqyTvhG}oDy!hZvY_b|>VKY`S;3Q-@xc#@{&t5f9}`U5 zF#e?tPh}`qaX;)wR7#PhY{oLkQBkkso)H>Bt^X8+YK^ssua(cBu#`fcgS;T6kz9b`5>C~sl*M$PX_~JC15YL1&kXT|&2XRj5 zPXTJSL_|JCXx98~BDhwtYmC>>4O$+Ov2~b%;5;gAZ|&~Y+cC)J)$Y}ho%g6r@2l>i z9T3dLZiuaGBnS4Jq+$3VC^vsfA0TJesj5Y5G&RT*;F5b^U^i~Y_SS;=mhVtq5K7=m zYnt6|M*RtKNz_CUD7fc;G1}tGsN)i}JoxfbmNNKq)>Q7bErF`tm#;iIDlVMh0SNXVCy)T4u%TdHb}4t9-aeh{3E;lyc_np_=ITjC|61pM;9 zK}if1|7v-yGI%Z5+d&tn;jRWEc2?});B{JmG0i#N6FFzG#)}~poc66+9}_PQ!BR1L zj88^5OJrz{z_j_aunF6bdld~67cgGyBQOVK=hYT8L9C5uBpuF@+e{r8wS%b_n)hp_ zNxWo|HgJ}njLQ^f>B(;ID{CWLFc-lKkZh!Y4BLdLa0*vKw!iomzi>CTcSkG%k({^1 zWDRpxg_wzT>7G9X^hCmD$g5@riI*ZrgKLKBglPu1vu6bcaW3uXl%!)@XwhTl{q%zhTgo zi3D9kTwA&1h=G0=zR79-2VZe^myy8|D}~#*lLT^Fc=uB>-<638@P}!UU;T*aO2c5j zb*d<3w1S4gJnmlsgPF@Jx`0F@!XX@it_XJs10eC8NVcq^f9+W zMq9R0F{I%u?=~vN0X@r2=ZyYFefo2az^CaKkge$SyXmw#T&bQ@zbNw!KY&bUFXSm# zG{?*j)ajK~BPD~-ws2O2N4m+Y;R<($J--11)`d(3OqgspCNZ_HH|#4<6czY|zoXAk zh@w1uPk|aKKOOBbJHQfrPWi;j$Fvec)iut3h78>bXBGSivBxv>(hT##TZypo3MWlbeu^55n^4l-=W+SRcYLq=_O z>$;mJCrbvoo-GsVbM6|Ot~e35A>!XP4Th^Ae%;s2tqHtN7O{i4Q;ry&wy`AqSJXQn zJC7@BqTU-y1_%igD0#ds>58Ww7M8HJ6W=dgv28=Yy4RcAOx+K0NBqg2zY+-?7#Vgx zZ9rXLz*aTk&JTch1vf0_)pjmQlizkJ`U zN!z359&qev8fSqkr3q&%nK}OhuVuK#5ouG~9AnC(;M=6G3624o1|C|akz_J(b>9Q= zqF-&D`;=5FQdi+62LA%|C^50ORaScBF?J&TZl4E$!^!miMY7asir$1mfAqT^FDU4t$02o`yH}c&F%WonYx>dt2!k>!2Nhr zbg4mre4#6l)Q92gIX#3Py_7i||3aJcZDbLeM;rc6Gwsj4UPwTyNibZkFkHPboJ&WD zXwS^%AE$iK7&km9Nbh-n-AsLJfTr;wvd4)GEol9`aLzy3;2GiCCV$4cEcVW(TfAZu zv#MBF@CHfOihJ5|?Y4Zp|LIR*;AgQVGT)l+-G*ussA;E)v|&t*ytM)NFcgBQfqV&6 zhK(A77y!e!cQH;(&MA!6eeSfrT&u+(O(Fy;0YL;+jb}zMSVJkF}9av~ro3G(t(Eu_6vjKN|$B}EX9_G1g09)oO?FB_dMoPTdmkIYyv z750#S1T&D4z*P(P$1Ltw^f=sycMIzq-#%DskkHXECNi(rhl7 z7Isa;*cv6KtwsfsI$07Xvb&z0%pDcqr;G%`({$=gm-lYc9qFIA*zV}Z`DFJvl4KkJ zG61N?)yKv*5(A;lM1S_Ks0_=iAC>CtO0(BD`X(5x*Viz1Ouq~=x5FEVe`q_;99d7= zB`}0Hrm9mAs$y-FIlc-g^Pm{9bj1PYjUA5ENO9!Dya4^gywY#0Ql-dwiZ3H$Ppop1 zC(+@^*pr>)>0B5mjfYL~%`V1v32CVW9o|O_H0r&Qt|)%Mwk#BgvorO#uQMNP5o6%J zA5L@8H}=AUx#e!_jDo@@PAoe744;|d^nFuvYQ8bHQkztMS9t6ZbDe1GaTLd2EM4&z ziigJ@RyDUg+In=AdHO`UVu`6_cO$lGkSxy|wk}<9{0jAmc(iDH4cmdCs$Rz2-vwk1YBqf`3gSN9taolcrb|v^8Qo6-}BXW>AiqaJ~-Dje8wh=0ceooR( zdVRHaQX?-ge(5D4>1%Y|^`=%j?byk1wb4HZse&3c=Oy^3fW&s0y*1_}l~&tR2D)_> zf97MSyuREicOk4IM{o_z6+e#a?-1^WjuMTDFeX#LkKKkWgXfUhq2Tc4+-r!($U(f4 z{$8)%J5kL{80r5qk=w$rnuqfo?OcNUVNVcQKsW{h2y^aYs{#FZ_DFy1fXPfg=K;!c-8d$f;reiI3OIGM|Fav-ToXD?MnE;9 zWl8$O@tm%>f&ukxLtK`wn5N6sd(YJM| zq$^gSCjyob1&%8V=aN%59t@;0aiFZN{s{=L-NZmvtLdLT_e4N?M*tDGG6EptwpHTm zBy<2OmQx!e#;Ic1{dWVfg>Fa?nOz2!DXVP4aD?5Du_vurg zaFGbE(G1e9^k6T$NqLc6%4&^rsEFt zP$%n5na?z{J4V6{jwU*qe!muOeXA_o`evD50i9(}m?7qbv1!nCf&eea6*iuRDg-HW zheC-w!MrA$&+LBqe76>^`JGO)K?i|&%ac`4^+V%qG0tr zOfA3f>RE|4smY17zu7dn^^4-hy4Ej>8V^R24gIspPjO@*36U87w|Yw+pJAV8=Y1T~ zg`O4>{mrRn`pL_schL}5kIqe9sq@Vv4$Ry6!lXf$!D+j661~rNzJEjtB~+SKdoaWM z2KhUshnf6{mPxz%72-=M?Wk`9GK$A-oRYVl=hrA@*SN_pb88qBzgBA?(pXd-du)sU z9CS)>15iKluOMwJWQphIeTEk&W)3~ zihKVtxrU#lp?KY{xD#I+O}d8w_dphB9=+X`iBkX1Lcc5ii*Gj>6;ui{;LRXdJy=%cWL*4nq#BAFO&SCNR9|gZZy3%Wctsb zA!X?`72+yRobz@G*EE2@07`-rZaErX<)gJMP6!U7(@lIu6FN;3njt>A;-R%s&ET;H z5}x;uGW02NwTKAjhQ^n(O7nlWwvfZx-lCvZc=#>ze%6x;JFDKom+@RRQhbb?oLy)< zDdVB{!q<22-a=Tts=|)#r6rNYg*f;6-ZwN&>rxlc6x}N!Sgko%B-?`TG3q3D<=Ip0 zKVtY$FNy0=6Q*F!q?DJJce3QW#&|DW>^jlTSn)2C3)$!ckPWa$uNhh3EcpvFVi#w$ znKu?^9Yb;24m=i$nb0`%?XrACBW79p_+a zTIy%2sqpJet}#a=c1qEgO;#-V)8d#DCBn_7)HnHVZ87#``n0$*b-L+H$b{X1S7)Aa zA|w4S5}tMBpPvBLiy=b&_c+@tk^2c@GUjNlGQSVFQ|CtWAwn-T+VmL2$YesN`<{OT z$h+9DJAyNW-tE)s1rYnB>4d^%7Lo;*~C<{gCwEPoQsd5EN)dH=$(#?NkzqcLAO&lJl zX-L=`-r8B%SR76aH)pRz4fPU;O@>0F#@PtPuB}lXL3Y&}W+z@C{KiCZy8c=U$h<@N zpeUOoIE3$_2Z)l^R+6`F&;ty z(ep6h7SU;~(~ag^r~MWRN4?)j9?0W##l2XJFvi8Dp~8asKMW+c;jO$iL;x~O04Kcr z^pU`)LP6Rd>Ofla<`;_CSEVUxe~MSBXO0r)PJPU^Nf56+BYHw}s1t~H-!SNBSR1Vx zf&pDDA3-#vmhjbH12ei9kKkk|Ez%WtGZHpi4cQe>+QEc#-CU+rv31nI!&B#QT3qv| zre#j`+H}PsX50cdr)@L^`cKdnf3OJm#6ZJPji71EPz~0VrsY~bPswBBi6_X7NJ_-P z2*#UAQ*S&h9;Vap+WMFy-e07+|NOmHCdDJ@mx{Y z*sQtUZS_b6WsZiSnrp4pxa^2~pBQ5`EWl-ZhTH|4GDC5rQ8$vvnfxDL$bTlTe*A6| ztK-_y&_{K_zm3Szv#V~PqT)ucIB{oQMsa-g%fn<#+=zy@Cos=L0y8j~H# ztjU<{1b(l#wq&)zqtp0xa~5J>yb8GFEW81*ra;`{yc`5h z$%~}^XvV6Ms3k!_;^-q;E8&MTW`$>X#DY|ahrmAvF<_7}A!`RoegmUWY-xk`h$3=q z-DEDFb6R(si>F0lv~~=Mvrq1YOF#ur@79rHsmNJ;97XC^)EMTFEn7`|SAtA#ghyf3 zWQzKq`XVUj4dKOwv0`HS@MgJr!$}j6%oe_+qM!`4LGOR^D&j7$q79jf0{hV~>(Os*84YcBUPavHRdi;i zqD&xZ(<20ad2=+DGEtdtocpud=N_MNA__p1jYINVky%Hk6+xY8CC_>|zm-Axt;iB1^WpC^ALdy-=YKdL z_u&@pZ8{N_Nt=RSrddyf;7jMoqA?aWPX0eNjs@fR~Js*YubrLUpCJbuM zz)p$4pj{QAAWMqkJ1f@vPV2*82Q6uT57p@Fp0S0?Q&qN>!S=o=HA44w&(1!V0M7Q= zuvCGbE!v}%vX2I&c7AFe2}JCpveb(_$~60Dn$2A6$je+mr0bO?aMM5Xil3BMB%as% zv-6(M&#N-O%rEnv-=6pFLwVPVr=97-d3n!|;+i1#b_DyUMh0DC%~Ida>s~DH`iFVf z^SI8}hZI?9R6dFb*v1PKA`h_iV;MxQ5GEFfgVHN@EI1X($Ph zDP)mvw0GBDg?^u3D8SnL6cTBjsVQ*y*|#Q{SY!%i0uk<06E-y2LK&`LpF*j;LIDEY zw>c^DGR+0Y(!Pae=M~DZ8T&MME`=0(DvwxwJr-IWeaerK%(T-#Je;hrvD12ahb30G zmIc*#tUbwo(#hkuj@qTMDeuK&Tf_<|8 zoY$k5bRZSFA4g2=16rykz%v)G4yU(6QcB9E?2EzW<=M-gd+ej0MZv2f;H2R4>)?Ul zQWDnSQgP;jONCqwE`O4H+LC*!upvQ#>v9E7$vqvKyHr+(pzNu+%X4yFZR9Xt9fu``=EPXG}kgi_{d^QT%4+Y9?mkXo#t>=P<6`LrjUPywP zRF@izCY=5?NVw(QWW;c7+s#nom!bIfnH8Ll%!AEtB7PYOwe4#w)wb}lmpH+!o|M=>Z? zbQO#3vRo|o3%96R7Q2=n^t>V4n?MH5%V++?bQ|5%|IoS&WZg=8|25N_Ey(v8k9Eq& zl{@=M%Rd1vKbrpXacKGLYr5-=xD1U{;xr_~t3~{r-__G+`I#~-8?LPSTh6p$4jo{L zYY5T}WQ@0_4c}pfzw%qU2ppLx1e$31lpZOw1^~*KH5iy$z``!jdQRnn`L^I-pg`bY zpg`bYpg`bYpg`d8oeVgP55QsWF9i;b-$jEA^buJ$PU95wrkE1-JU0!n#1_nulG_GY zV%tEae~MX`5 zfG#L`k`?>i zrb^g5AbhOaHd@ z97LCvGQZ5@nK~}iB{%4jX!x8>Kig#vp;yi<%XY)eTUH;hK0K$I{vZ2ry~<|$Fx2+p zFPUjs13Rl}Q6HjNzXIIGilTKLrXS_me&q17`tV)Vq)EU5qOWkyfr)XG8NETU>52;5 zXp@G0iy$Uhu_}Y+&kUO6NCh7Hjq3{)4aRjQg8YJo4+8td{O(%C&jN)~bH=}DU@bf6 z!}`rR?TxnW&C0a*8VYp{@r887e7!>TwyWnM#%l(~Y?ma?tk!bp_a_hT&%9M||3*?> zvv7YLJ^Ne1!oq^4Lr+bk+;pycU_Ugv34ym+{#Y0Nivz$8Sy8x6sO32Wm)LHlIYHxHI;ZjRn}ZZszuRk7?${NHBI`m0QZV3--NWogV%9$nT(mDYXPG`rc4Z&JA| zf!XuX|6!{(&omX-suh@}wYF-XZC6E>7?k}`UZY3QXg^!E+83>6Q>JPCY}JkkUdZ0V z*sA^b;><9dws#y&*8gRzW<=n|K+V{yRp)HgssmfK7jaSsl*jhBRWk-^k1>5c#5%%O z?Y`hLUJJC$MQx8+8s=@7rES=oGD}bt%Isd=*7n?yuDDvCJ|o!8*n?Vs?W|3_T!pMH zykZS`sU|maz3~!i`i|COnsKs8OeG%HOy3`Zx)t+y^p7BJe;!upDpN0Tb9LfP?&koc z&lUL#2&we9bD%QP%?;NZ7aqCp=($lFKJ(25(c!1+H#s#>0x7uh-f`F!V7wjnT}Dy5=L93*)-{*r>~8aLH2&Y zi(08=jcRZ&g>1Q0vz6vyJ^vGw(4UTdt`5fohhrs`oKz$ei|Lp?_FwkZ}ri8TV zWDap!q#ZLJk1g{cJa!jXVt#&WoH&zl?}uerkPkCKHOUJ)dvH;~Y0d*fo28m`6C9=( z*dWe6L^o58qj!NSl}Pi4h#xYZ zqx3m)GxK0F%DqPc;s#emu~F)dJj|TP)9!BLLKM9T`@m1ccO~Y1+#T7$ zTo!AIx4c?xN*DI2ravH@h*)F2&pACmdI^T#Ymr_F09OJmO$tD8s8*DC79)OMZGPH18wuc^R45nE|lEF`C_vk!`K^`am{ zlht6dbR7JM3<-nsZ?5b2TJ;F&Z}fX%sO69|C>DChNyv^TnmildY^nwz{Hp4_?-a_A zDp^}~;So$8axFrBnAWKB&r~@^$)U@oVBRjZdwttlr)|d2!h(O5w{?+{kE`n=W#;L% zTvV-46YXtt*0!%@>uw{*f<}nd*>|c=cZ}Knv zHhn9cSI+#Dr5-kPYj-q+TP4<#(e#t4SAZd=KY?XVLFy`Q$bGxZJ(WDwKvIp$Co2lY zIGRc5{#_brN}m~QGIAfY`<9qADyz(!kHk@gx{2Ip!nw2$9zp@Qg!)K(`sy+z=_U4h zeH>%K@_1-yl>(}g$2MGu4IX3wY3^~MKS|$&o+p$hk4z58dM9x^og;c->Ua4)Ud0S^ z&L0EtC}39ai!sN28l$I%Wc?RmC)!~pc2=o0ds1}K9!a!jA03r2{6PNC2*Xh)!R)1e z^DYz6PYv1g7Wb01&5Cm&?d7am|e0s&M&e8l$+BM?y`qB7ra?{n|W1OnLqe|>9xpKD3(+;i@E?7h!^oqhH( zrtCa0QtF5lBTB!Jir}qco)@K09EL>c&-bGAaY=O48JEPNtSv7%zv3>D_v2maZg7XjHdAp<~*TD8>_aZ$IY}H+^Z4rUr8@B5Cp>E(7;k*|Zu1t)Z5Q(@K;uFT;9=(iM zm(hhXZuh})Dm%-Oo#M@y!3QR${x`(bYdk$M@s|g+@A{EI8g=S^nQ1go6p<;QPR#)b zh|5<+jPB65dejL5ht94?Y<}wLd)U|Nr_zx5Dm)Ng$UI6PgKEbK1G{r+wwY$*fkQor zixrKzPr>LC-LXU#0*$8CMu03c#qAWgnv$oyl1qDtdN?YZ7VrPPplV>P4A;)bhRbt5 z8{Y-4E1-(lc`tJQWF{3O*94)@$C}6FA%uVd;^OMBVjTj=FBA5spZiN8H;zkX znkveeHe)716p#}i79eyD2$@D8a=UP&U>c=~yk(;aB_bxZ2`S}6T51uzK z%Sr9xal-92J)^+;d4K^Uaw^3rn4V=1IIMawzgl8HRz2}gQhbler>AhF)Ul>ONe_9)-gMqW?Qq?oYVje z3&YM*_UvvsmJ^A@ItO1w*GaSQD|c3hxRkt+%Q!1ZsEB2IYirP1D6TNE@zEWV@eHVr z4Mue=GpgesqQ2@_jBI6g+-ym5gi1-ByFrhDzJxUFd^bJZiFcYaYdjAS%sbc^vR?jn zx1m3|%vLT>58*V`+v!&eVee=m)OjH}3!!S045L{xP-xDV`@4f{|E@yWBQpsxo-t2; zLJW=-(jIwf&**Ji?CUbYq$OK2n6k?%NxCS@pNl8k4FY&)@BhB=!2KKIlp7&iS)~6p*Yw7k1MU z&KQ}^srn+E>*b{6ajz>zAOl(%N10G{8GO7&$XxYB-cC|lcN@0B6?o0ETbrm17-!e)|}vubwO_XawoniG$f(e zR{de{v3P@uJVsGm+mSW3H>#9XM<$juiEW7k2&xY5aeyFR)UYyo69N$V`t^AFr{`x| zMYWtp-xBay%U?z%uOi;7yYy9yyt>zW^@zSwo%Av9)xY>_J5gCEqJ)0N4h2f6ETn`I zD(9&>rA}!JiN@xoXsP{ehElmGKPJUXcfG679A*~x|8jT0sYEv4_wRJln#s?e$MbWJ zW?j?R@#XG?`8Z8$klKTmwzZ?9LO6#AaFRYYu4=V@E2-4mMrO(ydCR?nSY{!MGx>~U zZ|OBp4_XuZb7jWIv8BH6<_F92?+^>|z=-Ka5UmFRUC8opG52I~iO19vH=Zp2z$k8M%P(J>D$6fON|iG_S$;bb3_BaoDy&rVQ>DuC z-Q5L0Wq!y8a%doED)|wcuae|!d3>b$z1WBUs}8gnk6Ju%FtZfEeA+eK7Ga=Cv1}W6 zhTA{9l4l_yPY1f^c7a>ruT$Xm(YZ;uJt)MsUma-mf>gK-PQq=l2e+z=bV&8T*5)cJ+<_U>dvkR)N*0HyK#%MPK|=lY!Nq`r^%A$w%E1 zu=?d}fz@}@QegGpQAt>>q~`u%^((NF)LgpI7Yjx!jScIX#uQHJpv%)2w=+K;lltN( zyZ~HX=!>G0AmAi-Ci@D-gJ93=@lSc4sbP{FvxXfSZ26ULKaSnQKwI!cIqS=;KQ=XP z>Id(TpuyK+?1ucyQe0DL7zC}tM#mYhK5CP2i|To@Uvq10bIHv8r>5X<2N@5HWn|TjqUQeb_f)_A(E3#u=#c7<*XH(0 z>t`@AkJeAoN1^pXp7x-1b6g_DJ}QHRSlL`xm1-Y74p$*g;6?*45o#V!^_BY-h=Ru! z8+f&v;&wzRJXK1fUWu#(Rgt2BU)Kq|deLHnr#4~g`DgonPINOWJN83GS=hPRu8dZq z36K~SNs?a~6|Mc^JonA9;@hbx3q?n3sr$FfkRQS#vO)v;RR>k0=kdtuB30d2xczm5 zyyimPNH-^iFr=oG_y>e8$81vNd?zD|Ez=XDTjlXT_JAYhcsNeo_xTMVU-cFHFGaC; zW1q{)`z(eF<$vQPVR#Vd!E5%(OGYj-u-%iFoa~jH2Ua}3dt|M^c3yP~Y_A=Wq{X4s z+&?Y$MzAM&NokVr9^>)d^;I&Yn!WN880~XRD#khoXiv!Ff)rkIA20UcC1LK`j9ki< z-cxjEq8P2bGCHyyRlhPiOpHx*`MxkH;w6}!tlig@*gO|kmAZmSwStj$*g^xbC%p=) ze2p<>-#3~v@oUHlG+Ny>Q(!iIN(#(=5=zozc$d@^n@5uiOvj#zay7gVp(yW3=o~46 z8Y8_Zoh@P9lYCPqR=JH;u3QYTJjmFg6LDAEWgZ6%krjFyKXip+v{kh&|DG;|mb`r* zk`l57+DxWUcK}_oL+iBEHz3fQ^+EFg!$gIH&MERaXtC@Da@lNR|G=EpV>^J%hzVyE z_p2$;IE&qF&Z6KcG^lxv>zZoD1?Myr^xD3tSIv02V)#&0S~ufKns1r2sD4d#k@b9Y z|5X`Fi@vd**@-_hn(E0h*%2!B3?3dGCCt)M+11Nyml4}JD%+}D7kkxN9&{S|uj=1a z)EH}U*3n7bADNl6me-A&x^X12|GNH7r6df!M-dguBm3Sh(}{H9Va+X5$Qhm+oY6{z zM@4IJMspdz^LcLPFTVJSjya18D64dPVIz#5f4eCCqaP-z(jTX{L@qlw_X#uQwqA%Ew$X;1lV?5DfHI7J|Iossme|M4DfWJ+J-Q!;tM>-% zj;pd1%#gZ?5Rr=Y{6(_jN|AI<5xi1PP-n?sou$S)uv5TasmG+qH;B`bzux3H7=VE| zhn(q^Ed@vRDgzR8IPE$5Ve{i*cZ1phi)S!xeAGW+4c-e2ME{wzpEdYL>?>KMU9G{J zyt0%vc=au^20Ly@S%c5Af8xu8Z9BnA*K2SFcEo+LzmhKh zM}9sX#ug7OV;1|+Eq?Q|fy|z|#g$%3fUZ4$K8j7Kc%YSd(1fgfpghUX(-bcI^Ce!A zmCDb%(4(^vzl^y4oo@upd(|yIU}Bzb@s>Uc=X#wdh1&lJt137i{E(UL16Jq0v^Q9t z>XlS5WDizHPZwDI=eiVF-7qW(t74tp{$O<_3n3}{x`5R?hz5aGuYJSnIVR@8>Ir=m zSUt>>z)JQ^6Is6Sdv(5J;r?IyelNKPKvZd*7UBl_3#uz_AZ}fd?NV~l%i89QDo&pk zIJ7u?L`fRQRi%hc-6Iu`PQuHBvxMIW7^{8>^-bFPmv{_fx&+3MC zpzfjCBSFokpeC(i3k!YTJ(~zGGT4>$vg)zF*ec}#dW3>HyK}^zZh8#~+$oZu1=V`)j!ea)w*17N=Qx?g7CIXOsNIunAY zurIwtHd3!fOWod>uFeJ-YH~Z3{JP>!6TnOpD6B0K*ocK2yPd(4eRjfE}$WCI_%LpY2oxh9uhf@46 zcW72k_cSiwK_h!EsL2tE=tBK6nzL@X`w{?+-N$W*#c5U@z6O%UyK^}>=iQAS z=7gI&@O>V>X6A?ObXB`Bm+N2Iuao_x$XL<>c=z>AgyY&y#l4}@%mOY?rMb3ol>Q&s zVqv5R`tL9I$pc1W>j{h4lV6_fm0V8mzWz&^MD*WlQh30%XC--nP0ju5zgNoa(dfSQBr=~uX%p|bseD{EjYDPaHNqUVb z-Sof8x;x=zg z`^H^g#HZkHu{O6?+BgFd`NJ=;y zMg+mUDYnXW&lw2K@G9g>g+gPioadFDszbd@V#u*R>?nCj*~M}v_Yi=b+F!e=p zOw6N^CHg2d@)A!e`cT3*hP+p64rA*@*s+Lj5#7!=c=qeRLENy;tss||k<^GA%)}!4 zh_@u$$wm;Z*T-ArafLjJB}43DDSE#(Y774p28L-=8VGQzil2cT`CEEkzE%GVQs=;~ zp_!caR^S$ImI&X(Z92l;e|MVfB(Y0TF=)*Qr&og*MI)Sn4T&wVe@UPI78uTAZwu^m z^TZa|M!R-VH{C1Pm^>gPd2To$L>P;lUze0Zi39FzD-(EW@A#xs1y&H-)tf>j=CWpg z0+1xY)tW7_4A|+XF#1p_7e2yu0dY8^CCJVqmkXC}oIWQszA^Noe`J%-4!QX(LT46+ z&}O^t#56ranzo)vmmp^vB&_Qyff1JjF_7VfqauAI1Ug)b;djRpQlt_IM?gj)0e0=> zw_A48@N60YbYvGij&v<{gzbCWo26ONUl}~q%iq$A!NVJT&gyax=_fl_Z^&cX_FeJV z!NM2DskoMRxd%wK&H;K@^K9dAe4h*$Z?~cUB(`m46&uW$cprj^tcUQbD+g^W{FCD!IsQrGpNFz{&C?IhEzVx9~@Fq{8 z(uFlc1@+B>FtGLfdj?yi!W)i~nsX4pM@6_~m$-GI`FL}&n2HoNTPtZNAm$+%V8R)#y6zW-OV>`1DBcqb ze^jJEP#>)Q=8&67e8*+%U6PhGKJ}Nh5_=O?O>*Ze@+wOgS$AyNvbPm3Nvhn6FH=|e zlh+xb|5g6#3jdbRWeJ~rxU6v5pL37gw&w~zQ34Z^&OwpslFe4sG+E|ktmRTgKY~q{ zZoXim^U^&^`s%!NzvetQul8KJauyO|Fza+M3*($ZMYOEVPdhEW_SCicmV{h%4M4Lt zj}bmgz6vPApTUQg4}FFUwRSJi*F*=uqSP zZW4l&_`Y((+8nc7Zr!pmAn^CEyq0T8c#%PYMsJyz%C4KST_ zZ~K*s8_h0YUS+pkA+J*Cks!+%rpbgT;njuaRe~N{%;$&_KKJfqLGo2Pt2KI^t2#KC zDWU5UsFm+tAkl@jWRFjr;qbN?^S7txVy^n=D#2)bC>-dXoW(L`C__B?u#$M-XP2RFu7s{o(z~`D^S5`i2$CYjp6 z8i3R8URQO+u$ywiL(b0)Tb1YMhIViYW|Q5x`7AqQlYQ-qLvWI$hf7!67B1(~6BbT@ z!NJbZD*r2wr5B*hoXkLp^{U@|3kMZP5|!u8c7K3thWG9Le_gJjXY(L zOhzH6LBOp1;}Q8-tTIVY9}*tY5;6k*O&STqIi8m&`*4KodGH>Uu9!Zjd`^Z8${7jC zw4#h9knKLWS=cmNG^&VY%8(iQcfat5{=_C3>2h~YK-eOuB9^;T$**UqgTS~Fk64nI z26%T{uv6`+Y0KSfU?k@D7@R!PwByxTGJF!{6{3%n8<{UDS0pt89g1A%IaH}6SOib~MR{-K@ zMF$bY$>`w)V~o9ZnBd+-O&-AH!0+)g zC3^UYHnCp$Fgltj!$h|3e?4jz#yo0!#qDekcOduf@ro8`>%|IC#5T0`9{uQ4@`b1cHs*`_*g5Ygi!M6f) zf6sV#I`|o5fDT^#0d(*ztYHs2`1eJI4hALZAbyq5!S5;X=wR2yJ{>S~rGsj=`4V){ z(U}f*ewILVDjodeZ-x%c4z-erPY1vCik|i9;9WK;eL7f|Xl{RWu-xrL2QTuW&;eQ1 z6Peq~nTbyjC8sDsoVPcEP{i*z*dU$(#oJDz#grZD9Y6?1%U+%#0QUKZ)NF};DwOnD z?5(}y>}fs(XU`xX_P2K9vIKWuySpyj17{=03(nr9z{A-HMW3YQ_i@&MgxVX<9>o3L z#oGP)k-g&VZLjD~z7$`+JAilqA7?WY&Fv3o-*#TRQ~7XroZUG(iL*N5e^|u9ed26b z?-ZP^#Y2#SvtcwQI1?Q0NIeIz`?~5$MR3&r>iy&BQaHsPIQr=Yd*J9XauUV^Ln!cY z^r)gM6-Rv^-#do1d#g^+)o59I1e;>2VDNaFk|qx#ElUX&R4L#BK~_ez)FeBjaL?FIX#OG)~cq{|<%IQK%Atp_IP z@+iS~H1Ka-DbQtahS`ZOTX+Gul62|YC6oNq<$JTKZk%hVV3rb++En8&6Ht6zDWLFd zs(JnWd0BORb+Z49O?3)lOOSk^eyIx(j?vksI!LCZHq{>InCF|rD0UA4a#q%*tSCLl zEHU;W$J_?boyyKO^g)cS3TM*5N-l6>MV0B|DpOsSQy*o8yqh4&pKZMdp`3u(adMkg z;;e@rW;sCJLc}?W5jA9@Tru?{Ug=qu@4Cq#M&;tEl0z%uj16Km=1?pXBs~cC9c)xz zcT30$G1WZ|vCL?t1>b{zvi!j1VAb|9PyQhm{H5Yy|6Ktf;{p<^?sV3MgdQAw`Tyk! z6y0Y3Atz5ri9mv9hE?ed<=AsmhJb5=9`Nu_nxq`(aF!&`oUG-sIF0`}Q4O%m-0Ogk zfBIw%EefopWj%fJls-QvHcQOkSBPjDvpU5#2iBXuOE8ac30m?NZ zs;ko{JDlB5p9mt#Ax=b!oIa_RV<@y1Y}~@>ledDkpQgK8j9ym%>ihVOU{8II(~}e!IKs$OQ^y|{?0K6Pd@No#q^aPJZbk{ z?bKI#@FecN>cP0}!Tipob zC7eV~$A}z$4=phEjNC&|{cnwE_-osh?|Q)uQjaQIH%r(<;uMNx$#46$vBA+C@IQpe ziF;llp(M*X+*5!NjP3xOXtj$A7looB!Wov{bbtac77IoDEVFA*Ppf%9adB@uiLiVJ zo!mmK4!X%^wP-3Nb<(Y|YZrE7BO;nL7cYING~Cjm{<##lTl19BsctuRVAL2+al5hI z(!ltrhdaO59c}aD&ctZ8qIAR z37BMVcvGhw%Y)hSkan}%PBLZ2ttziF+r%VZ04B-xDTSRkKcvcmZQtNpUT~09*~*jJ zMgI9w;+i_&z`by^&qD8nbcL(5VBw;S+(|@JJFiSSh})5>;sP?OXB%Nm?ncnJZ1I}9z@ChUXVL6SHxS!{! zEQ_guzd=n3AQP4ISQpQbkyP_v7Zfxn2e z(=POIQPDc6f$I*i9-HN0WuyXyk@G_md%B@gj>NJI8H|Ry zh~&{$?Vnj&m8Bc3+POU7X9?jTEaiZ3Be>-%=4{&<*6g;>wBFdEt{dGgvlpb5Rb3d!;(Avs4DDF^kQvDam&0vd>{YUtp2fV(+YiIhKH@sHX1&X< zHRuXOd!14l?Nv%n{Gj!R240jd2F-0$OlOC}SzZk5nRtm-2eO z^@oL(8Qfa1(3&-unxhz6IKrt&8kuz$FT&BxZ2MKnIFi}FX$~1w=7o{pwKJsE#Esme z8w6|lOuWU7-YherzvyTHLj1F)?x572LJ51O^OC5vBN<6FvsIei6>jCOP^&C9=r^RfXh_>)6=&fgscUv`PQsY-UcT;9&Obk zNcbKQH*+Pyk>R3cc!6&O(M#>d5055IR!_ThVK^E}4_m{46k(97Lq(KrI#Tv~X2+$W z#t)8$(t3nQUKJgYt|%3IXsOK&;It{}@n*kAMVpHFrF+ZS-C1w)0>ZDE%wgpz*RiIc zrsh!NraZ~vU)ntN3i>asl=jRR@G@6IEFsQ67p-Qf1YxvHJ(Iqv)Tei4>FUX+vE@Ue zU&clojcj309YBwT+>lF$laH3GfU@Xp@?FsUqELKU?9a?H_A-ucJdXTa!*x)x4So(V zJ*zBJJe7fh{@&zf+r?GBGU0fG-bE@daxQb=U%hC^s&A0O(uS}#yg}%dEd_2662GJF ze25pG>(tBn;8hlT8sEaa%-6D^vBs+3C=GD>fWvFB9F)t|HfwcuUm>#$PqU`gu_W_~ zeUV}><%{*{e51A>4OJf(+`cHinzLbY1j79l>_hxY@@thV=e0wtW8{FULAyhs&UHSfGIK@ZTB(Nz&^>Im^xZ}KO&Cp#UKii^yR|iC0UM!(!|#a7=Ofcc+V?2 zy``@>pv%tE=ISxwBF>AA#d=y{uik9OU-R)d(z&o-hji|Y1i*tvIz#)p>lG?cB}tIh zyW-XkMKU;@)KM9|G}o@(oL&RVnO-mshBwXhCz}T3-jqS;7M9?0vf}dABra#r&|dI) zwU&Th#iwW}CV)WtAL0K}e9FQ5{o(Vn&R7&R13Z0}!f#~}7cKL+Zd95St{Zj`D?l37 zDSQkjBb$c8@H}RR{+tfO3&C>}d{h{oHT#8iQW36Z_-H749u=FZxSB?#E5F5iwc>|` zl3Pgg3NeadjX02Mt_YPjPq~EKdW7l1ar1Qqiy00h;N)Kl%WXC+*JJsn;z=|N+s(I0 z6Mz^M0cs6fC=J71nNrq_gE^G1qHy(B~>BuGyY zAMkCFMWPottHVarAd;pI5$SLJYhWMSqAoCa$a8@h4B(3iF?V4=X+HRovv-abp% z`XlnsLgDSS=zU zpX_q>Z0!i)fG;n!$CJEbXIdu9_O?Gr9n6EYG+pX~s{42qB-7s7&+O85)dx$4Xs%?> z=-`(%`(W4wsXWPJu#*oKu-@ommHXfkqBgXvpYMazf_e&U6i1ke1c z+D!+5qqGGwcful(jm_@7zEVemFe1a@qvniaV*k?%!$4v9Lahl=7>@Py1$OCIxgVfs zONvO@vtQ}1m0zMSwAb*7=JW-^3HP2al*$nj=nIIV3(SqU=DI=@)t#a7u08)rY!vxV zvVrdS(2fo!Fm;1OC9d8oUZi5XbS2iwS`jSJjp{8o9bh~y_--M>g729jms7qIj{L1a zRvI3x$t3j3I{kSZ#p=9r`nr6*K;R+sc<#sYw^_tjiAvy+(V>IwNS)D{MO9~Mh!tCC zzG!jRiE&LhgHU?AyMdLhdQ80f#>(g~DA_6r`3gg;KSyUk>82F@>E>+4>;99<8s&g) z(C$8{zaTMwb+~u>zaY2{cNV|wNDUvi+mV~I?dWyf)sB`xd>n8HJKpU0k#9R@u%V3a z#BW_<6KNmYWZ;RF zkz>i?m>n)PGq+~pvVataYGE_@L0$*P+Hw zGX-4XjP0F~TDrs1`@QsHTwi~(9kyC}b?5s5K6YM9VCR7r!OpP;JJzhb`Kjo+iw6N* zm7s?_nxLmwp~STaa#ry9H;SWbs)d|`5F73%EQN4%Xi2y-M*pxjMd%rRue9mjZK|=awZfWJBqdzKR(rfw@m8WxdMI*`Vl6VX zdpL5eCb|X;vxwkf*#SJCz705?JCp;sYY!DjdPZ=R`{>PTFEg0N^8{lEA;ILbx*PNt?4K009qzyV zU$4U~+`q}M2sa?Nh9b9QS4M9%itId5Wb>78CI*ZsDh_4rl9gSiE1TcOgP_a$9G&}1 zx=4i)D9?-bZ31Oe$Z(qi6b;Z?Ac~HZHcP*q{DDvJ6Ot}sC>~;uiG0Bt-QoKK z9$?U-b>Rmv+Un8PtS@*cb~ehFHJei_q8%3Q!y$lvO2x5M6r+3}4go5n9T|;RDvExJ zox9r8Pp$exqz&rS_LN>pW2V+E&Vg9IaSm9sT^*cgs~6zG?9~%T4W0p1%eCm0>I87} zMKg_7#ck`H78FdX_Uc(#x=hqoC{+|zb5(35!>+wku!csgJ`l9c8%1y3$7GH7VIW#|*FO9JqJLmt`a-?)E%)$~Ho1iyB^VPEB~BHI z@c3qxJOENOUFd1;Cqe7^rN<+Jq1F(JFt)M?d-sY%m@JK#u})N{{a#QV9c+Y@^DcK# zhogfx(=^pc?GVN@`Zzzr+!0>e`}MT6JJBSS?3cUUuu?-A?}<9F$sRwq;9>bFdTRft zCC}I*UmLKU!SA_$J(#iTh*c@5EZu5EpPye)nql7g_yf=pmDx21Uy>QR_jXbZwjhL% zD1_Yzd51->S}Cf^ zF$WsG>MbnpaOwBeM=_9ip#PcO67Z4~j4$?^$KC(3+;e&f|s?C1>;j8DM6zR{U}C0r#*zwP?Vr{53# zUrN7k$gjQAuK|Y8CmTVTIsrMBUSemghn_tu{@j{%hEnlAJ<27hTu5DL=V58T^gAJ1 zOsMNi4bd8qt#Z2qE@MAej}YYa^PvR4z>HJ)uaUWD#3-J;NgEkJBSu#4gEo!46sBe* zBwqBW4CVjQpK}vN><{wijM0k!FZgq|E@2k`|Mcf{;uqrEsX|$|vvF9HCt8_IWQ-e@ z{0$RY$*+xhIt}T!EgYH9LXIA6JRYYtgvPV9v%Y!^XZGqXqU@K5v}pjjl};w>l#Qvh z5z#)PDY6EZ*gMvTqSFgt&DWEi8~b%La_coI#HD5zv7@$F*k)4$=6+m$3!84gll{0e z327J_cFx5Odg0Ix+ZlLf*g4Br{Z-juc^8q|bRh}~3mv`WmoyxT^g`pNUG_9q<2@nF zp3-RMNpJ&n1iSP#_GX$@jTuID+j%$47wTer-~GF=BIj;3dHI%YJZ#wYv_M?G6h#gQ zbQ&X$m~5lCp< z4Z5^dCoBRh^E6>w#rVy>638{SX8O|&IY8xaI;>C;H*WP+2vSLQw~B$W9UW+ZDyjqW z*mi~Qs>?2w z58VQ--c$FKmW3h%IcP*@D2cQ#N@64Wz=%lZrclNk5-u}qnldE=6yV^)Mc^ySd8qdL zbnCVUguO(E;&Bo-LweIt^m?+p5Byvt2I_8wT7&rtn3VfZFm1z;xyCgi04$&x0br%` zsZ>SddY4fd0o3?0aFo39h;)GGkVa*$}Mt4gfD`QPKLJDN*%A?~-Z1LLf zyIHk^)nhWfU_zywjAfTqx|=2ve1=qa{weNM{+eXe9A%tZ$hm0zWFhONvR|;S0TTKDqI_A_HWV^rpP-EpDEYhRegSJFTPO;#B8TFF#;2Jt zo4ahd?)VVztvP3`x)d9@-I#2c>%xXce@X6MJrghcy65QYhMG}0%<)dUPr@`s1*}gK za>84^$`#7O7m6|o|J64)^2Sq3x;mzQg#OH7yUU9H~ABkM5k zolx(Un?q$>>AritH1|C%n&!Ng zXj7S7IO8Kb9q(8;0|`hU;nGj7SwB@tD)7ko)&)TJCGt@S{u# z-4H;hT181FAzu1wK}_yN(poMAC^u<+5!6lptM3F_{X)?TP)S;dUg?LKNxp_DKY?wd zmM^a?T291_!Z;kwd`tJcvu#c(Mqr-opG0yAe+kvLrPq80N0Td(v^3#F5oyxsJ}w2` zt{2A;($t%P^tNVq=NEPd`q{(>rD3^~(ODICwuTxvcdz~6ETM&IcI1wN8T7}g^(~?L z%x0@zEG7}0(K}Re!C`Mlxh0ZHf}cq*Q<=s%IbhZOma1Y~K(-u1x)4hQ*G04sx31i+ z#)loPmyLPRTXcz*F1BWUM*|`B&7#+oSfhQ&Ak?5V>pnYCrm~3qsUYVvu`e)f#L$uOOO=zD@QYl3t45={fj|`otWsWSVYC4XkTZapDk zsR?Fjo+b1%#x6@JPcrt-Tr9Mix`aqlkj{BQ2~UKW(%NoC$j4rd2VOivnH?LyKzLyo z&=JS>f$)Z6B6ZNMC0KTXyZB;hy|`q^yi&MYWLPdHO=OUfPLXS~ z#gEW09KDo?;MXLCLu5>|8=(svSlKqAYc-#E(<~D`4v1H?;%ZF<%-BV-Pf}pFn-B9a ziDjxe%JW*DN}Hb75^rKE;IzVWw~vBgeQZ^db?TEWZ^1~4er2&96ZU)UENNN8)o^2b z`qlnI7p&Rez93)iH+;dG{WcX-LKv)BtK~%^j6r*sxHLb0W3|lVhiG`eHw_me03@<* z?-3!Bv|?8p-bE4-!fCVAh>)qHet>p2^|XCxcF$m(#hys&SIc5g$q&wUi3>aS8uxL+ zHQ5UW2$r3JA=^Cp09Ml@=q4$5lkQ2wtWOf?VsQ{h0wa}FFM~F^!`6%C+8n(gTbAo2 zB%50$8*Z`&QMGF4r=>+NKy0pbuaTN8!yjqgX0tD+E7PjGfNIiXp$JV#AH5H@sSfkw z1tX{%#0PMQ=_`W4B&36ti|8PVLP&ZXBwZ}bXDs%E<2Q9hBgDcgWm#J*ov&mA(|3M`iaxh9cCh?St&vUTCkls2b0wfJ6fG|x*8q$IB}wv( zS7xk~=X|EhJOHKLIet6&G=TOQ=0Vq zoj+Ep)~QZly1v^e1hS=Z74#yCpW9u989ruuUFqg&^YTlkID+QeN~oaxh;Y($Yu4{% zT%v7XtYof1M{ldKfeDFNE!tqe;zu3Bxg{73-6QYDZ{I1Y(eTK`e#5y==7E(Ndi_s0 zgZSsl(qM-KLN5)MF0t-vv=4+c^ePNl<;|f;s3TOnDZK_+CZ-LMTfKyM^MsZq2}ZQf z`(dXWt;nZ!r#{cbBi&-}bY`gHNXQ>8v7s16Vk}n?-mbh_D&?9Nypy1TP{qE3L$8ilbo_PS-aT}E zC;^1T{B5VZy`!MW&d3n?QA$_@4pV5m7vb)l30bJku$-_jzB!Bd;4mTYJ3g!IPu#aa z22+4qcSxWd%yW*N?@1ix8MQcMlJ`7Ql;Ip5HGTsbjpzByP2{jT=cw!@;oh9eM+vu5hXy^^<@MSO2FDZ{L?m( zO6cTmoF~%1672yhgnlMZ5b$yakQu|MIJSUN!R9`3HA^dDXbI9$eZRL{4TTsSQB;0l z2hJU-UD`slJULi;726h0MWu{bdJWCc9HlU1MwLfKv}m6uxjy+b1&Qro-Qs*(rmS_q ze+17xV{gc4FxB|fi!s_MF%l^I5JH;!OF8Ig6rh2kFAG;)>6UYPLK*5``zLfeAsGhX zC1r`>lhzo7ZaP-djaS;!KELdsA*&O+Lqi*Bpxe7!3^TD_X1Ee;44P zwpo(n6fT-C=W}9TrF>IOlnn5U1`ei+c;Ig^I&+{h>pW@5i3kU`ojcddADXb^AJWNn zrjz#$_c}R-P6jn-7oFFa&e?!bMkpwDzNx;|>+`{*rO#sRvn=0sW{7{*=2Wm%_Z0C6 z;x8RCCa;>q%?CUq&>|77+^omBO~*taqtu;tH(k^IGsFCkIX`vK0F+#QQ_qF5T_ z899w2@&}{;jmmX;vvg_>J@DY8190c#RA)C;0V9*>50Z+n>mk~ z(jWcU>-vgB>C?bLSLJ9sI45A39i*aN_A12X{CBXCbE9sQmHDEha%(=gIm zf*zbNm}fOi_w4LM_qmW}H1JOXxC!AJEbTt=PV+vYtogQY~F)=#nL%vd}E{NxBB zz^OWMIei|?w}%YNu0Dcp-9IuFMO}3tVY{iF49j)WyqoC1d72CSciyxQPn*{?$iL{Ik z&^CwX8XE3qXxmpjzGU?Nd9X{spEQ=4Z0x9HV~1*E+x{u7XZ4mU!c-TSst3rDMyg$MUaD{>{>{Rn-?b83^O*ZX64A&SkP|zdeloHX+WEbVKN>h+ zSg{b<%wEb5|7GTqz+sgrchSHhoP#o;`3u)pI~NVKooUQ-mHULuP3g+2yN_q*qC$Cn zm%cVe`DX}=@c2=j!OxjETg1pYV2%4iG2=+jP%_HtMF?L`o3J8Oz%pK!IOkOHrOxxV41wzg5))81BuEwKt?u*fGche`Q~eI+z< zjHqy=DjQ8nyaCRJptDJ&&FR28T!hQdRUdA_X(8P8r3)vYCB8^pmSvdTxGeP?ei);; zOe1K;@3u-NI);pXF`2e4CSQueVkfAd26;vNaCd)GDGflG5^|EURq)V#t^Qg>< zwf!3Q9yLy)hHCMwd0+oatdo2e$(BQ9k-+Y5&X%?&JKqz?jdrM?y(Y}Kvg z4aNC`)^LxaypIfHa169ImSF}jLgd}y(PQGxVT>6WQoVtJG0!`#e5+g1^(Q| z9Sw0SH|vhkWG>0g`J?>N-m~u4$C3H5nFxXfsl53ngSY#7Nc%qsUjm;PhvK`^PcO+= zyMonnpkOEmcX<3Qz*2uXqf|~SZ_&BT+u`Od`f2Lhlg-<_&Tp}Cq=o#>Z?nwX!p?8E zD%wV}(V5!r2J^P0^IL)}q+O-Cc0A`SwrdZB^$MX6jq#Uim|ZAWWxMGtqV& zH9S*aqN_fsVx4f+es=B6X=&B)t4f`0;>%Nrq{x??rw^bm(C9{PSMxNI>OKrhYj5`Y zss1=dS`JxN&{b!Z+^2s}4tuzMN@;1iJ3z$-MLS+2h((Yv}sKyQ$LOa8jv7~yzHU&RKcq7bCHO(E)$k+=p7 zq7slg$VXB@q2WPcH?>DZqUZI9=SzXYKdSjRCysTdFZTyMB7qqFk$ zV^kRt;UYRjBwMy~jITm4!+*E~2)_AU#oqxK2N3o4?78NLq*1YIE9FP+P7)6lo2NwL zp`u`}r2i-iW?L68-DX?Ib2747{x)y3F3H+~1-Z?-%=>#qquYLNS{kJTo6UiDOf;*q zk#QB8bM4~QGbvSPem;YNk*^6ZH>W3uC?$Ky1e%-i!9g}@E@mvPA_Ga@?UfJntAlI^ z4~zX2ayIbuaUKyod%0JQ`|BxdCe1=#54zy0?K?>^QbB}WMLP>I%{>J-T7APUKf+@g zom()2S0U%p+>rAd_yQN>5ptods)B=YK$h^Rn6 z>D`US+EvOdB6uN;!5orH;)t|3+8#0-|A}*e(baI2>1IG@PPyE@aJ^&?Sud;^dkZ~5 z(-hN%d-~d4lERJ!w9?)3o@C*%>L34`tbs+b=U|!WTSE5nWBvkd$a6l=fApS7xqnPV zpT~zd7Iw_d@@#TzT_hPuxFHq=qN&2n1bZFR{hC~%wl569eXiHtj$y*fUH2l<`#MyX ze9X*IW<`T4MCTsDfFz+ubaV-Rb`r4^=$({S-6Pa91!ZgxP;j7EaHvj!EPg-bG@Y;i z9ilI55I`hpc4|tXh2n7ZT(DlwE`VM(N*Y@GY`I%hZUhR|o|s-eFnM{%KyJho<#CDL zzl2Xf+gk)Ba^uce$$X@dypJ)d*itpL=6a76C8X~bM$sL2Kv@hkX_l011HibtJiTYX zdDKqiQe}~}vxF{8ZtBA=v1FgZvNCSJP@X&Ct>lcW|0*>l7ug=UsjuXma#A-*rZ4W+*7?z(dJ%JrcSTb2iD(^TQkB} zTwhVSfEH^@+2NE`Lm-|y+rs2fXItC82HQyk&*S&D@FxjE@@hX~YX7~hiQ2C_p(@Do z6$WDLXWu3K4a=%E$7g%j$E9IA-~IW83CpA?h5Y8wRL~2862F975tMofArbqsvrgc{ zVW+W8rqWS7&_g?!kWWm#`#snDddu;;lzvXp306Xz%x9guit8|>7HgukCXa>7>OEG^ z{I)1@ZKXxe9K*$$$RAm##Gq^dYV8cBSet=^A0HrlIVkTh2n&-)gEDs+ml@N~1u{Jr z3QB#sGaRmYL7ux7^7HybDsb`XDVToKU^S}wuXD%itn|nFc;FIpQ6#WstUrPZ)Ihn7 zfyWlb15ba?Up+K{3{1qgiNB9KEYW)_omGJ6aG2An3EBER%AJM@m-v_j88dK2{&Sp;c?A@!el$jBR{t* zowDpO$0mhe8AcU!*vY(n9QO@!1R;!NDLZK;=L-_sm0vjkuzX0q&#!KJSgNgrU$Gx0 zY^j=LT(WXSl`{o$oScG7y@HGQ!Y)1IGTOK5qhNzfAbIYe*9Zj|mN-${tQljolDR1v zl$@LAUyzKRRC6;oIdejZ{V*}X4q>CFV#smRdxo$)%yp|3Lyn!!`P38B$yp#ypfvh& zM%%*pzeYR=Az#sfFXugj&DQ&GkFb77RjcplTH zz5sq&b))I6?IP)tpJERM`G`8>+D2*fiPX>ocu%7C65irJXS(txa$B=0C`l9q zF}H4OF>jAgzAfYJdVQPIhqvxp=`nJfwj#vZpa{-sXW)$B8U&U*&s1rZucXSKsUqnY zqFHlvxvv$zf0j-K&xq9cO`^s;L=|o%sd0p`;CmHyH+SkR5&%+ z#M@c{PmOePC^c}=To0d*2XduxPwZTU>mNypz7q&is2hF}tT?K@KsCO-{Tx$8_Rx;h zD)3&f$~|6{{!|%K>brBw{;Zw#*3KRPI2^duQCQMaG%y1|sbBRZon-}<6hqv>S7Am1 zsD?>}XuwrIjsNv`9mxSdOSK^-J|FpbuD19zH3KSFJd4%j+mhm+Dua z>`0EZhkOO695VlLhGRv?n&vmfc^$c;Fdn!)Wm@m(phn5|#0ykN#ly+WN$~IrRgyqH z!L;@_?e;Vstl_jDX+dD53{jld%jiYpo`G=_WxzNW7(XDxaB>P{4AH>lIw+VD`>BR* z@)arf@Ii3M(1Pg)hH3{E0KC^8kQZkP+dMJx^DLi>N-26{nOwvK3$-J!Jj~SNfnD?> zQ}~^X4bP#n*Ea9vug%Lseffs>^5^<8@Ujjs=TIi2a{b_VV4HwAa!#?1?@X=MqMzR9 zeR@3a^xhZzGV*!kHi5q(K#CTWLEWr{KM=I)K9{K#RJ#%)+`yu^9EX3I+5*SnUNd=S&$n9y zZ9r#9+;jej2mvGnFz7ruF~Myl!s{0_2o$0@r;}j7eOZPWxoy6@!s?ZweMxV$qM(pl z8zOQK>VsNC{0nT4{Hpdhxw*D;kEwEgo>dp58E=*jLEt`_J+4iSOic1DfdCO!+K)qF za7cn==G`aX5q$-@IES#WOkI>&r)|78GAdjAYp;AI4XEeLsvALptdD5m;_qd3BdL$o zkF48Iq6jN8nsYNH@xWNd#AhYi?;-kGR))Nb2EzWQF@6h3ztVAJeJnji1Mhz4wfwqQ z{3gX>QOIbD&1jT?2;^R%4AJw1MSk~;<-Y)>wR6`&s9$3qmy zp&@70U?OCFbR42Adc-^Ohw}RW{)x|`NA$WuVp%zm_a%P9c;Go{EK)vbj83Ua`gJ&4 z)}SB|JV?_+cpZ$Rlr72**2c4^zXp5DGzbLvAMO-VnCR8bp)SQ=f2;VV*x@N2sMO*z z>%OMwaFndMdQc24Z(LH#6D2R}2%X$T#gz^p-MbBq>u7=(E1loX2Z@^Wr_!0-!E?y@ z(|Z2I15>2Z_nhkOTo7xZwc{v@&Ew%n9(1{CyJhmpJlcIhNW*=Zf10u$I<}i|q_nmk zMACRRN~&KB!vSlGoy~#(ZAQNh@&Uj? z9PJXnQ+viI$8>}C>R*$xXmA&suV-4b4;8FOa;}dL7L!Cy^{8@L zg~JYAzMaTS@=d##C*aY7H6rgYPs-wfi@s3Gs5_tL2zqdX(aQ?bo#mJt*e&ihv0<6_x-rYU)!Q3^%V@Y}mY9hlfI&C7-hR>yHmk`9DrI#*sEtS>the69Mj zrWK{X40&jWqQi4l`8Td5&j1KVN2!70a-~Vy?#4$gQz#dM#8!hu?b#c6=Zr2B+v=*< zH6L^s>_%;(yx4r~p+jsh7o$eDQ>?l<3s<LX_+;dIg@*c$Qbt!WW8|-!4ufW`+Oq zCVgoT)240LR2jtFY^$v(R#_*+R4QVI=V`9P6eAI0-2+b>*-!u{VkEXKQ=FWgf|Hsp zGO|>h+{*}3a3Vj!2_)~u6snhOcTC(!C-PA$CVs{{FhL}5h0V?6VkVx;tF}v#^$AZ} zRqXHaKnbs7+g>N{jl?>0is)M6oTm`){F{7lS>c8Z&PiuevwRKnJGb4T@P@tjR#>cUbc(OxUHheQ%;a~B5zvIM*(^OH$^dRgn5^i9&B%*Vv_j>Q({O;O?o@x1F zpb$19*?5w1v~^k!=QCZ_!@KysWQ;hzzGxc@&@pm;AupnVT!g$vN?Z(3V{2^}$q9xVJky7NS%OSBmHe_0EoGIs|3GP122>5AVx!zkAh(j8#|g2Pu#n z=%ZE4os&-D7#QVy*Wowa$@kyc<;*%+=}two&{cgeZ9oNhnRxHSwOcH%UDo~uGAF&d zWA`~QkiE@e*H6qGW+mqk+aYtfxh-W5B`I@w5S;JDUw#IM&pHpDL9TQcyk-U;)i3wZ zK6LQ+05Z>C-WmS;82j0Kj{PJZd!w5&_UW%A;h(?vv7b7tOJDykM27(0+Q-=622^J3 zZCFEcFjx1`Q{oDoOY%t{X|}z4+mS&-PWD|9uiq&{CCG^FM~?bW$xar%Y>IOIqTFQB z)21lTFUm_6J!FdV{i6J2(VeEK&@U=X7R@w8nABz%#mS<{rl>@U`Y^&0ihB7T#`hJ{ zBZaf*@XM0l5zr|~L*FOQXCimH-DUn?CZw#x%{FV557al*le{6x0Z&rN~a3sOZwgg#Da+$UEd+&Hv3?Qd?oAp z?=m!>H;rSL)wdK@{#FW7d6U}po!Qeb5OkeaxU#49aDQ1P&uSZ8v#0+6Pmetrz24gi zlQR&V_g8*7NX8DRMSai{^~>F3nTNNrf@&*4hL>qyNOQ4e5}PL}{M(D!GO^J+n`AFp zX4r-t$o^9F({tI*zvtr=aGbZm2S@c)D4$3s;@D&-)cwhGx&>S!J6o{^Guc>_Poo#( zO4C{h!IPIKYrW>xdQEC2Osus&06%X9s~U`0QxFuTfPLA*bcv;romXNL5Q`*0z!!KT z6=QBBBeveeH|){xW_CpY{$Ov*>WDW#!ln!6W!6YHd5LcFlYt$bd*S>nLyN`e;vIu$ z&Z8R~w8_z4K|-?AF=n#Uv{TOhDTXRV`T6-5LajSKOhM1T=lkg4Mmh*vsa2rQMi1^P z_Uzr?JuA4W&YUqNFFi@81?=8Krz_lIl9FNFQOUAw$XnnjlysSV# zr^4qsMhJYe6+RsR%b;N&@OhF-|08_HXs4avBQX{6z`74o;PZ$7CgJn6(+sH()RwvF3;cBd&& zMy2iI{>{~Td!tpijM`o?E*QPv_<67BS#2F&m<7l5MT?VYj%B*f`;8yF0WFNU5_r69 zF5JL}LZ+!ciHWUZZWqeDT#;X>`R92IcAW6m3BndMU|7~P7fbe=YlvEGw6>3KXZA^F zMn4*3wJ)SKz1VoSdu{hZe@n4LQfd5O?1(DzH@awnNb<17y1)N-z)4PoUu z|B>(0iB+n}l!M+J=IYpAywH%(MV#UPlK{1sXvnu0=OaXXdlAl-isJqNqEo!kSHMT8 zNL(D9;)OPP1!)30x%KmSn5>W5?`O-){lyEl)?>3LV34#)+e?iX z!h+x&3X_s!H3SKLte)Si<;DDjmqX))&X;!@FSMWdsvfZvc-`@C5?;3>hxP)mUofyv z@LGKQUf}hlS5U4~0bV=*m4sLD2f=IpJz($*Kj7)30|kki{0RLw7fI% zRf%((yYr?k?=bCX&e%=+=S^n`i`ktwow;!j-sH3iZ#sekk2lSskIuX)4SBaW-gN$L zf(X4-+r^usDQM8jP90#-(FJe%u~(GfP1npzBIKk*bNk~>Pj==_hw$OOaCRFXg0p_Y$@hb^b;7WA$Jtx!49-qX z>Hz&e6`Vasfrm4_GYC(jRS(vAx!k>19BRG}z%E&;fVdxJyo+_V;uwRo*HujDGW2zT ze|tsGY3ne)^rwnT^71)?b9pF+vOscA9`l$N3YWg*o?Njs@+-*>WsuOQp zKT9T!l7IYq_}+h0uyzIw?_w>KNisb^eu&=?NsHn*^%cyf0y(o zG5A>zQDlO{k1_@rg8d_U;oE=8l9SU~YpFx8?-Mt^QT)Oe7%R!|<0|cA`rnu!%RRku>qj!NnRM#A?>#T( zqyJzbbvoC!W~PiR)&3^N6AfgqvGm2(0CKdrL)l<6+C%kl4Ntj?VbHWy*xt#TTgU6G ztrJhZ1C{sJ-L1OG^hYSXRk$P`Xr|06q&0DWs&)H?nPXDF4qjxyd5Rp*nt$5e>#D98 zb`z%R27AXA8DgV*mYiO?cHtp*^w;Tj5jm>McM@Ls$%mpFth23Afw$$c^gPx}Pnm1v zH)3NFj@MoCDv><(7L@m4>>K6$gUxl@>Gg$N#uo{9bZ|Wqd25#5gkg}_XhkV46H*9X zfmX^_B#-t|G(`F|+az?GwnmP#uZu18Z3WM2{>I&&yv-W3oI{DxoV(xwy1BjuRCUJ7 zZ8N&S3-UcRt~XmJDca&aYo#`Ez0tx1T8dIE0h`u>=1hT}H+HWJNWIk5BT;FI$E7>nZT~c%njE|}xIe8U_WoL}rS$3J>S z!}wCQ=#L*uGRMJ*=Jv-N|1hkRKs${Olgx3n&m3)prD%u8YG-Q4kK5BWg8v_z;Q!VA z!Mb$^Vi%_)2MX$s5T1F>Eizho=61jmdl+{0?B4Z`h15ZY{S`QZlR{(1BB=^}>-7kc zMNxK|BmoV#dX`JdCQf4>w%Q=W_=VMgz50DYMhAcg8HE_IKUchn@Onj&vE1E=xRHL; zfE5)Yg=~j0Zt%n69Nn6tBD746X8*GHP7Q+37&ukuF)KkeH3D1CXk zt9~Zu=GJhOP$uy={eqBOfxoxiej4>yjdJ3N*zXf%TbHHM1?VBA+oJ|YlE}I3k(*_r zfa14+BGv?)NtMJII*$j)0h|uJXC;g~Epa9HE zpVEz_Wm7WnT%{?(uP;5)--j~p9kEY$=cDZKehw!UKgEY&1NM*O-(rYX6v{5}8}N!Y^QEr8s}xuUzugu5 zUEp_6XZ&vA;~$FO$DI`X{#1JfzfUt`gI{rqA+u{%V)q|t41UBDH=8&)|B_0dWBG4I z7Eq7qj-1La>P1rP>7J7>Gh}x>ROSvH0tht{sQN7L7`X)daaf)6{0jSKrSD^9Ubv0f zLMhb9@dLC_DaJpSE*F`m(j>7)8r*?8@xn$yrre!kj%E1!3rXL6+pov(V)I*k9W}je z=e%Mznac((wTEy|cy*RKftk7~KiV&6))&(zZtj+jw3^*u6a^j$82S5dDLPa%&|gRO z9Ez$x9(U3si3Rc_0a0^#^z5GQ)wj!APmRLcV&avOPU$amgdg z6KCs^XA?CBi^~z?fioDN?<8sawLk_{=`Ff+hvZ4gq9vK4P9^jM@j@>GJ~(}Hu4K%+ z)5M>FL}I=mH@|Ho62;RMa49D9HGGjc7bn_SG;sLaf}N+9r@&#tUwk-Nb=NRBo2__p zq!;UE#|U+p87J`$UZx?Ut$JJP872Z_N$h4R&Y;`s9-uRR%!7h3CqxpZrFMp$PhJV7 z%YBXSHydPpIjQ4oCK|v8-sYQjAKw!X$jV}TIQf&~dtK^vF+M{RbGjjph-ZOlgFVw9 z?^S)7^?c9Zvz%Vx{_|kn@|v>=`REp`TU2vqMcrXm-5s2$E z=_>fTSLW>*Zt#p zv>RjSv^-v1=w7`|Vs1L@YZo07Mz@U);}Y(#ZHsHnBUj|j>3+%q1y(T!?S`XWox>be zjW3gk99wW(rJAayMn1<=Na# za7Fe^OE&Oy!AS1H#8GDSY6*f6z54anQ-Y!4CdzLZZccB8DZbg9F{lZ<`&L)*oS*V;gS^`vmb?GP3Tb>3O(1^EDGUK%d;c{B2a1*g$o>t;7QNmSEcAXqqQ4iW zR^}VKDF|Xk2N8@(j2db>@%&uYT}`gY2vHH~i{i(e%9!HEoYbi+t#AHG-sgm_c+DH> zX(ZQaY|OoSM`Ju*lTI$drMYdV(M!_K-XN!J9$PFUMJ}JiLp*S&{%l^*BQvc*i0V>i zS1s@4h!a{+$qPTCjd)-T@8CcOXvFS{0f6GsuQ~ej4+lSY%m8 z$Zsd>M)?!T`i#AJsaeKzj8B`g8hIn#Hf6oY6IKcDUh|$z4&ZAWXfWqx`LZc9UCgHB zd-RC4(r`F4-+w7Y{jmS?|Do(m;G-(CMxT%b0wHvSw4x|R31cuWj6nqhn#MHThHe1` z#ZeSR5eFBBB!bFn5~XQcGvkIc&d8{vIOBrLD1u8uGzkzOf(t4lip#wQM|1>&2>t%& z)a_0O{l52Je!ujsI(6#Qe(Kbzs#8SFWi?~RIB8Hr$p+WcmvmpY1dd2O)Jx7^Y=dY~ zOqdcE9Ve^i{WuAstV4zIO_tk^)5JuxN}}ANlbRVQhCKg^xWndUO=dOn_)r40%=4cH=I z$3x~YvBKk2>g_Enw+?#iyg1*%=msVWynOFkrADk+KM)z`E63!N`nuq{@7FXEXY)tv332AgRvMvh$8xP6AW49UD9 zv-$T7jEW5Vcr8n#o})cXSags`;_{y{?Lc#rlN&a{2v(o*=%=SXR7jqR>nmnq#R0qO zer2;U@9l2_7CV5P`HXoh@Nt#qx8nYTaYsYFjsJS_`&sFRc4I#u6Nk8qSiTq4S+BBc z>h;V6uGJT=^OFG zs50W48EI$272&>b5I|pwX7|VMyiaH3TIc}W%1i9}pAVw0$jrCDA~QHT32QKE*!O@8 z<2vD5E0W%SAPF%|X0~Qvy}CTNs1|+S^Vz#$rWOA=!|<6Esjd5D?2teEA``cZ{ZHXX zN882t8LCSRIQ@*;)-HB6o)xK@pu~aUoJxm+;oNWN#cACRUR7;{MCxhZWISDTT(#~> zif>;+kbPl0(fBw{k|9Y4jfq(Al|JIwPcz=>bVpVmNUbcgv7-{5O8O&EW_C(G> zvv${IMnYziwT81w_>h$KIwew$K#;v#&P55Y{Wmasv!R}0KclF!-ZABrP(_pU1;*`< zE)5w^5j)kMEv%!G0JqG!_ASQ40>Pezv-KOd)bY7^!LS*`Oo@D0aUD+p%=*3kUWT?@ z0av#3$<^-&wT~kvMU`A$E&govm!C$h7Rhnu39`<^m=z{RG6sM^r#pj>c;$gtzVmz0nJ+F+*wJO*2##WZ+6<=qh;{`l+y3Pvc=JOO-dGE-m?m-L^cZ&?q zOyik`+L;IwYYJLFML>fIO3%oxye&UvuDH6<4?FYiq}{T&Yd>`HhxVIv#iGsh=&Y)b zk!J7mp7DdW7UeK&oCU*90+O=$!}9d1%@y74Zj=s&oyI3#VChrQi~wl$jTxs2Hh+v4 znMbjM`gDGYygs;aS1oZOAG*@c?^kPcq(|0o7@#+t>{>>f2(cmFCukvCw%mvmZ_GOh zWGnJl8@g8X{;dL!tVg0?zhf0{vVWcxG4N<~hXnspn!vJk)RrKTCzSi($P;<(L7@?; zZqnqWXNRjLCCQ5deJhtr!YXoAFT!cwx^`nQLrf;Mv0mn4zT>6%oSTMbWGiBeo+JaO zM0Hp=teE#sNf6nlgm*V_(gU*@Y~`6zE6wJ#Ad|+!`7KnIyl25j_?y(F(ZfWK`&4!Y zqQkcGY3<3ZF6D>arNCI#`ZNzuI%agrm^5=iJnoAo?$d|GeG88GYjGLynl^m>2C>M- z?ubyrv{KPp&!Y>!zp4D%8y5a>{Y}>fvfhcs?BwPKz}Bl|0^=)e2C zn8#|&s9H)V@{T|9VdcRtb4q+sUl++^XeE@l+N;fDEO!$jb^=78BTb zo|;|t^|7AHpM@ZTdtQF$p`AU|-{OsAOd$3PJ1Uzp8#9LEgaM|6GfHsz_SWT&t{g48)V z{bMQVDV3jf4riRoX)$Zz+5uP}wf4PZ^~;`3R4bhQ2R=hnZ^^PMKYJ7J)hua(6)f`~D*m2;)6>a@4vD5@QjF%(p$NVC`@EY|;buP_Yz zm+J2b{hh79x9RU3{k=ke+w}JZ{oSU&8}+v~3I4dcAKYEpwu)BV7>KUC-ol~!vNHimfe}E(9TNavppFKUGTtCg=QKX`t@AnD!DD^ zzrTae@aoJcy!I{DQNnic_QLx`)_CQw#Z8h#mPA-K^8zvc7RSi>$Ga*B7>w-tl|6_q zcq!LB`QpnvvIXx<@z&k^!=3#S(H1m3J};UkULl;L5f)FH?VpnBf_f^*HcuQFtlW6L zg(5yy#_Q1A+S#OLT0|<2dM&xg9}#V-uX1M_`hDNtl=NWao$_A3NJ(aB%GmUMTZ33T zozfKS_fB9+{isN84tw=EEF1V_?k!DC^OWa!UgrDiZdq^is|%(z1&c^)?PX5Yx4Il7 z75PijM==Lu)ipmTazTj4NKviy4i>hAJj1tK8;l&=UzTN|;w@!IPW3JPJY{z%`j-@_ z`x%0tRY1Q_I<|BWNV`7sNXDlgU{yvfALmSOsT zjT(>m|z?FhrJ?LqQ>MM>4Fyz-;FaM9}l3M=GH`5Gox~ z>{&7exU=wo3}gUfwl{n zJV$bz6Mv4U`Zln&Wd;GNai-%XHy?mc`DT+FE#Ez4->0=QO7P{*dv%G%0Li>p<3uwvc;idhdp``RkS zk-oM=jy{y}liQ7^q^r+S;A zt2sGQ;F^=(xLQ%e&?avx&RUI<{kc$#dduQzZ$^n(<5b0dnf4;0Y1-8qNMg4rp-lBc z_d50VPm!IS?8Sy|pE%vyl1?$7`naUbZ08vUKzinTM(yvNMl0xNF`LIUg&mFZw*oDL!rSs zl+Nw~p#eubC&||U+wYvdPg($XC}y@`FzB40JL{=Q&yoW;Oy~GsT#@z8PQFRwbX}&2 z;;F91<&KAiT7c&OXb*craip(5EI5pZ_-L|tc+-sXb8)$`&)3+e0?^p`iX*X)5uBvh z4H_am;x!2|JR(D5{|kV|epGQJ_ENzyWAU@6rQtq|##avmr;#cbD(sHGeq~5;gxrcgX@Z{}~QVVuwN`iSTXD_szWx?JMPbIPGJSY5N63Xb-}nw2KrXv*&hdy;^vh=Crl0g?8C!lVCc>D8x zd+==W9(^p?FTS1Vvj|?Cmj7csneOTFgchaY%49`@GU~Lhh@Rs>g$68E?&*^Zc~(<3 z%}xBi*&V24)d2%}Qe*qTI{53d6UqsE5Ao9x7R9_%UP?__jFx%%4qj7*RZNR{$HqYj zzJs9QYMh4vu5tPaz~B|Qcuv-D5=gm<)CoY$TR;`7gdZl3a|1sp08c{{AI(!htuM;k z7tS*Sgq(RFlLJm&ohu8eF<~$+H+dugHxd6>yW|#W_m59A3}~$3O7jV?aT)+prflbR z9B#MwEO~Mu9(d1#@;!Vkyg-X5#==~|kg;$B4jl{A6(VEdDviC~xrncfh4Lfy82;TK z;a5&*kG=v{+0D40q-)E*@1I3L0wO7yd1k9joJ^=U#I-%sv8b z(U<}rIe zEcqT@w-?jr5_LOCFr;pSIJ9m@D@5wnr?J;NMSN-H`cY$f=53hp@A5W@-{bz$A zbztMrI`~>4QU{-i3rS!TU+OoQKQZRrutG~a(D`x*fufY;{xq-}XB&X#04G0JUdauT zFVDR1gTTHWTp2<-vI<_Vs>6@A|YTuwbRmH|@SK4^g2&vr{iZ$CX zfh$aMlbyQ+L~>O4C{1o201k_4yGX_4Xw0SO!rj(7KM#X@R=(Yf&8dN{X`!@l#e~rm z)ujcCZO`4$4?PsqQQF#r&EG*;v;sG#@PcEYLAxq;5jYz3}?51 z$i|GAw;ouH(`s;<;M;=ZU*>$FD4}IB@81>U6NAwf^ZrpWTAcR{Mhkiy#n@yp3eZC+ zMvBv9FjCN4C`KKA=>jEE($62%lB*F6@%N<6l5a7(F8&APcqAt<)d>6B91yH=780Lc z{D;BL0+2~}nd&>X;*o=tcdr#kbS`P!$jh`t-xw1;Gd%p_E2H+%`q_7;NOZRZ$z`u0C_o*BUT?Al@j!bqK{Ibbrh5bwIr|(AyDoVv1- z#NrzlJ2-aAAhus$Yro6?U;AA`YTL0Q^7R#-)zErbB+@K zV*hSun!(u3IZVa4b$BAlGZo;c4iKq!boJa(7m)mAdmoWj^G+Q=uNLJ*^4!YkXH%nr!UN6@Kp59& z>d6V>V)xg`9nLNgNcC6LYXeLoW*f{?{lx{6nT(O~MBWwuFxj#R^}%j`U8Xa743Jmb zH)ZNfK$dd`0ZIHIT}Z$WetwGY|G*D+jZfkSBablrAbp%<;aB*~mn^JB za{6?W9X(e@=I6u-MtP&pky0Y!ajaLF!wB{|I1w8ekI#ITjx1h3pYuE&Rk7`vo0*Ugqamc>Ib;2!4#e+&-7jaf<6kt^u2)l zQ_GdxOmr@k97$Pt_Yzo*6VNO&dk_1IEVK6Fg{#yFpP7Zq0+l~3zd2C+wx{~JDbSpL zC4~!5&vX{xkO=~jyTx<&E_|WLThg>!FO)vvdWxVSI|ZOY zbFY@BFeD{!L&;l>bKPOkyL$+9oIu_6j>~J;+pC94i@toVlnz$A-o9FK-Sg81?IhT`_H~!HfE6<6StPD-c3dh3R z6aF(iqGMKeqlQD!I=MX?ng%>T&BX?UX z=dV;j@CWB^GDl^{yuqc?;l-<3hhgg7^n2=AH>Z+bcR7(Dfeq3PD{gCUZ0*M@J{&O& z^|r6=Dy_KcdK!bvfpa*mdSi<2YVpQ|^PozZiwR^V%6dp=qAwnk=4U24@PLLM2UC%2 z9@^)E(bD{Bw*MT?DUZ*e=IkUpx+XbX&#LtHvF`i^a4mrCNF!W)kRsbC~<&VbOz9}zv*(z(Zoq-V2 zt$F7+xMW$}zCG^~Z~OMV5NO|?Hw1E=@5r9uB`vdsa!==dH^B5WR@f#+uJbwph<5X} zc7)3f;HqL|?tG__fFXT7OFojAVg#zXMO>mlnn}eX-s0un`hD)!zVoL)NH7(5kp_RJ z-t4`25D&(%9@9pdsx|f&ft+7~+h~jr9~D-4-Aox}%*k${!`w+k&dqeLDU&S7mf~l~ z==8Xl_d6xC887Q&NkRtG2E4T9oNJ{eE3Q=14Is9T_f-zfPnk1RU(P5$rL_n_kyApl z(Rl?)v(M>nla9q_aB~z_o*!z)4g*AD-hbT-DFc`RfZ6NaTO~UeaCRnivtg)s5j2D& zW;z22<7FnNKyZpfHe;72Fu#jejh0|4CZMPDHv+Vk1uxgR z2d}j9Cc&qbMVa*^8-z8^>jFu%GH|z**RF;@$5xg=TKP(0siu`_Rh^G#L&P+)b0bbY ztYF6QpZ}IThL_+=KFTo1_!;6l58WtUVF#Wi=WvwEJf>59I!@;Vexv{o#S4HS*W3Q0 zlN6yESg_Cz2q=Ic(SxjqQg4t`HHjXoflP$<-(iiVksBLP`hH6<Ru;Gg;jaVh8 zT@#vsYp~pkV03$XkeE_|;9oSQPuRSIt$h=$K-JSFj(jb#OmzL zBYFF?hi?X5=fbFvYH(+XW;;z27z&j4RON7+)rZ5gb?MHRcPS{||9_GrZYHd=v(|*g znb}X$_f1%)^9*77RFLx+u0U~1*%^W2&1D{|_ydEICYaCMj+TMTlJ696TdUAX~0oq=vZe0FpLa-E|Hfc;bjBJU!MSoX>*bb-Q^QGb=G zY~E$H_hPNCMze>C%X0ie4YmCYG|#L^kP-3B#!(RQFA4jHM*KBle@VoDU)Ya~?&lr9 za&#W9$@$W-y!Dy8&&ZuMSMY=YqVs+LeH}~A>UhX#WUcR2{g|h z^o%Z32FfyJ@12KYSz9ExW+g=-mSs(-vP(6`TM1?TGK2O1UpNc=vfpyv5fCMfdHsND zoVAJ)T?YGzdCxFdvz<2$*6f(~c*S}J|K2)Aj=hNJQ~Whz^?zEBgQu0;Cr(`d^7EhRAw#$!Gw&=_c$5 zDsv*2n=;;#ct9rdJTKZTmU7PZ&<;f24sav8gJq#$^uknf6ZDjBCTY1R1|c*~w`Q^v zvw2jsd&?*}#5#K4Ans9)YvYL(mXVqn%%j*}A5Wo*Gsa7LG7T|7X%;T<`UHfuJwO&* zs49{B`%>Ae;2Lb7?nl(_(eA%X4q;FtZl!V`%YJ+$Ug~MA=Em3%_EbMXE4LSDDL%if zQ$Fx<#@BubwWLxAMt0jl@o@8StaC5bPcjc{ki8OBQjK$42UvHK=5&oTo2JOj7ZK5M=Z+NQ+i2CDYB3psiti_mX`zC>XGNTMz_^Pp1~@H*3eM(~N|Wsy|(-9dDUas=Zs3+RcD!oT1_;ualAQ6o(dZ1}Tzm zfIOjCg#dz)>S-*Eg#K)M_4&G(Imx$5c9NWXmUIl4J=7n6r%SKutCgi`T$gWdv`@iy zUX3#_(jJRBY!iolYMgs(=v%S3El$nz2d~RqtqZhA{wRHJ9@^Ovc@}G>;$ekk&9z*W zCr&!Z8GAdMmHfPdcy=M&gUq&ik^t9|k_fWTEf$*T`E-=FHs`nal909zmnJyn?he30 z&Eru38PHVXT@Okn{*#zmFPvLaz~ca9hI`{)36NG{PDtYnSB>*80b!v)*2(YNr@w?R zwG8|>PLYt`Yst4 z0l781!A?UnFUxhFb}0bMx3>$fzPLh>ir%5fb-kTDh{5#*`6IOZHO}NXV3WO80fpqt ziWn77%p1Pn)Xzkx>OoUK=%dO3);PBV@VzOj1fQ&Zh@D@;m0Vv<<)LbL*Ipu^%g|ZlJpVWI4L@Qk zv4l5&Vu5h_fIzf6cMwq4Vc$Zh4#QVIIxAT@;;egA)`z@ga`%qq)bO+Xu>6r8e5&@~ zKRv5}gb;Kk_Frq9UH?>u%0nvfvFbc2DfhDSPyjI_bNHNXE#6Cytd|Xut^9;+du9ML z!f8D!uJpV-p=Ixy9u*hU?b`f2q#E(t!69?%+I*h-8~3hZ5sCfO`=qV~FNZZ{G}OYm z13*@!thckaJ&PxvC+*hxDa4grs>|s_wp@k(di&BM^7yj9g=J|ENh;=TyjS^R%W@7P zoD8ZV{5;Sa=NRLs%l=*cr{R}DJzn4uwpXYTIi*_T3l2q)g&ybWZ1Vo{0V&2VvGTnBX zGg@E_>uE9X>i{W{!&5OY?pmY(^xb|DEr7K3>!mCa9jgB+=zKQ6Hj709dc zg`-tmht#>Med)a>F1F?xyu?CH@Lp|K{?x@q*RVbo77d26B4Vae;q+kU@g=5crvRmZuIcPXUN zRP-`Y+jSj=W|s5Qn@Te-;r!o}8FAfNy&EmD%ryZ$oqxIkra(!$vp-6Jxy55}J3I3X zZqj|7^E#Bra|efZq{K;Os$_N((68tN-INmxc28xQ!EM(BdMY_D!iEh$!jW=BXoB0{ zd5?@Gwi|^n#dkpe05EAoZjSU7gMLXI-5DW3ne{oh53t5L7r@>%DBtR-aOZfb^=S5a z2W3h~$2QEhazV;dHAVve&QG(9!86tfWnIGlgQNB}&ItfmaZX#Hdb5w}Wp6`uaH9)i z-jD9qn|hw=v)*Dt?aRAOpe2Q`iiaObI1DA`T@Iwi>4G;HKCAU4v@!NS&L&LW!m9SZ zjnG`ZmwRK89_VdBwHiCqZBl#-Ju(+tjrCMk%sC1?xA+s4-Vp*YMIWhvEC3P-4q&-D z?*pV6h;+{v!DzN`CHJ3GxGp!F%6Q*CwCA8KRA!?%O3$yzDUFzokznLM&aMW@9UE)c zH%g++yr(V{ewf)L504jhFu2-_5cZ4aYgMgXD|}cU{H?A9SJja}P(2*c5wB`RS7-n< zKh%J~_oudGrMKGlDi?h^P8-9L_@;2@UcGnw$QsR5;j#zA+q?(?~y{ITzgJ&Vp|Ty!l}+x0*ZL# zO{1z^fZSls&^GaFhBo7J8bFQjZ%(ssy+G&6-vpyKu=()&_hqtS>r*Du_wCC~U{@1@^6V z$n>gl*i3;P<#9Tt#}@0x=rpYecSdgohE7l`F~p4ivEVSFYfV!bG4EQ%cvk8TzL=Qq zTKs)#eU-Jj&UNIAJ=3)nof}e5V@FKP$gB}1tzprDeY?}ql5AeYCEq$H^)qQLdf96B zk7}Irz7ndD>`C*eg{b#|&LXR^TeN}Bz#c@a2|dq*E{lggr=dgtV?s|bp_}8Of7H-( zzSB^8+c-_>M&l=CpZYiBr{hZhZtu;%At=$CYj(#w&z-oO+xbzYn=mbey1S2;hTr~Q zA>(~JOvc&T_1xY02LX&m9|YGj(NWVR^wbIfW%}NMC+HN#KvnHJlnbZN3v?B{YsqDDdOTvOY&Al zoI*leaVg|DK{r}lTyX<>Iz?_kTwF=lrE zH^SP7hZB*d@;$tjOCSNzoIdX>7;+-=XoD&j#M(QA*Pym^0Hzq=R%J1B+uZm!;LzR6 z=?c*kyW-+Rl=2@g~OqudHWFspv$%ko7jX0l$#-UM2w3hrMaXx^K>N{&YZwCTqtK zXDHscms!HtE4pdrI(JE6v?9fsNbXb@(t0BNQBHvlZtX)O4DH$lW~|Dw5@*&=%001Z zg$`uB{Zt=mmfHZ*Vc>wwibHy9jx=tF|zU*=q^D60Qaj7bKg zjdxoVqs6({V6?=%*DA&Z2BQG`T8fe4j5HWXAm=N_dH6+V0o!MaQIYP^U2fss^PqQ* zQT`m&2LwZC|FIp_vt(Gz z#6MNOhsU>)mE+v5X17{+;w%5)1-Jnms7s>bV zx>-}6R5wQphSW_a4y~Im3X!@wD5a(se#f_+_G4Lw_Pz2woc7dY+P4aZ(4K}vXGe^Fq<4hI zUhkywO}@Lb7{5$}lkIy7S#7#^S6aE4FVcP=581g+qPE{%c>x%cMf8^ zb(U=BPbMIFVlnqzZgm69#L|Axk*#X()doIUOS);)1AL_vz~Ag2(^m($65W;)|{ERsO`KpFoWBF?E@t;`%vtP6M=(D`F4+ zL`6ggNJV^}4Eh|S4mHju$wAUN8h1lD%Q@JyV{zSpZ08FTkSK0qZ+X2N5SJ(td&@6K zK*W1+uE_Cn!+#UU+T%x%I~=)vf;=T1xqVXcGTxGiBF8_7Uq_U&G*F%k83u)?`uDip zyRL7}5E=GT06I*@Dvk`35rVT#4w`aoQC1VR09;YzrUDv0ej8yeMmVI^Z{lqb=Pw}X zo@XBuX#_ww(hwrmIA^v4YKU0lNh zZ?+#I1ZJ??$$-PE=3F&Ns=+^g^s2%A(5vTjC2BMp| zPYIo+Ug%b<_oAaUzst!y`5h9cyHx2Ok3o8&tGbX5whN>@l53r4+k}SbLcYV{e4!Lc zFJBY5O}(V&RqtI&GJCK|Z!OGT7pVoB-bILrhnHhJA(E1Ft_DK4S#cYb5OiNx??yuD zEBK#L|BuINxmqNjQSVjpbZWWNP~${cAwbitTIPvoz|o%S3LM=3*XY+P1}oev)q5mf zLw$_;+l)Vc3;Q(Iucl|_<8pguf5q$tKzn94#gU$wA~@UjcE*it#mmQI(XKdq;A*Vv8!X?Dyl<O zj=;-tj~8vV(^q=CUQ}K+OKWVhGgv@meKO?-R^yy5fV6j<%lgG)p=f%RI^>{wA9<=O zR_mOj-#X`V_j@g0(U#R(`}VQ_xz+MK*BC71N|S$ua|2yJRz!$Xv-tL0$RB%glbSCYMn|)}0+euHwmmvM2E*gYJ7a{#; zm&S0Vq5I(b09U%;LIoSrN8x52J~f$imXf~SZbfBB1bpI-J*%{h1h@MC9o`|ib>(6GQ z8!1h^@aL2qnPM`o9w%M+xG{v#U$zpVZLB~tUYB^D5p~XMzrjHlSzBPb$a(H}GG9Hr z%f2^hB^og|k@ew{_4kfWNpaC`1I<+SK*{~;_K?XM60ew1_+s8|*H8egey@~XXl?o0 z+Ok6qAA0<4PSpUi^d{g1>;!S3=L653x5q(hWmG_SU0q0NrvQ(6Gs|UkS^zGH<{u;u zhYlXkhgYOHbJ*>(3b!~rPK6B>?sUH6YjHKL>uK_Bb^7sb7KBMWt}O`HxZi8}3SyP| z4>a5o9dS`?C-6&t`amg8`9-q-~o%6DM3v26xTZ1ER$S6 zex`U4AkJ6sZwE_$pwo4Tp)((V4Bch&Eo^e`<}w8%+xa(N@jp{+zVEuXP(N5v88l+$q82ack%gYy_Trdh*30{+4UFHvwy zR8-KjadQrX-)4#N2ONnZ^o7WV$~bxo)ql9rLmFKYD-x=AyWq1F9PcT4_|TtR?b1Cu zneLJV-Bq~kkV{|>$R@du{|opm7rb4;ak@?Tu!kmeo2_?Rt>Ue-+Bj~)4cdXuLFy~W zCKdYq*YYQ`fhi_0PY*_RTG63PV5ZN!)x@iU%Q@OfjAju`NqRLXkZjn$Xis8||IX zN*;)@*TisAq0Lg6j+Qdq^ninY^X)rAzH6M5_)3qs&iyVDxUi_Y8EPqG?MSt9U3}n{ zQ>^GIEPLeQ+J;~>{aY!1pmIl>J^Cq$!XA`9^(H5*T7L^}$i)pzf9nv2qB}(Ctx@E7 zqiQu-z66!j{$OaUOIsQF5+Wl*LdVp+4wyELKbP&WC zGzn{dRxg*K-@QyjCicsa%ukJV{V< zFx<&!&Swhf#nDpG><^?{M!j2^a-1haGD6K8Q?J~Nm1u9^D(Q3b7L8bPdYe*)X&U4*vOT zVb+ZV@}A#Tj7TovtWgUHdM}J%HXp0pyLbMT;$9$0NBqb>a{M{sUm=beI3UZW5{~8K zn2e)M920RY6USH_yTxJQSSpSZ9JV-+q5L)Cpw;|4#K8?B{~~eZ#k{vtZnPLuAK@%# z{{>nv*<~`+qTcbXk{uSAJ0}a)dZry}Eqj6q-A=(Y^lc42g=wl;7bMdzq{7vl+!f*y z@nohZGe*48F}-8nV{Q_@IXfPFkp@@c#eS^3;J5)N_AeD&Cs+zizeu3JQD|E{?osNU zK#)oOPvhgMFA|re{-b8_*0}de^;+s>$h@EMYVKc4#D5_k;U&d*OuUWftN5vy;Y;Ev z%@>!Xv{*4`s29?=t2c6~lxrnv_D?m-eSo;*xqk z@k;5C#p7S`MvcN7BoNbJO`1<^P4HC^!vjiFYbJZGsH2{tNg5pT@<${C#ISOzUIIJ9dOj4vd zKkEIv|FrIeHlgP$1$m*<_>0v4rtu?Z^i%)rE46fEONX4`S@N&Rly@0F6ipy=vYfx; zi+T4=(&A23tfvHPX%bd>aH9kJ{487db4IAyN+2qA!qh@xzNF5vOKIiGRJMOpn7Qagw?H_UkrwxKJ z@AivT_LkvvuckBj2JL(CUD8u;iq~R4TrO|CUNL(DP~O;8afCO`pV?6evMC^HjlVlh4fa|Ish%n)run}nJ74BhKXGwrM(}3k&8yn6heYj zA}(R5+Z5%u>W!zjx-6dF^SIpfUR1^lHx z>{}H_V&5z{#AbRJr#R=|B00-0r+BcTjLT&B!nv-Yr_pe;B(URN#4$tzw%hqhV=@Rc zO=9Y$XYSXi8%A)Y&P`5|IQ$)FizfaaX!&4Qs!;96X6QU0mq#skozj8+^e zicfGvG9b-rMOrLjCI!!u(pyP$2tU6_b7FFug@U1Jo`B0u^DHHo13=U4qBxS~!FZa~ z-w}%Rh=fJ52T83&y>ByGwEprZNc~N}O_T4i+wu`1WNEi^u?A9qO^Ul+2|@Q&^&ZgB z>}`_QsQ1P=-RAK^xAFF0(!C>2_XQ1v?hGY#j(VYcm3l9kqxr2ebiHx9v*ef zt=XyTG9SE+1nBU1U9&MA80`w}XVm{x!v9zG?=gPL6jlGS1zM&Rl6KVVlddd%c-ci# zSGO!QW%}j5*H|J;OK2AzBWSYkH3Em*4Nh0;XDR{8ou}T_B&NOMIDzZv?j=z+kYjRm zKofmd<7D?WIeJcq3_0qdfx$a8M>|@%n9~e|JV+1mEGd!z$-~JwV%`;s-PgqiW6pbo zRX`lb22CpV1QqF!+3KR7%K`ht8KX#!MejJfazNRSlUL}@&r$Ig{p08UJ`M%2b zd<{y@*XIQb5AepkKaEux>Gt6$24Vc=V^B5|82-X9XLywM?- ziE_*%T#*k^%&Lkb@`DJXT;*?xz0ZWt!=0mZ6hblz;V~FYV}ZjnNI(vIsk2gE_d>@e z^j*^L_>9JveU-tS`@Vo{^r_5p*d{CQL+gJ#PFw$tkKNY)ht^E%S+WlU{@?Jrwr{v} zOfSsKkD^R($a#zVYo(Q^0?Jx_nGmrQlUOx$@X0yf5%g9Aj^Z{U9Hs!;d&D( zkk&+1Vg$wK`BNRnXNuQTEy1j&@{#QoV{V37X?4CxQy|<)tZ$q`iPr^qjfN8QI7V$K z(p0p$HKVAOBm!XxYLeo<+nN>#V^fBHC3{>v@M1-h-{aOd;J6sg-kTE)kHv;WTOe9O zzyColt(03<^w>J9@O#OMo85h%TWRTit>W~)W$eMNK@}+v%H_!^%dxUW$APd*8F)do zo>V|9O^7wYHzfxpvM)#dSaP>vB9${x`}{BSlb4*I-B#o$o`wox3+imEaKFV-|9$z# z2h!FAiq|A^p!=qgEu?R^4L6CGh~87|Fji1xdbgW6nmV~eZU$V(@eIm`n%MVtWYIw} zg(2a2dVqujrkTv!Vyse15+_0lv_8l3gilHDU>MydPcsEE>trv3)sc+8D+D$md)M>iZmDd()(wl1 z+N`T0YhKL*^C8-3-+o@F92-rq^);5{cLrEldniOF;)Nt%r0$_WIMWv$mE#YO&D*!% zA03tI<4wP?Rlxr#ypITqwdHe$^MzJnT_9{_2Erv2wVw61_S1G=_^YL(S0pMaUNO`a zT}A50lua^95ev*mYs%I@hUV#-~YoDXb>vnq$ zD@z1DZL?MUj^zohlT+WGF-`XHOJ$NsFi*ypa-ZUsThb^>c-$%QtKk^xIpkX54HVbT z>Iz3vEVy8O^TMBE^HWk>^kWUY1FW}!CC?2EBL+f~P6&2nar`KK`EfyZ(4*dee<&r} zWM6gAoxyS@@(LhT^8u>zhY94KgC!`*`R>RU;A*q;+BttPdTVM!>SaZHeGOgE$gB-U z&wPoUet%>~^tKq2?e|v12}C~ic^><*tbZtib%~6pgQPIU+~24ohf|uk>>DWFG}mvX zeOS0Z))1&{$gDi%nX@iX{AqbQtfEsx+9b^4@~~CmC-8YQ&RljeR`!g9XSfVidP(ax z^RB6>hN^I)8v2S+fN1u!TVYxU>9n-6#FW?CJ72=%ik)am-s>4DA%YkNF^;eSX#DN- z$y`erb}=Kh2$so4fKK+`yUZAt!_LWv_Skw6Yb!E6s|quVYFn`hsW*!a+t_Fy-6+|T zednTPdw~j&Z%x*>&J(hP9{Avut6i{(v0@^3?L^TPh4OgjxzYcl3@lhtqu-WJ9S)Id zTR60vTg)xtP+R*TK$_v`#16SI-qPs*Sy+R8C8Bp^Qr^CLUrtI&c@C`1wSlnF-pZ9C zVPn&b9ha`hONCQnE(%f?V|iiAl}D1^7mf=8{zzLxYD(lAy1_FQ)Q|MW59u79$M(gW z|I`np`QMWP_W2$0<{w(TVeVjQekZB8<-EHzKwZ%UtPw>)xANkBZ zFXmEV{c;~?-&P+=emlHWiX~e!ao#KQ3oo?s$atJbUj&UjLm)aa2YY>f=?U!8N!u}n ze7Rp)H;*#L>%f)CC}#E-<9S`Uv7e-(*H^L=H&>4QNrszt+_)?i$^JL!&Qe8}d6(U& z8NHQS5u0}MaNLI_i)Ql)6fozOMn`7aV_rKLD;Yc|e_%znSfY!LOtr#gd9B^7;WgGPfxV`GnlG!%IfpW}`^7umpyJZ&@s6f;F$5?DZ zzvGp~SmE0XBq_reWE0gTAE$pqKG`qNH~F_B*Gra3NK+v-`lbEEZ_xHG&XTDUBYKRB z6MPFk`_T$dFYql`n{I_i_b$awa~R<`JencH%Lh3i952ZdV6vfX2|1xd5!>?sYr@d6 zh@}(a{ZaOkXB5Rkk^P~F&2w?V$oJ7%JO+4hCKgg*MhrhAO>-x9B2E3i{mm*pyE>6O zv7IX}L1qm^`i3GKLXo$0zj%}V-riVjYB>FNOe~?y77Hq|2D^OgK?Iu}fyz0JZ7CIx zxPmjhNrgVfl2n*Ve3Ov*cn%vT^@-bu+N*9XGAXlH_!!2w6+Rlf1ex%H$s7mn;i;-( z*y8HM6T;{7fQk56WkkpJu50bIZ%gIQ)XMc39X}_{(xx`r zEGQjmzgn(AzO^c`J5iM;l*z2zMdhu8Qjsm+u{Z3IL1s&5zQ&4<_cVJrPOErKUiq1OyX2K)u4+u)yp!c{H917~-lTRp#Mo#%q>}4sa*8;tb&9Ds zIU{$fklZV zDImlWESTgRjZN}b{6At%f3HADQz;h z=8O8QlDYM=N&1FsVu|isDbJt2D%RjI@tIw4j8hJIRr}HUrxHqswRrxk_eoC7xbdd3;OL|DbKL#xyDox zM0j~ere-lX&3r*$zTD-r&dHdIY35e;wm|qYgyHGE18~Ja_@bO-UdM2FEq{d&h_JAK zNe^#{T?}&uEZ}m$HNoQjvwj~Gp4?(BJXA~gtRoN(L*d((TI@M=DM02ek)t<4O3WO| zu@ag4{@zLQBr_X!F%gtP(e$%r>yFj0M0_|R!6-#u=M0OoYiE^W%}NbLz7D*@+W)Ij z(PQ^OH3iYWmlZZi(AxvWdp&nKz*%e-|9H!3R%AO*<0AOAA5S?}7mih$DUPAY=@iBx z+`e^SVEXpmfx55LIRcy+Nc%K?pyeC1MONfKw-|2=GQ;Q^v47aTScVu@=X7NEB$q7i zO~zndX&WfnAp2bAt3YJCIV=Nya&GQ+X)h(uLQZa(3w_Yk*1kQ?rTsDu3bnJ8C2p|4 z>5qbQ2VrE=p1wFagILPm#9Il)Qa$z>@FcwpqUk1EX`fPPYS%uCNC7zkywR%Lksc^S zu;XY6YcOf1!P<*T2g`bmBAK{>G%OCa2wI8#d+3U}qJe?vh*YkeFg#)MiNfQ_qxiuz zWAI5Wy?tO;vsREc=e$WuV0yzLx!kfz=LwRSjT+!>NiSaQWmQrtrWmOgVWcI3?Y4s^ zr;T8r?oz#vxYE;MV9XklwX{#IwC$1&>gZKY-3Adn#|n9&^MU;p?J_z#=q$29Z<3^? z*4yZ3~I+!3Ajl(leIEm?!z<%FWw6Ylo}BH!c1KGqI=M=`JA z%L^hPhyBMh#VKb*a~AfWWUku!X>%XU)c-YK7_9$0zI1y3KHuV${Jx0&T}UCNJEyY! zh}77u_s4v^1KqcK$s#{vs;L~s&W1qoet8N$d*mpD)02;m%X>(W5&wLB#pyfxzZJb8 zCsh1nc}B2!uc#=qdkgx3-YUz=NipO#VuXk>psVu$F#X+&b{2Cy_Y9GI6xVs~8Hj^L&T4uyOPNQ+ zGON8HOET$SO+yp(h;*bp0_bX+?A-oxds*;5P<%jtKRG2u^5d*mQjbtrkI*4+yowD^ zgRHE^{Hv9cX4h`cr?|hG#(KLqtE8g6rO~OK)Y#b^@{YkRPczRx3t$(Uf7 zs?g%btAa9L3&mK2YvaFSexNv3USzttbnNH4i4f-H7A5C+R%hcDt^-Ct~QbnWbH2iGU(bN@LQ z$E)M}YQEoFD>Wns9JbH{?CrbI!3$C~NCw^thTRZ{->C5T>4Qtur(HI)^*HIgk9(HMia9kli$WppUgz7bg6mG@1g@_x?+ zLf5m=o`feDeK^0CQX2M9hIx_OVG#-TVB`#>o5Z@vU5~)2e_+V-#CQOGt!PGe7sc%9 zYN??qdP$~m&KanU?b$~Q8`Whbs_NF6`UHtN%uS;#mI$!1Ja>WBWLt_a@~4OzG|AcI zzm-|(24=m;Cb{e@v!#14_l14J1zpT+Fj;p{b2KKM;GmxhGJ?CVUnYuZIT-)T(t*(WWEbe4QClxTPvp*l1l9KP~K343% z!0dQwjmqL+sAwBT@l=At03VEC3$S-6I_41G65PT>nP-Lz6CG} z5HlEj%Slg!ADk<2F3|FY1_t`A<+&Fwp46h*E|rtc)6r^^H`i^bFzQd0bdKL(~W z1U=8CuW4mXvBvjCCd6GzR^|T8`RS#RvK&96NiwZb(DGFt%ADIbPVA-Uv4|#deT5Au z|AgYY)(jI$dL_O$B-bi7lw?|k91wdbu7V^tGOEe59@pr z_Ai1R)KXn?jJMHWBeRdhXjN?vs_fd*@PwuO^Pbe>bWE9|b_fz6oB!SD)&$(>-zC|U z%4apymNvh$uX1gywLecp2I(>qk@=)FvetSiRwr2uBkYl7LH#l`rBRWp zF9ls~aLN1=Wo06>)lk0{l~wb=V0dnm4kNp?ugqtFq#hBlLT&aDedNGU89jVUsCeJJ z<3ok})Oe1JYZm#IJ&`xpgQ>CvBo2EsLNFRK1etHz4AwWtB`BL$t}OeNV`S1(bnJs^ z1|)4rOqggQ-CyovmtBsDtDH^j<~Rk%PinnO1QF3+dff_1<|NJp;eV9()Bssk1T{``b!h*-=u3 zy-36q_EFCE$%VYOl9zKzsv6YJC3o;n6d)NFJSeDXk{$_IgE2d2u@7AW---HpVP|Xk zaV1s7^7ew*efu1ENmY?M>%EK5XADpI7H%qm(fPa1rQb${S;@llUwWA9;ru*$k+twG zVQL8h@(Sh%(LYYiMDLd)I(3mBFSer7o`?S}qq9hlJ^FlNM*WSrvkwlJ`G$T|F`rpP zI%O9|=ExE-kQoL0UtqKk2bufB{!ayQlYjANjsEK(O7_?V@$1tp4gQ$0rO;80{{Omy z+Sf)<`%W+${rk-4fQ$wErcT(~>C&Sj7kx)>RfAN{X=+RHRP7{G+VvlLilh8OPTS8S z&)4akqtk-Efp!yJm;?B;=#AHjG;=P(Wn{v2U5`{b>TgPfeeej%K_y(#Rc-iH6L2_1 zy_SHj%Or{-s_Z&SI;v1-WQBBzl1FN!y2)OKvfa11bGI&H?2r3Gk~9_M8W|@$JKvR| z@o@e!(qmRKF7oRGQhZ_2Y!@o4tO~&m;F=?2GGIq!s%6l3Ri2 zX-g~>>vzyv51lJ#3S8Aaj3DgajV=c5q$vCvjUM0kMmO@{>gkpD*gvGeL-#hMmY+t! zV1v9!D^S7Ey<1c6QYrfgB4qw;jUj`D|j~8tkEkTim!U&6~O98 z#Tt}J=#n~4){D$!J)3@QMKVqu7N4vq)0={k+j8PFaKx7Wduj>Y-(~GHnWXDV7oQkN zlS`ewQBLUeOy6WW_AU4VeF(F3bb@qkzSWaqlQ=^?pzNmr1;Z6J4gP^TLl187r;L>`VOimdrFIXJ zl_`cN2xVYcEB_k%i@y88BvEUG+rdhEpSbS*SnRFQB!(d^9?Zs$=wQsxWU1DPffss`_wI_25 zF^O(3XNWUVy>K+#H?Ru2tC1HL?lQA+%%5Anm8Fd zlm?Xiw&KZgP`hQ(qX3a#SFQ4VFJVqm>A1qUf4Ekp(6^*xw=-Rgg$LrdR1U~X6(;N_=Mxhazol|OUaBx*ZB89w zE0Oql<5;kgZmDc78;>_(2_TrtVHmz5xT zp#N<>G;#X>z8<<^BYh%iJ;ap4Hrj+skOWj~Kf{V-ynD9GSpB<;YNwWl{VQQMwldc> zQ-u-L*^Hq5Q^S6-aovPy&T@`h?xD!{z)&p8o%bA^n1xqloNpLs9?sW{Gl!{iCEiu+ z0W^gtt>ClO)^1gt(QPm}K>nt?%lnU#AF1loq^fhZs{0Xph17NH=hSugxX=HHZh>dW ze#H!t+b(4Xr_;=HgK@=X^pXO0kw!&JGirm;KwF5jNt~;~q^Q4%yZmMBlB}DBQfgfp z7J(5i&#s_b|FqD-UFrjgIHb=rcFjXOZYsUpV~=BO#NZ{lRMK^1G3%WOI_5lMP(6 z!l&cRG3olQsK*ZfZ%A18jNN_h4;xdNZz<4E4Zd`iJ9QkTWchMYj_g(tzzhe=mXFj| zihat?SS*}Y*_K|OyV$efv(!bS(@`{JGPr1&^BF!=Ux%|Lde$LwDP%tkMlPfij*bP> z0w^Qb&F#N8wTGC84j>=Ir9w_B6!zrMUZD7+xf#4xRM11{WkMCp&KQTV>a1bPTQ9VR zDQi8J8TFbnp51MOwN}=4s<(z2o{E+dw=&c2)-c0Mx$g%|nJ6&BL%HWyuXp_F*-S~; zhpa0bg*U-D>v-!d`2|%;DoY|Hc&5Qf@XR{F$gbBreS(+Zmvv=liZ{+LO|%5R)Mz;x zA#PqpK|K{@yF61txw_Xyt?PMB*%z1YQ@VImI!gfAxV5dwOd94krtJ%Ri)G;d!`_#` zM^&ADKljc|2*VckgmqXGAcPQtB8rApP?i`XqDGTRG9e>FGG-^)T*^@YPD}DwvCF4E8qV)%UxzB0j=-*>-YV>@OwCO&vwuH?B`tO z!QrYHFX#Wdi;vDS6`I|Q&(B_F;@1+~n|%pWp^Imlv#*+yKL4sY-q~0Dc3vNxv;_-2 z?{zG*OFnJ%u`X$eaA<`4D45Y#+DCoK3a9lm_FjR~vO*{UpojYu$MVDvT!VcZeu!6G z&zT-DQ8kzS$7{Tq_p+gYORhT?mb3XAUb1h;@AIRUbPqf>FBrjuL;N)_fryUdlfsn) zG0ltn%!7ZWZqBu^uc0~JgwkZ+6y{=PK$SIv%YsY)IkX-8=9_zbbMP}nvkt4z2Dtkl z6#5iU3{K_itby0$dd5~R;(ew42m3r?jB7@1U>Ss8O8aH--I(?gG_YHq#!|hQz5lSh z?2S7^)kFWR!QW zPey4r;d5TvGA(WIUhZJRWvDVOeeZuEZMHnk`V41t@CiF(C*#pt?eeR9)@jzAvW6ae zuaw2CHNVr%C#ZbA_SMLnard3c^JQHXA3K^K^}?5Bt%a}3X6&2Dne^IMvHjdEgNhx1 zBjby(rr2Kf^ogIvpFV)e5Nz6Sr@gfIm7o~&B~>kZnFrqsJ_{&U$v6k{#IITcX$0;hOqa3jq>rW$G&mZxr)AnpFV5e< zg0_@P1n+$Ll4cf7J}kh}zw*P&muzIm8NsMyJvOn>0T$)O`J3* z(c-HhWs(sGF2`njwLRkoe9;(Owd3RB6VQ4QWi!BoxIA9^n6-+hLoXq$?Z^SQ zG$-w5=V;!IyK#0aLTfsa9v*)N) z_!u4bzFwD`xOOj@^8KydEY$U__x09SQt#`EwMlFDB(y$Z?He48 z5S2vWgo%1UDije|iB7QkyaHsP6>*IHd9%aVj{_H1w$BEUUo7}_K?)@1pLb=OMC5%g z>5Vdc>-m6UanzSBv|nQPFS-(+^loXKF`KeOP<7;+=ouK{VH!yxIR~$IlIDGyk z@5M9VQ+aUU;}c*-*59YteGu-?-4mwfCgez%n#&M{t8n%SZ)x^#!#wdIGi|CW74yWC zpw%%HUoU?EnWzPMEmAu(a}quL9;*YW;8BXg0HOL;(#TSdc%bQg9$9M zz4hyZ7xyssN?Xga%;tBY+BjaDTQVSVajx^9=Um=>=Wci{-Vf>y$*CaW>EA&08)8<6 zH6TE8Akn*-Hmp_gZRt-$;zkAl@GQ6vkvo0U( zVBFXBS(htc+j~FO>8`zZ^Z#A8dBXSBW_ASaq|Gx9qs{iX3cecH8a6ge8niMj55LuZ z_bwP=v_gb8OTJVKG6TK$_AhvH>^f}x6M$fYg}Ml?Ny0HdK8Cr1V&K&FUgt3iYFx{X z96(b-6g`SH@A!_B0gtPuVbJDZuu$Z0uK=193-s0Y`F9~t5o_;`e)GHuqIA1~a-g0Q zRhH4nvhXvUjli~ky?x%XKtz2+MuD8#vmfP2w7THXXzt?mwy*{3Z7%-9++i-ei@8+t zzTL-8#_4#V!%oNPoX@$^!Yi-;WOA{?RrLIcyz5?o+8{jcp}K{Pg=H zld#5Xh;m?!-<*(yH4YoU{%b_y*nBecSqy@H(8iudjGHM~!p6e|P&oo)PaK#txeO*h&Xv_4HriviofN5D06Qeqjb9 zD`hU()jVosbNA+F5&rAh=20IvcQ^U>=gr;I5q8f&9MS{N?z+M#FvlAC#u2o@~3Kys_UxkBI_=PI}Hx<67!tE+tp+epDJ*wQxD!k{9 z^1VA%xLJid|9k4W?oTqGj(<`;->$;@RQO0jzNUod4prZu)cgOYLS645m4A;4tN$$D zyI6(!D(tPo{VLzPDlAdqP8D9NLS6r6^*lm_<5f6AgkFvx2o)|=VVMe}D%_;PZ7STM!jFD0>uFcd z2UM8xj*K6#!Wk+oQDLP{SMAxXo^My-b`|baVVer~tI$;AH(rH>DqN_-l`4#=uuZk| z1r_d4;XNwctireo&s1Tt3Xf3XAU%F6{OB#&&o@>0vI-wm;q5BCNQEO*J$@CQrQ%Ce zI75YBy&>y;SB0%Ad|ZVSRlWf#Bo%)2rYfhxRu#6W@OBkmp~AH)tWn`&72cuVGebR( zRbjIl|DNjk3YG6171pS*ScS)`Fh_;GRk;6mvYqd!@C6laSK%!xyh4R_Dm+bvb5vNM z!b}yKD(u)J>;IDq-%#taMLp|%wQ;=J44I2`xGhgUwF%-z>cEXmDsvoh?*^QyPDs-hL z5DC?-LcwVii#LSpRt2nXhwDUb@!D`hbs$$3SR*-IfC)7*MA zq$!>gZ3tD(8h1{0ZlIyQv920*&f+1RkG{(2`D=nr@>f+b8jc4ev03AgyDAb~6BWN| zBEeONL!o#>Fv`Dp940NTZ@{?Fq~(p3b@C@oIxW;tk2L<9tkNet(s}46W6;8N;rM!) zjY3V)`a0KSSz{=2)JM6a!H7K)_5!GqeH8i1qwA~XRLP3fyivFg6A-Qr)NmW)0XeM5 zlCx|XcZ15yWlDKDkq27>I(EthsLINt^_WpS$7|~wW5K%WSa~cI#q%l*XB4A}pQM&5 z@rn)eny3qk<+F75Qd-Xc;cwB>1;o+kEfdR{L-oh0WIy9KXF;Nf=k#FrnYesVei|Rs6!K!#}poAA!s9F@7%S$JO zi*ChwLG#24Qf*ap76`_%z$+W$p-#GGEqr^r)lgK2t1uyYUR{xRM~ZUJWkSnx>SA?u z;V@4>=1mSV%9WR|sjqH~gm@kBpI%HcUMT1Ofa)68RE8R2R3Zis3t#;;gjNCjgc|ho zaxq`?L>oD-F1RLCEijeLQ5lYx%S|qy%gZsuJnHJjRrQfbsEQ|uu@upqU@TmvHZwmj zoV{XxdFjHE`LpLO=V!IfOBol+=bB(+ByN>h(ijg`MnX%1QMp>@H^oCdQ#ymFZ|<_C zrSn&ou9#h-`(3UF&C#B`U}Y5rW916Pm5X)6@8rMo@<_OHO%%iC?hwz9!ny&y*Ezo$ z-#pd+`At*!ir;{F0X0Df zfbFr@_=V~Z{ZtFMh zow8KyMVV{i?8OVp?Nsq7vZz`_#QYWWon`W;pIm%KQh$KLQ+Fky-|l?qWK#b$wc-BR zH^d9rV7nJsv}9| zFpjIN-2z$&I<07xN{`9+;RV1z*sxWhP<2eK+y*8?k?AEuNHjd%yHE-1DL$}hM58I zhmDoxvG6&e@_5dKnE{?vrk^tdRkfk2)q;i7nAOo({M_t*WHYAtOAISAWWRO(*>LXT zzZUis#b1&5-wvCD9x+Zux+0bSy#*bz{>1un-j{O13>7A(TOCYF_@9YrUY)v~`Ko+p^AS>hB&OQZobo@N##`u z(91`MI^F%;rrKlIubuHuTpRJe`^l%rJ@WC_dz$usbetxPx*i=SvZ*>=p_{zU(igax zS)0E|jCV7+cD}@T&G{z2KQZ3oi&aM5&ct|&X->$O7_T^Li$BuOiov$x^|NBOt$6)B z*WzQAudj;-n-crcS-KvFMQb2r#=>A7Wl7zy&eC-}_ZuvaC7UFcOH5buiRQ4lYR^Yv zd{uo^h>W^Eo6lYnZVJ~CQ$=p6W}Emo(|Q@&{nu;<#|s&k!*~<;R|uh@2F?ESa}!u~ zB@Ni^QVm@atP4WS7j$0Gwkp+uddU3DQwl*HA$VSD2uXPXv_!~@5wt2&ziKM;vk;)- z6#%GMw#$jg86ddYt`C=tZ*j21%{li8g4$~FCso!y|5p(j}r1?Qzh z&@7fSiJ%P-H6SeK=Bgp&P&|wF#_QJw8>IAkc4M$EZZ{8oT@wtmtXN(L8VSB*O;FSq zj+KK&tgj1Ksj-Na3(i>g3+WJ@nVSv~ek-m7{86m@Y<@r}#A*)FRBL_V`5e|dAk=CI z{XURlJ1SUx78FNTG3Mj!#-Ie|@2tjEV5ac9Ay^&O8-~|id9YH=4(G#jT}b4_99D{# z;XnN5uAvhk`50v>FP3A8#Y9=m6I46pmi|GFe|fwfDi`s7F(2|-jI^v-ypMaVUKE2o zSuO^>aScc5_ktM|IrOs-Y#ixLh-kpOxPvh?G=!GNYQy|NcJar;PPt~T5Cb{SA+@r6 zCt70dhjK80p{N~KUfvL@ZmhE8XFRh?z}i449|}jTN7RRx)jRiFyrHqK%F4j+TLYQ4 zNyU^4uByI9XV7?Ho>KboD&xrzQhYtyk15mJN^hrNbv0E($x)3lkRk6S@f*d&FwhzZ z&*5l9tEcSsER&hPgIYswvuOP~vDfFv!*yI>e!M=)*~%eo>l(xesm5{|){tg8 zY!i$HbZndqoW##sbAo3ek9f%Dw%yO=iPL7&0fmoNh2k1DiTYy+&yjj821gE-byzkL znem^NeXM6CHo2Zl7cFJk*ZHURWzN`GC{mLfm@>gXd9vSM5{frA)CEc#pb`z&2zJkwuXF=jbL(ceH2t&T<;>Z1)|%o950*AysF zUscuE5X%b$N>Qs7isR>MU?JF zUSLrT+6-v~LZVfY-=In&LFkU{hKVLXhU4C%i4ClN1=VJ~k*<}?H^xHM)&OI_pqL)i zrrf~##7RB7u|6);?ktyDWPoKweh=?AR&xcK0#gF(t!l0P)>X}19zzWD0uitVHSil8 zb@2QH?@i6ul}t%F$#U&+WtBk;CiGwdloEp68r{r#R*%+I=ZQJ10YVaTa4@ni2>mMt z1lpk5kl&$IVXa9(3@A5>E63vDfy4k-)nja{;*s@o_8p^X<89z&N2|rcPSyC?z$jt7 z9a3vHia^n?^|-Kw#Mgz;7v5-MWJD#|SYg7}fuWv*n1p0Y383gjKFNBi^= z6?-RDI~T!@5@$lFcax(Y$%o`j2w-j3)?-_BdBFO zTp5nQav*Ih^${=`0i~;pS?%Vvz<)M=*UeA0W}C#iggTVB7FM*NLDlFNofOpkj4}g>C=>HusVhslU7&yhJ_eICSs-88Xy8(N7j@b}wTT37^eX}l zbQ+5XVdX-rBSa#Y_Du&gu4j4bBUJLvR$rI|%VMTO`iWCj!ch!U&Kq&P* zS|(4e=eM^2XO4wQG zM?3_Qp#c$8L{alT0u^GuY^08d#=2ll4akS=zhYX@!)hiiVqRyWAy9~dbrkyX zs#?}^OT91>G_L0CAQr6P)r%SPt>q6X_gPKuV%}Y-T@?pkA`CZ}J{VVnkqD!lnBtfm zqhr5M$UFLVE|ff1N~D^+t5L_Wg@K4FAvl5S#-@azAHzH(jz7z`j%wA|FNdTA^Fl*C zj5Zi^iO)1!>6mIYy5KUf8JSISwVn5el85yxy4oPip(Kw48#Dz(NsH#?24M0OYh4at zIEKZ5`KbmgYIm5sTOWaK)Gs7=p>OBqqc)l#c3i9Gt-F}CCBdffnnuCixcLK#hWWL6 z`=S{Rx*<3T@lyQPz~~nnBh(PC5=fedjvt(bHF}mqCuGaRX`ut1D9#BJB}((A;}%Fh zM(-Ink^tETJ`b(|10VM*oar(~iwqe2#`K6RclFhh`do*tM zD-`CQ4lV_zSt26W9#VX!(vRqcVIyGZ`=B=wD1>{b=3IHbs6j-9+!j5gwr7BwiA6TJ zE(DG}_SiszwL34N6&9zFpFLrMC}hP<)qmMC;oHqB)~aw?C4U!!?0Y!h~>1k}1L`N&eLOS}k!1w@bM`o(_e7}-+|wS#&=cxBqm&N&fS1Yk)r{C*tb5dz zyN5EU=n}jPrC81j2{IV%tIn-n1IT_-*PwM4iEu9glDN#lW(vI zl$Z?sCu|5-S6tdpO=G6!Pms)%$Q#IEtrP^^y1=^HFi;8)y2{GK8DlOn6!SCsV(M*+ zi{KmTsv?c7#Q>9!#>0}})|GHoF3%1<>bkW;A7$wSY^v-SZoMA#++#7rScA9f2sH*! zJS|y1&w7DnXVGJkR5|bHb?CNK4{&WwR%yF^z!%aw)M-6>X9^97%-gxx&2}kWlg-Nu zqg|?Hw}5q_U=^ipU@{B|Sk-E9n6H+i=_Ki$E979O047-_KP!}31`~>6t&5u8N}NqWQthSqQ1_rG;pe1z zbB(v&&Yg~UqTiryslrvN$9YNFCIluQ8_2=X<3n`50sV6bjUs4umo5`(v>_13u!0v95h}3bK)Ff zJsf%~yOxBNJ>{Bk*pYR=Q!QGaGKJu)BA8ts`1$~HDg<90W(_;r6{Jl%rtJb!z7FZS z?LDq&mV;N+EYcw%M3o#YG1L#~_#e z=gKx2EWOzC!N9Cp&TOt+n#&Icj&bkl7lAg&w3D&wy==Lt-hp`7-SabcyNSGnJ3L2N7**k9YLiNfgxvkn2$f? z=S}7DWClTR-6W!3iMv=bzK%1C#kHh&`u;RDPBG~RSgamyd*aX`^vRv^+r+#I^MXf zBw{AkjqE_y-TG!%H4dgDLAy``qzk1oOK5^UQi>9(cfk^4z6g8@zsxc~Iu?JD$&%NF zl~MY8D{3O_LP8NJtyF^XmUJ8?*ua;|#@RY$9sxd*+_PZ*vC0I$sPb!)BkBZc5uCfz z?4|U0_V#qCS{*r+1+9sftzwNFe2g5#a}q5>O`2~}nskf;J46J|u`5AcS~CK2m~zCl z0g{JIt6MB7I*^TG*_I_T6a@QfvxAl$vXtqsG_b}jy_=BGbd3@-Flp4RP-hw(Zl}E~ zv%yI_pAxtwjY7Lp;&f5rchkJMDnu3EZwuWOCbtkV-);<{%)u}@8p(R1B#eSg-+C}v zft65mih2*Ty=Z1`AeG|jTel09pu7K8RiZI^-HDnK7M>VWu~(&Ek5G!}{bh;iEIYGU zCrvrPV?v?f+McQQXIDIp-makVa&Ovu^?$}+z(S+K?@xCz6<%lE!}`F)KpiveAt;Q6 z1%&a6#=Y7DhvNh%U~ATe_lQ47=_G7di+rXBsEF0ttg2oY#&|-_z*T76?L?cDj8&7c zaEbN`5^Pd}RgvW*?O*8Vtu?1EKPMrQTG>EYzUQAX;}MkCeC@FX)l&mzFbD8pJ`_Ae_gWlrDJU#MN*^T@`aFS6IpwuEbDe z2^U>Sip6>mIw~xPL|-StoND11_4^@Cz{ChX6DhocSU#ML@rZ}S5oBO?W&&_{Ob!Gz zX=}qc9-34!)_0ws{fITg;;u-#Zn@M=mI*5t^P!u>O;8Fee`4D)zAis4#TJm_)1*JC zp7X9ShGyPeN=<3`#``F|PLEQOQG;B1AGnk{K? z+~HG$O1GyZUiXkF^@QL^rAf}Y;qcpP0$Rr|mxA50m@v1}+C2`IR0T&I&~NRp>1N6C z2G)mYy{dD<#EKBxN3!X;!gs-HPghme!cN(Boqo5CG%v6`q>#Pq02}K=;b<8Q!?vT4 zrDObnbV?aP*|ZT4DcvrF@c@ZkxLt_eIkkSsZo6FsX0x#f)Jz?7m5SfF+J6nm3QmHo zO7g3N56dk7K1J)?9fkozp9NR4Hk5gmJPqMM`{g^fJ|v^V@r9KRUP)F1Mndkn4+?Qi zo1DZDVLd5S2ehXS_N#Gsw;w~VIedFXqNK9VSdNzQeLSJ z^(Jf-s(-@LKN%<)wi+pMVZ>)MKEXSgfG3ZWehJtB=x!7~ia8JdBOWZ4FbBbHOMAIm ze2v^BQ0zgggSRb`cB8J>0n5$8kYkxt>^_LqCI{HzyNrz@%t!E?h(Q&^#t(^|t6)Bn z!(}Z=;g^dyB>7s~^;yP6^h?-sx^T6&ERjd^C@7z6zg>gV<=QeOOXpy{?3A}PJV`>q zYM4qivw}vt$+(usZTDaoFRl4|UbR|yw$WHNdkAYj|9?XoM=Py;3PR(MBJq^4V-aKR z{m!KO&g%o&NT?4n->N?3@3MXWUVYy~`wmYKhq(D|J1&Yi`kqR@KkRCeF}3t8r2TI* zBdDnpLHw|*5{=O-5D!z67KyA%Yt8tq4$kaY#4$mHkP1Z$v5GqbY=b$=t!$vhp5^Ta z%Zvv%av9}IK;3d z=+epzQ{#8soIc{$(@%7Wqt;LMum_eeSmr-IBaQKO+pkj(udDA^2C$!qGm$*0xPJyx zAt<^Wc1eh>k@6$AvO2Pr6D1)>*b|*hPr4EYHF*I;B4~+CS~OL0dy{_G(SK2@CuOPl8q&@o&3& zjBynknQ__%1}*IWdb#~^0M;*@GL+-47JQemia;*i5S-mb&1ySJ93yr*nlKq!u!*u6 z{zGZSq)sA1F(x`PMb;oz37aQame=NSEEH(du+!M3h&6277~#Vb5PTimj;-!t-7J#q zo6YBmV<4hTms&P%h`sE@`se>r*^duz3s`n!$J!SYDh>b!0&^u##b*hETHLkN1KcIW zCtLO4L>~_!QtV}|^2oV~`5D`}JE8ZFm>z4CeCc>z4O1pk#RdULCpR> zSh6lE{BAsttHSStDeI!bpC=NChM{}2Z=J=`fE*^K?P@x&L3@=IOiT(b&VnrwB-pNaY9mZZHghub11a6 z7XdRX(qXqA1Xm!6!&hO;bBDUUE)<~%mix@1#xmgjbfH7BOOkRZi82RQRyN`?hzV@? z1`fvwC1^~o_J$@-gf(80G$G#dF%B>iU_?uSsjPenCtMTn1(QN7^B#=fl#-UIMW-iR z?Q`c2?Y(5Pk7rj=RMUwMrW_G@d=7NA%TZY>Zk|LgQK9S_ALZn07Q}^jvb}ulLHK@y zm%|ZKa0Zr3F!)E|s=|@MIw;|!Uc=)3oj8=qz5N`*PG^G%JOc%@FFpFW9*fdwj+|wI zH6d|-@NyXjn~aDB0;vu*#E_g8c|=#HZr%n7*6`+^P82QxGsR7=j{^%OtA z_jy<^a!FuX*x+thk^ob3x0XC5L!jQ0!oRF5W>RrGF5?F?Ov(h{I`^uUnZqBA+bOhF z)^Q)Dthe3M)OJnKf{L@SZk0UVs*hR;R!yu#>-}z{kXs)sycoGDf_H@g$tywIK$Z8C zm7Kag_7tVEZ+3;4I-4>}1a^up4)$%fl5D`J`K`RHUJDC*SM9}8y^2h{qHeeTKdv!8puC2hbzp%I(JHIaI*eB6(vd1(KiKhgzhs` z4TXxWi?>JvBOm38#q;afe_gjVVc&JqWCu1$?SI(S`mqk%R)=C$xEYr5C@)sa8<8Kh zDqCHtAv6fEdkBKa@~`lJm2!(bWg}`~X-(Xwtk2v`3^QaZ*+zM>l5V&7JxfttS71VdX7u+eH&>wam%!9dd#zK+Y~~wIWNW zwpuaNDe$?w$(<2AeG`v9O8~CU+Oc|3@%#NOQ@b3n-~L3weF zaKz9Pq$-iDwrT*zTW((6h^~l5XJZefCIkXYY3jbcM4j`f^CvS7F6%Bc;;bm+-U>b< zphP#P;?-sMV;l&zl1Ac;CzRe6bpZ!BHL;RRiv1uKh9%+H!>(RuGkZ<4=@$1Uxpe0l zKv5r0sAK#Do7Dw&ue!**|W+np;i6)iHOhMi>;W2{?^+dxh>1OiO zJow8enE57)?EepYY`EAbd3T+jOM7K3;hQ24xg){sBG|DM~p{wI? zBoT{4AK`2uUwnvrORz(vYMf804^_`Prc95NtF_ZDb#Tqg^a zA{lGf>0Di3c@|DB<^{4v>1^H^Ok454vep4335gZzXa2B9uAkWm9E{`1QEv|DN}##| zD=U@4V0)DllU(vTa}Jw;gyr1glKC(>3W8l0w@gW4+qyJbaLCMV*TGsC#o==xN1!*$ zkqR0b!O|spy|J}i7~OCxbFIUM1|+S<$JPg{2un>OEbd~U61mGm^ZP#eNT|#MqosNq(=Ob~18{a#bh2)bVxONM8 zlkq7l2U2U-YZSX z2x>2TFi6_`t>~wFQ#;S&2-k)bjZ1MJ2PX@dUh~S}VNe?!i%aQ2c~Ei3u5wA0O&9-* zyPNepfIfl{S996S)flOFVemCkT*MX#PMlaNc29Ote1=7f^unbBPBN9*)`3QW!eNnf zIx6|~c_h^q?fI)}(?!HecK1VxkxcJFCH$ZgSn22{BV^Gn;Ae>3+14h>)&?2a7Ua%S zUxR^Dueg90^*g+GwR1$GA&*5^F{HMSy1QZWHYHp~BCf_wWe5aelHc7&Or=86 zi>tP=wUyGCrvi(`Ig=>FxJVUHebL4(l_;i6d2xe&^EH(`6+C)wg;s(FFA4u(4JI=X zj*VoYB87b17)ec*7-e10_i^8i6UFhukuMOeojk{^x0G}L3SPvqx3oXDI=7Xgn|f#S z64R&u6e}cXLOsswSR63cwOIK)T_s!+dJtg|u)Vs4ZW61`;#a!3WSen^TAk{WZNb^N zhEi<(!?|Qz;vHrzxC#1_yiP3Lyf3uZcY=MYD~2ZFFcnLV$p@*VJoDY}mt;C&O`*#; zi+dcvlk%kzFvv)>t7cT`*B}VVldQtGQYophKJ4!wSQV#Q^K;cztY9~>p->1oQyl-A z%=b#bu3oPMwy+N{`DQ=1+o6oo5t-!FOLshFQ_iob0K2oP`x$@)ASIuj3tR?DF&l zZT6bQ5jG`{@wU)ik}MD2BhFp1V1SR&K`h|o4|#!Q$lAb;ae^@E%Eir5iOjwwp9w;Y z>h-K7F&Lr1#EFTQGNqhPyQH2($URB->1uZz$JAOAXfXvaQrP#o+x0pSqPWC;YQEc? zVeu(io)^cxoci;wcGg^V@XzH2a2Psu=NU*Qn&Ad{b1S=u0yDeXk^|E$A3p@&BDL^5 zxq^+wVsLr}Vkny2=LtnO){8~vaPGju<$UrpB{_*l5Z61BXMqQV?sg(p7#Zh5O7B?pE*LAbC8_$y88{4YF zdsMhXg*#RFrV86tctC~e3EwNz-`Ub;K=rv2YWGMAoWURc#ox9|WzM2G(l5RF`mHkI zFQ53tkC$&cT7>WQC^h*<``U$rIn20oPdkU(8kS~uM_6=D#>b~2Y<}U6^RMEUJYE0M zrDG6YaYobpD!ion?uQ;}!zaz!FZYgl@rrIp;XmEJ{_;`yzO!RIx9Teu;^SlDnX`yC zAoTJB{?cVY87d5@ut?e7pbW2gmNKc(LQkt?v#WcmDKuZ~N@W zFLWQcZhzjXy?=S)tQ(iV9x4jX$+_y`-Cx`g>K6EFf6ZOf=bdj%nX@Tx&Id#DR}C6o zoBPkFXMHnl%fY)>4cjTv+v5;e$#2Cf4N|L-K|4L z#j?Kn$M0X?)gV!*zhUidW!>f+QPC^=?n^%( zSTOFb)z36{yJPfC!LR3CcuRrr)vS?Eo_TrRpS_dwn*2S#ZusQy7fkgWvGC3}k7$2> zNbrbHc11of3D21J!;dH5Uo*3;XZ`U{+6)?6v1_fAEu{Ny9#F&i~gLXRm(f%r{0q{Ym{7$E|wsi<=%@vEijpdyKsPtc|Ze zdc#ruZvA`yRYTr9aq)mDdC%@U;*QgjP^F)zaB?4qZ%}Xbas+chN8C5qgSVq*v+p^k@2S`WJmh2Pw_yZ45Go8{>>z zqtH0om}4w5ij9>^iF7|$9n8Lh?}#yiHl z#$MxJ#wW&?hGBLydzt;sOml=e)|_bOo72ss&DrJxbFq1nd5T$PR+_8KHD-gk&isLS zk$IW9$-LIQ!Mw%%iFud#bMpc7Ve>KbDf2n=C3Cm=y7{L0j`-EbMqV1 z^mOy|@ML%fc(ObrJfl71J(E0BJcXVao>`vRp81{=JWD+#o)w{M%&ni#E6ZOPB zO`h{S&7KXOjh;=O&7Liut)5#v+dOx8?(y8`dBC&Xv%~Ya=PA##o)O zw&zctzj)sF?Dc%$>G16LeCGMm^Nq*!rg^)2dwDaw1H6O1L%k!sqrKz26TG?JeD5^x z5#E{JS>D;+dEVo_CwiB9Px7AZUFkjDd#1P28}inAS9|Nd4cTFimv}dN zuk>E+y~ex6yVZNM_s8C!c<=Du?Y-A~zxM&}L*7TczxF=veaicc_j&J5?v?|a+5fA{{w+u{A#`>FSH@0Z?hyoS%~OY?R2_4M`e_4N(#4fYN3 z4fBokjrNW8W&0-ja(z>L1-?Sxk-nL}V|>T?X8Y#(j`uC{E%q(-o#ZR^t?-@dJKcAt zufkX53;Ak&XZhCn>U|BqxNn_rz3)8V`MwK%7yB;pZS-B?yUO=N-?hFizUzHA`fm2! z>f7eK-FK(&Zr{&*_xXO|d%*XQ?_uAgzQ=rz`=0c*_@4DW?|aervTv7fx3AUry6<*MBrFBc|p4Kz1 zcUneTzqA2qgVHk7hNKNk8<{pLZA{v@wCuDAX_L|>r%g$lnl>$MdfJg`N2MK|HY@G8 zwApEM)8?lgpSCFNA@f(}FU|Y0%6?|vZQg1A6l?A_^H!|Ao6N1|_2w3=#Lec_Sdmwl z8_i424OpKSnipW5o@=hhdTlggShrEL&WxC6nYCt(S#4ICL9^UE!#v$Q&0J}&FiXu6 zv)Ei_E-_Cu7n#Rn-On@Um__EX<}B=kqs$}CBg{gx0Q+K!IoX_KPB3%K@z^P&%~9q^ zbGSLo9D=#;4eE9~&PT9mYS6 ze;E6)2iuLm8Sfc?HU46>8GpjQ{Dbk9@g{cY9^-Z6x7e$@ja|ko*tI*27mVkzf1fs5 zj3=>^e`7pm?7*IW*m%fz5WD-A#{I^9#=Y3-cN=#ZcVN%|#Moy17`y*w<0fM(@W79Z zEylIRX5fUYjZMZC#^t~dml~HC7aJED&Bg`B4~+AGHP##JjJ3cYF{8nV8uh>>5#uZ) zY}5j;gp4Yq(x?EAInyXJPB%^kzFA?MY?K-$#!0|FON}MQiN*=WLgRR2ficgR3#?RR z9A_MB90Lq>lrh6N(wGixRbWgt@{K%WGH};KV}g-mj0YYYYm7EV83AJiu-Y(Vh>>Mv z0>ce71{nQ}zD5S{T`!}j(ZlF&q#NA~pW!t;hG~#-kiMa>=u7&74gfQLN}tfj^bvhX z9rRE72Yo<)r@hn;y!k%8M}MVvsSQ~4PxMFn1HDae(VO%J{f_p~>+~A60>|#A|Dspu zWqOHr(hKxFJx9;dGt>eM{3Ja=kJDrHYuZ7N0w-^$hv-526+Hk9eLvktKc{=?9=aPC z`%b!pZl|BnHoA>|3>Yik)xhyr(iL<$ZKTWSQrZBl ze-T|s&2#~sPv_COpabiviPq6tic^dlKpCP`Pj$40B6JpoK`T~K4TY$hs_^B%AgITg zbOx2t>2w;MN-OCUP?S} zBcIh*-w`FB#b@6|2KlT$@NT7BUwBvftq;7bXa2amv;NYOlb6nw5&uj7XW~5|am`y- zdoa>OyATEt_8Dfl3OO26o)|ZLY_$v-GNH+$J#{k33GYD2BdPKqbkR}Th^s4oR3}0I26Wp{-OTP zJw|#WXOD|zA3Jj#?iKmZi1>kOUvmGHVyPUKSD}EF8N19Ujyjh|!m)UY@p9BB^NG*3 zcUd1_nbjDR6&_AIRetAp;5)CMMfgb#e;tV<+2<@rKdeHYu}x#e?9Pc5D=lqYyt zdh(L_C5z;~O72JTdMF3WOY0Y5Wv+s~Xa(O8onqV*^UW7u`Ax2m`;AZ5m!GXKauFlW zu~3TE&J4Iq%!Jz}%pYtriRcy{8NFSi`?CKVNz4)htoh(!D;`}^;` z_g)U0qEdgdQH88O;P}m=SN4BO?E!2m|8yA5@HTUq#QYq`e~DrKV443KnQZ-^m`^`f zsQUHy({-r7cmCvwRu#ba@{h~TT|9e9arwOY3ud3ZxYT;)Zzhx`7Kn$}goJ7b_bTEj zLqz$T@FsE=5Z`%GJFGnB{P4K`dPsTYdilX-)jBIa?Ec`m70>n^EJ3|D7epJ&1qxT? zl>-XC7A#zfNIzRDPL*$o=(b&SX??sLuZ)Nr{ZP4>ffR+u#R3>x+`obGtHDQJ>*6y5 zutvd%DX(hM`Yz}R#TSap<2e(M17m)rP883qz`Ip==PoCGf5CTW1(heDZ0q zN~(T+oAqKXB&-;{h!XJv&_qC>5mv94<75nf_B9b%;N94Y;!p1fQ|SZ0Ie7ER#fwIM zRI+^D@`4^67q02KY3aj{ENXw^`7`=+Ue(^pG9b>f;F{_q3d{7zjq{?_m7-T;@jnCq z4dnk$KE7Df_&j#;9~+70=j&pi{h<3rP&mr8HR4m*n?d`JKv5kxHa}nR1J_z{O|)_f z_yoLC<~c`v^Lf`bCfz^ViaUp2Pi-dU072!2tAp|2*y$XV^S%i_5pntXRW+-KD)7v@ z%e=WIrDIplMGZu??l{(_Qq&c+y5mH?ZHVjW ziS{*cAAlD>!ZSW{E}waHpy~w=7DcGy*49VjYpU_w!SPV=s`zuxL0m=5LtBAtt+;cl zD=`doV68`vLqoi3?4sGCJ+#glcbaHVx-+g+=F4!!$$Xg{hg$NQWV-`9Jao$-Jcs1- zbm)ZjICbHgV%ZhaZseoxM%~%fd)CsieaOSzFuO2kXI?c3!gFAD|Frb z%+&{+&$4O)ZIWZkdAOQ@mue@Wj;Ly6v3gHKtf6Xb{#5S9HpD^P!2F0fF)kc`s6WH+ zC4Zrx{0(W*QJgu0XkuR?o`=M=T*R;FM^wmZL;W-~K7fW+_otzS{b=ZG13LP(WfXHA zE0O17Oi1w|@@+t#M$By!=Swpwt-;La@=b`V!Pss?eAZA8bvJU!#Q1KSY*Mj7kioFm zkUkSa#SShzAe{zO14_HmfWkByP>>NdhV`Uj)qv6-Gz|S4R*=~-sBJ)NzZRsW%I`JE zJBKK15|`_Xav3PshlVxS<@o(*hIs$xAw=&F2VQ8x`}_H*UuExTuZo_WRu~|HV z=q+eNBU~=aPg!_JR>{DQ{%w6*`?U0m_N?e3#_%2F@r)+g!uiA;rIEiNEh>L^6Tihc zAkRMmJ2{`~gL5ncV~BbJxqiUujxpxAKLWh#6Y5uWaNUc?!9Ft{eN4>bsAmV#w`U`7 zVxEC%G%((u24Zat{7CkxEQjdB3D_r`cW@dFj`ya)g*|ETwQ}9;N7|1k0#{je+3Ru} z;$Orbc!1L~(kP?48)aawGYWc&b-NR38*(96T4mLEiMj5MwSo0fi1mTB!F}70ymKZ4 ze_8qMcg;im>O7)h=cImD1Zg=_h-Pp)&tbefWnukgVf|&HO<4s4+l)SG)Tg>T^(joJ zJ_S9*JH1#NcL1VXZg9Hne|0a{7;yS5?B2~?N5FF1yU4R2>Gy(iz1c;c`;cCF zBkOwfAHlYme5ApT2OAZs~oU^)$~?t?Yan+9InyRBzb zu8Xgbo-+&c$9ejtQ@_%l)DL^MUx~<5k!rrnjs=c7j_7eNlVUw^+8)3=ouqTx<|6c+ z(^Je9r{&Ma8aOX?I;XV)j^XrF_~dZo#F+HLnDnH94fdE+&n3ES9_Sd?pS1t&wfY?L z?3<7MZ?yw-VOhIFSP)tNM;a1aeK`jKpb#BrQw_#%w+ z50EcKJprV>11REju@8D+A7DS={aJWF@LC)1wE-s(Jq)Pee9pdfvL5mwOO-7K?(3r7 z&el@q60Ae$(ptYmS?@B;c`@+i`JMNtv-ftO+^`a&gpF=gd=J!RLI=c@T4(4txrns_<#oMYH9Viq({3|q@n*zA0NPc^PIP!Y{3~A4=yiwg&yD)z%vwfr=bM{+CYZ|ohwA1 zSrtU*aXz0(zCuHkFGAd~An+yPvnFAU8fDa@qkCJoR$tUx;mJ4E`&v!;KF<5YYTyH| zhsPf{c_3)SK;Ywn1%1Uj+>G?>5NILi8GwBPJOp~+>IJtw2YJ4(0V~vue1b;zrL2Zz z8V!XsomC4u!1+e_X$1E0h=L&08&qgM{;>!tai?m^B*f&{#&@ zJG!-r))brhysj$LJZC^^YXnPt59-Rw?nZ-*Qc^jsHL+Rcy$|^go(np_d2_MuV14P? z;crWCO>6N+?KPC&UG@`Z2#Q{S4qv4Esd$J$PYQre2f#}PK$ijq!#akvWws7#86d{I z1!cB0gBEZ(K}))U?t}h=?k7GUs?CuLahB^MqKye{;CYB6eg|MX(quiiC-t2bYn+$! z9lRKL(5lC#88E)kserFIP0%Ukk8IvKYclv{V~WwMqeol!)^66S5c8nMYS^VjzAK4x zFGgDe-Ke**RJR2)CUJqDvvlMu-UOVEyn+XXfl;g#W28OLm_5-)Yo%3gI#{LAfaeg5W^afww3-}8>eu>T3bKVH@eQ*taY(QRxhjd#x zz34|o=K~5kU9>CR;=!8{fAI}yAEza>i_306+9!ZoP9NTrhR1u+aL6XZv7UxwJq<6( z>KNQMuqEZbZj<}^o*RkA-wb@nby#!8Jgt;>_&qsDe;TmM%Hx)aIL~uPFS-R{FY;tf z0PZkOcFh6LvEDzN&%71%`x4z}dkuLJKjFuyi_^5+;g~Nu4t~rBc;FK7zdWX;=~S_e z=%;`v%5i(#&n65qiFuOa1WtVqJVqQm25`LMxjT#@ej0-KA&4J>_#qgZAq9gvL|ft> z@>fgxV)RO*Ue^i?)8dIj<{X(uBlmzG2fv;OL-=fnr}pe+54NAym)#o%7Tqje0cLxK@nC{xs^hryHd|*OyvQ z=GN`lOPBFjpnXVl$AQ+n@?gA>hfto9$|vSMocazYPh!39Hmp6-q}_mbL?4Kp&qg}* zc-MNPqr4`0ffqJE0$B!-xlyi9_cPjZn0daz`-UwxX(j3r>jZm#Aolz~?D>HW;70_G z@l)}m&?5lOQ}1&=C*l%=Woly}b&sZ3bjwdG9+j6ydHeg(i1+$qu7*3kHMY+RQ4P2h5));_C4|Wu6^2lIXgpK;KcX+V>K-0@rOr{9}MU;+@c+ zxt@9LCgw?wOI&k|qw`x}PkjdT_i!sWS6&=Y=M3~1swp$}u-M{m%HG!Y*`+9vfr&gXn~mBrY&>SwQP)It1S z&_YSOdMD&LyfVKiG3j|g27JP^Mnm6boI;Som?so`c{7G=)X;PqTDpQV_Adt>DJ5_9 z$yBimGCyD*$_YB}dglGG91FD+Z95rbzT)4^-*tUP|8(kK>ZktTMfw-?>FCv__z~#r z+TI`<`g`!gs-5mc^u^CNS>$CqV*iNsIEV$o3aun@GNAA7$?O0PFW3 zRPlH0w|&r$Z&vHq_00GhiO5U;R^G#}Cu=7|*a=>q3eApL$ohv*mPT=2E&$@M`evs)}$$-D5K`XgzFE90auNV2i`*GX| z!=P%87qkUBBRtmt&J*vUq-R$d^xsvt;4QF@P(Pu5N_@A#6G%^pm$Kj8jLR*J8sn${ z>kkHbY0&<=z*GK$ir{uS)MHS_b#m<8&lnTrqyNx+MqeNGy&c%TwR=T+KKjM{^Zs<| z9ru&Bv@cN)gZcvYbKiI_p6f22V~F!^k^SX#=d-Jf;A261P#-1Mhk0`6Wf}#*J5uLo zT+mrv|4!M?>oqcblyQ5{7Jn4u16(L&puW`H%b-UA1Ac@t=;5Uv?{x>w@{73V5I>gV zdA!hG@!Z>>861Z$Cq8pMRvDzb>gIh`nD9Qap3z^tlkm>ubo8gwG&N40rl)#eSM{aJ zpV)_QS6=8L3-5$3@)i=hNQdsc72Ao&unnFwV+I+t@p_BL&p(v@sulSk%QC2i%Lx52 z^bgQ=WkOyRItZmldK`Ja7-G-|R=y16gT4ZKgUoA%4PWRqHxD)Fx)E3dH-PUO?}I-5 zRLGvCr1kuQ<}lwSOjpufftQ^%ilgJJ<+>t|#6DdLHO}pa&mP2%S&Kpf)a3G{&IiV-0HMGD6?n z5B9{q)bBxQPvkrmNFO=gpaaNrD4lZv`L4}2XxLWN*V98iYr(@+LRa6J?N`_W`qGFJ zw=IC*TRg#_GbS1o;ktT5Z#oBZLR(rZ^wAZpHx>H|^Hza8e*kPjK8c&W;(5^|gYMxt z)WzxcGZxQtfW)%gS7%+k=MI@Cb(woBP5Lz;_eOrd{XTcRtlt@D42AAJo(cQUU>XWL z<50+t8H{hxwzA0v#ixMwp-!WB8uc!*wfUURY1{KL|D4YHy*S$|G1t&nEB#)ZwB=;5 zy)(&{bH`MJPMv1ZJ6vAqy==Q#8RFjqcyB`5pmZ99y)vkvUq?n;?^f8REBO6iA^q4R z4GM4`_IqI6b%Ku9II1@t)db(7S}$eAGoX`%PY3o>*0sWB)WY@941>;^X;2yJkv5lG zQroi>4%mXccYwX$#P99Gmxb%*e08%8dfdtj9d{{o+=Z~!IsIN7{g-yaVHiW4V=xA} z?7jz1H0bRmp!qjD`piBqn7e+MJH`P?W1z>zp*M&q3gEn3kd|UCa$5KlgYr4O z6FaT6olHt;J1JuM5AVrXY0$(nj0xA1!cQjs41>0vY0y@Yp4w-E)88&PXb0zE`L+1%^n`<%zJyY;aADmYIQ(g#!;Q1W739)^uGi$66Ei;P(d72>8g2sO}Hj zF!Zz^4JdZy>1k5WkIdp!^}cg9XmkVm&h>WEPfpK_qpw}$;q-Zp2DKrNoL|Lvw894J zw4*D$!+EosfD>=){Jq1FzHq%kg`B68eb8B(-$Xg@xduhKY>M&Zw9f%sx_JLrNYD8J z@CxVY!WPbX23`m`jPtSG?K#-nz^f0h?hdKQuxH|MB0YSu=Y8<6aIkT$9V=`4%)~0I`IWti1e?nz#8ZxPw|y# z>s8?Uy2!)n_goEH*F_#qFWYQT`cKdvv5sw9AID#OjX}Ab)=678ApN6ju`W`S-;emA zTfp;hT8c3nhO{>U8<8&Y=Y*8_Q`_k|?~Pm0C$5j@Y7YE18Fv+)2Hv7HiLciBkzqF( zRD3h`g0tMHH0u8mG!m`87WN1bHg3$%DCjyzzt@{G;(aK+I*T4ax&465+a>Sier6c} zdMV_kguI$(;5l!)&7hrtCe-1?1DwY3qqiBfIU&s$?5Dxt*My&BLH~}vZGBpMwSYGf zx&uEoqs-p`J5;;e&)~(d-raGKUmRtm-%76}zZGs%;C6$4^HcQsr)cj;KaB)WF|rV0 z!O*s>*1;_UqXQ~9U+J9&eSNn*wc$1xW}NppJDHy z4zAPvjDCENd9FXtq@M%!i+**dk`$W`Msy5o8`7HDGAKH*Vn8vso%8(RCD0zum*IhJ3BLSM^fd!v zwTFDTVW$o09e`rw5%zM#yW=3=A2JWtdqO#*mrv?`Tcoeus9|X|Y)?A%f^EvjcD2-C#n9)H!KKr46vE~jM$!6Ulm3(gxy zzKeeg`j_Gz&h|KebGeq+z~{aWxCifWtT#^M_$vTKoR-+VYjof{GNB4B5VGCL7}-5a2F*86(neZ8p9wbB=T z3)1R;5B|bRw|&;Q?kLjU0u1{Z-YNDM_Dw1F4Qyz_-;nng%N;m)-3M!xZyOK2{0VXu z-~g8sa@PR(hsyH_soGfkXM;R#SZDVle+qf95NXwa!5ZN76nqV*1>QBNg40F6+;FEar;t-xk#^ky=sc}-_j!~pNGtvvJas4OoYwOTtba}yA0y0ZvcAO@)ZR8t@LMS?dmK0dzv2f7y)mQ{>9A)S^(;)M zo&~lZcGy9KehzGI+Y{0va)%%|(sVJ9*~jtL(vk4c-HWmD|CYS_@XfL86` zd@0g7?K!;bO-}FRU7X$o{q=z^@^E^tANIdrbY2gqzl*ylia3w%pAHk|=_FvzK^pkpqpt>Yvh2Lav(Ql|$7n{*psET^k^W&E)XahaJW z&Exn^_)pHqdHxJ2<9way1B^bPq1c<67f2rh-!Z@~j&~ZU3)cZr_ezB6I3L;|Ee5(x zeZ`t_pLr<4y(pM@+CJQ*F(XWI9vY8yDSlt$cvf{3_Z9O7zh?Lha9OB?=oRGq2jGu+ zToZUA{5D3K^r?FG!-24&6+Q+zZ->;MJNAfkzes!yU;I+w>Ovn4=*JQU+RFdoPpkuH z*@QK3<9pkmU&i%7osM&1%~q8MUWdM|rL+B##pj+MlQpO-YS zufU7uOZse|UrJglspikwR_AZgUz=CX$^xF|HYweZXj2OOY>&H5XS2pI4rd+{=U`ux zC+oC+N#;*jQ(f>ZQg^#l>b6?ly4wnDP08=19Pd_XKhid#gtO41FF22haTR9}ukG8G zmEQw;9T@9yG^kX(n!IsrqR_Zdim(g8T{(~klV+UI?`s_#E3P2e<~r?v8b=B~+Obb{y*hO6LtQ2n{^7Nt*Mu&c_)Z9ejjW^E6*JLcrqRfREaW zx=>HW<0frKp6$r917QnbCtw#~2jU(Fv;bz@fVQCQJ5Qi2!cssxepeuj0O(2Zoe0kZ zY#a|c4QJyv;P+<0R=_qu2J+m4@BzRMKqj7B5b_ztod`bw&?MwR+uqCs4}|u8H5xK5 z;sVGUMc8sP`hYW?WjA7cW<&S#6yARd^tuQ)0k#0PwV)2b0|2(WJpMHFW+y-fg*$L$ zCgh^Cqno+mM&fn6ZBrpZltQ z6@3A0#~8&Co(I?fVBeaZ2wMSf0^V!Ix&Z74&}(Sh58w-ikk1a^gY{8_-}eA2&h!vn zf_Z%%XCeTBT=3L@QvA+Em=7of90QmKC_{WTpcb$a=gipd#<~JN)A!yB(61v;6lq(s zv3}6+VvO;;9Qd_jyxFIt0^`bexs)Pb+bPgzA#4KhIliZ`zjp!N0dxSq1o)o89WsE4 zfTIBm04D=h0h$080j>pX13UDAfVUt9vTA31snr79&iev9MAx`3~)W*PQZhJ#{ka*{tNJDz+S*d0D1xUumA=D z#sCTc#{m`tP6Jc{)&R}}Yy$iUa68};Knq|u;2pp}0AB%oFT#f$FcOdlI2y1JumVsC zr~|A6Tn4xSa3|maz^?(%1Kt4q70>}V2HhO+Y)~Ye0|x^3X8AWWce269MIb2w**6Bj6Umy?{pnF9O~G{1xy4 z-~gc8ZpB;5Ks z8MnVq!971yaU1M3D#XpON6?YD`|Bv&6?-)9jGcwMV~?XEnoVUAW2j9{L&X^!+*Ahx>hhLBGU34!^>UzYpQ&--mJk@1wK>cL6^} zzrn4*PvCaor>KRV{y*fs30zL;`#*kK5JCtc=8-K%JS{4OQc;9d$TC`=7TWYYQPyP3 zGA4xVk2bAp2-!2X3}zZ@gE84-7>#9Q|G%$u?o;P!#%DgC-|zqVegD7L|M9xK-}id% zbD!(n_kHejx-RZJ?gV#|I|bXpXJC`-EdB)P9Csczg@1r;;WF+gSQ)+qYr|Jyb@&>- zd;b|Wh;MK=VU73}tP)pnx4ApqUDzqU&pm*};!0R9e$4#_8^%vz%lH{A8jJScdPl_t zavDYl-Q!#%LRCIu2HsX5?C~*cqS1bEhr{Bg!d#_5$q1srqC-_7yaQ?>sPu_}kw0?_ zTOW8JgMC0g7RK;G14ILUWC}2VHz&xa2{Z`q1?vQT6yZWlm|u7lnIVN?Mlk}$zxZlk zgEQKPw?r$1k&*XUqZuN{FG7sqphlWU8Y9UEcQCcpGIyHN69`m5vv4ATL18MKsb5qG zT+D?jqJ_xNV7SV~QFs%De3U{J8WG1>q|k@xOCP~?CLb?YM-(XhvoR7G{&)Qu3~!*+ zD|{vj2*(9eg!{#cu?kqL6gfFn6S-i{mRgSj!c`WN=uCvJ4OJ))ev4ES%`J@ zbc_~0p_Udku|A>JRIP=pHoJDs-#N=~4K95q4K zvH*5BOlRJrST1&Z3;iX=MG1EzvI<_GYU6zZVujmBNaOX4HJ#5)^$59P*|Ub!o;zY| z&z%C2bEja-1$Jwxg#XyupcTMNE~~ogTUmlPmH;BO#&Yl`xSQ-Y%hyl4m+xm z!tgLXC|uC!>Ev16k9D=ceU#8;p*jo-wI{>}#CB3ZazYfWIUznE%~*Re$uzCBy<%8w zFKk7_;hS)9@aV`$76@Z~9Ts6O7m|6mW;N7bVB(NB9i(Omr$FsJHC-GEiAeHd`Kg2?ad6w#q3Bi{*sGEftnHsNGnIMwr&bYGuGCuiWb*^(_@*2 zNBaea3i=YQs9iBKUNhqf%E-5>u3id?Cs{ixVPV~ezcFHj)g_%P=1b}Ng`%V@7)iKx zLZ`^u6(WV$+C{k4DMDkFLJ=Bk4vMH*bx@%0x`U4s=NmpCPJVo#cC}F()M%b$ZHXL$ z(Qmp}5ztr^AWVb5xR6nX_|$fF&3s2BfDL1G>xV{QO)uQ6MfcZFZVFW6VOjeXOy+PI5|i?6`GuOu$wSL~M{E=3ZTggB1MO6n^_Ts-26CHcw_ zCqtZzB;RwY4{?c-e1;X+f59<)C2`h>E2ZQ9SlhnCx4{wjcfYB~PrpSBQy6AZ8T{5T zoWXE1!=Vi23|ljN%gR4sc#&Zd!*LAx%JJW2R_=R-S?Ejpl`>3X$VcM8dn_DrOUNh2 zA7$ZGhItJ4)yWrICtStqyTy+GfT37#YnJ~q!$7)*__;BZGi=K6CChh*p$EfKhD#WV z^(V1#M~2-P+A@4!=lla%{6vN+48{7auM6#SXXwu`ieUo7Eev-vEM<6=VI@Po8$x|D zhSm&S7*1vw#c(A&DQEp$kKAhG7gVSUXQMEM}O+Fo~gx;S`4M46PZq7WT)}=4=oJr3X>H+$=h`Y(=XkgnagOD<(e-`Y_lFy29*yzLIVC@fA z&SywWXjq`&@h2O3oI(RslE;qWr`F!1o`-`fAO1Lcl2kg<_|QOwBeuU_yA$nUcK~brWOf8{p5lZp3T0?y zgwW5)wbzdBgrQi*lS?P;t7}|6^abqcuv++Q$F$)iwTU#InlLtkmYRw{UMo(sRty#P zE4Tp~cNg_KJe;r^9cUvOewIQ5glhY1q+TK}&=j zI;f9tB_B)^uez(!Gsa)Vw`4GD$!O-iMrcPbzGf%({Bn|=5$s(KVq*V3gZy!do1>A!#*mDb)=nmu3W6kAu39NExfO5dYM-@?ptZ?{0IW2;75=m z)WhG!?2f@`BgXLUx+&Jo?s7Qiklqch%JH>B==$2DkUoy&eQ$ARYGYlMuKb{k;noL z5%sgC(fr_r_j~Sf&<`JX+V15CF^trhI_P;x$-xsRKhIFx1nuoi?L+@~F#TO4)=T#) zde)D3>j%Gz)K4`xF+V0j2hY}?iK~)#4R}S;R$-H1u;PYRgiWYMwgR zk+n3fdrOXpFuUZ78HG{#K6jnmNA7(4GJZfb;8>yyp8q2hCX)VXokWLMI_$xDX}3H z$Gi#-;=&c-N*bBRIl_shm+MGpb1OMtCEl)v`zx{U7=SDJHAlOc{B{7|2=jG@Mq=Y6 zJUlYOXNHo0R}h4^vwr^M4R1ad1P@;USaA9H_yu6^H#E}Uhu^Qk8)#~eq^$7XD+upz zg*T0nTqt=6#9N;YoGKDdz`z1Hv>Aagyo1JzN91j`NEOH49go%?yn&LvNbV$z#XdEX>@@+)TJw zb#h>LKSY{bw+8+aNHf$akF7XbuKkM~xFA@5N;A|whH#<&RgMsaUzA3A!+IX7Fh{>A z6?zzRHLd%&<`m}^896N`N}S`IBUCgt8&S%*&}dbRU)b0PbPla(>y3>Nls~X$mKw@m zLVW*K50lGhlO41%R65eaI6~!)%_0TfF_+i#f?|-1N`)B373;VvSs*fcr~)23qmigk z(q&$tJ0?aE9p?`3b+lrE2Te!pg+qV1A%CsiHIN%BiS-JBmIfk{Yo~*jc*ZHQaP-1O za8Tj|6vVh8T27%#QW_z%Td04uUvwNzFiLKd4$U5d3VPCn?t<#LLbTRN;U5!>*QjDE zM>uGGW2HX!BE^a z6TeN>tmUsE*<+!;L~X&JW);g)_D%@P>g&c++YE1L3HVk({4E+E7Hf3*Q>e$Cp&0M| znfU+Je09s!4S()45JvjFckYiEMLgV9n^eW z=fwIdSUMIm8oz25ugB`Glgx?jkc-EyQ7@qyu|3{my1hpAoY?MoFKD#$TlJ{ytq; zSckLyHf7DAdt&oM{NHU)-STzAWvpK=Gc0E)9{+Ra`MG#~c3sMtUWwP^9t%HVSj|wE z%RH{@*@M-SG*ZOKSWo*nL~gP@HGPOh)WH0nelx9BG!jO|(e7u8tkH+vSA zeGtN~EbPnHD|RewKT0Ss4zI8y!5@z$*FYiD6W9p(+y1G^_!%OeKkRa7oR6ZtphseV z;P1Kl^qTWG5zc=AtJi&{5FX0HusO-+7th~*lyJU|EFJbL`E+|0_GR;j*dOr?g!x1~ zfB3WD^EY7mVWW@_cVS`JsNlmLSQx%q_^=5J<8SHtFf8rzKiE*$9-jK?uXtA^+>uN~pgb3&X}DUtePujv66^^;sByyU(Y0WntL=#_L@wl4W}arvh1B&63Ih>^PYPmO+D z7s`wJP{QsHQ6FHZhOb}LhiOcI#QQ_kC-M5jRt=wj5Ib(l1tDzD!c}a%s<|Ined75C zvi$W}e%RO1IKL7W7L!G+VDl&ZX7c&P{;C`<^oO|ag53&@bc0Dk`W!ai!0v@cdZCAq z9?#NY>rEqF&C1_n$A@1}&2$%`d?G6kpOYHtWnT&DDJ&hnEj7|PcKj@s4&SXB>2h{{ zPuTI{7gQtNz*(rjSSaldz zKG^-_(?xwWog$=juZ8;nHZwKSZQBazdMq8b8#U4m+=TRMRzGZaYNUJHvijNm1e=o@ z=@p-ZmOzzp%GZzl^2B_oqhrsHQ@?DNBcsPL1>=cKzfm z9sWNx(yImv<&9YTVDnQWJ(0D~mX(JePmT2WRzi6fmJWNM8tLjmtbMG0*dEnLuVDS} zEw)dkneP6DP~Mi6hh0>S^7c%BoLD-1X7lOdc*S`Mw8!LaZo#uGS zvHtgB>4kOD%UJ&#R}1A9vGH6SZ)78c<43XM-)k)76UPrZ>%VxGUZSO$Uf5hHpTyE9 z*GYG0{kw&wS96->ecAn8#?tk=3H?)Ze6|mg#nOvE3jHId7jnY!i&;AC&+z>xrpsCi z>4hx4{F7#RZm^JE!P0%lYaZX8-QT4w-M-H84f+V>C$s*C?H-Nei{mrL`rk!gvwb0~ z|4dmr?C)rlPjVIN4`KCRX4g+VziQThwyZqt{AiSqA1ai0V(IX+t&wiPj_)p}FVQR? z)lew!%hD^lXqK;NEu_ba?Ypa4zDh?(k7DKFYh2^__H6!$XX&uV%cqOuOB5SFlUO?J z>T0B`orL?6rNj2DMtOtwLiuu*4nM6L>FSJT{acN6xs{Oq zlBL5pt44ZR3n9IjrNch1M!EsJKi{)-_|n!$k7whLt~kEW&`hsj=aJigL6!#H~ zS-udDzt1P`I~cHhPd<}Rd`>QB>rU8P=i4tHPsD20zLGmay2|tK^NIT!rtG*UKa)?a z_us`Zw!W!sCtRP;l~al9q<_fwx$>Wj7uV~s9mw}j-SxM)em}ojXrK6etIPV;o>g2{ zE$Ca_m z`o;Av{Kjh3@5|;tas3K=Y8vSkZ2h3e=1M6vXHZH42D<5iTUP+nYr*|X>UnshdPC$aLrZ2T0{Wo&*F*I%&F z##RS0nf{frbXjN3 z{z+obZ{qqawzX!uj6EMzvGQCS&Gy@~^`W@_s;<*MceegD5a)L`Zi)Tl%jQ>c{k*bn z`wfKi6W4FBN2k$$QI0~oxITkDI*oL9T_IgupQ(Flo*$Jk_*mCE~i{p<0>wj^5 zrq9-AV!AI|--_$6Vz#~()1%n@EUv#`2T-H_3KQY@;`$4A{xs7k3F+ecE1m5piS?JU z^{2T0ft`8H@=X84^%?BgYor&l^^3SZgH1<`^eU$R;`$7>@-@=qKMMK9^%-nbYNVI2 z{UmYyWpAO`{|0RRDz3j^cT%IgZv)}{4c-Xxu; z{Y@wjUq5_#F+GYszliIzm38!2oX6~0{bIWKd?2RlRSNZ&cnim`yABf9cd$dLaeT47 zFRLGRRr&O~<)c_S>{0%0`FNHNTb6&Dp2X5&Gxu-P)hr!$Hvcxgkfm1`{e8N49wOFl zf8Fq>PtT?%>s;wQ{6zGRPrrOX!WIs2Tnl{T1djQXTWAQsT;SMS;bL0DHWoPM2`;D&$Em^b zPJ`=@8?qSO4tN!E6P#>dWwgZ?@Zed%A=u>BkA=M+U=l z{P_#my8_2O&FNr6J{g?sMFm3+gNFcrhm?YoU84@2@%KmInBzE%)7%qq!e1b|aXK8H ztvOe0oEw9?0kIdtnSv88h1i1^1Mv*axq%as&7?qZtn0WxdcaN+_)Flno;U|^%qQF# zd^b}Fj%R<~4%T^avWG=>r=C!L;1Dy|umZ>WlAG2WZI}i7FF>+sWeZM-cLkg`I3dP) zE()A*paqTvj_$+^S6N=EpV*AxOV-}x3gh$26(YQ&H)_j zV(uL_*+anb49wfeS_DqEvL<3PJqsLr%N+K%xx?Uu*z4tPf)gg$qkeEgyu;v(=jiZQ z25tvVXfXuW4xH?EoqB1n7kCq54{it>V0$6H;AA7M&j{Eb1IIooZ;LD$oNSV{843La z$Nnd8m#hq&?2~DY#&rV6zA10BOn)BAx^vu9h#VaIot&`;Y@31e=n0(!CtGK_Ug#Ha z!V8craI(=ha4hV=g4+X|!lv1IaI$SSWjy@HgJTbj`vqb!ANQI!`UYYQPKfz~vjZoz z_zK4bCwp-Neeo?RxIK_;w55X+eiMj31Wy8XS3uvuO@SYRP=CA*ZWfN48Uh^y4+GAe zioODuPeWW7?q%>0;5QI8IQD0F+iO|iWP|PObhIBF`!2kVwU^*zYi(2vuEhd;0Sg>5 z1MLJ41CqV8KybpeSX>M6bf7^T$87;8jG2YL0?z|}nhiYz$0urB)O?QP5_EVx3N8mP z0Vcg)?2}Gy}-$~9NtHAlfen2A&KBBAlbr80w>%9DFP?kZ>^J1KRDT4n+mA_4+B0~ zjdNK9drZj~qaeM&$+p@&h!uD|aN!2j3%&^W3K9ZNcJ6j=#BssN-dwlMxYppNz~hkf z;3t7(gRTmkP`(<67V9#C{c&U ze)}=rf)fsgSb-BdLY%H;U+3<(1#?0FPEYrqMILbAXK zM?*@%39}&gzzO$4beF?EAFvc+2u^qtA_uPku04i+11GzV2O*ci3A>jdA2?wzNEJAt z9Kx-DjsX?l;W~o5pMWoJhzmI3ACSr5gso1ZKfwuSmZCqw2_He!;DiItVmt*W8<*jb zDsaMh2)7dVAaFIr5S%a>(gmEb3}OpTSPpRmC;S64863vExIU0Da6&goEI45pWF z*^oSN!kdu8;1$63*KnVL6ZVD}tb$EJ;BrV8a6;2^=q)&5uba(5vzI#-o zuaJju2gDFQ)d`P6dVv#OhuDD={sD0ZCv5Zv?FT0u1W|!Y{ic)OcF`|8;k!?`-;sx~ zGY7k&;DqBK<=})nAywdnCm_1;fnEj_eWy!(pG*CulfU#`kYwa1EP-T!6aEM(1}Ch9 zl!6n!gOr04T57}h1-R6oIr%y71e?>n$R9Yc7~%v@SOnYqUf_iHAz|QzZ5zRd2RPwM zNHRF#Lr6L};h&Jh;8K6!QorKlU%ZdL7AH%_y$1AzSb-A;L!7_~!y#VagtH(~;Dp(b zcyPkLu-~c%Cmaen3{E%`aub~FyNbTOrM|hPe!IIgMPEVO*P*X~jheyF4LD&eL#uj zmlARk@lyZNzFlhlNK5@hlU-VGQ?x$?^EHtCK6`;n{Xa|nGE03qlTYW>z0eoPPq+_K z22R-43_hK}37sI-;Dl}vy^UxykbEi|gG+rYOZ_O9$hEjMbDRtENc|&A{UJ;J9(%*a zbuz?h6UK1hCx{!k)Tgo3U$N95ag+nvH4OJ5^5a`Cj(iL2ZpJzgDEb)2J3nsFDA)}~ zJihPa29MU_?1=+kyQA+YKXBq0EzTEQ>Qk6}3y<-DJ|Q0O(zpwd6mYyROZ&;agk%uw}_Ye2$uQ;miqrCo7UvV*L@4t>Oj$-uhe(1 z)JLz>7q8UkuGF8d)NiiTKd#gdF4@NZ8d9olO~=T_>=R_e1>>YtYU)aF70x8d0Y z*m63?5O71_ct|2R*(fL9v&rC6AGA_mvr?b3Qh%{hzp&&VmVCW>Z^ya^?_BdZ}?8fuiqKsh?G;FIB0}RH<)N?CaL}K$ZGBmHIZ7`Y@IH zES35vmHHmtlA^`kg_Q5WbJix(Q|J#k;Vy_lDs1KeMZckhy|%$uBH{^MAa3ANzo1e- zpk35joD!0UJn_H>5c2a$_-qHp1aQJ;sTfzm30p#5f=hjOO8s+kSz6p^NJtvm3Cx11 zz@`2+$q%P@F76}569z-_zzM@3hrtP>AZ6f$F^~#ysn5(_g<9NfhfGnR*CqLVm*AkTP(oUrMRJNvSVM@-ev#5|yFD<8tst;8Nd_Atx}`KuQr$_W9pK z%E0YUqCX)w!K;7{r_fe#sb5H`??;QQWF7>@gJ{c1sU3QX9W~@mdw%~;N7jVtM3H>1<;P@7l zTMvl^$9JUMb4WZmz6q`IxrpyUxdT69oJ73Try}`QB)^F_5ij+hi0`+#-WM^ZXJP#e zJO(iWm-f`aqQWJCyo2l=?K3`Y@FGE0p>sym<}&$jjk}EgL!s zZ1XebS#W%}&f(j1E(DzL07L~Y^*c!Z2l01s+!n+W9)MrLEXpJCFNpX5+*got#N*p{ z?kJ=J9N$}TO>SZB3NH04Nd5(bf5p9@gZT)kQ=!HC50v@}l==mf`u~&q`;+?hyL=bt zau4@7>Lk1XsREb!?34QClltJ3`rVWI+LQXzllsk*`o)v_z?1sBllr!k`mvMxtdshu zllr5R`klkKa2&qJSNU@lyYBQeSaWpKwy&Z&Dv`_`Z>I)`xF`UDzW9 zra{8MrM}&yzTBif+oV3)q(0fCKG>wb)}%hwq(0Q7zS5+=(eUjP*AxEEN((UV0e^yA z2FEvl9Qi@J2`=@AhIh?1zR#q7&ZNH0r2fmew%Xis$f82*eZdEc=%XwQ9N&#{#fVR8 zug&d(lz|R&AcnhfzW{Yj;7k3_J|611Ed}@dYR3I>R>wIAMQC7jQe^8Hg2lDbTkI%AgH|iy+2`C(MWR z0zV0C)(!qkzzu+IkR))zM93EKmB3E$^^yfnzGBEnO!)*F_;X`I^dx=oMqV2h=B@ZQwFs1jGPb4NQfUp#BozX-FwJA^CJOM*9iL-&-s= zA^B#D2PY(-YQ^A$-VlA1B@BjinTatFI1^$I9t*q$2>~aZCCB-K6E1^ffiEY7oChcT z2yu&r?*m}EIrs>H zPPho71}9t#ISif*ya>4oPT1ZOb>cmgG4M->DR?j7REP^W;burY_!gj%71|9>7zHT> z=Mnq~cqvfU7uRAot_v_0Vg*iE2Jr?b{1u`CuK*6PhJ8hFJK!wHd2qsF$P;kFKOy>f zuSD402KokW3Y-9O1D^=o3&{iD2RsG241OA@YYUyBcSgV#5IH!ZI|(>pED3lb@Gc|^ z{2p*{KiqfV_Q1^$**x?E@HJ#Ics05jf#C2#5DLghdcjaKcj%ckrt~-GR_Oa6%u*VQ^pKgV28B zz(Wwd1-SQt0|&zo68IosAjAut@E9Z(yaae3auU3qJ<=gn;Diet&<_dNCjmwd!8HYs z0ns z0lYQP6k?3`DMNs>Aa>w{84z#qOkn+Cs1uxU4CFAl2XHy00-W#wM0YXvx`CTqpc~+X z*$_AI9N-~HG5BF%x-0r^3GP|oF-S2uq0eyK3*f%M86z-1ffN1!xw#bnVt}_HPrwO3 zLiF%nfY8_tZ3ZWt2nhiv428I3znyR%#21`!J7f+xp=uNmp8%ghWZ+f6KAvbZxE$yR@y6b-6L2O(AN#t51>=z)oUj^V z3r^Tz0{Q`*&=m3#obWy*ISG4=z~K|oR&c_elW;A-30FXj*XZ!L4ZIgP;eCib_yge6 z$rvB7_ej|0E9f@35zr1&jr~AE4~PnTXkow(Q*bYXcLWZC+yp0df#`0)ng^KSgJXeb z0-obUjo*GBlQ0bYmL zffL#X;QE3Sj)sJQy94(@lEDe}0&!e$!ZwhX;6}ji5Q9zVTc8`n3Y>5wWDfWy;1vbN z6Y#6RXOMDm;~V=Yg&e75H#qFr*AT1h^QYyG4gv0$c}?fv*Q%h1i1=76+q$ zz`a7C^N=iX!hMkQ;DpUXanFLc0ER*gx1xW5tEXX&0=@=#5fTDUXcmU?5xh4r0#XQ0 zcotF#{yp#^#9$ltz=5XWICpSD4~Q2y;T%XFIN>!&8F)F+G6H=FZUuY+>9QSjE^u@t zbOPKRmBfVo>J}jJ?1f5L@t`z@?DM;EBKukXY~(;8jQpIN{`2 zv=e+4uo}Xp;@$*0#~}^;JK&{Rn6tny0~gK47y`~CxLz9OIN*7R9Q+<|{Tz$~;Dou5 zm*9lwAiC)opMi#Rksn+Rbb|zf6HbDx1XlsmAr;_tm_+31751jBCBoDkC_!#1X=X$~qkYw$9MA7o zz%dXva1WpgG6$S+Eo2LLGB5{H3{F@ADFY|`5%L7Q3}~w?MAQjR=(-H^BlvLOZ;%S`CqT#LIIld6|3FVj zFK{p58i*S>VHqS0oUrK%oG&=xCP*GQVL9YHIN?J`C3q#U(Mr^hXIMfPh#ffL5=bC8 z;Vp<7oN&z7=tFQ1;3-HY_-SCrRj3Egt%Nfma&W>QAYR~vzd+)_Zvme}wty41`v%t) zoUjMvCU{R^KS(urf1oSGumJr7yaBNVzX=?hglh~w4yc60f~$Z}AzQ$I2O6w~{(uv9 zfV>3n2y}oL;@NNrPyw+54+74ExPcSqKvdv__*)Jx3!Jd$8uTfiO?m+fA?Lvf^^$SF z?7@5i{2F2ao&@Z;4r>zRkpVYDD#5n^DpI2Te39uGVMxeQ(cB;S$- zMQHyPZ7u+E6Y+t-?;uaWPXdQ-MLuvBpw>2Ul~ z+N2aZjI!i|bSlISoP3aW{2uy%{N#g_e2W?(KjCypG4haK(fsph1LDai=uePR#FKB( z=a4dR@(Y>)@dhVfpc8(;_y$fsLAOCFz{%%lz>m02;N;u$G$ah1{CeIk!?i&B$*X0|3WGRz(57Y3t?15M%-N|V8Znl!TWgX5HN|FAe2Du_@HG>M6h=&yu{ z-f%yq8GM>WM=B$O$OL0}e?Mh-?-}MMG8p;`4T4q8af)a%iYy!rRmo&_uqCZjxx(z` zzge55311E+l`seii^g#*jF@P}^cWmP5$GNb^UGmyjHawflqNg#wj|LIH+WeKlZDa$ z15Ny3^L9q$G)1(DEGE<;fXo{XGzszxQz}gQ)Kp{F=ko`#>!Z;myFNAN#uv9kk3_*T zxqoOFTK&(btC5|$ku}23FDfc5RIqVg+b*&Q3d5p`z|o#E*T8`$vlSL{b91Y{HfH91 zt*p(gECc$Q`SlG_n91d~f$&^s8E6?KpDR7Hztmva*WA+9zn`C3-@tyTA;>?_%vNC$ zXy#{OWhJ+;=o{3}((hl_VC82KWMQkYH0x{W-_Oj-%F5i#->+YQS)g^lKr25hKWl}h z?Z2+UJjmL{I>5%-%vP>2H?y*^>}S@mufM;Ut!1D*$U0CS=x6f}HP|ZTK{kHo7H0lI z{+2ikg{>LRsjr!pZBSrexu1DozkZUluJRoRKq? zu(Sz}hrzWPYKPk_*d1m`9pJ}GAyylrQbqOe(}&$(y=(5T-e^@H&ylWuaG9<9jMuEw zWDrzOVb@2aMp1qG{9Ob7=DY(HWT6^Ef_R77i7_e%HUiYDpExGCqJWCjo6PABG{K=P zElgzab%?-7act<#n%movw~lK@hD@U)!;~g8BK-ZYW}LF_EvJ7bvM9ju#jE6x$XM= z{rT0#^F4u{sy%xQr$ste_^EBvvJLf94m4+W>+5#47WX?$+N>2R-f zhT4cYm`}y`pFkSxr9VTA-*}q|pRCdF)*8VDqqb0ZY*nD<2rdX-Tk#Dh3gHcZ%|9#7 zADmj$9`TOI6As_5e#jq(*1)|TO4H9BVHIYUNTkScj7Zd{g5OtI8Ac8njuZ(`un}A! zVpKRP<)fcHJU!q`FV+qx_v1f4FYcOir$~1m)aNCYUclEr`N7Q%{ojTNU#B zHBJVvv@-bNrT#RBXI^3!Xou{7slR%o+`m4C965%djib>v1$wwQ`jW2Lzba`C&%piQ zC0J-3wUdrA3YzEoZmSlK>SysfQ%KMpA83REt%Qpz zK1Xl9R|BcbQBMQZ;f^{Ykt+tdRFW&DsdJRyiq{3r{B<>=u0A-S9DUJAdMdWA_HMxU zxBQ*tg;dgcCC))pfAMfYx7vUISAlgjj$)c2&#=v~&v41`&L}A;Eub4#hWKK2rP^hO z?~afiRXg-j4N{F#WvQmANN~sg6~K2_$gZeevAg1TCGJYvm9k5{iz4x!2@p~cRS;XC zF32jVDBz;-4F=*2)b?tw3VRC}50ca=YPC8`U5H~;!SS-*4uc&=J7hcLJ8XBj>~P0X zqjtpZNZgUKBWp+Tj*=Z^JIZ%d?5IRbs&{aywXKn-+NRp4x~F=lMy1B4CZ(pN7N!=b zmZg@bR;5;_8l)Me$evd?hOh{}l1NX$sdP-hfolw_1; zlxI|ARAp3W=w%vY$}&we<(amb_L(l3?wQ`1zL`;(v6)GkDVgfbtjxm9;>?oF(#-PA zip;9a>P&;3Mmyy@ZFjow^xhe@Gj?a;&f=Y=J1cfp?yQ3AX`?JzmORTg%RS3G%Qq_| zD=I5CD?TeRD=8}_OP!UKRhU(rRgzVfRi0IqRh?yzx~t8=IS$o06NA zTbx^#Tb^5)Ta{a#tCwexXOw4}=baal7n_%umy(y2SDaUxSDsgySDmMqFUvR0x6QZD zcggq8_stK)gkIwb-X%}XeQ^%lGIXYUqxyq^p8u^g9ggdOreAJX)e%0-?Wgl*tGbx#IzLXV;1zW1R7bMRsoHy zhDPc^BW1i!+CwY7p_L&_FH@LamZX>Rnpp|WWr+6VrXb7 zuc4LDP*dn*2sAR0*GNGd%b|;vaCNS?(_p75uZ{6L6L)4o7xkclrqDkZUi$>y6Eu(X zt`vG#kyQ!Jn2(a zwABgLrx0~qTT9ElnY>B;hQ3Q&v=lnJ+FJEE`Q-YIzO1jMtCe7*t);6TC3lmzk;F8U zH`Kwm_PVLs@toYePFY=9?iAD44IuEkCpmHM(ppW=h13m!}fd(-iL!NKl%_x|W{ z-%@+5r+G)YF$Eg6Y*n+AmpMj8xpfeSoIZxc!-ow{GV%Bg0_jY zlW@^=611D)B5OC&PSD0z{i}O6SXe*!!?vvzXG->`KNzArzggxDpLbU#UUOEzo7uQ3 z{zYc^#F25HD=8n3B;??Y%yMb_%*=P8SRTR5=ky=&83xO6(#t=(Z8{7cjMK;+sypU z`gA;cy+n3Sx9#_q@0J}+xf899?t3)u_LhZ__rlvmCcPNQEs3#RRaW7;>ClZ!)$;GJ zj86<18GY$k`26YRAC5HHwI?fF>Z`P&c$-#y* zJ8!hj+-H3K%t6_{Yc}QcZ3^`64w!x;LfL-q#^}O(ODrd-_O|9`yN91%((?L;ll>9~ zcHuVpUO$*zQg2Kzt33COEtekJQ!jq^NV)dp;%*DSDhg0O+tqp9XkXK#HdiKPXyXpm zO7oI?$eZF;=+I0{>yxf7Znh=zW)yBo;d*i%fV=}mG}UdbYgjt(;?%`G+kf9SMYlos zAKeW`hh(M74eB>!V?iq|s)3X09d1tOofcOx^_K^2ADSgQwjFiuk^8#944u{5EACjw z4``L@@m=e-`=(C(O64ejx%rc?s^PbtIwrLaKh@=%$w7$$FGruB`@Dsly}=5t?bowQ zcRgR%{>QELesdk9Qin{sKdzU;IANaW^>IHBZ4!Y_>0Z*Wf8%N9bTRNO8s$PZvXge?Kar8u{Lq&m^bpu!UuM?M@GvZd1YVP zr+dO;hTow=qf=iR?J0@BvVUFSlrbYs-aqlqsVq+}%IN)c&8>$kk+ox~KimvT~8_)fr>)Qs6?)h~pzifQJ!D;J_ zFV~lyZuN20g=@Q3Y`xL?gYM}yM=mEm$WF^S^g7UXfX{jTvc5-EZFMqF<+!E#StktY z@Z!tE8@{?RB6fh;s{zk^J6FDX(zvtrx`LFTW1g307l#h-xjrcLWb)~kJ`s5-v5E2Z zC#UXynkrAIe^8#Fn<|XwEiE~%(#0DV-1xXHsTn;=AXGpfYKwPLCc0i6n@z8Q6a9gyc5MWYT3@6cjqMY#O5-;K{k|}s0$Mh%cS$K zGRYIPQl*{258YbdVCdFbuAQK@fVd8k=W z&LZet>W%>;Q)iZ(81jCJVcV{0U$hT+=Ke9panjj7o3yH%48HXH%dd~M?*GlO$$I1K zfB43u@y~yDS$ucYBbB`ATB~y_jzkU}-^+69(Ir;O!v^U>hZ(ff(>im zT0GkGc**sO9 zbM)nDzm%PiXmk1K;c`#M0ZE1*4DNi#&GR1bQ@>}=g}x(>pIS0QIpymOXJ5~-_}Dz{ z#>}&877UV4IAeOmt6+To_BGBMzMr_azPv@joRHH8#y{Dd_vz`$oo(&}ZR>KW+tY=& zU5?33?%(^e-Uyp|rakoLt!g;*gq`-X#x3vZ&)}xVZ}%Sx$WL;8TyNU{Oso$QBoqh?aUmt3exh64i!RnW4=Y+K%ZbwQ+-WCpxpC9#m z@#^@Gi`ys1DV7}>Z>=r=f-3Kq8%X(|A5|syqSKSCjG*0m?oe3f`MLoCNj`QH4uyJ#qG$wcSFe#~Msh`9J0_|{@tGA)wBG~ zs}!wooLS+&u+{GFmx?Y$@3S8t`EK3n-VXNrPCk969GS5^dH9^&&Ko@@k2*eJpV!&y z9q##adVDIA=XxBB>QjMP9^Ivb{Kzq+QyF~le!cfNH!YO^77~o>SM|DM(7j7L z!&X5>dx}mZM8E95XoFtB)8Qu%xivrddzal0ewuZp;e_@}gOxtNe5UQ-p1mh! zYxA8_= zZQh^SW}e)=BIbj)VQ@D)yXt|Xf0$9#CH_XM)aa7+rNWzDvu?He>GgTpqQj%st=`zp@a$7_nJV>Y!t+O0-FHu&xzHoodAv{Z`uoHEiVx?l_5NaB;o<(z z^_%~+=Z~%--9OCe^o2a3fhnFy3~FXCSe5DS+_3SAr3I(?2eCGFv_>AFIfMMu0|{PJ zL6`AB@@37oTm>(=i77M^E1xW|FaL$;s{K z@^)tp&2BVi>B|jAT1EApuGjYHTlWZ;LH5h8^gi~|;O!ONUSC??$_Q^^J-FqR#`R9W zJY+E`WN2l&Z24@*l(GeBD^Vt(pU z`K)y<#=5!vzSMEkd<*^9v*nhfzkU1qfWe(JG1WQMF?Y;Axkm15-0`ZcG}@#~(;FlG zAGb0&9cnu}XxtwW-(A!BWmNxzx|tt;_{Kcq(ConUKF;&pZJTagba2<8tT*3!>^!~m z-nEO`KXuzavdfbfvf`U=1Aj{z;~d$l&oyK9que`(-OueySg`2A+L>RyKj_yt{nDoC z*}uE47;U^XsiW_##XJ0eTT;-gMb$`ow-2rF?Ej%CYV1$X!g{_-?sUg6bGG^89@Cq9 zza3leS^S{gu_ikQg}h#wvdpw$ko$n}rCatmyL)X|)ytw&ai8S*=VaPW+1A@f+c^el z??~P|;D@8?@4nyfeH~w&_P2gAZoA&hvF;~Ir&Mljw0zH+`%e!{@%qK+k4cZ?NA=6x zvLNDpPn(w!+c%uo>!SQ6Q$N79?V_|JKi_?~f909%ZIkRvWWghx%HMzb`iOi*55qPu zZmJ*Wtet(OcNa(hbF+^8a@yd8(qf(Akp_KqBl=f&PK*>M$(xuY%QdG(JY)RznW6R} z<8NoO|ISd~w&u~rP+M2OVf7+l zg)7dc$4t9A{Aa7hR~>g6rnogdbFinqdiU$BM3-wL$M>J|Yk%2}htJXiA7na|wR(2F zb92WK6K-S5kqzB;UvHaTHN!G`>%)d;7Y`X#viDwY^wpE$|KwiFZwlZ7;bB`xm54;^!tM* zKe>MF_dCzRy@#j<{rdC1P@TmC4nNYmx?HQG{-R;C0@PdeLvM{}V|uV}LFlW^$Cm8A z)xU2)!xbL)SBB-h@$oTexoGR`${y+d=Y|gr%XgVEyIYIZbEj;3wc+X77Yie+mfu;u zPHSRbzmGP*?kj7zXQ^=)8u(1v zX>p|4+ea-{fA=;!b9yV?+rP+4pG}CI^lX2G&&dn7)(ki?cg)Q}`HwA*H2?0b?V8;i zCpgGFy*7;A^!4LLt9O-74K+A!0yY*=dQ*0RXqo0@KKThgaZ!*hM3 ztkFD7F z_h#&RHQ4&hgMH>PC73I>VXj;vnJXJCO|wdyow17E7I9pII$HBTw?{^scjkB;#Dkx_ zuZ5iEPirA)PQm{(llVVPq`Rw13fd-`-ucCAmYZu>sNUFyMIN7K4X-}_TUXQ9!EI*t z82Q_}=dW}2`L9b@W}Wv`=TcJW_pfvsHHn(>z3#pz_IeIm;%DBq^LZF_B7Nb0tBpRL z(ocSBR~38E;MoMFUYyR8rraL)uuDf14?T*1bkg$MB@NzpyMML2+);h-!Cu?(m)sZO zG3W5yyuiU9zZm#avxYM)&Yf_*@+L2-eB8a65!PuxH+T^^p>Xb*mOazBjuT&0biA%C z9r$A}#i)%fi&y8jjy~Qt*R+4!8=G!j=es$-{`2nGcDC(pt^I!Ze%Rq1BR%~Om@j?M zv15a)X`4M0hPSX-vO6dKk@20gcxe1%!0kVJ+?gA`?3?+iE57m^@#Cp>vAQ8;t@96W zw=O*RXF|4fz4BMzE`8kZgVm78*9{h*Hmv&o{ao8M*ETlatmS;+%IM(v%f`>{XYt5o zeze}bv9}W1+J8}2u$z^lzGIu)KD2n*v&ym8>=9KyzT2~YI5+!UxA691&F|(% zL_0)W{8imp`xhJg{!x=WhF+c%@qTQZu7#t@_2pg>_41!>bX>dj`HI5*+nv*m$J#dE zZnNUT_3&SVJNV|zo6+vi)CPmHepp^1b9q=@?KL^!w$>E)4=LK+N9=n$-npF(n@F|$ zV(ZrYKblDYc8dBxK9T-qJ5f4|{_Te1fHtMg_>;HDMRC2SL zCTK0`#F~K59`PU>Rp*hOqUwyb{0u$6YtL;TFXuk~C8*Jj@txfcP6 zTkqfghd!&0k00&0;LU@NS8SI(-1wxd`TgSFsYTyeADv_Tkh^-VSBFOVm$buFJ;Dy1 zeq=v*%7^TEcrW9=y44Hk+tI83n4vpuR_o`BhgD||i(k~dGuOVNk|qdWD1Rb;P`PLbR3$4)H_yZ+fE_2+l}y>9P) z*?G#&qMYK)1*=+RF5hRtU47}4ykes5PWj#owtDTZxxQaf{&?1=7cQsz+4jqon>bwy z^LT${&5~wMi;GJN)83A-Zu`zF`q%Ak-Nu`jc^%u_p#W`G+lSRp zFVY`=rMH#*%TwWnZKfo(-8!o#sF1*3lnsEh`JNJTh8#abNuf z)?;4CPs%pj3N~)7Kg;7}N9XQi$9j5{YM0GUyL1ijQrdODE<4@w!YHGjxBAF$%IgQ` z+ne83HTE2|anzIprLRo-cewX-rTq0W$NA4p+fQwqVjDNWtK+Z72U*U({bj>FogQml zxiVtIAd{QRCpI}bZ~5)CF9LrFF`LlecYI=(;a!TWn+)8wXshk2KKaIjc0N3Jd+Hx9 zyMoOV+WjU^X!j6r_TCrD3W6t&R*s<)G^nu*(k%SMZCwWebLz1 zyeW3uYQwGMeQFEpnw#j#nhr`0pS(8Yvi(%&LEm~#@|&^1d;h5dM~i7+ZSQR!?Xyho zA}OwK-d}F3wuqP4`C>}*J02Nlito(=@gylWy88&;;;_|643Z|5eTRHtn_wSSmqt!aUJ)0J}?c8+Z-zHl- zFJ9dvH1+53`b~;{xN&sm$>F}Yy?j>1?aa;d8?1a4s$Dv9R77sp$*|{tY@L= zWjL&vqw%{5o;GXK?oK?luch0j{ff{Vmg`P!c=FShZybxYzrWMfBl|(-tHRhPC(=E) zPXD?8&hag~j8?RGzjez;bEEh*j>*n}_6zn7I%nj0R_Q1+EKU7(cVUP4UaLk`EZOw4 z|HP7;CA0dT|GLecHZv=KIGFdMx8tNjE=PTS!mQtxxXE6Bm~QnX<#qOHwYUHN3#0Um zTgm42TACTA9?{Fz^p*Ajv#Zy3$1Z%R_h)@oU+t*G)yLZp@=uAo5icA4bglehE_R+2%TDc%7 z^N3MPOfvMsL2hn^jT@WZcnL94t{bnd^-{gycKU)_@&z|E_m5i2o74V~Udu+~{gfft z1fn+%2K;IOZy_3ZC<4PHBLe^Ny?0l6XR4-gOXJ#YCWmmm?+);jjgC?XZ^xD9-Q`_{ zY#k#!LqZi{fif>oygu<9)!)WRE;p0+b(Whs^|P`ur)_P1+p1S>eeV26tuhZ!2N^lK zmwBrE!lP*0s%DZ^Cp7DXr-TGNB}|n(CDgnBW3x{|z0WS?pAzax@38;*SN!JY=KUo-z3im*(eFU4%WB=>vsLDM zPO5i~TyCuYuzA77Z?ooXo!W2F+P-J{-5Yv*^r4(z^=EF34Iejcvfl7Ff$8^5cl2%C zI@0RZ*0%m$cD=XVx#!~@-APfZUAR3j&E`$>+i!XvaNgc7z%>2(u?D9GXIyW)dcAuj zz8zSbsvDv`am%bf@8t9}{BfLFh1c+h%D1U+V1psRL}y?Z8`s-UdnQ^1Jvgy8(aB8r z+pVv>zq)*S>*)nsIu;H2w)eCFH+LKhzT0KigLO@GJH=&J*gDqlzT7=<%wS9Gmk z=wkNAg>O#!3}{)g>PeHsqf##9ZdkGW%bkldAOAGtZqjwbdnw_5!|$ime{{;|#-EpS zV{O8@o z-FBN4?J)ORd{5)bMdJ^9ZW%c7x0{2<*hQ@zp-x|TUbdkB(@qo0UzpxF9FSbtU_$u) z%bmE^78g4Fa?~v0azuPaXb(+k^B+AUOba#b-?xuTfc=lN%L`l|4f=WD zjZXii_bM%+_IMShFK;BSV0H9p>Sr&&{;~u2fA51svUq~@;ILG_VA2049vmbq7V*87 zPvVR-^TPK|Y!&m+EjHxssN3aE8@sm3DE`)}U%{gRzsqL7I=Q0nvn3adp50j&(5-q) zTts}Eye$(K7!4azzBsce&0>V-dXwtH%;^0gM_uD?T839RKY6ixVQT&MuWm2edO16I zz1y>d3r8lGUwZRnr%o?^ntlD5SLbGl^IiC=yyWKtMxrK|*gzkPe}VAVCB{q_~10 zQlv=}k)kM40wPsm=_M2eZgACQ-F=?DAMV``_kPLDnVd5-naQ00dw%bK&J$6oLY4(| z8mJ>(IM#k6t23-x^%+a#K5VR975CV?$)}-}Y|9>20WT&y2E0RON!6hz%0#G-s?+`Q zrrO4FQ?Db{fo^3nh2^B~FySm8CzP`dM{XP6`%!npxTRNpf|kbxxBGa*>_snRzPaKl zVZ_9ZE7yLq+D&BS&O13kg2jowj*iBisjrJFKI$P?4JD&CT9&&T#UB~#u4j_~Zq3kh z$C3_g&%rTl7_IOf!Z}DniQ`;Ubc1;aX+5YB5xHex?d~OHTRX3kt*0=4bH7WvNm7Uq z=TfGl?+P!c*5Z_=vz=HW(Z;a|xM@GRP?r3h?9(=Au11-Td8f+y+F}`X^k8nhrK^e| zKwyNQ%b_$MmhHiGBpbJ^KW5xw?M*gyftnHa+i&lZH9!mysl#DTqQ(24&*@Qjy$c#a&O&KmvgPUmeshw$< zyqPBrJ`{7ME}-_(bP(?B$IK%3tcj@2_F4#K&BQ-3@bPLSA|{C9ZXF+?EjxB&uRJEwx_1(o z>;+SM%nFnrvPj*ve8zcNIZfs*Wd+Q~efIn+i4BXDFX=n|=!1n)tDP3Cq1F$i z?YD4$7p$4=CZ={n{%_$cwfHSr^&3(1-J^?_V9qedZ)GY?L;vl8|3uUN{X={F;L_pv z5{m3v9RC=N{OI1fuv<@%4g*8Oj6lp^0~NiHKq@%-4;W1tK%k4k%(QfXA3E7Dkj|KY zB+=A=;JSEohLwc%HU5CW%WC$aMSZ7GYPZL?U;0al1cEkVb&PKgq0*Cqs`KpvkWWP( zO%UVlR5IeDU>8u*xJ<~DjA zr%oVvZaS*3)*y7DDbjm&QsUSoSI_}UT0w>?{sb~7zEkVduo#0WelxuU*%fy6=H2uF zS8Pa~6zFu%LV?*#>fy(uBe@Vw1!Rzp(U>28$la;gI`r7*2O^TBoWKk5!pdnF*=&#r zmWhN^$i1bypuo!xgRUivOfijz?@$&nz5W;4*=s|NKPrBeR5Q6HScfoaO<6p*)X=;+ z;G@p4Vj6lflNoXgFKc>#;KL&>+|%;GYX_QPbv!i(+3>G&@pi7l)hWY4iR>(%JDX)j z`r&Y4O&RuRQDF{IbBu9}lwwhwlaqG4W?z8S>nDx{N0UV@lE=AYoINBP@G{o<(>z|u zWmP}rT<&iSzf`Tm%6&~iNr+o-R0KUCf|IA;c8V--7%7QGB;qJ$O$(m9Sl!47!(&6D zDn7D2&qaDqYU{)uQrBQ+srlHK%2ugXoSpzYqw71->l!K!$vhRYBC}IEJ|+}5NRb(^ zN_VeMnD)qe1GuhN!r(fmMbe!ttGb!6q4dDd$o`QmF&1TvI9K8vo!1N}fDu%AR^Nqm zKL5ZNbC=c8(ENq^?`3ray4zF`@jD;^u)+aU_dU;dyh7!7`}chR1>k*Wd-QPDuSUzS z+{5xu0B@V(?N|nDGpb+6ZRKtv3MS_8*ZQUS$U%tcO*g28CM>ve&+Y-o;lcT^;9OX6 zHY_-kPOz_1CB;6>?nzzX_BN|ip_s4K(-uC-0))g|3zyUSb_Xl~=8!|}>Hg~j_P@TE z1fcESlZU_wKqU1Y2fZu;P@B5cq-wv^?(HVf?#uc=z(99I7^y!N45F800Rnh{>@yVY-D!iF?+pQqKr#S$A z6eji^bMKNyKqe!MVYe9&OnpP`+d6Gn<`1U~B+ybP_8%?JyH@|f=#ev41Fs~AU?gFL z7w1_{o=mDONVuVnyINN7wqS3k^!^fAddU-_raF?5Mj!2`|I4P1ug7~Hh0t^3a0Z%H zjnQ{Wz`Wpkz2~d?Dh`fg^cprvH=MM>&x1)5q7_#w#&DYES!w<`$Z`34^8$*Qc{Ujy z%gA!1la*Jl>&`pGRcYlmnw~LR@s3;2@t^sCx6QW?U{O%C1EY^Udxor6iTVM^WP#$$ zX%P4GDN;*MpNdD9A~4rVI#cB!y+ z_neZd=!%jbzQ0=A`U)AkSi&}n%dl05YEMle+ouR1AUlHtVW(jSK zmbGcC6qqwOz@xYJ;^IIO|I8a533=y0vY>K}eB-_0`+CvE%kYkqbasA4zRj} zu=el;B7eU0b_Zu6f?M&Sj|=J7hQj!WQ^@t7SyYrO8GimyRZPo*Q71deHLSl2&6V_~ z(KJkf_sg&J4`E-Px?WZoVih^#VqjR(yB_%rWm?@Is;kH|yVg3U!*O|L(EPj_AUCws zelG#ojk!jXL)`rv6117j|EK)Y>wT$l`#n^$N02ykB}kudaszwmgNDTM%@|)LFcfE%auVajNn{gvo20JcKFTFNSTp-J+?R j_ZH`G%f>fFRm7UoW3Kj~2OrD}CZeSupy-=)nh^g2HyH@9 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_hashlib.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_hashlib.pyd new file mode 100644 index 0000000000000000000000000000000000000000..0c1793a03fc4a73722e9f13a18836bb7af1d7ee7 GIT binary patch literal 69344 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 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_lzma.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_lzma.pyd new file mode 100644 index 0000000000000000000000000000000000000000..4605c313a11ee536d681170a4543d55e9f47822f GIT binary patch literal 159456 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

GiS_BGdst&gZv=@jFMjsf# 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 JC+;BA{sS7La^?U4 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_multiprocessing.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_multiprocessing.pyd new file mode 100644 index 0000000000000000000000000000000000000000..5461b484b002e12253d58db0a5485b3e038f1104 GIT binary patch literal 38112 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�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 XGIusk(L2Pu|Ji4az18{8U+f0}NxV{p literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_overlapped.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_overlapped.pyd new file mode 100644 index 0000000000000000000000000000000000000000..1e99926315716e4400e9da4257992a66b3c55c3f GIT binary patch literal 57568 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 S3fF?oSv{Ta&$a^9bN>t7;Ykhv literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_queue.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_queue.pyd new file mode 100644 index 0000000000000000000000000000000000000000..d5eb2eae2502249e798c4c040d73246942df799a GIT binary patch literal 35552 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

$5gYSX+zBOYY6`txI9U=WA0HX%W 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 a_N>|C-?Mqou08kdIlSk{9!c8Y@BaanS~4&I literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_socket.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_socket.pyd new file mode 100644 index 0000000000000000000000000000000000000000..8ec82f74e5b8c4ce864314bf2e9c89c2c875307b GIT binary patch literal 86752 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 D^0ub~ literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_sqlite3.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_sqlite3.pyd new file mode 100644 index 0000000000000000000000000000000000000000..39a29d16c7bbfee30e8ec145839c70bf6f3c1949 GIT binary patch literal 131296 zcmd?Sd7Mst7t{4zdG!j>oZXE?>u)Brv z(rSz`8jZ^nHO6RS)F^Io5M&V$;tFCEHHqCc8q@?qqxbv%oVq;=n&%e7TaczXSRtwF>vXgv&#}o z_dI3dPbODSy6lqkE<5X@>Ir9EeDNj8>a)+SzASZd^-nIYZaMMf>WeNp=iGxTDz>bN zP>AL^nKAcadq3$X6DF$8|JK5h!(y>>uG>8J z+*yOpFXdSm`+oIS{kAzE_AV)(xYR?R=eN?HJ79-wk>Kj$cb0IjE{okWPzhzRE|1@r%VMh!=XYIMYy}R4?2L6@C#R`RS^Y{%aL z0B7uB{(r##UjLd9tAkv&SktZm?tzdhesAbakjY-xL6clYYa?xq?MS`{zLl@(pvxv- zHbJPwlhwetgKWI z&h*2*Z?^JNfQQND!|E0dtLu73eD;H7p?BurV=7|n zgT?vyK}w3xd_ZM_$(8jLYhGoMk=)u(|D>ucH6Z_^AE@+*c7W{>FrGcpCx$JOS^v1$Y+Ppn&ejL^* z+b#zxsr_I-7%+DE%-cR6dB3S3sU6+L3E)bCj zhE}$U+uOtNy!WIEpHP_ymbL}+7qryWs@<)@TdKO6@-&M62v&sN@81Les(ALOr<62c zhINp{Ex52|l)7jYD*nl*o;#0r!H|U^KltxvDkzaNJzu zw`v95m*|oFghAHKgA)@*sD?x^9F}}9UkzHsvx?WUp#TOvP8Ums43?x?FMitHj)@53 zq$# zyjM&_2Zr8Dyca)U%>GxJ>sFmu8V)w3H-xE|3YUPz$+_`eBXnba?Y_qL20u8lD)cs|-TM!( z&aS%hfM7*-Rq}wugyArKnLpvR{Ba1g#^^R><4Ee$0gWrJdA0aT-K%wrLNC3F7QSco zL~6lx^4s%UY6izp3ZYkzP{6S&$#IOwIwuWgFO7}Jd9-v1%+H&Z>u2hheK)kIn?GmCDdY* z*yq60$H2U)Tl(pP%Ho+8#&tGq-``JPP*s*ZNSf=25>3GZ^+l8Vz(iu)+!vStLh08p zwtydt^>isiq_|Lh->o;%H_=2|XbaZWEn)YL(gBSHn#Oh>WRl1%NEhjssAXxA-*-8 z>_|e1Gj#;@P{^L2z-TxHw8v>G;sQNBF|wRW@9wRmukNj4aU}&jczXdtjZ_ zi#lHsdiN;LSJlx@zPK9)D|(e>c&CrZLcw z-mpbHb2W9eLQBs36yXoOy;K|JkEJ|wQ0N_E)UPNUXC1mM{}76*nC+3Ps1KXaG_Apg z;Io88JWG{{;Fg-1;z7>a2Wy1!ma0{_aA=UW?^!EIwYIUL4K-CbNusS`r)$8SMf1!U(t2E<}7XjrwTFGgIC z5UXaIV2!Dn=)`pr{Az+xPDp`~X0HQ&2F z(Z70TV#jJfe9`ZZzVREWWokieiW{342(ancH&uFmF@wJ7h{j{28D2yw`hhpVI(?xZ zY!`Z;!f#~PM~l)9)06M2k0vZcklU;M#+6rBcWYtOOQCm>%EQm)#a;dWE3aI|RPdP4 zWubIyBzbwtTv-XX*(bw*abn_9{F zE{Mr_9)krk=y2$Mk#-c9hu-ySk3=T)4klai0rLOe<^KqsRlKj4o^$r0n+TFMBi&H( z1DIWa)`WB#6C1_J&DU=oYYn@G z%-nj*ME|yFiN^U;^MydbvOVJ25l-*1?s+X1D;%x2?)j^yU+Y%223=;#6S&6q+PmWu00@)B@3wF(Ql#mEHxJYYFVntQhZf5UUOx-{lZvk3zoTC zIqW?BmbzvCo!oo5F@3GHe0oCqUHi6WwY73S_ceM7%?2KM-1$QFY z`+kI^H8&~zEM9q7^B0Vk++k}Z6X~U)-+x_8@U<2znNKBPIW(kt9^r0k4PK=W>;2q- zG1r#GSW*qvRDqJv>dGE91VZl<$)FRSD_euMazt(lw1wWE{vrSa_FwkER6epje<6zu z4J=$r0Jl(0qcoZChSDszwd-ot(lD+vd37Q%dLJASuMhj zE?O@C$A-q2l5J{YJUdV@xdb8}9x+Wkyp(Ll!$)~Ym0{M5n%56D0~c@6d9N@}A#h`x&3yb5C5l_qj`z@x`SoAH zF&RVgi~ur1ci7Z0*arm7DDWOLn(5FvtK>6a@V1D~oOi19Eeh*ikQRR{zLeI|o2)^{ zw+5fqtx6!jH_=YGhU2Z=DgpTNfjCrh}m;?K8a zgZX}Nb5O8Gn_!-}vn#>~hI@Zo6i{SoNXvj($b2f&>vv;(-&zewvJWa1H!eHrtFdFhS*g6nuE$xn}^=pFT25b zk~vkDJFrK;CrrKBX zS))Fl8Efy0^Qq|l1id%D8_%51L!$Ap6s<{aYy93>{07Aif&^14o6}3eY}gVXhHZK) z*`%{N)b%;<7bxsRa2(z{R3nW3$VM7YjeO`es*%}`;~6}~=Yz|&Gbx+Q$_10nu z+ID1wg3pnjWE1evn{8;83gdy~!xKbZX~dq1O7@458HoR)^M3G4q;vb;7mMYFeCFpkCd#3p z^|1Md&6z3_{5|GDNLpy>kPh4eS{R87<-EfGZ2JYpPssRZATN}ZZ-7b$T z&z71=ZNXp64>_xbX3_uhN1E?@_5aA|9P+igCHopLww!vIheWV>Yv7lEG5tYG@DFq9 zYm&{J@;mP|8?IGmBRPo>hoYc?N zbdWLhhR~2`K6Jq2Fl^9exRgz1Y$0)=a0af3mRK|GJwYF1LDt_0Fj{YoWwAwGz?qmMK~rUTj*S!QX#LR1H`| zKUxy}cfXt1vpq}7Pgzp-wrBuw4g36%=+vx446W7 zb@*X6`i;v|XC@lEQlk=$3sWaQi~5V@&#e>^96DXeT};W8Q4vJ`RYdk+WPTci|Jo9z z3iH$drkOzH;+ebefd{|kPyPZ@i;u#|dA;`LKA;NF*Qm!r?{!#>;>``>Re6h}BvNHbwW$Rw0^wvTDbXQrjUuS=ur*fcJ_MZ8qWUut)om-9%gEScC z2SfU-cTOPL@$!}bio)HFk9u!B`fg+=d2VEQ zUXK!z4W~MOYWdlF&v_#XGM>9+1~!FWn>0i2@ebfJEVl7G50V*unryBnt(7}q74kpK zq;gEOt6`2QSuYG;&_a_bW#l8)?2ac=l&ixRMNP@C=pNpjCu~ajYT~M$Q%Lik*xX^k6x78ML{I zgI5E{dE=!*<1K#?)|)5_8-vJk8Mp5Bk?K%XqSqn>yoBFJV&v=1sG`P+hyfnY< z7NrKejg|wlVd{I$*w(Z*+Q_tkjI&;(T+X}7CWfW?Kd+@l3>i$AEx=e@)ZKS_*mU0P z-akiv*)eYkus&#SijsBfX;n**58lPTXAqS90`jn!U!bdd0L3%s->GJ6qD*D^s~I~)aHKkqWSeX75bt=WmqNa>bQ>WuLcpl;6;Vl+?`=DZjG%1^K~ z|KlQj{RIhUyvvj^N^hN#8{XJIE&XG?2TQf(QtMA(Z|Qx63^5A5Uw27@+)mpSBGc{8 zO|2PK7bbWfZ)?5m`fFNP<|X$3$`4r0U~~rvGp2LuM0-n_Xk!M9G4?T$;T0PWy5l<& zjaA_SKRvg+@tdhHwz6eK!^Ufanbv7Nsf8I$tR?th%-GR$)A@e!j28Ckd|B$~)?f+q zq#;L;+3^Xzvw2HIdTH@5jR)+Md*6g3nK!(cKy49Vd} z{YUViRC+6wmWPj#dLyzDlrd4pGy9X$Syreq0F`V84&q=aSg5eHglId#n6gFcw}oM% zOn$Y3IB@hSb^et3d%a!_q&(GCrQ&+hM_M>*Z^ucaA1Kztd(S3J*rT5HWbO^Z{!M zW}%;pq5xiCQb@pY2QX>B)zWzm?%_`jIIG4OhFO1Bn#|wf5N->utZYp$_`0qCmvV(o zD$VP1f+w&Ua|52b(9P@pjrv#Q1lOY(*r8WIvZ9fe{S|Ik=C7Hsq)HR!2p+2Yw2CE< zc9v|(6MCmo)=kFAh4DRFU{3f_bH~&Hu~_Qg3G*UncBKOfn^7e6rahyz?`m8_ca(yK zGG9|;@%C;h`j)nj2?LmKYYo}la>}z0WldVF4m%cl)8BaU%#*(m$`h;DRm#$( zJhx5?z12_a$qB|RQiCm=?aIyo;eM?4*$SqXp;axNQ>qi4Q)*ckQbZmtCYv=zrc-d& zJNziu<)OD|wv3jRhGR;R8D|1TT4tVOxy-7YBpuc62T#;=h#VPq7WCx@r&s1j?M@|K z#ka)NXsl0PYxx?zQ=S#gZ^sA89}sLzw#r=ggO_`4z#fx7&-iLP!tu<{RDnzi+*Y?D z!K`LjaNa~}yjDo2&lBo#Y)TCVD#wub3tE{!=I_!~>@vl(=nhZ}?PZoH&+v1uhw#6P zB-G7Oi6CR0);gV?+;Cd_#^2tmA#5vWo7kY>38_Kn11ZouHW!X1_iX-$g|qe78~K!} zugf(Mu#~Ee-6vaOihVrprAgM+EGfEiFP#n-5@ZG`g@T@PQ^)B384Rco?3v_cD&fJpi8tCm;RUW zR9%W;geMqkEAziX4`?J^Z#}d)zni@$uVFtawG~}f6o*Wl=D7&qtCMFLsG@*3)MdsiexQ}+E-fF z_AH6|V=*iLuS5k)qBLVt?>W6U9z6?jPNFZ&;eG}BHtLm2wftr;VTV<=mtc$3&|7a* zj+lgEVmE(L>S(6qqQBmeACqms_jA@~SyRg<-Z~pbZ9-F4+BSZH$h3 zT=ig-{z4DxNdRPZT`SaTN9rD;(mKQH@Q_ zVV9g|)$kOY#JLScQi!SSQlu7e^pX0{Jx(*2DaN%>hKG7P%_3Tsv5?UIqjs@u!E-`Y z{`T*wAVAaUy>f^p#P7K-a14ouUOzCxka%`2q@<^4Q|MtMYQ)GooQ=%s!54nRrIpi~ zkOKabpe6hcjD@C#hMxVLEs+n&>f00+!v+j`0#XPwl{ZhFc3#@0c`opSpaX1)&d2R1>Wu;A;!d=(G*n599+kEH~s=P+xI|2|c*GZ6b@! zz7jJxOz!0`Xs#j`?4N=-A*tAPq4xp|w~=!=>~*>leK8Ic-TyYx-?(^~S)Z;pRQLQr zrJQ{@M)YVKuuiBJ46ULqu^^tFBWGva?`#ap-E+Czt(`;5>3D zN8e%tNUXQ*vqyRO?^P?p1!OBh@Qe&9)52~sj5cp|nk=DL!QWy5wAz0y#XQulSBwc$ zl9}BrTY_(h5hPsut{X%cYvk78AmXcfnRT3mFusTV;yJbxVhxiIO)^Bsf!&5^j*<*JY6g(4VHdg~T-P9DX0 zA-@(L<3+&ZWc3rl`b03XvMu}ZHG8o?M2hC16M`BRJUAH?r$*L8TEqEmjsKqd9$X`X z5Ofap8-5Uog>U3N?*yrsckW1IM1?W`l>1n^O43aw3PT;aLJBw{mSc zah7n#tgys;gJvhzL&7j&9qnL3@ z+v4v*e;W->@?_#Bf&n_)$@(-wOY7T$h58-*G=j?{*P_W3Gl@8U%9$H`oy>xRF$<1W zZBU>2%4ix|)f~<{zVp!9R*Zy}#&bAkH|r$omP#7QVzB94MR5-G)9qNVEDJ|e22%X9LD6hTb;g7!)S&=+E;W{StF8D2UTpf!|-HI5O7-W2byjdi|y+EQq&u)$W zXhC@-5WW=0h|V=!2zRM#mROrzM^{CYhYoIO*f*Ygf9!Jd2!(YiLHHGnf3v{AGe1OQd_NMa0>FJrzhx z=LM&P-YV;t$w=wcnn~K`X-@?A)pQtZAFi3LUlE`<5qZGzBAx)}BrmANV}h;R?8}-L zLllRc_R-f}Lf+}~qz9YNBsvGPWIxpGmKL!8GI4$npgI4eusaQAwEfeG&I^1^vyWPk z&_jhcI>BIFG|wuEXYR7XvZA&#g7b1Tj0y%^xP+KBc_g12a4wHO=6Ou~$pNEzCe(c_ z#tSI~=q=*yy!z%cKi688`huX9+PYWcdo;yL{>|q2lbcn}+-zGvcT!oVE5+C;8SKuQ z?zY*{QcOoV$O<;}vf6Jks?302WH56?9}b)GKxJ0b*urQS(j07V?&o{ixNq*;SZu%Zu#x*rx(AX zTk=f@@YFzhOT(b}tP7OE=GC)=>i8MZ@+1@dUov>cj~boaH~!?1G86+`{?y<9FNOEv zO^Ge@2uc@Qo>Opo<6n~RbzBuzr&jvm%bY4@1NhA9W(QeGecF77D3ifCb)*>;FAksP3XOMUukvl zJSc2+fUaB#`wA~O^jdyQKUvF~fQ%LTX` z0O7x~E7r|d>N83mL@Ijw*F5e?hswU}jtbX8#EeSAGD zbic({;l(MS0XT3)e^dHnq90GXj*23)jUQGCT9Az{H{1N zm|)mvaJ|J@{`}0*szmG!R%o_}^xvP-s*hvSE#M;GuwZ^9Kl^S*Eo|lIl~r5$w~|$} z<}8}i9L{f{K{swgslt9V3a%Uj>GAA+K>c7`W#K~&+QtF3Y7k4?32(-;70?-a-`p!H zahCF4ln-L2)vI_EqbvFCs6RHI`G<}AiWxAwC3iv@{>6;!30XEer!M#NWKh9?&S%M5 zsG}g~BB`%?M2|4eF4u6FJwSBekP^Pa7Uac3XWxT2V+(Q%TjH}m1L8Dro~OcV*E%tl zig^jE4Hj|Iuj&v~G)aH3~p|$yE)Y_M33=U9! zX!S;WE<-fW9>^aJ+a}IzG2eTG=BUf|`gVECM25j#*igaz(6jN|SNWClJPeY))x)wl zI74qb6d(+RovmIbhz-A@Sy$7aJ?;kQFO2q%o6*%P)9uxKb{HLXuV#og zXdzd}#?i^a9UIR~{y)oGb$#y~nX$6XP)wSGDy$@+6Q__S7(Tv}<<}^w_#% z!CVp)lqDxwwT9%Mp`|!XTYn3MO*$aBOAnFUPXJl^IRjFoynk%spj{8qlPp<<6k*SR zhESuqiQJtvJkkK&yx`7-G{4<5;}PH%zIg4M%73i#f5j|_z8djMVfJ*q&eYaW z@zYTddh^wj>ZKRRY>}Xa`8+{S32+0iMZ9C?fPT-Av^5cG+lHKl-jif2F0d_*!j0to zc03eDT(yEu6}!)p=5qjeT|Hh*2rO9sOdf6T3hBs878KlT z$F#bypGeEo8oX5eXo)%ezuaotF3DrlUk;eolpM&II5oY-4%anH>D10mf4S{7r>EC! zmuw?FIYfVs=1)Ac?KOzhmz%{ikVG2hqD)gRQ${ zDrOduL|lZmV}&{%uWA<*9ap00=SZt88FPZjl6i;{+4b#PqeP7dYbncAp$&vlr6tkN zRgw0s;CFp9>+lk@`PKMRJZa>!ZqiPf9WYlMqI}OE{sN6X3}@q5u%xfn_E3lLrLV5! z@z?!%)QviC^n-;Ms%W=m5Ilz|h5IicMx#e7Q+3Q>=|7wcS2Hw5YurVq(-Xj1CvcyV zX*}+*pe@l3>Z&`*H({Y%wv)74xp5ga`QhA-qjtCWp%w9L6Dh2JK-i*OiClCTG}xeB zHi%;Q;K3w92z!fln=rZ)L3hzOQLi(t3S+3J`;NRn4C7Ds%b?<_Nsd3cd0og$M%@|z zb60x9!SNfO=DB(H=KQ6tE17Q1b+ZnMP;-~}hR!WPUyY#bkMxv%qy&8;g5F}#Ega@w zl%Tg7G+90Urdl!ym+0h^$JsYcHZE89aawG z{NDJV7p5@@DtlJ*9~Ty)>e7XQ>5cnbF~XlP$Ew(2tgB)(eyxg*tIGCE9T0!=_9j%<9_i>nem=Q>vHD$LLntskdvx|<(tEp(7VmXiRs zErgWnxTb8scvf~c45PC75}V9v!iSlE)PBjhxja6_$MH$wSQThEIJLH^{uquHTcw{C zZnobXGlv>>KaL3Y&8Vkvx3bqC9M7)T!;!Ig=2Ekkmlwn*YCbTYZQrEkcX&T)%Vd3b z_oY59EVNQ>a&uf^PHnk46cSZ9IzpUn;-R2MiLz`=Z#VO{V00`t5sCO@Of0tMM-Zr+ z9s7UlU!SD1{{3#+NVzO!_T&E;{{Me0=VGm-p6#9sGzl7$?ZAbtit766XOeRHjgwdS z!3`Q?(k5<`0LNd?CIRQqZjO}Tiar6)6G>LI?h%**BW&04cZx?M2b9Wj0FYDkF>dcsaYVSj$v)E%nX1tbw%RjC~xZ31#Y|5?N{)Oo0^ zY_fn&+t%{7+*-M) zRHAJT6!|IaFK!;cF4j-&3{yKAjqn9@1!sh@!Ax(Kp@brPge#DaX~VO9m2(Jij{u5yR76tCq9w$E-b8fTg}5gu2YDfStuixYbs#s;KD3rcnI;O=ZQ)?$ zY@R!Z9_n{aR`f1yyaPO)LysbkrHRNP_HHj2+0r>-6mnVyifD&;J5|t05 z{w{SQT>a_oV%h}U&=tRQk8D%nnf`T$$Ow)DZ+fPCL;%x9TyR`9k0Oo?$Y%N;d)%BS zn{|WZ>Ung+avYn}Y0*yBS{}RHBP6F6y2rshF6WW`*;x|Q_6yl_Q6F)+XL6sqE(P`C zapKM@R@K$4s?ng62Xos3itt0zWMjB-!An9t##;WlmGXNw$8Vq4jG-D9yZpcjFp`&F z_NfN4lgZHA2^qIdsNx;EJq7Pw=LCe{rY=#VnCSetRW5>O?SC-YUbl6hCQ(*MbfoVb<6=#~UuSeh1&&Rk1y zVcE-&6G)(^#;oTI)qHZLKBUGijANe91Yj-R*VWkH?-NnP%+Le}bgh2EQ;u$Dm2%{u!Ri4&{1MuRZty?_uKA$Rdk z(}^2RU&%g7tp%Ys4tS4Z$vx@n!(kPR&c*?4dWiEdOAnh{mCx!OCM5^s_ zRPtgr+_i4Zo!pQ0k$R3*V*|T3@f!z{$(D@!+mewG=6H4hX`#0iwrJ5fUO}0Y(5TUh zvE8==p^@eD8)0)R#tUJwR*dgltR(gz@~=1nW^dk-mez&&XO(2Dv*g4VFc8#tk29Ot z5o{)d1vAum7d5W5ocAl6Yw+2MoO`VcH&P~&;EBksyY3d#%9eP=r{^#ZCH3O3e z%E42cUehnRm!5V{uh~AiQ+iEBJhL|~PJhX{u6L}SIg%_q9mOu!k5%s6=13hj#{5M^ z>3)FJsNi$FKVt19y`Jc&!?G({+t5-ier~g4qztxe4Yt(uH3@$`%^`)khF3P6^EWeS z)IN>DJ8L?`U5;1_S>^p-07LtSeG!RdQoMF+@0{EIkWr);3nhl-_ddPVfKA?APOP@p$ zqoh%UiYsJH z><+q;Y%=mt{Ogl=o?pqI%gWNN?oxY)-igAm?l|>ACDYMkWHZV;XL?rGmdg9dczGuS zV~&knbczbvo+8*taB!*q}yY|!dUzl>K23VDEQzIi` zm3tQQ#}Ny;5OVsV_HZ}ttL0s;Vk&R!i-D1C*`OjP)H&~(63LGUz_ml%$6?&{-8E79 zs|PquqM1abk1sjTnVQ^bI%(2w|6qy6 zc-ZPU+eICvC+;mm)MN}Z=BvTXa~BN#_YG>f3%mNMc+5%i4V=qL8x5IihQAnNo3d;a zosc&tSHSpsP~_#j&3>(Z+TBJIHQNBNy6KxjoIE|M!=A)byDg*|G13s&?V@(PJzN(Tq6)=_D~u6LLXAusDiC%|FdpX9=eTN#}%9 zEZ5Iyf9N%7oGP%59!Xg9*aqR;FZHLtJ~x?4e|=60_HYQHv0@257SC$#HJQ*2;+o1h zYpj_-RCeFD-T4n$(c9$j-9qTMk!xVPMCU$Q$wiR^uT6xahJ6$n*Bvw0*kL?l2V--M zhKUJ+QX0lr5i>w$KR77SaBgLC5BA?6#9f*U)i*e*LvI)~w{mVmmy=RhZiLJbgv-?% zpLICTZfpJkp0Gov;g8!>iS$pkR7|zjdvcjH+kI@UIu*ZwT(*weD?V$0VPFd&tBtI} zu0|Et7UsMwZxluH@?8OKg(H;F9j&o*;08HUklmvCSQAC-b-Ql}iCmelp-a_&Uz=nq z&X$)Y_R^;_*OE{B&g(j-xUM8ljM|sxKOaD^Z8$gD_ayGJp&jNuX3!CSeuvGK&CPJz zX+hX?+~chC45VKE2W(7L`vlH2Q4oV`n_NxqpabGQN`21Bm)<G0@|3)*csqJ3o{=F?_>gf~7Z%x?lQ>Cp?grn8 z6D=sp&c=7iK8QxqKxns7Bn7IWlxnhJv=#R@QzgSl7h0BvP=#7*$DodK!)J!EhoZe! z2|71Rul_oxcBohH6~)qhrP(*?-P>(RsT|Wb&Cz>G-wrz5l)jDvr73;uO^ZY(1vP() ziBo(i(rd(@Nq5NasofFSw&elc{!Se*!N?1}%RBVY#w>-MW_&ZPM?4yXWRUd;d!}3@ z_O(g0^EeEG+Z=~r-Tp+)C@`^1>wLI|Gd-;MpQxFrU*i0kDsIrS9+^-g;xd zS#1}18%W}MMLXPt;j-ObT+y*029Tu_LU+Duzzksj-eSIgZ2K)1`OPO@zDVRM79!ph zoI}B=%#%iy#VjIkj|!P;8gdTWX(WGGxPJ(hcBv5;fl1MoTk@&ZcB8>Iq}X||A(io5 znO+Ff_k&$G6u!X2*}E05o1i)VeWiMO@$VjWoGzJwPk+0rhtCWT@+~)oaUnvh$U1l! zpY<=0+sTLQ8a=7p)|4w~`-S@tP3Vl(nT4BFb(pKlP+qAb4~Wjjiht9}lwazsae~Y; zWCu_HyAW_;in3bxT4I8T*(8+v`YSbI6|Qp#@1z%#M{zoz0elM!9PZZ;jw68LkPp47 z9a7I*Br)}O(|&Hm;+=ta_P4#D5;6OMsSx5(vT`l1Ts*sv$^6f$v~Vepk$UK3KXWPC zMb^QKZA!lq0-{y)J~Xi8Loth`RJ`Orl2T+EO5$xp(Qyxm;gJ?bfz&z$qEL{(Qord! zuz{#_Ggdb`qX&)BV}z~LH8ULFQDml@tK1~SdB(|{2kMD(JF;DkL&s?^ds$QILXMWcE3(@7EwKFz&{UeQ`FN#HK% zNuf7_o)dzxmf`ev8xn^{iLI9S3uB0;>)oUDAGq|HVwBQ1kJ8;0A-~YPVCkRGJwje) z`MqW8tz1Pp<+KdYrTyy^6L+ zMFUGaoyB=Yo2!!ZKCTdI3;lL}uR=qkLZ|f<%Dc*lpKyiBtYdKv^;T%HWpH}$zNpYsJ%zMxf*0(+ zyF!d5+H`BLLYG8^uI(vwK&j9KSE$MgX{IcZcVtwkt*6j0u8V3q$O^g3oeu0(X7i}b zPCaGnN)>&1xix99RkVSrtyIxp0EiENQ(CU#f3g}6_bIp9@rp}*j#R&M#yv*W$q z%OZ*_bHE1;czy|ZivtdEKuu=cqgDc5;efk2;A{g9E&+e!fKSj|>g+P$_9fua4)_NL zTxh`cYzi8+W`l9(qXRBC;K~xPze>vSH)92W{11=?>wjKI&i^!ee}{LbS@B+i z1Chn$nerbD=}&=k9lp>z)C#m?<1fxD9EgpT;d++&$1@*%0PAnG5tQ>PtUf`!*<- zt{8(I?-tddS=URiIy{?|@T|J58_&*$=SwAYwom#tl1*vp*gK--7d^yA01p zwvI5DxYx$v8Q%-f*L0k@5;yx_@i-nY-z(zJ6^3zx@Hqb5s)Wwj9sgIm9G(?>MtBbH z!Q=Ys1jEzb{%s~(n`A$@Z?6#D`=h5sIy*_PCXe94(A;6IBm{G#ct1812A5mQ&W4Rh z?%r%X$c0JZpC9aiHhML+s#FbgyP_{~3A%kf4v_couoT_s%`sllF_mD{Eo1SSJ8xkg zxPDZGEO*!__>49P_RZ!7)A$&RaWkq2sXb@xm)OH;sqkuLw(AP zH`uii>;?zx@9KNqbjOb)*kukz%SFp=20K22o#tQz9BkL?RNp}nOlM^AFmCQ(wN`Gs z2)4U}u>mTa=NK*PC%Lxwb1-!Puu;~&wqg575$s0}hTBf%96t|iV~u*x|)zhomz{l2+_ZR=o5ri-8NMzA%TS=+aBu$aMKj9{-g*!B+gI%6sH z9*AI%IoJ*kHp*bvN3dHRjLl@xGRt5WN3g3Lj8nFP&9?eZieNJM=-cl(Sc{cAJc12z zFqUvCS7orBBiKF;#;%EAYi(Wh4I5Bu`<4#IU>0n!)%QUJ`=r0sw@dH(=0~ts9cMkl=5*K-lp#mx^^ZVtS1cOte>XBeVs}Vv`MjSsJsR$3S#^se*jo-3 z4cnhvxj#g(XB{jWwz@YDKUxI4+rgq?n>CzQL@>EVdWP-5YgKM^1Ut{cqG5Zrl{+?q z>ChMDqG9{A)wfp!JJ`XZVf!b;xkUuq-oc__`?R&8sQn+>{zaMLjE3!*R&H4YTLr9n z_8K?`r@s%#IQqv3`n*Al4mz&{{aFOP+n{S5^!JczWm6G!xYR3~HXe(LvUg%7o`z>u;Z{d&@Sp)Ozhn z_Ba5>b7}o1pIiCNZA-_q!%oIsmK&l^uEewTyx6t%2lHUxBJ35TQJEa0IJ28*eCXW_ zc`}YLO1RU?b^)8~ceOwR7ac{YCpfs39Qo#y2d(XH6Su9nHS%LP}t;zbqT5 zHVR~`F8&Hq-(_2gFcy7TGX)nH=Z6_}EU|Hp=O0|cru}^9^HEv2vdQ;6>Eo4neOU5( ztGqItq8px9hSYX>?zmDM^%K7K#AoNW*(5xW6^J8v*@@N01~l)0pa zJG3|#@K2rMUaIZoVtc93UR4wqm$nplpNia}*$$WG(Vi?fxh#VTs*~v%&*n&2FtnEX z`5DRISmy=x^u^SkGP7KnCdxEfnNCZXQd!y%Tz+n}A$T)@=r&Hb@n@#_K?E=QEVhYj zB%?bdeG55tUyQrC<2Sr57%HE5tnOpQK;!C?lr%|76l{$}Oh?p{!EczZpLk}noWEC? ziSB9iVqvCp1wv|cF1zgi?g=^m&Rc4=h6 zT>|wu%;#=J;+cD$pi3UadA)vDf1m4Y#n+|zN1hTTT4uo>c+|bc>jzhq7gxAQf}5Zb zh4ELBnya{spU}&g5Y8{Y$gqfLDy?C@>+b&(zmpnn>OZmEq6ZX>xTn!VBeZJi(Id7~pItg3>a$1ffjGFEq;c~( z6W z{|1rE@~mj*4tw@ROFQ^qwi0&6_inb;LXvL`gx->~BOCYp%jGEPIHxH$`!#XxDFlXYrA9=&SGg&f@gJ8r;E`b+78S^5xX13G{%T z&sTJwfpR~+D(L6#1n%c|{*Xq_ag8z!QT!a))_oY!ex$KJ7;sgbmeesr5?{u7U2ZVe zO{c5jp?$69gVJ>WD-nh8$Ci5HvhXDBuORsZ;`myAG`XuT(X4k@*%n0@~5HtX^g zvKKOYD0g(#ZaAl<{;2ZqPt>GUg3}7x#q59#_8rG#n?@hJ9AMQDz{m$|W&&+#xY{oH zx_~@(?(Qs#lgI^MLX>E@nhU%Q(LXxv@y5QO@BXCen6d18axbC^iJ5Dq z&KGJkk>fpGj)veh9V$`%S2AD}$=4s8h%Ar2Z{r?qHLnw%Y@P7TWOmy|iNw$1hm71R ziUYfeR8_a5^!QlQ`E3&Sk?c-sk0|sGCr9B>Al(~E?*0`8xQ#@u2YCx?Tp4_0SFfK0 zzgvR!?xXCjylDE&H1W`y+l&urK+QxUt-?*=RU-FFDT zf0oFzsrC#GU^6Ou-yxhDZ8!VfSJOdF34}_H%)a;g-8@1F?0&!Oc=jEMNZ=-XWA$ogV56XrW^{EKHUf!*5X(uFRCTOqZLuuebcZ0R0xcmtoDq+yqezHyzULq^O8 z&{2x()LEB8t#z?k1#fV`hwt-2w&}VP^pNwWAs;R%@@UHTB^ZWDHV(Bcl8v3em8JKE zq7Tzz7sGo!B}x~HJ}_=mv=&c6OrJ$mJQx#r!0as}4d$*qL5b8WynTA(}i zH!R-rZ~WAhEvdj=)DmJ0$MgLex**YcNmZ~-bN{7?np1%889RR=Y7Yf?vI?UBhv~Z+ zC-O57p?Uy+QZMay`Y)yNWPtGpTUu)%r}lO`%c;H3#Npt;!%d)EGc}^zNW#FKWx8FO zZ`Jq7+50O5iuvIC8Y(Gev{X8a0Y`W-`fp;7z`te$rEQs?D?be^ptqhoEbMUsCcJ2Xx! zR#Ud%8RW)C)$p7*03hFg5#T?R>sFU$dvd1c!kTIe3T7RK_!1JN9dbJ4g35+L(Z>1J zHp1M-`2|%ZZ*8&8d@1tLQL34nMI`9IHBM_aV_WPO4DOxtI+wFaK%&YnXaX3;_{Du8 zQB>mk6h1uyisglOH|AFB6Zgkc);=%dH(Xqq+{fZziN`nDimqY%1MM??_Tw}3py?g0*qn}ObQ`JFx(iL0)w?xAGf((sfff`4xT$T<%G3`y1oyl(WQ9KI zLsRe}zZJfz>7yOdr_N1M&vvQC)SkQvms-^q!{IJf%1fY}Wy0E0yh?Beiv?R3eaii* zk`B97^dLzQbA^+aNQ(YwlOZnLYNS9?M8wo_l@Q2FTE>Fx@a1+a8H|!&UGy+|n2;*O zrDt&QB=W|Vz5^G@Z0%{vimxQtkYeGumGbnuy_h5?K)upxY|HYgQ!y7IY??`*#M>%l zUj{&tHNigm<&;j(za|Z9FkVXg?LKn0R41x84dxm*@$u>rxAI6>Gk7%GAC% zTWuH64RLbD)wo=^e;d@KTaJ7jgI|`VgE6xN?mo1iWsS$_eG8F0QqF7S~qVn zE-anJm{a%*38A+YxC^H-q!SIPNPW~2|72aP0JjaHH_5aH{M{Ees^e>++lEFKVtj~+ z&uRyQ(-ar;#P>RI9Tv1oBS*F6*sVLq_Lk#j<o z@_2_z=smRe89kjBeeO)1H(33qgCRBQH<)hzCEZ0z=b@-ih9VTTcvpOuYMCXS+%qB~`5NtU`(a4tKw+?{eHDJD1FDU7V42u@cDU(is5 zhN<(=X4RMOFkbUMhWBr8#78r3H=_3pk-WH&`FJ$>Bp)g+h}s>sx8(2BxT-E4I@O1P zHgX0unE4=;#-Dk=Dt_(#?rB$Ut`{M}aGlZ&k&}34jU`O1loI^-ngg2kF>#k8Slk-y zfS>rJs(hX_MHQs><(z73dOl8kcao5A)A^)rJclLA>17_Phe$WtiLpH0^`1kBj$1{9{O|j%BEhH+e2T zgdfe-70+H}Vnvu;|5262rI2|5WZLk7)-K66_g#?0A#O8EvlK+abX7tmOXfj!zB6;5 zYJQ;{UHcQdru=F6QJFOcCr{IrmC^I@>xWi1C0o`H=kGCOtmNbCm8nBXtxk^Mt97+N zs`*S@dO@w2@&m4+9w>75|0@3E)_cUC+ z?Ef8>KvT&Q_~;li*~IL$_=4jkC=B|TRk76OnikW-%r(!NgHU7sdffwNE;MI;@8mCN zGP6Sm3%k|#P#ic6i!^tFsXhPKc;?&eHl9UFYakONIBfhP5o+S!5HOQ7~1&{hWO zw!l5V^VtrV-IHPcQQ~B`HLeV@%zHAt?=qAub7jzTPlhEf!)+vr0AXk*$y|etmWm)L5qz)zf^5~f%6|8X2Y>;+7 ztLKJ>c$1?+rQICy`)@H^h4u~Q0jyOOyJRr{-i(9Gx} zr!l^<#?PNt_`;G z>7H*(=ZrDVkA49!p?0<8jpewpPL($XpX2{ZF?L?%1GmomnmQL{fy*S17miwO1D@hI zTkN8a!L3}-Ap@(`9FBcXk-veNCvRiL1~yFLYTpy&A5p*aG^TDT{uXCx@mA4^UC0VT z%7|J9e6XHM-M&PVj3Kt@|9Oksl7B+<mio|}KAcX_rB~gT2p&RaJ5JK;e%VHH z*{MRkVi3Rn@KP9Ja7-edn38bs+B~wL%8lGY#?;(qU|9d`(te z`{NGIUd%p47k4{zU#3y1CMVC3Uo&^=3OhG>?($YUHVLCT{La)0YFgIk2T+pLou_g?i&d z4M!V{4*|C{?A7Ngv462_587Bd@6Q+xhEZi(UhI5*8<3^vP3*bbYV?^np-$CESC{KZ zS>d)s zhFD~@4=aD$BAVJXiQ;!AgCE>_4~SLRTCp6=Sf(xAnQUDZ-1=a5CM>PrxlDURnNmL> z!Xq^WBAOV1>(AEEYhvg*n}c!ND{RGX%Fq>LTp>G#JchzuLEf#A{{MMkvMrr}ZT9cwcZ6fs{pQk& zc9JnUHI3N)Uft)Z8oifkg-PGrsI=52#J`ZRplM>6;Xt@Pg$@=ACIr}~Y$QuCL+^d# zh>gYzSw4)nOUjmW-kWs#o;&$y+Wuw9mUI{Z0+}i~fXyFWA+s!hP>GlFHM_8hCW+NZ+3*_v`t<9WY8q0p zNMD`p=CSK9LL_uM@Td9lH`w(%XCth*>aRjbI8+g)zMoyyesSa5)6VZ4TMd^UGq&2g zPQ7Qnmi}j1@?e|}skl_hwEbUfTrq9`{%;q#Bg{K#ytrDii!m4Z9Kr)Edd}rMuDWr> zH9G;{i{&!8HzPOE5yVk3i53_1A6v~11M7+eTk}k{wE@8xt>dFT`_|5p<7GPaay0H` zbGbg~SWyt6Id40wpNbdpuCp5NanE%V$lut64;FD@wi?81`4i+CObi^hP=@pg31-2wd!{h%N8}7~<^l_e*zvi>gXiF5#=J%S3 znV1m=l=e)SVSE>fY|-5G13GwQLUB=yh9d34kii#y^a@FrzLA{TL%I=rUyk81Ml$;u zIv%gy=Kh1uE%e<@dIGh;{a=fc+?=u84_E8vr^q(rR-QIYpx{;8KHL{15`4`)*`0+^ zJJ;JPm791r34v%99Qr5nohwMvRvMyvNcR;eW$p@;iScYBIoW47iL7}4SW|rekG*$+ zkFvP_hbKTn5)u+F(STG}1qli<0wN-4mSkZgxtWBEmv*yB77|Q$mM_uVS15(G|W`WBK35+x?y@K2$v+Tp?yKRU7iBAe?b@5Uw67Yd-aEZ z@95;VxC|qzSb=^oM`J%bMJc)h_GaV><68dKrx#yYpf2ML$R)A&`v^NPihD9Q-o;p{ z3RP_BHEFSEfky|Ie^>ytnmLoM!FfIg-igN<)Sd5Vf`>Z zI{xd(0aI3{<$IAXm1jNOR z^_%qVPVdlX`rg=?^5pbAPj>s^PJa67p=N3;=Jy+hD>=gA!u~LEX;UlOfchh zt%hZmHiE*AhT}i5;lciocr?m6au$-rrxDnU_phr_mE6^WarUc@APVtBn{dhfN@%~{ zu6bX4;2y-EZz@E(G6%xNMu|C4ybb6^ zE~xyu=58mRzq}gz;U+zQxs_=>8#_tdopAFaJ_lD=i~RUOPn>p!N+C5Gf1?&92ImjbWB&fz)dVVKikUxLuDWT8(mknQ|D zpCblZ^U>Hl-(snDlT-)w``PQSDoTmw;XghExc+GjnDw_kf6SJT)B;M0yg)ql2>G$Y znw4@p<#r=o%EuTq45dNC#!;N*7h-o_$BELRp4g*kO6aC;XX2b+u`MR@xC-bqUP3F) zg2AjW?<7V&M7o?)HagtJH{(H#@;uLr?^I(V$MMdfT^HVmX*`GpoYkqgpz{d$oc&dr zr{MnVivdX17lZQpXZjL^6M1-Vqm_rDx<4OETOtyuMkdX;GSNRjj#Q+7E-J!G0_z9T zQ!BBvc93x;+a~EYiz~Uh_e6)Yow_3xMJ{-9bNZ1Fb$ZNaj5KHbF18an1dnjChiuPR zvdCor647-JgOgC)!z8p2dY226%Pv`^MW#2>l?x)5vUw?x_>^MdHStKW(7Wbfg=x zqE>-+LaP1%)5n(*jze&m`j8N0V& z#&qytXBmBQVHKhB1Bt#Ch-~X64?RNAVe}tqp(Mq*2BB}#?Mx?uL2t`(*~bPndL(pS z_Q!w0fqx=j$ES1STZVFeP|p}Ao-20>rbLgUFGtwE0v=nHhJiq8 zY#~6-gL}C4Y48Fm;QO^`SJO><*_n^dHql2qmR{)AxfxH#-U1Qojt?Mbv9?sDwj9Ry z|B8zrN?AYetQ17YS|Wn>r=AQ4oQl7#gwCxh_UjC|-W!I0;}8#R<{oN`VR2C$f#}$PmZ}OEjhsv#s?^EZ95@B1jqk zyQ$ucEEW}S`M5LnPQ>51=Nqz?Q4IFs-lV<*n^U(UAXbZFGG|=t=Z&XKcg%{dK*?f5 zsQm9DyZdq76v*R2NqWK687~!Yc_EgG)N&p?%y(>eK6&IvIuA1`56FZ*r{XH#T%5nT z8ukiry7V8#m@ksC;_o;Nn{#enI`Z(1;aK+h3+Q*v@1w2Y#SqLLB)Di2sa?xbj$n2b zqo#cr1uLR^czPHqt+gyX!mp9$Y z^^r7Kx{!O_%dbHt;2;d$Wk_|En4e?8l;?YB7#*pxTOpR^7_&n2LMR;5y7;YntCgj* zX-x7xnf*L|Uybv+__T#v~)%Q{5@h43YlE2u?M$aN}$Bm!@ zK`-_;4KvoKPmJNFJ$k{HFqjU7eFu@i?2}=8A2tc(kS}lgkyIS8ijJMJr`MbFi|m~s z*zwotTG#JPK~Ik~DK35VnuIcT5A@KHak2B@hPrIk-ovKvIWjyJfMaJ0CrELi^ru18 zp!9Fj^bD;_frrmpxBD7{z+S+lhhhe(WEIS&gJ@8Fr*rOY3!<FVm2y%jqiy9E^s7&I41X%M1+i0NYoPUFjR=r3kB!lJdpI({ zp`~~|@{UzNtv}YyD?&`w`D(|C^&h9KUK#r@^Z?*~0SuVfSdu*+p|O9lAEXERf!yzE zoI-GQ#`2s{YIZH<=|JBJihYiMT<_=x z_wK5=1YbfpH}z-pFo0O&ZOrb$3p&~F6Bzo;wdYoQATz#QBcL>vpX<)=s4G9?iJXTn z8jEkqv{nDdZ3&D)i=uDmM?#|g(yEW<}+^E)rhDnD;;I1|R5p?k~E+Y^QYe4^mU zA92(Q9T7>!*!5RVR9~mJOvqsx;1Cwe{3kV!w!9jn3z2w;Jz~S}I);0{mG>U0FCPCH zKE6##XUnV6VH;lR$coX~dvuzA1~3ICnZg-L@Zib)sedJGJaQ-ZVsF>I6N_n&+_gvd zfH9q~iiUn~Dp$v_&S#&S@-S*w#rB}JA@9%+?p=pKK6W1dkrUtL1hTjD`!S$-yKXv6 z{`ep!UD|UMg`iq5@OEnduC5*m?ymvS#=Bw^L^_bQ5MKDhgcmUNjR!b6lI+d=JvYh= zd%F4d6x~hmmC3RHgA98+bqw^<^+>Hc591-gI_eqlJuaxr&cjf(=wU#R%m-aic6h+5?CLRK_u(6tWMtY9=R6Q2&`pOI6rRehx035+s ze<+n7YHvH4U)Dc~Ei``&$93yOJ&KLn#Ql+uOZS@F<6bsM+$SK!ly)xL3rJt^0$}cp zJu{xpx&7L|2cv=3Yu{@L2Fgaf*coG`d+k3K27(evJ7C2@3a30V=Ly>0 zlp2Qj`s~&CUkt?G?N1Hhm2!(HOYq8P3@h-Gv-_>%BU#>@-Mv^7OFa)h?ws9!8WX`1 zhM{+XyYpE$hJkzIxs&?TFtz@Tw9TpSz7Ja0K0O7T^M3fE_tb2KsNT)lA0Jj~Zptcr zZ~l$P;d}>9BA6F}2^9p9P|ui12Ef_RBM2uQaeA623AC$|CkgBK<@#v;#?pqD8GFu6 z-3L^3kx%wb`cnZ!Ytlac|2+TCM;7`fy~gja^Z!5a{~rFY@!#b4xA6bqL73$F{rDRL z=#MKp@qxk4XK^1lLKVwzsY4-=@v~y)^DPb#M951LZT2*3*~9 zqxf`2-=q&FQ~vrtiTP?@PybN+e70{=7&HCi#nk8HVEq<+pnLs3*H`05@v%-Ud|TeG z*lX~ifv5}G#|qHMi#{^QsF8Q@O~g*92Pjn%Xxxh#L-xx%J?))~o3W%=AKUt&rbOd4 zP~sRfp1yWA1b0u)je9%yl78#VKADsv8F99wlr-&mZ~?eLL;n>B>5l&xPWR(rLtngV zVP7AF(nWU;=T| z2gpkNI3hq>yRdMvao63DyN-$aQiX?$L9i?PyR<2;E6=x?dY+3BwLAVOB4SSfZhhSg z@z)y-ayI;!d@-KEv8U466VvF}lV^3#h9}6oGy84A?8-Y_MiEdE!1VKkWAj7NY2-K&yKQ*~ z`o;`;qcyMZG1ezIk$w>JgPjt%RJUSv#Tk2J#6s-oz#-F|t@m66$`{q(vtwi@%-&r= zxjlq+TFK3Q2#QDX5BoRKo;f$S7(dOnZ<1{d=YUa`_=d$?_9KLfduqHy4P_qzYTfa6 z?2Lvv&INt>5^_!7wd%;^k4(j9(x&OWsfb2jxY~Ci^iM%=&X%vhJ7?qZ9JrKd5;La2 z86S#&7$@be-9$+|7h8-xb;mEp9(#TFY8AZ^8@kaGb;pb01Xp6GuOhU0aN&MPL+}$g z<8Ls=bFp;BSb0F z%Q{~&!zT#(Pu@mf21^8WK*$hY?dMZ}4Z5<8<<$7m%cNHF4#I4NGyLPo1lg7S3b=!F z6F{ZSuwSL@WnW1VyYenyNb$k&Tj1`F*CP=3V^SDN)<`%JO7lR~SDeSm*ejlQu z0)I|%b=ym02IbKny(8ERpB;t_A}5U=DlFt+8_VRkRuEt5-k4W_i15e;;1>daj?Q^4 z+>GDA_)9JPyEHzBcV$oT5+@fh&J5tt4)upIQb*inF5GKRf(C0W)x@jZT7KIsh0f$c z-w0xxjCKlfL%mT(^hPu+R+V_mJKJ;d8MSM$ zqJ(?$JH42{&W-biq#PuOxeAO0=(Lc~nTUz0M=n+RxB2@Fo8r7fzVA0>=l%8S$I)kb zaTAP}7Am)9a%Qljcca2vU*0_@5%=ClAqPJ@{Wd~5@*jw2d`Ixhc*8j)j(h;`;7~m~ z?!f`0M-kQ+Z=fUBdC$NXlJ{aeaNK&cPFMD%b0MR8&_*k~&qJ0-VVo33v~zLqv;D~P z!yurKJbw=&WsW@m5>cQRfXh8{SKcMhlZ4#}WY)RAr5EfgAt~&n@6kNL5q2R$UtUnB zx3LN?smq~^nB9bER$W#B?c8&6wyvjC=&;YmwVWR6FM1*+zY=pn_OVx3Y8ST5`(R?0W2*>W;sSZG)O8XF>NdZaw3kVw@MT^L{w{@_xhb z_aIJLX9Y%Wd8O;AKva(I_zm!Oum5_hqH*LIr~vf$@WMJc$7-@tT1juzdOnyyNSCq` z2b$hy=VFfYJAU7Xchtc1?6}}+iUvjTxQ+%Vjyc88xQe*71|R3ZeF8Xd0J=W_0tMwF z2>m~!55qh8eTEjryXYR~c8X7Qm18Z^e#D_3_~qx#+l&%)9Pg%$ud|u0HIn-lN>Ce7zKyiFRmVU62IG1(uD(|ens*-8ZppQj zvArb3q)|Uz2jaiNKlF}nS9~8rQI64Es9V2DbRfV(+4w=&w{<2pg*TO2u-P!;M(A#YBnPTlO=AypVEF z1Gwwxr7Q2DS>*N>$7f#G*Y{Wo2*xuvQ&B!ZPPi!R;Edn7h5Y_x{94KHBKCXU_$?#9 zTL-wV4A^*n1Kz?& z2&g_WvQ)k>8>PL1beU-@p|DPaRyh zmcDa6o?@@xJ7mkK4cJ(cODS)Fm%n1*`<{4jy{%b?;^$73V8$SYw z`1o4&Yve=m@pUMZEj-^x|iddknQgHS8t$tT9r@lH*%>VYAe|J2LxgNT+Y^v8TpTe{BMsB?AR;#X~lOxr%DwjGFC zrdJ`iMy9uMgSq~Dln7Hjm#Ib!)%)qCEAP)RI3Bq>@l}>fu{snVhZLX{z<1g?u?{82 z$7#yDuJXn&0X>u-i+kPilbJROu!5b>q5x>Om$2goi^4@jB|mm4E00CqSojA_o6iy9 z94~*N$5J+5LF9AK&)ND2MW25bnM;47m#(}c=V&hV z<-Lez1KAvTv&DgPIK~ww#!emM4PMGbt3Cmk@dt0=FIBVv@P{dW3bCcZ^@bJSN9gb2 zjYQ7Bnv!nkcKPgWME|#_FOcKtKrJ*)TA0qFX(z|%;%X<)r-SIcb zS0Cd?o@UtdbQ4qJLu@%4o+iA_5zf=27NuV@rB>$F_zANurSCRPcfxQ5-2|E#j^&l}m1+SR1!-P*Z z53=H8Zp!f!J8os7R2PP@vPgj{Ns zGZbsDM&+D@#Jl6`flH&%tC$$|I9D(+D9ZDh7-f%#ac8pgLO2sMgAvmbGXpfL2arGF z{wCu7MEnygz%Zb(72pOzc$5&X$3I-~NY_w$&%KU7&c?&2r1&%Vr;QZ9#2OR!0ZOcb zUm)-W6PWki4z`wDwH8bXB1q4CU#DfMuI#5t|90hl6FAsE1p?jiYkx`UWuF5FLJDR9 z(A0S;2R0$lKJ@teXv4D?AX|oKN4NnMFd-g#Y}-rp4+5Fh+6eFnwC5syg39$!3<$cT8h``lR$t3nX|G(kG<0px(kq*?SvW71j#b;tij z<)T^W->$xeW}$Q+1*x|GB7bfi&*BaDXfpQWmhThno5Q{j;$3VOHDsFZ%I-UddGb+& zO8Oo*n7=+q>1O{74sh!SGl^TMiRU=*MFhGbzGdd~qsu{9i*G69$W%o=Bi{&QTunry zz~Or+0XLAjD%R0USKcppm6E2EA&$_92>9MxE|qsF-od{m?D)$=lqYln3)%VI-5fTD z9e?~ag`rzJgPlVkL703*5W2X~ez!#iFklqd{X_Mmh_^YIPPa*v(mOM84&Ly+t{loj zA^Gah5hhc590(SrF*ZuWElU4FM)2KAru28b4??NKPU%&`lRP~~@0_P6nNm4ZdWb1O zD(111kWgAGk?pRaryrx_aI1p86#@Hl*@I7H<8x(j#BXGuq`~h( zY771y+?*cwKh9~RR(>&(*p;~#ZhWVO9i>lD>9_NHEx&K&_Xd7n$M0A0dz9bT@q07B ze}~^Mzpv!?J^cO~yz3gu-bWbsux|?9weL{&y^(!Cv~bhe z_Zs&7jC`q$huC>3g22J|NK9!ucm7ipY;N#6HB4>D!!3CtLU@F90->-GZxkb=Hn1#- zf(OHG!@ymWVwRhsTQhI5ry9D_KPBR~$ec z(8C;n96!nd_rQrBXDCTbS9YL@1m_h`m;3X+yi$~c`kPDkLuMx7-$Bl>=YYxZdGtn& zI?SY|!pT;FA8{)+XX{||LqPmt{Nwn~gOV=rK6<10({&!%nf)#ttgt5Hh0@=Mm^eSl zIM)M*sr&ULdDM_JP-f0CH@Xrd!aAO7-YZGK!Q*T z)b9B4z+om#_ihi@Z6Ek_oTwcoaz9&RWcc7UjpP+DUG&U@x3e@5);c zqHL7S?#r9N*h}o#Co}fc=ZHtFS#QEC+FJ(E-HdmZjl$=RgiWM3lCVRJkw?z14HHQ} zn!&TT(;Pg1|2fR3jD;Gb?!TxT!60KZ4@&#LW4AMKBR z3FCB$_Vq(RxdQ)?s=L{-FCGjt`|)vJfQR98!D}1?%ceDq7h)JbArFV;+)WX!)?=qc zV($>PV1Ek9-}n+Ah$_$VWKTeR6#DvBDi+QuWq0BY{bf3nh5hQ;*yhC;SMP~prt@qp zTfbwM_o7@fpnsJ!9X&b0pvyV_b4Z02iD`c?X95eT@l4G4k79cQ=SP3DS)Z?7f3%)X z?_tvf_PNJ9KgAI~I^oxndt?+J;_EyD=5?fEQKAE%D|bxB{yV9;J}=Gn&1X?A-CV~Z zFXmIDcY;Cv?hEa3>G5{!$;^vU46@%TBt~Q*@{uro9f6EYu)m`avRATrbnporP+3w}z_j|GT7)lj#@#~cwW3wkBM??!uQXRStBK~vxl~;b*4TB@jLQ1 z?>m$8Cvtzs?-7uEX9vEcK!$W487xkvaJt(0$&sOfxxkX{{w+@1uhd97Pv{^E`g@F%eU)vvgq6dp6kS2DbV2EC+%*9iQsz`F(R68Mb3w*-DBFn6n_zw$Z_%f)?( zz@Wfy3fv}ehrmY!z9R5`sZZ6V>5Ub5n!q^%FA>-*aE-w01l}U>K7o%3d_`bP;0FRn z(~aUXDDVz}-2zt$TrRLq;4FdT z1uB6@H)#4#Nd0yT+#&F4flUIv0*eG5C-8I0?@@uT2z*T7JpykO*eh~%jksTzd^{!a z0f9RNo-X*C#LY~`zmYfU{7)2EDzIK)RNw}IcM04r@Q}c_1b!lL^i7)XX#z_H)(c!E zaI3((1@0F3yuh~vekL&YyPEDtH)uFt+{*+u3tT7gMuGPV+#~Q6fky>qeNXrxaE`zW z1vU%3M&LGqcME(>;A;Yp3LGMOKVRTffd!K8Gg6KR1>Poblfab%s|B7fuu$M}0zcZO z^ZzG-2L(PT@GgN{1V#lm39J-2SKvf}qXm9;y`~=%cu3$bfjb0l6&Mv*FVHJ+w!l*a zjuiNjwCmReJ|^%Eftv)rCFM2ptA3-_an1zpJfPi&lAyugD*nd(KZVu)NTemW!gYCI z?dnjt$>k5P=x7TBqpr#A;n0e3AQJI4`-4rbf$(HkH01I{u4rwE24)nNgo439W3(j{ zEQ|!AzGUQrDXx}?t0~YP4mA3sfu=%NwLk1{3q%9qfhezTX>D~i1R6ta0atq{(n56o ztLZ}3L~gg2>1)l`+2&v%zB zGW>|5K!K>M(H{(kqDaCOZ4S61$cd}bDgmNKqW)lG0Fg{V5{zi;h;T$dh_tr)8(IlX z&2J4gxSB$NNN{r073pYi4}}3+TN(o>b!&hMz*!g&4;*ZBqG@_9!6p!hxJ;5QI4!dx z5T+?!gTL|ej&{ucB7yLQ) zheI%Je))LBCrJS5de*d~`a!4mqHgj)$qDN;Uv<5Zq^}6Fa3jgpVPwt~X}OZCQ>ZI7czf`7 zfURNRhkYanR3XP~5()fcHiiV6jqLxRJq#)rtNg7U38`?_F63%$G+>iANDZp2plGUV z`q{IlfGaG&kjuatQ%Q`WT3TQWz%#g9K}7wnVAsF``ESH?WVt1RCpq2a&<51vESZOZ zw(BO?=5OJKSW;C{QC6pv)?Yqu6+x&0E(HGB{To9~?7tZPPz`}_6y z-s)$Kp;VO>e@3Bb6`^Oj&(um3^dg~FKV{9=8dw!*HSNZ<_{o!}x+a%;7IC1)<}j$S(`KKkD+k zqAhI!(w*}?3(G1wrv5jdbPgKAq$XDZwJp}$eiyN($<=Oj_Ec8`TIgD&MXIi~g_@Zw z61bux0Ilg--Q3dH>XvA; zO|{RYW^1~aYU+IaZEe8wkOBiT_YhLUg%*Dk{g5sXsdr>6yq5HP6qOHc;0ksia$_?} z(+EAmh|;A%O`ux~xmu~4pbiePphn4)G#(VStE{rlv(Qr`Jkz;p5UyDa0{`Z?qHEg& zE>=*`FC?|nFVMn`dC=TL=;qp5qE@S`3wH#jx)%6bBLFC>;X%1)p}XW_UtNv6vesQv zS5{T&E2*liLl0+&0hR?DLt%8XQ53SR0m_!tsLox)s;oj+9oW*?0YsEHAsJ|d5#)R- zINwCtJRCr`7jR9wvMCW&(n^+FBe3WaD9@D;ImRr}9c`#R5Qh9g62X4ysgZsp6ec0G zJx1TQg^)0J6ld8+0Eu3B;IYRsG%I>Ul6mwj)Qpq$PKv_)z-aPW+(SP^Y@6H>ZkcSvlLs&|l+vRYOF|+vKyeOa)}ET^ z=L}1v7gt7m8h@Y9-{fzP`e6O%hgDuE)T(<+rCP%s=s%D{3HSLR$;(6GHi@B&6!9+) zM6qea=(`z(EYEO@>WDOkTiT)Sq<#5lNWnuHBa}=1;UF5N)&5G+&l?&<*OwUcB_dn& zW)zlDPmPYj#4&V<4h`dy{Rw|XxFxz)0t`OWLG73b#y?qcP@d>9;Z-b{C{iK|j_}G* zv{sMi0!=0_gmA3J7>NcjGE-`L;jF?UK<;q?K}WQWQleM%U=Cqio0dx{D4Vi6kFUn# zE=8#2F7;Gi>~z<;dGD6syX&0p#nq+gD-!W*J>{MfbbE$=b&Y#rg*)LctE~0Z*uqPJ zZ;xNLu(GPgM$cX8F2DE^cv$%@t1R^_!??*^Q|p0#Dz9``(1)ZYe8J*M)?5-^>M1F& zySN$%R{WC1HPoGPArtwkbuaN$S3&hA`IpvIRr{8dd6o|3U+11*ZU_l|#+NK|6ubWt zTLkfUm)Ch}eEt1xN?4~X_$8%7t~_e)*}ZDO+fI z8YlfkhMfM1k~!!vDV^`}(I;)KdNBF42s!Yz6nRMU#Gmm$P^OHxAD!&KgMvCHo{D0FR^m zOWZYOoW07$74!Ab$`OvidUe&}%2J=DzD#_pe04R8YwJ9~DDiqop(W?9##8I5^FbN9 z=euhY`pSwg`M0DXIsVd`GOmA z7I`YmF5wEP!At^O|EhosgG3rs>d~7X*JAn`S`DKP=#}uG&Kf_cn$T)4p*4TUE(dyK ze9`6)^6*17VuTe9V2}cnie)STo;6;whQ|r33&xs*&d)L2qd5x=)Pg=FE`u}6LgH&| z#r%KJ3A<#+LO=Gv@=K-k@6X|hPi8!vY>%^-FHt-i1%6SP%;fk>7AcwdzgY|(Gr5?Z zG{-ZEt7FUy$W%l_Kb{%PCsSUDWtuDW`C5W4820jfibO$+osxmMmJ%3#I>J2DU}>Dn z$dd}sDk?I=V`42okbj!gX$w+BXB4wpjLk7e=3#$gIt^ia^Hd+95TN87z%OAffgq18Sk z@%|`E4|7a_bJ7vKJQ!LXB)i4(mKCnaq4vphFr}yR*y2Y6YoY@a_!4%I5?2TKK4ZEs ziWHC0j)_THsDU@Qeb2P$f7dSPv|~E0+s8_eW@iJZMGPD~pN@E%muz*XSW0OdlNiLQ zX&WPw4ps#axT&r)$%M*})@#}VVmOej(+F`e{SRvftXJqTzl`bGiFyph(4XqRsqU4{ ze%K5(7!0xbZ$Nt?);6f8_ro?4l)Cb+eETgKc#jn<~(y`vy&b?5a&r)Ku|o^IVG#f>B+tsu&Yn z!b0krGbuv(FX7g%#f9w1M0auBf@!nSLR&l9g4#Z)wHz8HJ1Irm_z3ldY&tEvm?9@7tX_f1;p+dX{Pasmd#tM+ zIG@FmziNTY1l9{|7D!Yc@lV07OMUGeP7W%y428H*7sP~NAFdjU-)w}y>lorTgFu5X;}xv8Bn-C{ zmSnh9{j9b^fNi06Yc2d?sZ|O4yGBe5HDRNZxeSHS5ROz6y_0q#NDp;#Fm4Cw9ja^v zK~gUS>7o3Fv24*2iMEiZOe~BBGVawd(Nmu;3s;~;lNR7x4MI;?48G+}Y0xvkvLXA^ zVtgVjv7T*K@d=4CKhUB*g*m$pjhF04c&#CSlMf0k5Y+Zz`*2II*plv95ikRAv#w5Y zBdq~#Fs1iExP_MqDF9DX!0F>dA~gQjp`4%A7ObAw+nF zxPxu#L??_1FD)I@J3ZK(;3yB=j`A3LyRk(l+r5+R=HxcGM1L@QH_@@%)tRo%C_b1S zy>bxyIHg5TlDrp8j09SjV<3b%8Cntj53iWY)558))2F%|&1D|1flbMrHZ3!=gzW>o zco$f0O(P34Gm(M79M@pOq+?H$GY8tflAPngcdkS-6E=qbV494b{fWo1?qaxwv7=9~ z#Ly6u`Qgz^yRe?}*ODow# zHCQncl|ktkeQ4-lD&LA~)`Oj?G;wLc`XZ_ym2GsYu4gR~^Cr^@{bXH82rK5{SX8qn z^z+NB=F4Oqb&oF=6L~8&ZBi$2V~VJMZAuWEMlEA05VXFvgeFmG2QLJ8Z+v~72?evEFhtFE-DZ#WN4gvY>C zRAUi9=4j>3SWZD2eUOz&)32HAX-U?W1Ln5oW(`}QU;==)_hZGFhW*S>SRj&l%f=?n z6zXMYKGEina_%)WyeBt+Op9ta(73P{8{~wRS=zV zcLQx)gH;x?u6KeYXq%-{iy5e~0sB2eQwLi0=h1VyrnP7{EsfX>=I5;@5H&s1a#`aC zS6is51A9gam1z%0r9HhbP$iY8ImvC>4ENI}KcYKJXs4h z-R0BPvX(aNeQ9iowyw2UV)}2Bq}kSHF<~L?K1>L1xFa}?#32Zys=W&C3cSYOfDd$i9w)cGtf0&iwq?Kk%}IWAScJ}T3wS9u`H5gd>*h@ zP0H8cooeR5Wd992grh&Dbe-c>8&8}8Hg>o;#Nq|NpuTB79l)jvrvh^ov|}j&!LVL* z1Y1a7O!*Srb0&UF#yL@sVZX`jXBGN)`DVt~hD)?VW~w%Hpsyj56Lk=lG?%ai9y`9! zQImeNNj6#wOf-7`CHb>%!+H-U0b#JGj5`>ZAjn!y`i6FqvfhTQVw|9*5ZxPfOT1$Y z+8RlOS7RHiYjq$~H^U_Hr+Eyw7L$L|mZs_kW@VhD-j><_c{4@F5YCKch0hfC(?pVw$M13QQckE+1E@Y?neI!s&tUXH$NuwIMP zC>lBNc-wB*letjR7|IgSnm{|Pi8f)+yO|ZBp*VFquD#gR;v80IqJhB5MB6a+ z$p&aXS}TO2H6{vbe!#*$z)6a2-oK9c(iqQKT)@VLkPerb#P$(bWM+3e^WqiF(k?)n=yv8J}QTr-2)nfO`?> zAd>)w!x%_Yr+^Nkqut<Tp1Psc&2(?o-M1*_TUmdq5j*$HtX>vGYQ17%?q57-DB7M+E|WG0Dor07gPo(vC2KW^+ItQ2kk^sLC#uNhqH z115H>j(voI%uqIrG@-8aqy;jCrhv|w2XD3*B+v+vgN1m*geEjC)DD3&6St%s)L=fx z0!kcU!KYI{RR4oy>OabajUO1_K-I%GXfj0hL~WOvrw`f)kEnM3cTJ0&>)BGjUV+sD z>jkz8H1ms1;=WDb4uOUR_bznyYdG)G*i5@F4L>l*qeGAL&eC1h0t$x)ir_R_7y}@f z%Oim6yF~AE@rT3ywG;`96S8M1sdu;b zJ(%1j&5hHmd*WdP=`>3l~wV345Wyg_dA@N0f>kvC=1pRgfBe zP!1!=wXV|n)7;f%g|1SZB&Jz62A?Zv$Zw3(O3GueLFN(q5MOAy)`GO;Y$yL^rjaZc z7;T#@3X_dEAY@QcFrvl~<;8M|6xa}>!kaZ9S&|U?|5n*40nR4|$%b@NK56(2ksU~4 zbv6gJ2kRN89wpi;kaqwUOw{&h?96Le$&;dJXkIlIIxq>S4u|LjUuzv3%KWX-{v%PV zrrmU8OD2@ER}|_{PcSi*W;(XCDaRjqb^9Hrv#-+2wEK8*=Zia4+y&wuDel?g9wY8* zapOKMe(J?-HZ-)0J6FQjiQ8;@=@vIGm*!`OxM`0FJv+rcL_5_Uac7A8u(-`AF(z(Y z2*%Gx;-tl?h)hXZgDq>dzZLJiTi-KM~nNgxN)aAKQVFRs(OAt68A7+ zVD2Jao>ZxT0&$O&410}R@av6R@YjiZgt)hhJ5wrbr*Vrw958MXpqOzRfhgDc$&?Dr zH*OKg*~Tpls5Wj9&}QS73R`E~BH-JNTPk3uaZ3drFm4g39^;nsePrAsAh{KiUlFJR z;}(G`Hg2h)WyUQHrro%OznhF(1a^mUi$Lr$ZmFL`;!czN^@=;))NiHEU%G@BiF=H= zy~Zv0&BiVCHyO9^?{4E3ejhMy$#2ZKh5zYQI{h({{{rI{{uYZnUDB%;ccv(SHR3)& z^0(c%CI7p`ohspnOnhljz2crA__@_OKO?0)MdHqs2JIF17?HnvaifNNw=}pt;x_yGdQ3PzpTN&WB0u=j3Oz34K1sWa#hoJQ)f=~zca6Byr9QSBx75cj zanpyJ={Y2Be8`rcn7Btu{PY@~pA@MNm$*j?z1iX(Bkg&axcQs2px7?%R3ks)9wF`> z;?8vG^miHe$=aR#U+gG}9unh8Gm*eFL7%vucXlBxS@x}a^NOsE2$*9yu0WVacOLZH z#-|7CJldqWl(G7hSSzWz|LwQUZ{AtcXHRuur=Qtma(W_RtY6C6`*~)3HTbb!Jv`>k zA!HY@b{@!lCV4zah5{Tjm!m9`F$PCAlwdG!26Y2(Q-GyIY^;`D+cIv@V39TwVQ`M! ze4#Mh*q|Q8g%-&xOt_B+TR-WJ7=4jMAe=~-)>gFz#tO8Cidc%{crL${D5W8YX6Y%h zS6wV{dQ_R%uA*QMz~(TVth4SZNTg3wKXWUH7%b_|1Be!;b`VJ%*6^S58R6}5GD9HD3z);bYDdtDU<&`Bl1VIZy_N9%6 z07aJ7jl{lFlXofXe7bgt>XddG$!a{3frK)96rE!-QFJ-zI1(LQg32~iZ?cux3+!*i zEmc^hmz%m+r}0rJ<^e5e5CLnA$Jh$E)tG}$I0fY@@He0@pc`wbw3&t;$~6W2sX~&n z$_%ced0J$VLgM(8tANS?HAx3au`&*+vFFtgox-L%6A#C%bUau$t$3Lfk8*q@4Db zYHSp@hz&aLx1~#F3X?9|8OX{a9uB(({EWTCfe-70aXaij@I;f7y^0zGJvf`BprzOY z=H)2$C{02D?~SseVzQo==*se! zo+c2MyGaB=%Ap4DS2ZFOHSMBw&#&U^M3iwacHVPAi{czX!b{whbyd}#N`sGEA!>2g zM&jZRgI85kv$(o0aelq3(qpHCn=0yTxt*S9E%n=W~(!QCb% zAMDmCI?7j81hvzt{?|TI!%@ zu2V4KbyZdK%N8cmtE{RkE3uVlsk^4KtP%)9pX=XeyM$5vsort9O-a=fPmR5vO#S;7 zphBwMA}opYtnjkh(lTPa(6juJA=JGNqmr0#EiXR0;)T48Ki8knT~gwy@`;}i8p+8?NX-uMDBZW@pqjg(R5nfE&=r67;yJ)dt+W_U$O;z%p z;8)Upu8w-Oq{hmx)=x&$*c6e(OA22KjjtaGXFXM0>8`HzR-w1C=xTXc=)qMk71aai zDba&I_u@L-TE#bFIp|vY3JhN|KzvQ#7AX0#)lW^;(lVBdj}NIWYXJq9jD zt1{6I-4f|HklJETC3-rEC+*+rPK>`*ub@|VaYCF-xGslHpoE?kulC}K^0LZB2H#fS z)n%2HJhb2fNIcYwiQy<0%WYj*g{NwKrcqzT82M{DFBAmgqzh6mu#w1ROlZzD)^2!cHKrWZUW9*y+1&zJj8X6m8q zhOXOQo1$jo{UD$V@VAfREaYQ2Uy9$jJxZO4-`}3V=WL!->V$ntUHX(#EAcys--P{2 zwc)3*2Ga8r*noHA(@j`Ec^`h;;r+@1rS3ZwFL(lLFrT7L*0_H;IvHbUbAR@99d5bx z(Ls!(&F*3yj#&WawTb&P6Zi>CkX2%x!FgmGGB3S_Xdup!=Yq8p>S*$ zwT>~XDwg5|on!(Fu+0~>4I@LSf$U^1>!KNK{|N_{V`COyB%a`#*=we+hLz%|#g2O} zz;SF@p|IrrKgMn1CGP_=;RYH!<95~Q^@C*pWIDx5op`AdVbJ?5BwXb37!s!uHQ%w% z4OTmrBsN~*2z(gpKQ-iKL!SCXIV#r+WJ@M|H9)5NpM3-@KH*?@&bMUBfLvF&gJMHQCR z)JcFZ+y;tukLK7!;=<4nZH`)C{0Z!i3Fi6+J(fMw_Dn(Tzox*^2?}2*_xpm#J z_|CpMMdc^_X5dv-!_QWS)FmqVcFMQ0UM_J-T$I|8qSgTvYVv9w+{_blYc{D~_!SX9 z*stkwVxH^H6jhA1d+paACcpXzQdCch@zZQ8eh?m5vn*`j>)Ro?DQXXd9Kz4_LJ@XQ z`r$~pabgkQ8n}aqU|m}LOcMpx;7>|+n#!J;sj{bM^bBuLt3Ek%n96)VL!~xBN^_O^ z6@J9qlZnJJ-6$yHDa51p@*VtkNj$qd1q-)n(}xrhy&~*^*ot2-@Qi;-ex}NA%2N4t zBUC=}m0vTqcXUr~JK<-I##jQs+{=JJVT776^F%cvJMfd46eW50^J;5y1e9gSc= z5@HwmBX5LbcRS*dK)sKRB8aDwY0?6CKfl58b-qU;-`Q$(Sn{1UOl6_Yvcl>0{rLi( zfVT<0fG6PhSojfNQt~rU-}yMUJX&S-X7J*+6}0NOZcaNRz=z~C(aEIO3~L`+4_TnF_aVD)rm{?|o21kO__=&k_tgIILzvSa?e|OJ zQC;i!BnS35{qi&+OHF7RsV3BAqYdJ{CcpQ%p0S5U@6qz@#fYPL3i5`0CE7ruuE(8_ zsdIwfpNbj6^+Uqn@(V*loI;hmi-@RHg1fTuXl?)gRUQWx%-? zze9v)(-#y*{%1~u4z$w{9huB`!ruz2lP=FN0feXdaNGG zANM~QiT;Q59ds!5Xe;qk4LToAH}a8$lfp6ySwz1v0Xk^Hbf-+_qBmTD9^MOjDI-$V zi21{NQuk1+g4`XKu8xE3k9s*vWkyGE+iC~y&GO|mJJ>;WQjC%1>T}Q!HX<(T zq+IBv9O$HxDt}u-C#?g{!P&qkya{P)Li2F+^`lkxduiOC9zs~#9LPR}8<}Hz=z9my zafg7r`8>?+37_?_vrQz+t3}h$HhTH=Ve0f~8jk~XoJ{l$87ij+edh3?YWRHW`A}At zg<)#P1xmeuUv86@1&2Fz80sqn^6&+Cq#uE!fNPJ>d8{%0Y=-J7R_X)%)=^s2mfwWF zjY8ixWwQUL2;0Q@ptdk9$xp{k;2=HVP?`?9q@VivK}HA{X(^=DKYTD+Xh-%u)2R9w zbnLR0Twf$xMe~)q3%{!aHklw@F+IIEtw;JH8I!0Ir3&!71Gp!X48NSMQumEuzkA{T z0QrL^;n>}dc+3lw*G`MZDWIi5i`temjChyqheRClHO^Bn!e)hE>2k`4lcqDQKmIs; zf;lH;luAF8)}C6g#|X_x=Hv3w_^qI7d-6ehrZx{8E59puyf((ZH7Fvo*mBP zev(U9tx^xw;ch+(n>0dA!uas`rhIig>gf2H$Eo8}#;V+Qt#kJP@5H5O`-D5d7}Sh8 ziSCWSo4rh_1B8o>!RZaddMtegy;qE|75McaT zI>xo6*T2hYP+!|*&i=hafXi@4mqRZo`T$Qy=kE0ANuGi>rb!eqhf5z_+aJh~2 z^P{jY!l63&Vp@7mmg$&F5+6Ros==eJN|j%Z{MyDEESukiY*vHs)#KeETxa!};ZAM<& z@Y@Hv4*8QdsoM(l;u^G7{63TP?QX4461Ekphi>40Yc0kXK_^`b+XVmZ*Ff(lg*no< zw}t=YJy~zqX>nhX3mMA6+!5pD`}N#$>n5;qGjtv0kLPHZo5Aii4)d3BGhveoV~)mg z``eG!ZBgoukpE=lwIH*-~cH*6r+L+^oxp5KpR_qp&pN`A;6h1=bZIMlZ#(?J|3 z4vm*{(cVTS`45h_>JJzX;Md-cvW-YnBer3VDD$tAVc5=ne~e1sm#ccVDRtcq-~sR` zuTD481s;v{oc>=9Z``TrY82*wnZ4;fX@_)+wd_-53)weD72O1#j$iH-!oQ}m>^|YU zN=+p{^dB5g^}w!)-%jL#We$3i`~T@9>P>%`yIrZL z@jEQ}JeE6IZXLQ7{deyzN_~Rg)G*3Sa}xCH9vi{s4P*e+XR?MP7+7`_kEc1^is( zhq6+5!cFZE`2wCJF7d=hD_O>fj@p5J4*0DD-IVc}YCQ5e9_1TfH(ZU!cx3$a<9Z0M z7dRK*4s^n^>wMF%SvPN-pfS2foMaIXIu^b_GF@q)r{L|6}g%dBu3Psp0YG19;LK70rG=NMC1 z@oZ}XrVkt-z4Dz(-GbkN0pd}9ZbR5-_{Auk=MhdjDTQtM19wAzldM2h2vZkBb=8JzWqV0fvrJWMn-Mzj&R;b_}qt3W;>3- zHE;l497UYjyP%RNo~ctCZ7V&YL1`TV{%82@q&NfM0!5|ZH;U(+8IC#U&i(p(6L;@c z>iA#lJyL{!CEhpM+>&nfD5j6OQ%zbs#f5fLj|1-w{N6GkHCv}%jbCS8K3fS;1y!Y3dT_*El4f+<5%6zLEvo~ch$U&d|V z0Aph-u8H$SFfSE$g54@FWtU2$wC(k5f9JHY#)Up`?95a(b~IUzfUm29VLv`O;=}Gg zb1cmd9IM&=)6+V;AFU*rW?mH~cqQ3jK%bbQm)o%?g7Rm6+u^%|z==2v%f zin<$q#Ws4Y;MWU3+LK|P&u_sy{04gpC>+l_0$&!m9kl4VSKw0uUlaI&z_Eh=1A%h| zE)y6QxJlqHflM6#mZNO+WZkOab>glR$btBGpST|p_`JZFz)Z={X#&p|c)NrfI$rTN z?pMC0(>*Hi6M}pTH*s{z2de0@Jo=y7>ZU3S1!Y5`ilPZW4Hl!21L~A@Fs9y#muaHT_cr&JtKI zuwLLAf!`H)x4>NjpAq<$z|REcZq@WxUZ-KXxGxbH6!=Yn+XU_q_=vz)1l}+8sk$`1 zu>wyMI7i?m0-FV{5qO=zTLj)G@G*g}2#g8*K;Y-0_&SSoOdz;=Nf1l}%im%xJp zdjt;qj^tn9M1gY!Rtjtoc#Xhq0`C*JPvBvJ?+F}Dx(Ltd0_O@`B5=9D%cNc|6j&%Q zU*Ir-y&E;X*99IF_@KZ$1a=EtC2+aGI)SqUju)r|9^IhnKOyzoEpUgxs|7X*^a?Bz zc$~n`CBH`nz9R53f%gc!QDCpg)ivUNUGnjizy}2G5O})a)1El{GxA35o+z+XV75|i1eOY{7r08`R)Kd5+%52Vfo}=?OknPJHQkSH&~U!E zmkDeZxK7}W0`C>LN8l?0j|$BCp72579Dx@KY!-Npz-`fVj0$WLSSfI>z=;A! z3;gVQO+O~^kicC6cL>}nFe=;17GtZruQIT@Ca@fRJ8 zcVUTdaj*^_KDb;h0Iz)W>Da>(e``lTohzwU@b%%mqh0;V7BdjV#r50e%b1%J~=!Dg}3eM&SFblnfsUsqy1G2Tfp*{wM-g`I#qlduT0RMUA;L zN?AvH&Z*|qt>nUuB0fZ};LoRE1e#njuFZBUKUBdcM>$mM9m{cI!M6Z62b2Yuhp>{V z>xjz1-k260rxmg@+M?G1xcd_K2YfEzel+eKqzWB(FQq!5M z{Gl;n>l%wY#7!8j3}4G4wH*y~i-}Sf2<0mIyssucm1&g*_#}3GC-AO@Gp@zfa}D z5_zuRJ9gCsgrTjVnFYYZBhJ#Iff{aNHbv>C_@EEK}c3N3Exdx=nO!q zUnGccnFOQD)jLRw6clus=7+kJO2EyNBKXh~T1`cz+v$NfWjM2hGlq#$)Z)`5@C>V; zfNm*1d`vtitflzAoR)}mstO{8@cTR!< zep;BU2tPb8pbSaG1wd}I{Exf{ucR>N9IerK!S65KU|8*xdb-L)lUWv1<) zO0|m*r3G03VQ&#=i<0sBBhBi?gu4d!-U}J5M_6@g1mzOeVvSK6=0roSA>4bfUK%hq zjbCv>ClO{yC=b)X4S6U=D<3TkG$E(>xCit!@GCp;iR&bapQR>R{(2ar)aQm03BzK1Sa$_( zaUy!^HwZzzz#8cc=0bjqB1S=Z6yLrUU#<+!IBP~>6CbA*lcvu)*GpH@(J4Z;%barb zMUuW2?6E@RI|Al1GvBJ|*au{V>hIC`!U6htCk_165-Tk6t)GC3SiWeL0sS4^RLf7O zfI?KYSiZ}7v~auS*4Ll;5IY2o*KGNl>-e!|VEH+}{(IE&r*q0aK4|8${2DqUYklT3 z)9P-^U(!Q{XU$aV|0Mf2=>dI}<=@mG-&s+gT7KxDIv}ycY;0UHH9_}25+jFMKEeSM zr3LNcu;m}YaJsRrUEO5)U{XYFjq72O<;%BRp^q^sNZ#pN?dp8XSL)rD$mwHNnEn>? zy_Q=jaMt@QUnvidg+EC0)r`8+^0n8OFBrnbm)L=2h2rF`AA*c8b6dX?qR-w#t? zv)rg|Fac}%md^?;t8#-UR&T5jkyTvEO;@>vn8&9jLh0*|%(ts8zvNTh6;=p%1a{G3 z?Cq9c@>g##|Fpu8PwGL{4=o=lKi%A>{%ZMZ4)R5BYMJFb@G12)D_rD*KJ+TLgPo8F zLjpb$DfN`)N1v*|9x=-;oJsl`2zCWo7}n`@^{(Y7dF7iI(k)-f3n%dn%eRe3qtsG* zEk7M!8j5<;^2Zk?&?k^4xy$l%NJ}&nY5?c2v_e~38tAJXRHyorO=^S{hJ(~iK1pPz z<*Ppgtef5%%a?9j^Wo;y0A>^V*0octF!QbO49kZpbNx-V{DiL5!mMO}>Y*^QHSLfo za2tBY@{2^*z|0ny7SiQe7+33!E z&x^$x40p)SI`eOgd@*z5j9wRdf|1TdF%WOdve4|3Ok~Y4h4vK@hT-Z`f*S*U7On*H zeW74~j5B|5XHV8RsJ(dlI73X56e78cP-4-oAqK|I_^1-D9rD$vMJ$$%U{68DGhUtn z_>Nj&fIz-Mw?ha_V?mzLng5Y!78aK}(;v2Q?%>fI$0OnJ>KM`z8jLAD^n$KIzMB3a znrOu|-Gf6l@m)*OZEN~*HMyFClj;=BU&444Tk0?@tX(J3_9FT?MLvR9~gs~>D%>*-Vg22|kZo&A5 z7MWNGVQm++`f-iflYyKi8Tl6@wPv1fVcz(@E0fB}5K%O@*3lN!G$T?A-Gh*y|M&c~ z(;jGU8}aX-@8!9i>s~j>8x4YY8U*b7ck+}$gdZ*5vlIOIo5VdVg>hoBnEigb{5`9t zb>11@2AWhC33OnJiv>t+6MSD1@7l$XV@1%&?8jiXrXYO#FTTsog!^aFXP_XynEz0G z?L!6e9qaVHq<=O&ox_>X>685rrBA89Abn1s1o_J zHc6um#=UtQAid|c@Kht2@MJ;9nbJ~D@8Fh*IhA9eWe{h4sdOgPPd9F9jH7w=p0 zkC*NJ_u+YTe96B#ZW$fUgAUhL^!M>q(cz%4#6K?HFa6u|WzOe!Xxm4SFL+Cy|4XEi zw9Udlr%vILY0u8#Tsnngx{}V}f;xrc{UW}YPT{hD5iYq?xZ+=g%kC7e>=)t6I)$tF zMYyU?;i`TSuAx)7>R*JTo&RZI+IPzVf_e}~?`cc7|Fv{|!J2-4Jt6PKl3xtn-!#zv z8hRc5gXs2+X^*gWh`)cF;HH69LHEz$N)g^XT@L>Cdo6rh`ALuV6o>|HN7# zfxjSmEL%GMW;%Uq==v^2`!~@21B=dAKl*xQ&QF%^pOxtJK^KG{e+<39th(U%Wg-HE z9t+=}iJzj=-!3ii$NKpW`&ZNXYfGmO8YUh5i`4}C$Yg=+C3ik3+`~ohbhCnfP1j@?-9I{6^CI)8!YWDu|!yU!l9h-=8U8 z-f)3G(_bc!>F6IbNZ{{6pFi}4I-GydV1YkHrw{Ls^Zl9pZKdlUMemRI+Xcs`%ZH^U z*x!Wqhh9|&{~)^jICTC%yGGzopI;0m*q`a2p$XDq|5mzugXs9N7J%>1)Q=b)`uKGE zu?~Rm&!nHC%ZEwsuh5q9kQMBYi7oyQ>wx(28PeMvy1tt*+u4HSThiMuS%PgV#y?ZA zZA5QlO*lV3Oos7)SZmJTo=9)Ac!F&mdK+s)`TmSIgG~CcE~-QNYV`!i8%qa-Rv_Ph z9KDUT#Qbd&dONwWWBNG-9n)_@`!ngsnoa)xOnR%+1=~z|u?~*!Pe=a)r0Dw|rvH+q zeLD9yN}a+f{UV%tr*PCS!Wq)x=<3GTFeE`cAD8LZne>^^@pT4EIzBnt!-dAq@pazs zciS#>yga(ReCX@&cl-UypXpDqCZAs(OnZ}TAShp^y~X-jzJClIk*&VKpJ{I^`~?2Y z^%O(buOIDgr~N6~zm~pV{Swge_}NVSw7(RcKBhfQrtf!~X@9Iy?~s05I{od8Kb>Dp z`dD=QRkT0WwsbhZR@(np`Np`Pq00knwmR%zK_5Sc_Qx6~zCV-xmky^Xa~{Ns(Mx3Nx~zs;OaEqy*r zdnZNT575DXK)apbJh7&Xzdw_nWC8JZMIC@UJ!(?5{!lV~t@4|6)3RUD_XO z+W7v=@mnnf`y0{z(7NRNGuK1KKbc>h+huh+{lBWeo%65rHk1EY%gRp=Q~ri81lvsc z@1*@r=m=uy`f15*mk7>}Io}Mrelhj2SxpchbNy8e5o~u(53?OKLl7TxKhL=TyJ$kk z$K0R&yYVpl@#y%N`$5M2-$fTXKIZ=O-;IaaFOiOqxnF18|6MGj<74`Re>a~0f4~33 za{xEAjK(m*5j~;nGMmjuq7R%6F02#032sCOSPI&?!g|2MdcQ>X*HRu!>=B0GCRivq zL30Jn4G?!Aqv1<*m526*W)IxefoZTy;KDk+W{P+(55|JduCS)Au-+~n|FQmn=^_ll z?J#R_f|;;6-~_+H{J;rHDdRmZaDpFUW#C_c*ZUw1;5UH|eX&L!oZtu*$VGr_0QbV$ zz=id3g>`V(^oMQ(%mG@nrNH3>kOpwfrToyiT{93*>R>zJF05fItW&F^#$q+Wz90Jol-~<_+R)R#2wF>USx~#%FtQ2l? z=EG!M*(}Vvur|Zw!7<13Lwi+NV-<4`EPE}SBf<#lr4k+0Mpz=;3F=|6wG*76DJ&nH z;6zvjxUep&u-+-rLFK_@-Pn8-#UNM>Tv*doSZ|c*mUh==vEmVipfW52oFMLVSf$_u zhwEV-IkY^5^+bg=LxuH0gGRGhm9RvF7uEsAya~%2H?d`K4+82Nqx?vmz%tl9@Cslr z+-Np}bAYR0FTj(5FJW!qt-zgRuf6YL&1!8BMKIKfLWDNi;Z?}Dp?6MO_S z0dE8jo`AXyF07$h47abaop2Y{s1(-3B-)r_W~h@0L$C|10i2)`tQDN#Kp4vlS|`9K zFnMr-pJ5a@%N%c0z=#ed!A4A`6oV7&HwkO7!3pZY8o&wK!C2mGK8~4;ItEVg4;Teb z(B1~;2u^Sw%mrLn*O6#IuAG8;1$Tl4Q*kcf1n<})Kfwv^nTB!)CwLCV@?rCFpdF42 zPVgg44V<8YJ+5nTVVy={9Y&5Li?tC}iZH^Oi^BSa!WxNbPCxY&iLPP`Ox~Bx$F(z2 zrr-p3!3@C(X2LANg|!Wh<{|%JwQv{KDiqcs#B-V-+Jh`FNcX^e=A+F7euD*pv%Fa> z@-ApRIG(St#`>UL1{c;B#5kXI7FGdwVVyvtDQLa`X@EPy1+W+31e0K_1#CW^2A2gV z_#UPPF02QLc?#BCf20TQ!uozh_b)mC*ACnXu7qWS6TA&811I`S$msJC9Iy~=HQWgjO+6=YVQoEOZ9B;j^rf&Wgdu1Ly9Z7%6!rp~;1(Fm zpUubf;PT)E@4(c-g*EMn*4>~m=o`YF-~?C-IKlRCoG&=}XoLZ*6aoYNR<3^$^Ht$O&u33G2dPj(|n<-r^Bn zSof`M9kj)gaV^1J1?Ueu11_w;Cam8^bll`NuyDd`KK2Ed2PZfhrUp)MGE5hoU^&bZ zoL~*i30zoDjp(mc!Ls2_P<<1w5paU`uxfCEM7yjRTv)?QSR0LKq)Bf@`?iqH$6nwL z-~{zy9^eEg!a~6b9)=}?6O>3nodFltF(dkBEwE;|6V%#t^lXNg|)qeHNl8B*rwgc6NDj{4 n%z+hy6MPP< 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 Kv+4qB+J695?lm(2 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_uuid.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_uuid.pyd new file mode 100644 index 0000000000000000000000000000000000000000..002f2e911870781a9f9a4587c3f58cca899e0d48 GIT binary patch literal 27872 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�x`gryCjoL8#!krHb zR;eitJIgts>f~|gVwXwly=4RUEk90I%sX?i`qP|n+G}?2);eK$Cgs48tB0;~k2nV> zd@WpN>Ee8(_GKr}cT3*NF>?=itPPktu6pE=poUK+{(I({i<|IW0ml*tAKG(Zpm~LR z)v7D~gCEXZ`@^@uWMAbjR9iED%94BfN%P<5_T4$H zX~4G715OiEH-5QNwt|20eIyEUcDW0;nJ5h1A_jyvzuruhddB`pQIN(*wOKmli#J;uT9cg zDW%-1RrS@2E*b1s+?8^6;<8ar)3aMH+wC$eoO6%T+;xGPbz)rMvbBTt8eY<<{L(jv zj%OO_1g#i0lG=CPAjQuEY-U@(j+yf;LF+-Zejw9c_3gEoldcC0R(+1&}0GYM9HgAsN=a_Af6Z)t9MMhoZ4+X8Lp@hNT_{@Wd2bkVe_lvk`4$Tk zFUrgD+DH9nZHzPCvLvUrsB!m!?VdYS$1i-p`XnXMW|p$ysW1K<<|yaf>z1eAYk#?} zID8o6-j;YB+tIqy)kx>wAE$@Jc#1Yt^HSZ`G^LjO97taBWNO+GG9$UJO*( zN9OZyDSkOJr+vzv(uMe(LY)adKCc$Kty@4>Pi|;o`0fAFRjK``PVi~xC&43{*gN5f z+JGC>dakjFW~*;_JH_~1tbJyJxIX`JJ!k(;eN=KI@gZp=Ei zchvUJ`vbO}+xFz<6=L(?B43k^chrhIK29$R#(N}CtZw!zZrkuvXLUU)_(61|v9_ejO zrL~*S>NV-h1X5?(r~}Ey+eXE7EnbsrrV`~pGJfHPgC71ttCtL?8&z1XT+m1*y6>

O-Os% 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 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_wmi.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/_wmi.pyd new file mode 100644 index 0000000000000000000000000000000000000000..0463b724447b7e6a12a0e21daedaa2b8a932d126 GIT binary patch literal 39648 zcmeFa2Urxz)<4_>3?PDo$|x8|1jPUjK?Fr*1hmmXksxLmU>sXBG))Tyddr%s*j z!Jv_IC}WDEOmJ(p6jcgHE?@Tf&mZPIifYt$Pa|r3gVXIwdD7GE!V(gdqBKQnyh4^N zijk$Hq^d;Ga*;xvB1%jV`40&dC8x&9U97Au95~jkqem-77`wI8-@%hswu?mm`Yd+vwCsRjf1D#>F{DUACef8 zK-$#zFgSpsVyBx@1+q@#^td|8UewU2QCF%nFg`kLRVP4eHl2m;>(WLPWy+#HL8=4@ z3~KmX9%V#DfmByX5B{9jVXTKy6pgCG0V@g5ITW?10bmwIWsr%ArKlQDz#@uLk?a79 z3IqJBtI7{^$qLF*_)^q5$oo9>>vQa)l4lUU#rl4dzM~(8mx!XGTokb~m5icVA;T(* zJ)jG2gUc5sE;=%bB7I21O?U<4Hn@B#s>~%#N67Xu3x$O4i;jWL*F~XJ#Gr^B6O0XI zfqOV^gUgqtlP9Huko1L&6@@-i(YOsRUyABykp2H*6G;+EkyhBq zjiRJX6*#F}1DPf?Gtm51_Bv7(TCR4KGAE>ke0g`mNf^xnt3d!-;UiayLVLMKh9B0r zVokBBQwA4ZFxo*BE*U0?pbIxSh|09u(i&fi(%i8FahDpJ;g5?%%KZpkkYCl8q6F3w z>i~DHz`B97V6sD+pmD$)l1O-p0#O_-n0ovvaFqm?A!rWU5s`JY-?MVeg+BaAhfy^1Lu!K|+ zp%Q7$H^BY4KcE-Jm*mBJw7AGPl2xuN!${hIZErgsFH6GQ5Cl}`U(IkLvy$e1URr1s ziP2(5TvEyoexcPEV6?)sQA8HHV4s7vgrf4V3TD1RIpmsSDAx$cg$}mX3I`xXWS`nV zu&X-zB!$kBN=HzMX3!YTnA6M%+ugR1Ow-SXU|(Zw1bLZQrF5ayE_c$W4D$+KYa)kM zcm@pV0yCB-oX{}MSzV$TsY4n%&MFkwaWA&_WGI|SN~FEORF{&ms1uYAu+DwWQ;TUv zK<6Jotj%q(VWVv(>Tw73Xa-5|Aw6#795LoE!_2C^nT z4U%T70O$fU$!_SHet!-nXc% ztHto#&ufEyb;J7!4S~Xl7*5i{pgGdQfGn1w`*~IrnyK#1$A%%uYr_d+2MEPQFMNCj zc^}cLq?8how!^DvaL@| z_zH_8J&SafMlI9|3z7OlqjmiY!^qN1P?lEMlZ^3ILBY0}v4)1ORJEa+ANl^y-gKv0f zgd|KdjO-3`$nKB^dd)Gi9NFDLI)ZQ|yF(P&9U{uGGDWbZ? z!vmP-66U?2F*ZK(ptZuLtjcB#CAxP~E3_oz3`#Gu*ZD|F&4@M?3V$O8kb&{p#7>o} z9~mJpt?)EESXOOFtwLc1O9iub4`^(AOd%19bb3c4!0aPLc*$7F=*UrH4wF?}guE1H zy#!DztU@iAEZEUK(0A+^Qs%W*_=D4DSR!07*`RWOKVSqxwqvySWQSnYXd-n4G00e8 z*pV*X6(uD@3 z3s}+xdeUH>`TER$(X9Q#iuXnH74$g`>4ArTmkQDy5nX80Pb=)IV>#G(vV%vqmQX4N z?!6D*q-mN}Rjsfuh=TH8sxnwnSZ%k|)pO}}OyvMSfrwFu5f(r2Wv)LstQEfRz;!uK z0lV?w=K>YV9Ed<-w*EzwW7BP<6`m)Qy1FI|sPeC>__^3#=o+4*9bkW8j;)fsu|yZbFNzbSvSg_&St?7G z%96otpqVg-3@MZ6kcEy(nQt9t0>VE`ctB}u;E_I!fKZb#=t!R-=~P|%1WCu}(#J?T zLYFQk=|M=JB0eRgPI9oOFm^%^Xg;t#aw895aj0X+r3Vt(W z$wf1x9mF(~1k(idqA^mU$it_6Lv_82A|0`Y1gQd^?$6?`dBp=)HG*x5m~mMGLYG`%WR6Nnf|;4%d@wZa|_ zs00TXNIuQnc;E%~CvvkEy9p_T;kgIobb>74Uk>NWUbfejodEI#knUydylp`eoO<0* zS<$^J1PjU@nEB4CcwppKrW<74(CX#OewamsX5LClS=SD0Uqmy%!vD8txvTkwwB6}W zFZ~_-{Z%1kVFhc2c_{OT=?QZ`AHb9czN(hCKP)K>)H3DmPqwcxE~mAXfyTf;A^T1x z%~T*s8&@*r*mN7!Npj7pAQ0thcxtHXQinN2g6tzikVxzttbVJAeow}#jIru>i!77w z+M8Of)c6ecKAL$W$=#g?a;ph}0nFSwq_7XwFC+3XD;W zHa_;?CgzmEUOXHsp9bMFY{}M*qh0PpXf8VPD_t0TEr@wS7t+-M%xjGsS-R}mLv1Ok zFeOWNyK(Y^~KuYcS%HIK#Ol4K@?SLk0Rn3<$r%rc*3BgpH)r7zoqOrzs zLV2k&dw|o$OBL)hC z1$nu6Y8t`5atp9WC}y+J$`?Q@G=h#kXvJEWZUj#jU?I&TifYvc2=%>OerrOh7Wy-M zTcn5$@gf#oGaLQZ?0C;ICKlvg2+R0)0IhI6RFJhG7m+0wl*oB{XTXKwT;=m{LYp1k|uHR0L=UtOy_~N#U$swT`Fm z1mC;_EX11a=n=6nLE_yJRB{Y+SW#7uWS><{4VWsE3o{%aR75?AY*cq zF4y$Ut>YC0RHIdfi1iMUbB835(f-!L?5fN2exaTFTAJq<0 z>dwFU1<)-}MSu#5BgkI~5ec!75El-DC}Au$Yl@QKk5^(*;eaE|hlHGk3fBrN+E7$M zKpi*&QxVIBb|D)wSxR5z<5u!QFZm6+Dg@tj`8!!_OT`LQFRL@NbD`O zHCH#LdyTdgt1SjGlkcL#TJ<=Z3CDP00c>L%0;e)HdiJQbzGuBi%k@Ju#6&Cf*0))v z{?xNOP)@FA)9QN`2`-v`Z^+u80%tCu2pUqf#~gCf1yk0+9nyHiH^uOsAuQ2I8`3pS zWp=}{(Dk`sibg9ujFHz&MJuqO(!!+=d;&tdq# zN}&Viu`SIclSVw8@CY0*avuiMg-O_A3&zmUTC8*aV^GrWN9lq9YZz2Gk?OX@1O{2t z?x!`kFw!&wS_ZU*a*Qs% z3QC-S3gHwyFxMobS)zXhW6U2khT{QD}?3|Z8L2CXe-ufAHhzw z1{o-guIb5Oa8e^6eDk#`WGZTn(7NuBwiBH@g$0W9+D4Mp3NN-KjHa3kc9mI?coS2p znM+CxnH_3MRCB|hDdRyoM|bGc`7`WJ!PgMgE8sEx%nKwCU?6PPAZxn9kA#LG)p6|J z43B1faWdIYh7re1;&2cXSAQAuTcqPxFw|UHAORx@%P5E_aX{X2m31Hk&8gHeO!^Ck zhWuz9Kbi@&Hju^|_KK}M$d+I&S(%`1A?Wv?<@@9V5tEDkk^hubE3;MAWDs7i_-Jo7%># zUNt4@b4Zg#{JXCAbnZK?%2e~f4D~d8Ec#QmkFlh|gY2PjP`q>R^Hfgc(Jc2ZPi3Kt zg_6BX^9$ZOJm7171Q6_mUjkepjvRos0(2cyDOdon30YfWGe7f_MC=+D!4Hu#Pq26P zw;(R7Ag>Y?HK!rRtm>I?(0zCDa(jml1yYcI6weBN05af4X>8FfcJLvZmQZm`2&!l@ z@xWkCC39P7l?tGFi**ZQ*-5hlWgr)!e6X&(FDbu>@(O-ku48MxX;!+*z8F4n z9T`z>?>3)#gJi|88-jB;9uBJix_3PFHG}A z^q%ZV{KDZp5}F{MB2$eC$GKaO_Y;UQV9aHVmSzn(@K%#UJu$K085WI$^6H9mwLG;a z__?8)`*~7rFtM=tFQHJHlVr&-{3u|n`WD>{T2wirW(PxQ zt@U(Tp=rI;4@}*!66r~(Y&2qTxkr4lp^P=~_1S|G4zI+ye}aXf=4;+z31TNF~gCJu2gt642;dH&TEf;w=FM{P6>Hl)gx(0tI^m3~9E4-xn#euq*h1 zT&mQZFdknXdT=dL~#1MuN z0m5ky4Y*+6$T>kA+%N+LH=Wba6z@e;)gl+eOTGBRSQHYrFW z87G7xF{>iPmrzq%k*hVD{1aOAjT}4baP1BlBPc}u9MB|CYo&&0B#2wkkS+{0$1%}d z(AY@x4Ka#^{Fx}E3ykY05U6~Ds*n&RK@q%!LVh$$g+7-PN8k(o!msjgtm7a2XZ}Hd z=HL0B@!tWh__O>!V+qwu4ck}9F9aRg&N+(-Te)0y$C#-f61fGpLnGG9ghpmzL4VzcE!)- z==wDt@I!R&Mt`0EG0FjaScfDV49MQkl~31|AFeN#>B_Oyq6@L4c|m~0ocQt>AKP#m zr&cz;!1tA)Y_D7K4d=yOkiuCh9WPJd=moI)p%tbQPlSOpkHeW(n1~!xM!S-soLwlo4%f^ljmrx_DRF{>rC`2z$!DpfYRP?(hp4Ap-i z@I`8s@E*Lvnqli+Fw+?}O=mb~59~C1k%v3tq+@B~hM1YA9Wo_QVpJt{;8Z!oT*0YY zpyQ|K)f{wrWolBXiN->gF=Ktd2M-PEYo4JE%^!GhNK&7yf%;gkEw>52Ax;AJ!CFmM zR!nuX+;==R_9N`wG;2j(aib73_jyqoy$dZ2QCn+WUuBF)o{MO@YvtxYc0WjE_*LWqOX^R4`&o-JSx=aI% zP*Wry+^_GT&OT-Je%>F`!~Cj_&way7AEyb|N#vA&RgISoR@YIg+0EjhJ%v{HNPfMJ z#s#D5jz~Md9LFm-603=HwvIhZ<@eA#<%#Ga-#AJI5F?{G8A zOM^xtbnngo`81sU3_8Z@4ia!;R}x@+BHNpd9YmHk#KsfnEwNRHNxK{p>>6rA=N_`9 zjn4^oNlfWN%PeW3CE~6&4uQSSsce~nmeOA32rTw9H!hd(w+rzpsn)R!uFI3U}JZ7q4-c_|3Jwv!NfSm^PLqCoifuUyo zsxrwtueQ{zMFlveD**HzCOTEfKMk_O75uG)8W+|J(X(*!meH5^2-y$IP>1=I+vSJB zw?VTe%*oT8c4Kxa4SBZ=*PN=g@zhFMo5 ze~}r^5bXC(1<_ynZNYs84Fa_ zf}Mc7NjL^ufYi8B>W;RKkE*Q#ipXzG>=oQ>?%k6$LWIW!#o13%RPv=@z=r1- z4QuqXpAC?ws2g4=q_u)#=8bx+V_jcFcq;f+Jt27(`dPt0jU?LA_AWE!Q7Wh2QKm+e zs$K6i0$T7(-n_@5NR;kC@8-c-Boj&tR+TGl5G=mY4@bn@N}hiK|00qP%z!(I1fl^F z=1Bl^E`a$p_k-DFUrC|FjL675^=D2B_S|luY>0YBsJ9g4ICD+5V&8-p(r*RD{>=GO z2Q<@5GnuXA&)`KDzbT|dWa?uD-wG)rMg`vtDI+3K0spx-9HTwI+bG+D=y3&KgFILC zE0Pubt9Y7%7DO!tx$a;9fp}GP`7IIMu!{X;1x2j{x$g->xYi;EQy)`7{v%`={z}x| zT9aF8UcsM@Bw3;b{BMzxyet=~qH`-n6?`?aP*4;ok=hNaD#$$wY5(@eA=L+n8ANiu zj;njHE!ZFGc}PvpZ=OKsTJ^%y7lc(xOTWBp;Z8s4)_PJ@=X`Eos4?I?O*` z>jeP>du}yV4*bNguY@@%!7;DA*4j~vuUv9(nilX~CE%5Pyc0%_eszv+Z*>G!=>n_$ z06x444e8vQ2a)}WV<=P#S%zq+rm3<4K=*klf)u0Sc9)U2gm40NXF+ScB|LSC)ixyD z%e?tBL5eNI@elUt%VGwy&(-YHlYM5f z&wlLFpMCacpHb{H!~jp|Pn{~^9sbkpUPh$-^7?dM)Yg1iM)C&bj$2vYdMe*=?C>I* zxj!oiQ+Gr(ruHYqolhB{MVh6+kfV?YwyVBCM{EUGR)@oQ-bc8R!QzHVCSOqDgS~-| z@WPD=NMphi5EhQo41T5KM7%w4Vr#e`&-Q}al?mpTGv&ZTYyN|md6bU1#aJC|#lfx| z?8Cw5BRC;O>YybDTX0a!L4OX0aWIO5DIA>2!NDBgr;$2-zi@CL2iJ0N4hJW2a3lx& zbI^^0HXMA-@x8;r6CB*h!3`Xo&%qoHrg3mI2f5y|ix%lDVtWXLvanDG@Qt>9TsXv` z(YnNB4pJO!!a*kvx^ZwI2ctQt=X-yYKBa@zT={bj)_g&4IYvjp1~ETURwM zXsgSoCdu91Tw;@wIR1mE04jtUjHi@xr`+&KygyRX`qm{e->4H6^3ae7X==>)fQ*;POrTdVA~o>F}i-{8Q8aA$k7P4u^Oi z_;oo;IQhyrSjoXE4pwszKfYk~jOwC;)=C{L;a~<=9_FIMS935tWqe9%dWuM%5hG7i zC8nlu@>Fs1oO1r0K3Wzlk|p6M3NjsW9mm)D3%)F!LLti(rO4AoN%E9DptIzP7^>6R z-bfF@9hsh-=wiTBNy(`s+%fotg$U)TDM^{4&;V(GUzmurkSJG*WD2=RsZL8vRjA~# zpdr^#BA-YhSE&^#O8goKB&q~iipX(dtSBZyrjW&`4~ZYQO6Wnvb^^MS&~}bQIsZ2R4B<$nPj54B$*05#LQSI z3?%%i8KlG)SwLZjlJ|`0hV2r*hL>Tx!Kh;!NKsgOe|eFUffzLUD;Vhv++Vg| zUk;v}ufQI{2;LVrY3H*Gbb47nllMzHt`gx{YEbr9GU$1-)zC%}>c9qlcG)6loMoJ4 z30+D$8k3nQPkCT zI8q^kYStAxidzU~U2s2eqo}*?6xAFGf7z3w?%}3;;I~`2YjKk=76x13r(S5s2O)*D z4v+)E2iRV!D-@or4{~s{#zAQwU`VKcXwl%@c2tjd^jycnqAf=^Ehqi;?>SmF+I4jF z=;*|h(X!-NPmj^8xk`(TMk#cIyGfcDz5#w=Qqp!63fSMfIV7{@x(e<2qFj%25R2>E z*5NW(0`mJgmqhY=HHYpXr?3Z7s7kqr#W8X5Si8uZle}LD!ijzoLZkT{$9g$+pWy;o zy4RoMbl#AkA-`aj&ir#6OK1HVE{vtK{T#>AiGZuYIO~7IN7nmuo<8pYtwA0-Qwpe~ zahQ;rq)H|>oY<{c<9htWi4$X^(PhedFejrz72^;n(Y5^`?kz%Os6v(4%&yg0S@Y@r-L>^zky5m zgo9>6AAs{EZRq$B4W;zI$8?eF3;@2K`}mu!`Ua?`S1ULuKiHFRK4t zCHWm`5$dwPpL7trB1shi_Zo`I;n=i~`_U3JQt;{Xz%xg@8 zQ45k(`BGFnb0f-JWp7?$4cmaIx)#l^NWC;2-~F%ATWDxc9%M)<+z=k@Gd%&6A9 zM&@Xt%p}cNY{az_McT18p{$=bGdGX5F|TR{+tnO>;`kcodA2;t_7Lo?g$ZThVM`A!X-*bcnF7X-(rY9wKO_ zZbo8u4Elkey(ML@vZL%{Z7F+?=9K+Y+qz~oHdRf^tb=(r=9Eor1L&g}WrH?t+^o~= zoEmg*5o=8~^AJ!?+^yy{s4+_;<7U%Yw-+304_oMAmn>@x%1M5$LAjoHJtVq`d1=tXlxl%7ZlSy`i{tgQH(3L%ukXK3(9sg|Y8TOqFDlRfV ztej#4IaxWde!{SRJouDN6YDfW8|6rzur(n%X!s<2YQDe|n@TRdpCv-N4D0L5Yqhfu z;}rU3iB8wa_tyzulvxu}g^pg&-xk>t_(5M@dLPx0E{$u`khYY=m3+|_p~2QmRRRAs zS@b-JUrR2-cB~EBA!FnVAAsx`WG^B6BiZ}@oof$AKaqp8Iatg=vcDQ$b1A>n@RY=q zL{*|JDRH8lIC*}lehN9xO@TO_$x>o~n*m&?TotTH&B*MRBug1DSK&wdeyM@=^+M$_ zYDJK9a3-0i zNaA{9jSeSey6ega&`WR|;O+q@0*?4e`fE1v5Pfk*K$-r!HVXcGKkRu1b(fCD83J|F z3~(jD5zkm`PJC-UWIH^pj3Q#Cg zv7e0Q!-fY;K(vvfmQj95sY*F5ONm8u0-mk~t|Ijd*CI=d6*wp$WN?5~FQ*kRI5Pl| zx5!Z01bth#U}n%vBwFaNNKKANOo>fRR{}$=GKmb%lqljO`^jPf*k~utq$a_c*mq(e zZKSS3tlSTAMv8j)i4!+soAn&RQ_^HH;|Iwz(^D0(N@@g=BO@kq7zqM$eLTk1#`q-5 z(9de)PwhyQ5sA81IL1^Tl!j(1BPHtCL>1M_C^$1no(y^980S75_aUJ=*6yT~jcoeM z<06Skr6^1NNQB6hD#T3n<7f6o?{w`+Qes2N7Mqr-N=Qv{cXj99PeexgWn}cnpJw8w zL*YSD?WxE}r7AWOQPPW2J+$e7f$Op3Dq6FwH5P^4y3j{3GU)8vtfDRHThTuEe7q7p3)^9u98y;Hu9_VW7TpN9nJY_sO_5^>MXF@cWDR13NLX8~l1F}4&IFAwBR@D-@Vl(h<^$YJQl0{pe9tsd1o^%cLs$ z!_S4R!RRtkhinsez=Gw9IATBG`}(C~M$mY_KXVU^rTQCSb!#6;s>P@I3BzPcl*EdY z6xEOCpQt3tr6cAB*AGgsq<%0q@TR3$Xf(0mC6Lx%9<7d#mn-yAe$5~HU)=wqm z=kM44-QMZHp8j|1>FH085uJ~_hz~~>>CUU<>_ILb2#i=Fb3G}WC3wTDTK|5~TGx*p zuCS#4zt%4jha%UPe0A7QXJ~!?ui&D;Xs=BF-u#iRfqQXJ zMw-B5xW7f(Fy2n$@HKW6wGVg#`yf_u5$VBzM{(aln!NLSjC(l3(sh6v@NTgy(whJW z;{D=7&`1IA;5G-Iz^QHUz5@6xz;wKOv;jT?u$>70719oXZ4g8EL0SyB2Qj`Rq)DvL z#1Rl_Yrt^a>yRdK#MQW~k;eBl6l@_?M`!@Oa2FvR448u3HW+OIZpYmU>3x9YZvmY` znm~KRmK~6G0Q?bm0@CXM$=?gTh%|v#i1V8a)y4Z4BW;6p3E)TEVx-A?&n~#VknRc? zg*yys0^Jc$^hMeOa2;+MX%b_6h&v5w65o^J&O@5S6pL|>MjGFpP>oz5JD~v#!Tl}L z_So+%e7};02iL0Ubj+53me(0@4J&$E`w|yt8VJdp^=4z%1O~ zB2A#s3;jl#e2Z}lcNU@d#)rJPXCh7BagcWxQNcP$-dpTLnn3c7;Rw zeFt*>-+394*W#22U9|-yT?R0?bl;1kD_I6eB+1{n#n^rYj~^y}NzBp{{2Zh-3$W%% zP@B7ofDGX4bC~D88Ocea3HT-m{(NtHR~NCpNS=b@JPts;?Zdka}Q>ILI znc!-V&w^4C<8U?|X4o27i9|jsg<7d1hoFCvo4Y+*4>grsz?#bgqmbhRDIBU|gB6Jr z;IYTcmGy;&#R2S@5Z#u_C&-iV?H8WC?PbcqlnJThKS}N;c6IgW-ox3oyN9QnwBg@DRJXb&vCQm;G}N9x}H$H!r!nb9eV>Z)Xn= z4_D`CnRkqHtfzOZhs;CfDR=k!=Nw$)JbQS?^zd}{63bnkJ>1;AoxQt9M>~7D$BN@T zW5uzu9)H8ZOD>MHqK`(r|eL1>5-9DQL z-BcP7{ryC;tKgH~l4CL=Yd8t3u+%9WL8VIT*{vJ5zFg|p zmkXro78(@T4b$w|jf>XldD{1Z>dAe&ea2C*KHa`1z*qVmD^HWB#KI(G>TBvTDhX!+ zKB=GHCIq5_il{enHGA8mDR(z}5&NZ|eURQZxNzdS_@yQ%r=~cQK!YMRNoh|k!q=~Q zJLTyjCjacoA44ZgG*ux{;G07dH9;7lw|!@nsH3qy5M&I)YKCd^><*Rj^l3}F zjg7Mx;RRT{S{AP(*Dr3LZeQ=;Cp_wV?70?t}JbbmH|L1}CdSc**Q7wV@15GkMg^__i6Vk|#le0|(Baf&v%2Ti}g#yMQ zpAHHIC`4!}l~SWD78n&;C3NKSr7Xc$FNZ&9mH1Yb$d~pR-RJy?9E30Y5yUw^)gK0& z0vtZ^cgL6Au88}QCmC5!sv+n}e^o4P3gk&L=*j2peEKF_%$tsSQq+lOYY++2&}SlP zJo>Ey??2;2)Oz&YjU7!_%9%~MK@JiAwEDk4UM{Hj&)X1#q90@&0@>u~qYK88%-BDx z=?YiL8}5}(Ix)tHv@#f)7x*vKBfZjdAoCuCx^PFSo>T*j*AQ-eh_;b&*3UD^=`<%2 zI+BbrbYVv`7B%sm6J>_F!Kj-GeNnUDF8`IT5qb|+2R^6&QWL(^1Ao-xL92;=>ZSU$ z3UEGPS5O#AiLNUl`{#NKFPAK_|Gvu?emh!QS6otDT3l9KSzKLQy2@#_?`nE=)oRV^ zy49~&Q)|rESg)~NBU{_OZ%8DwBs*C8A zQ7aQxE?QZ%vU(*|>{J|FoK;*@tZ(7JuWSF?(%+9jjVEY~j3{xA=Q+~`ou|{&Us>_Y zjEZtR4*`Y07tC`Nh^qe*EIga@?|v@WxH12>t`}eu=Z-?yGtW42Nb75UWP37z6DxNONdyw0^(VffRG@;v_w0iV%K;W(=Z;n?q-`u79D>$&|mZC_}{Xpi;rManhlAEW_dDfenuJ)Q;RTKEb-m4d0i%(pNn3)iyxNtCe z+Bel7_FMflFP7dlDmAmij?+sPw97m9Sm4%sQpC5<0?ee7YsT6(>OO%qGhL=PJ9q;+LlH+C}s+ZN-ciPVX2vDd)QrBQ)v( zn!aAoD?&4ic5c5ldg$Z*kzVCZ?`2pn80m7A?taPqO~O|N`7;+@mmf%+lp%AWaU{GnYv zHU%$kI%DrPe%96?vC-(#4!L8t$0#5F)PBK`D5nEGE{$4agcZtL6($Z5H^NeAE#UFA zCMH;H)5QXkZ%Xofu`z(SH9<5oX=Y+mIraRw{LU>;*exv%TUdPu^$VzISp1I`u* zd4vOHsCQVL&^sQrW!!J~?0$Ei?`JpoWNq+**fqv;jhI`WS-phCA%~jT?Ho69jLJ{^ ze2F$n)!^rLZRRvfKI-s~(Qz|lo)0-S8Ls!6^j`&1o6X8dws=5IY_6{N(^ zZ2jW+n4*t6H}=fB++v|mb5DCon@vHNa_{+g?H?kp4O@R_;K**%Re#8t~UE% za%|rIi!<-7U$tTHt5~mIk*6%Hx*t&48LvIML0T;H%<0qmS(kka$6Oth(aZToug6jC zH7_1EZ11^X%c8i0p%*5VCJyZUeO%&^`Ny6|rfgc2F*D0_bn(_l#o`>(J>ndbVx2v2 z>Q3=0^A~1c{kVLNpcvZ^a$jhTc;vrl(z}Q|=}h{k)0-&JU!*hU_+6G?s3>5FpU6)l z5__;#+f(c*_7?YW_vr2gtL=uYs~eXUPyW1Zvi)JZFmGx)L?Mq)O>u1kr3b>SX@h=p ze3+t80oPuP|9y(=IW2Bo=e&D^f>U-gj=Y2@Yk0P`L_qxs>F@H z^Ek=uPwgMk)qUK7=^n~`nvQX{{Ln)xZ0_msc&q$-rRJ;Vq5%O*{*F%Go0_eiJRUnTD3%Rar|#pr&5|k3CgjB3y;5=;P$ccs;lY8=VkX1kEn3kAGRf8^NM)^ z3r~#PVJdF2Wpcu?-4PF$Y|=hD@?-N`amyVpba<3|lRhZ6zk8<(e^3v;Qz!GOvm5k3 z>|<2Wu<0Gk3Dh@PE24YH^le>XK6}Rbn`9tC)>}AsaclThm<;+bQinV`$sY!WoizK$>*CH8=JP|Y^N-z zxNxt<+Icf$v*$i93ds5H!_8C!%iBcK@aX~Bvlr!O^IOi(lo#xe@H7&)CCuBK*ovEF z+5GS%EM09mqgjvsMVqc?zIi^aJfl_|PYBwYM2W|WM;DDO8a{m(7o|y0PyZr9lQupv zHBH$qMv>I5-Y0T&69@X^pqO#1oB;)dy1({9bS6J_MSzCM~Y*6yO#0ih9 zLmnCN8<$;w>#mBJb7|SwYjgX?%^Bjf4wqz^W;w2D)GjUJ!u`bZ{FIrQ>lO1_vc$j z+#J97W6&IjExYI2_Gx-?$n>)lm2nRo|&j@1L1&Q8K&hE$faBEo_8w+qZ2$oTGT&F>j%H%%g!v_DUP?`NLuB zy>k=yHyF`!M!YgIt8VhPZyy^;g4b_b6rSAe$TIVc0T1m0jJ{27IiTRw+9{_FFK=?o zJ~d&+>4AQ>`wv)-(Z2uVY0pz<-e%eIn!i7~+;x7(8uf?aHt`*Nd|vk+a%MuEL)KMc zv7+qz%JP|KY=1V{n0a*A+&;a>=2xHXvC(e9#OuOyuTF{b_6=SzcX0=s8vYSFAoev7KISAAP+IqTKqJ@W92YYG07!ssS6T!_|WXut~1-y z!p}WU>ilkgyIVGEC%NA5^iAX8Z^QYIv-)h!u>Y}7!mDo=6*x7B3+|OXW9hbl;IM_W zySlY2?KXefNs*ENde0R@eEi~!R?gqi>&$_oLnn3(zcN~8)YJ3fuodR%;lYP1$7+^Y z%-S~Z?xWpf!+x`UGU|TTVDGg{vs2!8?(sZj#llnO4$9xwTE+z0<*nNP>+N^DzO7il ze3WmQD1MNC^?PmMelgR@runmLMfW#+H|dg#gJ1N?iTi&$W_?)cw!mh;SvQlEp0C@_ zOx16a*RV-ef4(i^jPd6)!>2>WS9h}ijH$P)Kf2f$nONdaTZSSgh+muFeRdPFx3H%m zbFnE-LF8OxxZnON=~N;R#3VgVy!_&Hr{$~ZapHU8G~IriD2^A)i(-mo(Z5BxzRqW~PTeS7nx|#IlpopGh zZ}b$c{QdE&*n4XwRl>(t+Bfz~u%{L;+P|>F)+=`F>n6A>mi^w~cz(aZ+as@PCUp+1 z9ezJ!eDlHEiucPKMO87@BhpHyoNhhUe|6VY!>`Y|HhgzrpVq6=zYE*_$9j)m+UgXk z&3ReF2FYGMmQXSu0$vu@2@z#F;A`(uwAJF8l3o6*XlhyAlDIf)lby(T+ey_$c&na^ap z$I$G1N9|))cg|iJyzMo;$$r7x+9q=kyF!knii?+3 zr4Ia|(F(h=Zp|BU*qrHUY%HYzgub6ke3~QY`Lbkm0ACYM$<0)wXho6 z|LuqB3)%+qh;|3|W#5_b(~G{I758?!s>`rfF2`Ou-C(aYo3YAc)uc7E@nH`xvoEyf ze=bHwf_JVs4&vY^?(QZg`=_Ta>q@f!J)8L7ZKPZ4%C^|ebh`Ch*hFbyQlfcygY6;O zi34AkKX7z<72iC)Q_zD2PhV}=8NDEN56NKOUhp&oqA6h}ssMbm73vy|r1jN8Ep&ZuY*z-CsJ2 z{fhS7+u;>)Avh1moPAR^#rFN!w)Z(fg9&aY4+ma)vuRHCusi7~o~wQ}dloyQWJ*QT z&a0?4BcIi@xuUG>eYUH7@ZzSWb2m3rl-q4|>Y4ebM+e7g(tuYlZ-=+=YU$-EJ9A>d zzLi0t(Ysw|+-uXu?3YzbLURT-ahtw%Lso68TgP!|eA4UYlTNp$Bp3W+S}`*wbkNzO zEiz0Js+w)yx5Bez&&!MOJSV>Wds-cRwGcX@H+CA@&smxjbo zD~Oon?N&=qQ<&cgzn){~+qP;;!Qq>E+69U2hF$YKINoEhDscB!ZCN8x-+xzCxd@~{W@%P&Q0Ff;17$8Iu6?THX@)! z4{jqh>W%X;;eszobZ{JA&6izhUMZX$Q%+Awoqf^9_#F<6uMe6Cwzun2cJhpOg z_pwzPhVzjn0et|2kUnztL4BmjKXz-)KCItMvA1UL6lZS}XJ_kC*k09tE7YI2*Z;Cu zDzS6D2)ya-I1%vK6ArRzUmWQP>I+-T?$Fa5J1_ruapV2p;w-L4w3qG~n>6S4sOh7; zr&I{Ok8XLU+wAg)A%59!?tQ%ERq*@bhgFU5mbw&gKje8}a;x8|UoLlTZL#@+QIe`t z(%xgWzJ14jSU(l-WrF7lp9S1h%ziS#Wc?v*+^Ax}keN47KskA7-?(?9{s{gM~pitRi`f`H%0}yzGDfQpwz3vp%|A z{V~vL=+x^ATkd>4X}~J~M)%C3ogxQt%`qr*E8(q zj_2*i{Duhs!nLz@x>3J8_n*&<^!ib}% zoD}l@(!A+{N2R4@C9B>J^0a#wrns@fP8#7_6?Sk*>n#KGeYTaKJJ@aGvWZ)RR}3&+ zz1?!)B^M8Im!rug&BxBMTNbokSmY$I*znQEz5GVARne2LA2@Tppeo6I{}9pnou=8I zL!XI{h!$RtZ`I6lV#tv;0Ug7`LqjT!swS6)sd;QZmwz@`&)wZh@MdqGaUvxl)kp={ZrmDui4!;x9aob?BhG1Y2XFSo-~1;JiAH}F=QVhhSd_h83^$y6nb*MB)v`WNhF6PtkN4?CV?)miUV=CO&_kFT&prio>@8uJ~;j`I?~z)oCSpt!eNA5&>G199~wBO~d;q z`Lv~ve!pp}cGG~*m1C9Tv ze$?wyiE{4R@+o~M+T6Z2VY1I)yG>W$HrXz467$>i4z?LLcFdt+9fq`8KjF@t^1Eik z*A2GITYtnd+%dMU!n?Oai<3R(<#jx^a7qKyYv0i+<4!G2I54Y=Y{aQc4>!kL-IP2^ z%0!eaZ@-(h%_nqZ;eZvBcQxQ|_|WMR-N$cs=SJBtHVS{ao9eP_^5E018H$Fc;qMkC z1+||z?QM;FfvVStDfX>OYR0IYUNA2c4qoneA+KGrRMpFD^B<45oL98>4m~w}$cp*9 zlgv`DcjL`_x_QOyqLNN4?r&VQzjgYww`~@l9zW=9qqJ93(+3_sC>$`NNyV`?=dMYA z8+3lT{6%ZqF~VWfI^BJ8OZ-d153OyV^Ycs1Yqp*KPznzdx~gqoV$r#4Sac{THy zbtrGlE!)W-#tb+!&|UtA`qD3slYgt7Zqu;y@V&*q-ae2WWxleYY-NsZV{wkHRs9qj z8}nRqntu@IG=EdCC*-|$^ZP*EGvXQl`Mq`yFWR)BUKg$LYCDHF6muJdLu??H3&%Qd zgoQEhD=)U!JsJDJZE&Z)R*utuo3b(T+&AvSqD9KGo9+R7l`}&x1R0r*Yc=d%R6EK=M97r*!*%iG zje|Ao4d5+=S%^FqpQpwC?R#%WaeKn1VbfNh!c3B6yzh>YiH4-fb#KR&t{ugWI7Uc-q;gpbrQ^GidQv(0)S%Egr<@gNtl)yJ!VgK{5_+4FHz1$3RD({&`i%>1{$J-}H*H)fswa?J2Cvu?<l`ygOh;ix{WXR}PvT?YriR-Q4ekQ}OMyU&OlZVRM9`}iA;l8Q=!sSPp>jOdsK@snAZnTT}skz6qJ&dDi3GMvk^goV7 z_G(%)`=Qmo!HZ6BT*%Do@?+lG`{yRyo^!?K&Z1=5z`Kh~YmeGqeR*+XMvr8wbKLda zosKOp>z5wi-hbuZS9dPIJ#syNQ=?VQuX{bdJz$^H_2DIR;*~z%o8>4nZ%RigBvUSD zb#A4}i`W;swD-sd*ZL0iN&9wC(dyh&qU@fJ+Ks4w=5%#m%={9w5y^KiwxgQ4oo@Zx z5x;{&LJsnWrf(j*Uw=ku2~BDKZ=DgwCpz`)-i?m&Jv*s-OJHrEUwdC|_aAz%(iCcs zS7DZ73%v(xY)-a*?giMNB5?ojJvhwQcaR($W{9)%{;xPV7W4?W^1dg??}Ux@4_lSHgk7%xmt+H31KwZOttYez_14Z{`{U)AV5t^*twAZog#zu8xelR_~ z)V?tG&B`;=_w}x5RL~%%u=^gn+t=@v=kIR(Of_oq$$O`-q~||cvM=9#M|&*QahrA> zIdJ$+*o2PzrljrocH^!k=cn7R%orCjKC0Q;6Rm4*DTe&x>A7mr$Zn#K)h(yTI>r@U zoTlzPw4q(XE_&~a^Rq4N)_Gl7BK}8*3k;JWDLXi;#7WhCU#qJTZ;m}Xf4I~3kb$pP zEip!?ch(>OaE)vnIbeo1XHb*5TND47#T*)*yX5uM!~F|B3?8kR&`x&XvCk@L zk2{O4l9q;km)oxS)1t)8=PjELcv9;>KDxuk*-?pGjNiuItJ|^Q_|=RP*M|3fdH>t% zy#*IWJd1E@x^~XURG%S6ZEv=*m2X=wUZrZ-aaF>zpxYtGMyKZlAM0S&`s^GnWtsM( zW7J0N#+cIEIsd1;GmnR=-{ZKMu`f;I$jiu346v~nwk{(Oaf+SoKipgWUXS8|hdA+)S+}j`b{&UXxo!{BddHp`$-~0PH zuV4FzHeNmc;wCMbsby*XwbDyet8sxk=gn++pQXv<+ffZc1t36#+l>q5;(5iZ3ohC3OK zf^)}hQ%D28HA&I=3G>sL$}3&Q%NeAB=kuhdx=pw^y`q0f(n-lf?& z-l;g_?i$93$q_!#q-(D(7KjN&aL9TFF{+*Wj_zBMx;|f1DlOfzTr&E>*F?Q7&-SW> ze|W&3J)PL;d3egUd@pnAB@@!_IU((la7Izs34xg#eM5NWY~*$xx@WOGq6_6IgS>-N zF;%1Fpt)-yFZBEvoi)D^8+N9Um{lXT(F?@lHjJxOf&U_a+q7<0CI78uxd%j)Zi*&% z6fIJkon^>(aPCCu*$&dn&Xrhr|4e>SGv3x(OT8?AF5Ii|K&)z@YDV?_O=5knrCuMY zLm#P6GwtO|j-mD}aF@6V$$9ki7mPaeQ`N9~??+A^`KW;jP8aPV@)Rqz1vi+P^Y)Zu z_uPLIO4h#P>!hJCidI_^)VgSJQd#4pALYzHqMtl+x*T&#=833>uUm}j zxOPCv7aRy_1-m5o*BC@<8LBfiS8SFg4CvDDT6Ok*v@o>&OTy}JmEMD;$&&2HfTMt8 zfkS~^?4h4Rt?x+Nr*NMI)+|_wDOSk;C42>oUy@ayh+5DZT|5b#0NlQmL7Haw(-Z$d z)BgQa`+euq5nc^NSQf{>MkC+5cU)N8NwGTsc7Pct|K~tu|JhIwocsrjCfuBy$0PY6 z?9lHT*;Pol4pz+3STRveoauXuM=x<-i0{YV$|x+!51Egvtq32~S8o)=X3{b-SJ=bJ z`jT>+-A1cqKbWI^tlA)M^m=6IaUU) zS4TKk8oVCw;>!vt>2>Ybz4zGpTmWVUh71t8OD~wV5-%Gj3}QZ@!p7org7m|lvrlH` zTi=*Xf3PK;4?4<462&y@kfnH;T*Et7cE9tTxW=6&#Wa39xIGc6I}*QJU2?qYRk*bA zd1pbt

SZcUQ&R7G&XOf7J0TheWB#awuCRl>N(QN;s-9Nvwxo6!}A{2mE`$%)~} z(OEb$E#JKt@f2I9LK2Tq5OU6{c9@SQmZQa*c8Uq?LZAj4%hEJ?^fESCZ5_y3c_VI- z84Vn*qy^EVmiy|RGW@%jbP)uJYFr!sj>_XhBB%WiDQZPjKFuX+;}#lY5*SJ} zdchzo#&y`~bQ^}6;}-dDcZ&~plDVLYqcnkbdP5_|N9x>2sENn3(>$>c@A2JW+8u-- zuu)t%P@Z*JkS_2S^f6hi4*VDENA+LJ>Y~_lK@jl`kU-&BDCoXNe#I*wzY|zfzY6fa zvONwgoTcU8xQFcz0FQh)V!1L{x}oNEkZhlJw1zxMP%S&sKH-@LH98DxSqDVkT61{l zR%~Pm5P1oRya+@VuuC!cRb@>Iho;B@gzcL4!S(~FxN(!f7Z)<-l1(^a{Kdc-;8-Ep z(*4&v?0^3-qhR)HFJ2HE1p~nn%!m>N(+B6fLG71kz3wOo59R*=15sso!JFmcTv|6pM0Q>;0Z(xueg2ey|0Pp7muxuk--~rK zv2wtcuZ)|88KDKd05@xY7#Br~@?{wkTkzfW!lED$wp|8-GeX>^`mUwNLoX(9m~@`D zrP-CG_>Ew<==hAQiXeq7y>5BDOJv+nKzb44Qt?LZH-u@;sot&XC{?7=xe4d)_kj%P z517&Kxtg+t?ewrWPwWK^b zTmR?2BI@g2x@5W-EiXX`l}jf2YP9-ZWRww1#%%bd2*q?uO6SBu6z)-p-<6p#u1qMklw}9TH67s zeJheR>K3NQ7`_zbf9jqvm9LErjj$vwm|HSL_P6Oxz@*gXPuzERrWtU#xhdaP?QJuD z8(Iq~U)uj3zY!9MUqs6wE)Lc&-L6)!$JjXQ=@}s|HNvPA)7Vz2#%gk$s!5Ub4HZPlkmGQg(K;$CyvzZH*qN+J!NyTu}!9t zf2Qq9deOXrL_2EeBprDzv3OL2*}cHNwZA~s5RM8fSM!k#G+Q>*=ja!k)9HD^xgZ>G jn!J)0B6ImBPlVaxi@ee!8)RTec;ePq*j^heP}BYetj@y< literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/app/app.tcss b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/app/app.tcss new file mode 100644 index 0000000..caaf5cb --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/app/app.tcss @@ -0,0 +1,391 @@ +/* ═══════════════════════════════════════════════════════════ + service-tui — единый файл стилей + Путь резолвится относительно app/app.py → app/app.tcss + ═══════════════════════════════════════════════════════════ */ + +/* ── Общая рамка приложения (AppFrame) ──────────────────── */ +/* Все три экрана центрируют один AppFrame фиксированного */ +/* размера — единообразный визуальный каркас независимо от */ +/* размера окна терминала (как в ratatui-приложениях). */ + +Screen { + align: center middle; +} + +AppFrame { + width: 100%; + height: 100%; + max-width: 112; + max-height: 40; + border: heavy $primary; + background: $surface; + padding: 1 2; +} + +/* ── WaitingScreen ──────────────────────────────────────── */ + +#waiting-frame { + align: center top; +} + +#waiting-logo-row { + width: 100%; + height: auto; + margin-top: 1; +} + +#waiting-logo-art { + width: auto; +} + +#waiting-version-row { + width: 100%; + height: auto; + margin-top: 1; +} + +#waiting-version { + color: $warning; + text-style: bold; + text-align: center; + margin-bottom: 1; +} +#waiting-reason { + margin-top: 1; + padding: 1 2; + border: round $warning; + color: $warning; + text-style: bold; + content-align: center middle; +} + +#waiting-reason.hidden { + display: none; +} + +#waiting-hint { + margin-top: 2; + color: $text-muted; + content-align: center middle; +} + +#waiting-spinner { + margin-top: 1; + color: $accent; + content-align: center middle; +} + +/* ── FlashScreen ────────────────────────────────────────── */ + +#flash-title { + text-style: bold; + color: $warning; + margin-bottom: 1; +} + +#flash-target-group { + border: round $panel; + padding: 1 2; + margin-bottom: 1; + height: auto; + max-height: 18; + overflow-y: auto; +} + +#flash-target-group .section-title { + text-style: bold; + color: $text-muted; + padding: 0 0 1 0; +} + +#flash-custom-group { + margin-top: 1; + height: auto; +} + +#flash-custom-group.hidden { + display: none; +} + +#flash-custom-select, +#flash-fcb-select { + width: 1fr; + margin-bottom: 1; +} + +#flash-dcd-row { + height: auto; + align: left middle; + margin-top: 1; +} + +#flash-dcd-switch { + margin-right: 1; +} + +#flash-btn-row { + height: auto; + margin-top: 1; + align: left middle; +} + +#flash-btn-flash, +#flash-btn-erase { + margin-right: 2; +} + +#flash-btn-flash:disabled, +#flash-btn-erase:disabled, +#flash-btn-quit:disabled { + background: $panel; + color: $text-muted; +} + +#flash-progress-bar { + margin-top: 1; +} + +#flash-progress-bar.hidden { + display: none; +} + +#flash-log { + height: 1fr; + min-height: 6; + margin-top: 1; + border: round $panel; + background: $surface-darken-1; + overflow-y: auto; +} + +/* ── PostFlashScreen ────────────────────────────────────── */ + +#post-flash-frame { + align: center middle; +} + +#post-flash-title { + text-style: bold; + color: $success; + content-align: center middle; + margin-bottom: 2; +} + +#post-flash-instruction { + border: round $warning; + padding: 1 3; + color: $text; + text-style: bold; + content-align: center middle; + width: auto; +} + +#post-flash-countdown { + margin-top: 2; + color: $text-muted; + content-align: center middle; +} + +#post-flash-btn-row { + margin-top: 2; + height: auto; + align: center middle; +} + +#post-flash-btn-ok { + margin-right: 2; +} + +#post-flash-title-row, +#post-flash-instruction-row { + width: 100%; + height: auto; +} +/* ── DiagScreen ─────────────────────────────────────────── */ + +#diag-frame { + layout: vertical; + padding: 0; +} + +#diag-header { + height: 3; + background: $panel; + padding: 0 2; + align: left middle; +} + +#diag-header-fw { + width: auto; + min-width: 14; + color: $text-muted; + margin-right: 3; +} + +#diag-header-uid { + width: auto; + min-width: 28; + color: $text-muted; + margin-right: 3; +} + +#diag-header-m5 { + width: auto; + color: $success; +} + +#diag-header-m5.m5-absent { + color: $text-muted; +} + +#diag-main { + height: 1fr; + min-height: 10; +} + +#diag-progress-row { + height: auto; + padding: 0 2; +} + +#diag-progress-row.hidden { + display: none; +} + +#diag-progress-bar { + height: 1; + margin-top: 1; +} + +#diag-progress-label { + height: 1; + color: $text-muted; +} + +#diag-btn-row { + height: 3; + align: left middle; + padding: 0 2; + background: $panel; +} + +#diag-btn-run-selected, +#diag-btn-run-all { + margin-right: 2; +} + +#diag-btn-run-selected:disabled, +#diag-btn-run-all:disabled { + background: $panel; + color: $text-muted; +} + +/* ── TestListPanel ──────────────────────────────────────── */ + +TestListPanel { + width: 38; + border-right: solid $panel; + padding: 1 1; + overflow-y: auto; +} + +TestListPanel .section-title { + text-style: bold; + color: $text-muted; + padding: 0 0 1 0; +} + +#test-list-select-row { + height: auto; + margin-bottom: 1; +} + +#test-list-select-row Button { + margin-right: 1; + min-width: 12; +} + +.test-row { + height: auto; + align: left middle; +} + +.test-row-hil-badge { + width: 6; + color: $accent; +} + +.test-row-hil-badge.hil-disabled { + color: $text-muted; +} + +/* ── ResultsPanel ───────────────────────────────────────── */ + +ResultsPanel { + width: 70; + padding: 1 2; + overflow-y: auto; +} + +ResultsPanel .section-title { + text-style: bold; + color: $text-muted; + padding: 0 0 1 0; +} + +#results-empty { + height: 1fr; + width: 100%; +} + +#results-empty.hidden { + display: none; +} + +#results-empty-text { + color: $text-muted; + text-align: center; +} + +#results-table { + height: auto; + max-height: 100%; +} + +#results-table.hidden { + display: none; +} + +/* ── ConfirmPanel ───────────────────────────────────────── */ + +ConfirmPanel { + height: auto; + background: $warning 15%; + border-top: solid $warning; + padding: 1 2; + align: left middle; +} + +ConfirmPanel.hidden { + display: none; +} + +#confirm-prompt { + width: 1fr; + color: $warning; + text-style: bold; +} + +#confirm-countdown { + color: $text-muted; + margin-right: 2; +} + +#confirm-btn-ok { + margin-right: 1; +} + +#confirm-btn-ok.hidden, +#confirm-btn-fail.hidden { + display: none; +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/base_library.zip b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/base_library.zip new file mode 100644 index 0000000000000000000000000000000000000000..7ff415b1f5584634c5ad359f15eb7f61a742004d GIT binary patch literal 1409329 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�_N7eTm+8Y< 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

!1t!$Ch5k zIn3tY;kV>5Hqozu&(KXIKQVZ#V;yl})i?vv68z23=Pk$Wbuw^xR21=*j|F>1L|4dH zF^GvqeCs(B$t(|#4|LSnT0{wm*T*7RBCQS$K*@-lb~qUBmLSq%UerXXFYXY!vzMSO z0R;hQ-3IUmTxSFq#k+F2CW5KJr=%sA^orOk2oZMxN&)E&qY_7&QyZXKMJ4|%%hKiy z%W%9WG!{v#3yp`xvFYEBFAtp#WZN3vsqTNddD$45c|eUl*N;OK=5A!9Z> z;hC3V#3Jb@YL(_c;*mu3Da?6VOlo;r$6!d*&ufj1LX+vK#CuWL>Sn>uE+<&%k=L(8 zCt4j1t%l>+iotid@K8toRTLwC6gJY6P{8DXU;7$L$0Mi&fBeZ6wA=;lH)s0iJo43 zUJTOq^acCRcLw(v>_TGo!y$@ZCNBH?Z!Ww7lj>`9?%?v7td=Km@_Q$6P%cm+2OGko3CzK6FxxC?JFirAN3%iSLAGWNh* zC;nnr`c8p$rBt7D!88S~IM4qLxLTZ8*oVpm7Fb*`ZRL{6$sNfSp6n%+ z28^kp)EvuJ@i1H590qsb*~gb@RFSb56O6@<225p8DRZuLo!E6bOI?l4nESv--un$q zP4PuFu4%)R)i^j((~lQ}`tdqVsI$}?aaKTwQ8ehoSXwj&WBT;YgJH%&W)C$JX0>;8 zhdO%OE$8x@N*|oeaC8F&v-FJjOYfB4s`y#n(%UIN%U#5Ex`L02J}mm%?6p(*i$2(O zZ`b_`Px9Aeq5Rph(x;0`BRK`neU7|>&;5=?YkuNi{XE-|Uxd$c`*V_KC|t&Vzhv$^ zTbw-zxQk*VWdrjF0Z#&_1zd)&%Znvbt}&USEx-&o=Q*=fxOoW=4ydM?j@V`oWspuw zo%(8|HFG4z5((RlIur?;YuBZC<3_EnF(jtoEyris)(s^-XK#E8 zoA^7WScP}mYuW1(o;gY@V%P*v&`RQs>6=3pFqOI@d|g6RBJEdaB+5CMRvbMqi$dLa z@d8m_nh^E5qFV@PW;qVHg^a9kmwa>ovwXay@ZdDQ%RS-W_AGnFMA`~@RE>|)6JCc* zd|PtCtC4eNO}Ri7?i(E8%qDA1xf#65#_6nPx5i-mgTz)mWjxk_UCDtRt1=n=Ir=a$*LD{DP&dNY+_b5nrTsqLt<9d zCts8p?YY_WeR!~x$e2A#f0D6G^JnX1{`Lv~_Br{}Z=B*qPV>N$X0Qn}I76Ztk5Mz& z^5|v#();P@DDUeDh9kN5GAdeO%;EMUx3<&iy!R(Z=D)01{>z$||L~Hs zcja@un78gh{p6DElb!<2j0`M!{?pFMORGUIURcGH=|!hK@q-srv7-VeR(;$}A!e&N z(NpTfXA6)W?&F|2F)<&+Do92PJtG|T7ecc>8wfygzBpJ6wJU5vfQ4S&X@SkU^iIpr zjg)-~211udipP6GeVw6B%QaqMf%-gp?SYZOA?b{A1*|L`1u=7u6(M$2a2(nt}A;osOSzA|GG(&#T_cz zIqnFZ4|eoI%~{gMjaTF%ZX{5|HF7?#;w;s_7b^~fW0CB5Dv8A(^X7NpfRzuf_1)P$ zm7RO%%GBbecYUAc6?|(w-m%Zfyt8jAui%rsbx-ovJvcU*R|3nd+}l1$&^c8W(^k@R zNYZm9`%KI{^M3ITwOu17F6_i7qeD(C*~T(r{AIKqE-VM(I>nAvQ1px~ySit~G|gip zm@2%Z!Btr7z>%2fx-wc^Ji99PB#L{w1_lk}%Q=3rVS@2BL_U%^$2#IaHaalU({H^% zMZJn7b+EUiZ!nDEN<7KM;xSy$uqTKlPx1N=IxQ8xZ(o1vU;lZUBY)MzssodGl4{qun6VL{nVesbPJ6f#+B~Pv+Q7+UXtcL=!`CUQNMyAci=Df;E=p4AvuC$ro^GG z-45vR)QL}AB+bg~PN4lW(48opGu6N@g$jNQpH_wY^X%pC-keC&e$~HDhvN5fHDp5G z@~dXTmGdJ$w^Q+78UGbHXhz)flZ;jW@=gV#myqiQiL4Tn=0CX!9{B8%^d45ldJn5! zvG>5h=43g$4xP~&;bpxC4xx?=-_z5j9fIPq?hxD2?jYWR4Rw~GdyvQO!CY5K z>R@JEUSV#=#WWW)t_nV7bTe^aU-F_bFcP{x3*nl7Zz8nwE=;J~(~v^aE^~u>OV%Coj7BR~)R&PYHR=#TupPE5D2#-Y{hM z+xTlH#iDshA?Y^FWQbKi7^=jppT-4a70DYMG+TM&H#T0eD(0RSk6C`x$#nyFVGUf2 zTQKW8KVOAu-pC~d+Rq%i6wFUOvHm4I%)E_*XVTr|C z@H%E$kk(?If+kS<$CB0E5RA_D|+*{=~m|!oS%X!8AOTK$NBXoWsdJUH+%j&PnqKnGhp#OXPM*Q=9D|# z|Dy}^1BVmFA2{7G&*@LH|AD$M{%(1^vw^u(bc5zMlN{+_V?j3I_|0o9QyQh6)E1K^ zR#S~VL$sZ&wqLdFTs1GR&L8#UFeNu4K<#Xn{RGPHGQ-;Xc+(U%OWXPQBwqAfv>%$| znfreppKdk2&A4Q~xGj}tly@gJPCWiEX;tOkcwn<6)B0AcI_>dzH^`{xxyuu4Tw!|A zNT|sk33*~OtT5@M7BA3&zu1qDj=$gZNN5qlG?yWb7q+mhl-Kf-elZlIp`W{El%!N} zZ!I1CMu%Iu8c+AbDFP`vcPZb%F zclW9pacM$?=l0*$F?mifD6TfXd`QiUC*-0pAJRw^dEi4>Fr;yL3uC>sLbUve6Y?*b z5M^L<@(v#)f4`X_O#wnOw(A%X?VNBwTYZD}HgGN*<9Y{$IkSlIK5b z45Rr^yW?uLoe9h?hK^lg^PIoN(1lMrl6WP}>2EQ0{v5J@)zOM%v;PxUK}P38`PDLd zvVqDwOrezsO6%JAV%FoL$^1PN{yo3aIE7J@m!cBNLb7p+#GMCbswCqSds4~eUH+1B z3Ij==^R+&C*+v~+Gd}9jCIii z6aE8pGE(}B8)<2uC5mSmw-z3fGp1GE2CLR~&^V+>s%zhc1&X9Dwp(BU$mA;*cGm z5!GE5vjUgEL!cy`q8(*ukM|pF`ezBJBmJ= zYf2uz_V{g%z4mbIwdYqEdr8+o>UI{kc+_9gQ;^%@fpz8lvDd2D*vsxPyviz6lCc*r z(1E|$FV=tlHG2_D5Tf}l=8y%w2v};VVev_#SG7QE1&V9fh7!GpOi?yP$3gG|hJF-b zEbMv43g)jnwkp6i&{^Q!ylNg>Y)5i#KjHTgQiAf-`fu*hZo;X_{H+uIt-n$yfw6i? z_K_I#AkW~Ool0^ia~?SBFaG{t=H3N5s_RS>t*2C~Dyd2@^x&b=1CT%x=4Fg{*nor) zAQ4l@QDSUKNX5eliJX#*aoUNTWIDn)ZPB=ch~2TAc#UC_xxwk&j(b*5w|l0iZ)R@K z+^UE~a+&F|yFJ~PyXM|Y5Lt0+&ANTR@89QDr2><*r`H@UojQ+w_St9efB*Y`|DQIq zU4c4pGAxq<00XZ0DqLIu0K27_Va{R2cP04Xyz8HpKsYRx(F(ARZ&QQ3ffnCY} zK$wW&MSux@;QhixrM=1NaPcqLY)ipt;hm?Zi#H^K8`1#dlN8)+nhh}S&5g?kaK}+v zz>Pb-rKWT~tDvru=EX{8BWNbWIDgI8OO;y3?*A0ybqs0LRZ z#H57TxvkhO5SxG*PZyieiotO0$dK!KIyIR{@1Y`1A5^~heg}22W!?@zOdr)BvrDT{ zSteI-;#%c97}@=a;Qq9c_1&E>xHmT-E#{8hC5GRo<|~}lppj+M28j$7x4BmAvJVo~ zTZeNuKt>ANG0#RR&cT7z7_7(4b7eJ_i(uU=QRL>I7z3E{9v$pEhS=PiSbPboV2mls zsPW7uN1-06INe5Bf)g7GmGyW!&FBlJrboomA9$ir+5BT{j7$H9T||h2bz=b(D%Jl3 zvBX1o7qA37;(h_D%xrKvF#QFaZQ0$fcyXIrIu1`4uS*2irNPlBUv7I)Qk&WS$Z{UstDmF?ch!xX%wr0u=s>oY&rG-B6H744q$v_)6_LH@x0igj7 zLg_H|QKtMN>ejrH4hcpGPy4hSIVL#z3=>AV0v#)^u`0JuaS{3Q&h6d?e0 zJITLJAD zR;1ou`V93&B#bN!%ES{!Jc(e)0LUL1fev-R-`i`{iU*FuHD>q>49kw3MNQUAdij#J zXZvWB--0`4i=Kc5Wg~-pKiP;nhxqE2Ju#OL{35dE;- zX*U4sa@m*`eQb!sx%GvBWDTSN7SLd7RFp+z{Bu}wqoU?rm`%DyQPb%Swiu>v>n%@k zUdpz?%p+yK5%<=>0P`{AT3}T7A=iOrwx}y^qXkC!0WJf%Mtz7u=(a~^k2$UA?uP(V zPh$1$M(ZqF34{}tkZbb~8r>f;;;bXX5sX^n5#z=a1eL}}b8|DsMGfPV&GWn4o;{7+ zD=dnPVeyg3@X?44Pc-}-96WJ4egeSt8D;>AqG%({TtFoB_W@S$-yC@q0pYLu>>=BY z94?H>ZVS||a=N4ndQQYuMxmbAvj}(SjgKiS{0fJz%AZ_d3Z-?R9>zxGL!@H-f#7zBw>?Y9`Q_3^dLbub6l| zQM_WZJ6XKqTICX3-Xk^caefpkId|sV zmnY*_TBk#66TYV%s0va%;#}ZwgHV3jk5p{8r7|$87$#^A}$?72l zw|){PC&m(rm}5{yW{Zjr(Sm^^4Zy~46p_t5NZt0h(~Q}U`jMB7rUSBBF^Len9jZ^d z2_gQuDRf{|G+XKHZ}Hl{gb~!%d(BAdP((NQI<-CMNAZrCugvhVYqsVJGa%gj2W<0h zOczGA&eb~cAe}`NF4Z1mJrw-$ngk{4QTaiTbc<6+t~I!oX|uCW>qgNyM=}!8;glll z)Uvz5sjBk7qRiay;3)zs;u(&-{QSA+rvpo;3a0}#Z+_|8z>iP8ed^sE$p?4Otb8=N z^3fZ`m9_so z9~Y8UjI*97+5eMWH;R`cp8BcFr>^WwE?YyFnWDAV3XwCQa0Aj8RMlP;EWNgL z=VCv{zPCNyYI;XAJ8Xh-lPL#+l_^b4)LR*7c~a;^&(GRZj@ zUyt_3K+Z+(KBB6`f5X#au`lLx9MEwO<5IO=%$t1dV!@l+uhm`q!rKU#+>)$qxlvp; z>6wg99+}L$`0!Ngm7+KHB#IlyTW^Hw-hB32Nn*u=iO_=y--8P&M3Vvef6(%bRnuv$ zXNJDk>|4MnddP{sqjW+xS$!~5tX6TBq@SSdJUOL5saNXnau295n1Z=! z>75C!NQPD*_rb)b@z#&jBxdTr;>MZcjmhGT<35;nqGY5)a%6*S!9>@`mW2#o>E?Z9T3`b6*mo3t~y0{(BMwFnjc7cBpa3+ zy^*#ort-E@`VZ1@J0?>at!U-eG>hbe)|ew|{+I?ViKedqF#7JumHre#lH?ANr%n?#eWU(l=8B5aY6FE5e3<@;&bQb zOQ~4G42J!OFYwawuY4K#0dC|LPSn0KGLyR`nY)DN{(|xNd3YAj1~-ni%?1iy-hOU7 zh{VA1nLyX~Yp*wT{rl1BrmpE#T?tQ@Lg1*~+)S{i;aVEgV?(P80DKcrY4*s}D!4oh zc5t7#D`P_l`K-@@jACY!EKjIJHC+yCk<}-o+qMumEX2Q{t*R~9XKs*yfq7G#6)2BO z_Wb{0Q>2ncLKb8&E#OuFNML2adV)}6}I6_V{rVaHCMvlh@!EZEx zd)+mRL{S53&a@y4TT8E+1z=ZCAW#DsWHT`(LooQ`$A?D;2ZmOTLW zs)OX`rvoby6n>@{!Qg8X!CJV>U24A2oG7fGDx6wBQ@cJ{yFO8~Arab`@NJyU^(%NU zQSkm-Gr4ui+&bj4WsG+?Dk7Z2g!}yFghv-{>*FXt29o}?rT9bvH>>fXN_xO_I4dHau5 z>QEH}(Hy_+enoQ?wuYt)=Nj1H&$6ofGnnJcZSpoQ%6Inxk|uJ;A;^%t(S!YdMD&Te z&C}&ArVBA^>&L&j8C^U#hD+JyZsPcpBe52BcVXqrKu-olUkotuy0JPV=As{0^AG1E zi){c$p=c2M@Zm6W*fO$R5u?~4hb?pCmK-k8N+s^xB1r7Yjukc(X-m+In?z|J?nK}0 zpo}Ymncs(e<_N`uw077@RxCr(7Sjy5ocQNQ5DVoQcy`8lzaJ9knDSvb(H}Wsgu0Nd z?#SW}1UEPcX(%&Bf@lzjTnP;Xa5NQ8jS<7D6X0HO@VS<)Ymo$7<9Xupanbo9ith`mAa(Lf9z8IxD^ z^yqIp2Ii;HkEe(gV-ZP%8yN3v~LS@l^SV&A-&ss=q*G&0>M2N;f9z$XW&^X{0hg{v&TX1CnZR)@| zC>f{FGcNEKyAQ!CUC=b)Kt<%GguvkVz4HAkg<3jR$>G2Nr}zT9v-Ra+Cjt@l9X|0KQl zwNJJ8Qs^Mg$$NF+F#b`3p!kFNM9nT)VgQ>>aqCsLC!a*xTVQLC=cJ&mBE zT_L=X+=v)XOn-nY2DGqa9{=@cU4=gDs`Ob``9H<1OXp4Rf7WULlAU&s`4#(uHNSY= zdtdWw*Od3wy^vYUcD{h+qMv>I6nLryF_xAOlf1|o1OD-g4u;K zX%yk{K;xTvDyXO6O2&XYih>94X05mNKpi59_m9M9GI+6<`fj?|^b6 zjz|i9i1!im4-8{%X1-g5+(Q5idB3rwA4N%NkGw~SPITlUd`ilN3>)Ytz@4y-P+nSd_YH)R5<>)hH`IA@>56UwSeP24fX zc>gm_++}LH1ZC6HlSL5l1$H5gg_R(nrsIdPD_uYF{L%AoZG2h!PXRX8W` zZ!F#P%1}%9yV+)f&iG3-biOtfu(e@`FKprqjm4&XCbTLUTBR0kGhN{InvS<)(={E_ zp^k*FW8s*ZQ=krYVG1xBn}P3e#ppmg@iD(v=YbDtj93FmJ~OOTtjGJFVT$FUQIJ}~ z@y5XtGa}9ILqQxXiC;$FaN6J>!h94;&-!3VN&xJCz3 zpAuYk0F|Z*u#7$=u%?hN*BMLeKTQC2sREK=M4QM0r(b42(%wzvRpE`_>X`V#AFRF7 z_e$a0YcCXjt3&tbEUR#8KOs!&EGh>qKyt$bu=Z|sesWjdDp?gu`jiAEOX0@Rt>ya%} z2sA)?-4rf~5Go73c*tB8PBHOXmJ-xi5LO_A#co^36;8$^&xPeWgTi6Lhf1e_+l z0aF1Jf!zxx6ao`U^{xmETzOW&ILA?ope=&Hpf#>-`QgBouGtlS)^AjNRaePBMfvVCtu_1DbY32naP7Jos7NNJyYDAEN;G0 zwmcDD4mHJ0$;xEO$}8UKl4jxpJ#p+Ew)*V>sJLrsViRt`XXLdk#ChpJb^oX#4XBXw z?!JKvD_&NRF~CCv|Jh1Vu>YH^iJv-95pC-;-@YnVDP*JF4XQ3IfU3=07ztGyk}EbD zP!;=o?E}nK?L(rROoGr@2C3&(fD^R8^`%b>ayGvmBjju*dj__(rb>MPt;~#mXpTfa8&e8XX=UHwG1!KU96uGIjhi2KiF}P4=3la!!YW4NX@TT$vg|d#{=gj{j6oYzZnFCssljly3yOG^$V*R-@ zlZEHL2InoVT(}ahV5H*?zvd+dLf8IpUgw%5 z_*0`&Hme(|$Y;4D8V00 zG4_$@4Ek|kZfKHhb4T%$U8#{JWE0GZ4FXs5NnBKkii)_rRCI`%!%%OCYNJ3@8zHDJ z!pHI(3N*TL-269q_lGCZi9294D&g)05&ci1!k{uk^cRi(zJY;yXdS520C(CCoK#Qs z?We8PAetq979JY-a$uP1oGiMIPgTc({#PO$ES_m=vjkxc?HGV*E-i5-@_DnyC?PH?TAELhh@1_(QkRj3KEM& z^9cNNM?Rsox%yzHip+!vBhC7?pP|)S5qF$6X)c?@+Weo}jot5o@*04x z5ysq(gDjn~StTe}fqVAGEZ^9ERITU`8J;>4(~LM`eG%k(5buuWPT1El^MjmerD*S6 z#|ADX?8H=|?PK*z9HC`sAYE|6({Rf#s)VKo&UV$azTnHjbHRzOpXuR$(*$rHJR?0Z zhJ!TmifPm|qo+uG#7>uKZu@uvOAww>+M_LPW%x4VPTfLcx^TQJjYU0~-#VdW3p`K3H(y zg}HVaydtIyd;n33)Op611~$!#Q#8OPM_YyNvMH3`CH~+T+z&i)AQXF^F%WX`zjGk^ z(HPin2l8KR(Su*Vv>(Q;;ga#dosgqs+2oNoYiEjAz!?O#_cNvS$Oa>*%GR$hg7jx7FFA7XNz|)P~wQ%<^ciB7%NgxZAOd@%X zR#W5|^1w4J5}rX4bGS?wLL4y;SjjJ3Y1eN15bfZ0(C00^U6O;m!r&cB$YWp^@Rt0t zGRLb7HsnnNDs#hIWt%&UpX_Ww)Fatq(piCg+B-cBJ8EU|M0+Q&1GIAr3L}s&j6gv& z2i8tx26Dg*ko34&hM}4N!yOSlr&6V7+4~4*RjaS*x5C* z#`{nAA*-|@nD{j9n@qcT%e+bP0y=-78xGxk1fP*cC=$OB&?Q-vUFt>38VB3J5aI8{RJ}}vl(>+Vq!b`<}T8;w4MEYld+l8^Z{HUanLQk5JFBFWgJ-k zA@hoW%*xFFJioQI8Lz89`9$NulMRuk?UB|ePCiMZ=_E5Sv^IhrK+1^$&{g1wVn_Q% z2O%~B$I>}G6l>Pn0X)W+(PBM-zdOhA+rd)zE6&opkN`l;w(lpY4FbsC19)X-5`@k}yVWP? zVrYIs+Q>vOu&EMjWGn-?HT;6*>I;w!z8uK;#db{0l5(N&%1OplyjNV#Z>Z3}!ISIw zy1&GI(OHsC;Grr7J=E1@C$1^#oo{JvCg{Kl8RI0v!luC!Ct?03*2ubzAEycujKGbV zHp8uueeoH9U^ObwLacdsI~6p(k!PFuZ4iAD>_Tt}I{zgjhfx|`dcVyEh|#&_*KW5w zgof8-Z@5?Pr}B-K%jp(-)63IBPGKm`?S7m7U~99W9HZ@q<@a6tT9rnlYqK{xM->1o zq0e@8{xF-Zj50ogQC{72s4C&BTDT}<7Ar{kHV)DtwEL`r9Mj}p=DV)xMW!%$e1&4e0~ zp$6S%5&7m@FYUds_u~HPQ1zRKt}Lga-S?WNmp_yYJ(Tc0B>i|5c=!_*^i&8Qmq+@0 zMovp;28jD)g%^jU&!Ej3(Sb%cGx-GV7>`7%IL9x{wz$iubH_zb{5ZI{d$G6|$l?wT zv25ws0X_Ma5$n_GExVKB^)9|$kmD`C9d>z_-S)Y>Roq2x``q5mpxR2xzq(&OOcvFC zyu#e@D%m7{NwyUoYqZyHzkJx2CFK^=7er9c%}&&Zm=nI9QwnC&Rz7rrf=J4`DIyuf zui7Msr#6Zb`e0M4E%`0&IF@2n8ZpDJz(BOjZHZ-2U8P7xUjt{$tGd24X{=q3NYlLKEqZn;AABhin%iD%@Rpr7h45xL?9BTo|m>=*aqM;C0<#PO`Wta z>deLtS?Vsd%hfr*;)@T^{+~8y(6PXk9Qu-;p6Ba%S?|Sa?fC|bOAZJnm^o)@J$os$ zQ0c;<_6B-3acDUBw#f4PaKCGt-aMG;s zj<6rdYjTM#x|!}u8Otk=djL8$0NlYTn?EAR>gS8Qlc|gn*vsm=Te2Udjl!b-%=}T47^8)sKI3`!v9{2DRNhjkf&e z;HsTRL+%Z%?4wgnN2q-_p7 zi;vK4A|OaP=O1_90$JZk`9S`K{K@`gxMq9@>HE@&mYL$!Q-yC-CW5Q)O6&i2sMhga z{{!wHI3Gx-_1Ryw_@8@R4(>jKAj2w!49l5)(sv1$x51?w5yIvm-FVQp>MleDGRunW z{h+4V3+w~(G_)6#Y4*xCg&PPx807CYTbBnC6g6@lbsHM zy@C&ANL#~G?g+M@G=*}#jlV2%c^lOf;#2+jH#ZEdY_f7J#P}-Rj84!nTpF{5vXgI~ z!@KV>Wrz;$hQZMPkj#iES-m`Mufwssd+mP50IfgP(%M4|Xz`TYfR;R_jE2fQsLb{R zO23U>OHbgTAhhgpW{1@0p$$a8!H%SLfPHY%;1e417oVGa?Ds$aUfE)(-b<_$e;4Az{0zf(pB6mj9g{CPt z(kfmL)+qqgeu841@L>HMelw+XPx6}3>vu)+>;VB2LWvM_I+CZZz4Vs_F7I*$k1W`a ze{;jY$u{>4ezL)1*5pTN;ipPzv+O{vv&w(>q@YJPD0N~RY1r;(|FUcxXVH!KBg1F=E<1QF`g z=x39*_2Uc8jhKMv*#&J2&3kX*H5#3~7Or{s(}=rBlu~%T z`Q2GwZ{GV}`s?j|z$HZbfJ=xa@*8q@JM$0_Y=P(xsw6C~k!%Kd%7;FdO)xmw+6*11 zO)&TjoiRl@FJA9Q>CX=M5nBm(l#Xi37ZYhh;pKUHcxV8UD8Gm|AUuSAn`NPDq?60h z;n5*Dehw(32R@3rAagth?cxx^e!<8}JA+iWeo%s<@0Nnh5j%irI!Nei~Xi8!lBM%UoPG#C?9pi;L^sZ#nDJNdQxb zb6g)k%bLKZ1~c{Q2EPhYKo)(dwJ^@zMGPzSYw65S%ZPHyDG6fz$;QYt;$o|tTnu1< zWgO$fr(%(M3>XSp!VU5z!NGpd*Dcq6q%%jzC0K{4T z48B&;Yr2xvB-P@CW@BhlxfljEGPNjud^tS4{w{~8RSl8PO*Q(WS4JjV;jUU#GrkJ~ zmBP{sdGI#~hR53xC}8}#gsvCpO^cuoRP$qY;J!HIHn2`@=(h>V+}-R4Qfz}HS;g6;$r(&EF~bZY zzw#agnuKp)iy!ktRAQo+Y17NJD0R)YNE@^^3+o$1#_RYe)Tgijl|5}{ZO{1IVP&Pl z1tGKvjD^J}7&F@zqSMwSpb1v6+mQ3yDiU$2>2pm;?Z3(GYLhEEd9D=GZ{ijvwp z*dbh}=)1Ik%`3Is34&b3qa=4f=PsKxo)oi?&7_*=$TmeVX^kaxW1Z6sWpH*NGm`{k<8HQkD^l!Q}>+wvLy}T06H-d6Ewbj{( z_nQ$kCr!MH*?kWR9`bD9o`Kl2LiRyiMZA#mp5Uc4=_-{nsgkJCep@pTozV(tU7qlj zD*~SHH8!qlwfLX=j2uKTEu#oRNXt5d#_FPI#R-+U6K);Q%ndm^AR)brO4(sdRF!v9 z4+z+R%C*12i0c~il=FlpJU<4<0c@`1B*F<7+CGHqL{CpHzv5vO6h1hZKkkH0cwRA0 z=0K7@I^mpMRQ9{Mv*E&t$1dbdIKk~>K}SN#aOIrCnOFQ?u!x%H;{PuGpI>pWaQ=39 zk>i{GTKAM|h4VYkTK9KxEp1@fD*n$YHH!Gw6i@=vU9HPFs!bUOu4l?PIGqhs0Ak=Q zpBmwqmD)blQl}U4b0Il#z9R;NXdEFU*((Pe$!yfLjoMg1R~z)T zPEqJowl3As=@rw3{HiEk;_|+7yQOkA-l9v~t}OZs;x6|Q@QYn;y#@?)mpj{&GA9r|6Ru6}BWMMLw|rx@ zgLBBkW(|3}9|Pd<-eZO<6y2cU8l`3wo+JQvAo`O2G|y0j<)SOuf6z^8gBgn~l2vIX zjJem~p8u0*vtWvP;aVCaPsB(1G=yox@9^m-m3<3c)iG$1rY3{iISOkccuWz+z=z0W zS;dYx9uXOp&V;Hs4pOSKgugdX5WH@IBUqRWESW03Quy798zp70xhGp+&6{dV zmN#5kJ6+NQBhWx78CX2!nfk(aec-KL*){38*q#h79dG?0SP1`}f}(SSlYOrqhXr)L zfulHS3n`I&_4Bi3c*ZV1vtj!^M=l>hzXcfyWP1+etTcLFeH1oFbu;Zk5S zxq2&r^Lf$z{F%qIW0m92R{3{qb^qBGC-!ORi%=rys~HFB&f}l#u06jq+T0JJ#E60% zA?6nX%Frln^XX?c+}}S6F$Y#o@mCXwSRi3tkA}=Wf?b-&H?*z{Sb>=VSf=NUUuqb-? zTLY7YS2lj<>1#XQDSdnIrL`BzGE?DOLy}V^kEX{62?=mo*2vyJqhvDk&m3P^I zOwQNwMZhTZ^@gVNdeOs|2d0Z2w#SHd3EX#H4P_PNTIQAvyJ54)5V>vyONvGus}aJr zJU~EJ%CC+^xFcmGdLB}K9#DRe>>yAqAk}7vQ85Sgo)CZ)w{v{n;@c%2*i{By-pV_^ zQg6jCn_XrAS=QN)e{*A(a1-rxX3_?Ud*Xr|*QddG6*6D99K#rc$s3TGAs3olFM_AG zGXDYt-|sv-5{r&#kfn9RM*41UL3j4!-`qISg+ZtFCL=F{U~#rU*3ySgN1_+UJ|N;Q z??FzDj7=qY-t2;#g<0bvG~-E_e${{w>aN}3c>w6T)%l z^>klR&kA`2{4YO3$5nk%99OCavwAqu3>UZHlNg1{-a$ zJfA5r;z&fD()%um8?yC2lJG=58NKgD?}OO1oM#9QIyqU)PcPw)wnPxENncd*0u4%1 zg|wK#Y5=5!aKHU05sk|ueVXza*KOU$5l8pwSfd8Dq*mRd?~EGsns>7o*P;sa;`_d` z4}9Sn-;$(n$!xG5Vo>y6-cs~lo?q|1WT^g1`E+Pq!naQGMI;vQqPXEOYHW|1$Is#v zrY#Z#8;3^Z=P(O!#|a^pEQtL4OL$uDcK)g)*Smhsft`96OZDSPb7M8!#9QMoJeXU{ zk)%t6_?rjtjt^hPVd|PZl8!ds`Gg~1a)Hej#y$Z0{=+~t~yx-fa-iR0CiN46_5C|MFo~R3^~e1NU`wuR-|TgU{DP zghDYVi1Hq6zD-M(uE#U|Xa(K@r7>-U{B7(~DUQ=^7nEu}T{_6Sl#Fj6_HwuPUou8;C_Nsz(?7A~)Wa{VF0()B=5)8&%PU=~wP3O`MmxH-U5|5<+ULOoEL*JTBTMwZv5(gWGM z!5n{O@nFeVEW6e8R4Y*@bxAha$`TPJA*B?f*FXY*JuB@NgRr=(+eNWAQ%+g;d8GsL z4B>>_h{s+XZPvvn>@+g)jBOr^tZMI!d}jZSU2UtZ2psG&G3}jWkLfB$2ac7D#*Rx; zxq3yZvP^uU-*|z2xC6}r6Jx~3xKX%h;tP}27e>Ch7_yq$l~<~-y07fG>V0F&HP73* z2?Wh(J@@Fup~)SWYZ*o3;uE(a$XU8@YMBtG)cN9Q2a4X-#irely<_2gRM)@GuH{HW3X$Uo7QMLrMrp<5ii?NGcfVg)hMt8V?Y?vSCY`_2$qv+| zxfn-t<1xEJ5A113aK#z|I&wJ9d_5|*3`iFTl&On>pk%erH((oG`HgQpMLI|dN9uKz ziyxNQBMqi|c{^(|r9zU<%+Pyt;Z)C3+5^XFU@;LC>g%AM_Kko$mzphP)_4vT3T{f0EkiZtjCAmHGRSWbgYvqM|N9n=^Om0B7;`VN&o zR&qoj5tX+BBnH}K2IUf0XYr2GB7ClzyBh9lxf5mZAo^J3f|9Ze0#2AE>|li= zU?Ap%Fp509Od6%LrtOIEASvHgm5yb*Hiij@$6)9TXolv^>HLMy?ezR=yTe)kzQg|^ zUDPIvFSMWk@>uXaoa{P(b}X236!3T_bjiV4PtI*mULb!g_tr8;aOs%u7e&x|T^N{L zfAPe{s8dr;l@Cmpu0><;9T!?J z7r$D1ao=<(BHwtSl|fL>e+eh7XL8-e;}@5qij0yU2E!9Ym&z`bU932NU@Y&w0(iq* z+I(U2#VykXRbzqo5Lu<>QvHSci>s#dmyW5Pywq_4F^+4-g122x=c*5j>!*wHLE%|X z#e2c<@2;6HteXxlAItk|N7;M6{PVeEUR<6iJ-=@(Z`R@cdf5b z#@z1}Et-g5Y#0m8dU9|3{m$^6@}P6sWZ7*8e(o$QaITwNdE0@XJ2fku%O>*fIPh}| zONrAz<0wixiY7K+cPzb=!-B{3f?*WwxZ}XjofSj@#$DTK z?R7_;c{-$XR-) zuE4p4or#}2^^dxoh2yL4IQV<(kjLTld_DL=aQt)E9q_K~a5_sSitjl1d#l&wa0X@^ z#YqQd=5I^B1t~+Y@sp}?|^HbN| zi3FY1<6oTIbqC*5jfrdyVZ(LDk~=xY&c=zrWb}>$2e%q6=xIT}`n^@G%2VWAKY8Yk13!1_{m$Zv^2G9Ow;edTRc~njF@3~bwZuYKji9sdBf3EQT!>7+; zl|XK}{<-{oKe4N^{f%+JUs6Zh=Kc~pNZlP8@*+o_k2y8x0}jmTcpB7Y}vj?HV&fJXW zV7gDKUPvNige5XYp+v?gLhFk0UxNQq$pW-UvH+Dy7NByN8WzsKxkoaHQIKnh=Y(sD zpEz;?#`7wT&gm2VCmHus<>4mNLDL>cW{-}-{s&385!X$XF~qDQWY#O9s8)orV05sM z!)k2EzpGI<(#8E)pT>dRxWgjaN!oLhEZZzE8;lxskU?NJTlnTK2boP6NoMZ2rV4Cb*E4*?Fw9FqK5ond4KzC-7(29G`C!6uBv3qYU?xzP z4Ak8yC`*)YpDtkf&Dmv5U+bLMl=LhHv*=rt%&orRE1u~5nXmSi+u^IB$}~OkrP4fbjS0|<&QbHi2kYR0B#?gcZ5abw)u!Pv9R zfY&#OIC7`@j-m0+ep|a!1^SrkWrgY_O)5zvIZ{Ovk6n8F!sC;Vz5e*+#}g%Wi9lV# zQ+JQ%e;!YpibN=Op-^-}^yAFdT&NihRA~DUd>WN)8JqrTuFjjhfeD-^a5y|X7*F|B z9xbp=h$F}>!YMamo{{5K*{A`04KKB>cQN3*qCcIa`Bv|L! z)T}o7B!Wo8`pB8BRJY4O?nnuowRdfA$pR{(a0e5EX9>3%TlYGncE}gd2Fe%Q!qt$0 z6>W5(>CBPO^4Pj>+2V!R5##I<{9v2hckT7 z6J&Q~L!5KhK_b13ZL153Q9bM3#u|mb1^r?JZEtsNmv@7EC`bIR$uDPYL%B~ZHZEDu z9n4bFYHPN;XfepMCulh&TNk3LM;!(YW%Rm)NVUEy$JXv#%k6Q<*X1*x@S)Zkqt@=@ z8!%0*^R67-*$K)3wZRndAba~0Tf){_ExA|!=5{%eWY%M}HR_1Dq&FkRJFVX#UzMY? z2gbnm_5k^UhIH^A?hYAdiN}lKanM0rZOq+^&j+{USy@{uZ7)hEEH^yUw zMf{X*< ziM5iYc6{@!zu@KObInN994@{TcqM>{>!1rZOfFV_Dpv-6Fm!e3kI&9D?|Cm+2&+os z>2ddsKvU0DBG?Au&%~jNe)`FUCPov1rDLtPT!r3BICIPt z*CmVVkOjURT84>|^LuB4wGghq`OM79mgLHop9WiQ1S!s1JvA~DY)l3l@e-uaSi0K@ zEn@MbP8{by>ijTNcK*3>&tK&RZiJRjjwB@K&qwNz!9_m4v(gcSv3j1jT(0j>UV!C#RFD^25kgMF>+;I^ zRvN*V&)+J@H%njFMLiO=Xr3P zMo@C?<#IPigoULpt3NzZ@)|H3k2yExJZS0>DAa}?L12si28JGiD?|$Z6M!_3QvmL6 zT)-0InBxjS>$HNGx4gJzBAy7;Odk4apeEs|Sx6p{+z|4JV)OfH7%ci+x<#LJ{!ABK zYN_;7*uk;`+JO8J;N;*aLM@NgNZ}_Xk*eV%at3Z<^dmnrtm#fAmbo*SPYd(FP6;Nn z{jddsBJ8thEfis9rx*r)>9l0N`Qq5K=%6R@Pz?XNqW~D2V94mAMs`u-)Z@uOW5Uz8 zkfb(gm8XD&@77P*NJEQ{r1td)p6+tiLBaraw@K<@6XEh3vG4MbpOjKt6IM~)8PXw8Gcn>8|Y6?9F?ppCp6$fgQzi^NqlqaM4VB}l$$In zJ%PlTB#t6|N5LA2g^+sfiMU@EPBGU#kOzxNhXZ*~HwCMO{rF)JhBL9glUfWkMaqSL zXV2B3y5+_~FB&mz2TE$KEKaRZ%8%tA28u*?DIe@8P;QBZbgwPQ>XXm%tt$hLaPU3$q2#A8>A4_uhWyIp1 z2`)(nmrV9d2b;#)W^;qd+;Ryok99FWG}guyb^T;OiG^V1gv&*xmlnT5OO;UNWZ&yg zUw-;$q59eKir4*@{Zm_#F<&qUk%OR6VYKPX$AsA`!m zYk99c@DtYczQ0;r3%A?X_kU~u5BL15fkeZupD$_sfEOT+{Q5^QMV zIq-@ui#N_vPi~h>>hW2nRCJ>(^_btS9O}_R^SiplfD1;`dGm`8>dIYUDVP8QVZ@0? zXz1I_bUKck|L_n0@a6eJvHZ1L$aKy#8f|30nkLbGgY;7+9#fiP5GtH}QcYwY-X<^` zo?mP)2}5PtBh!MK)j+J}W_D4V>r|@PCT&&~YiG4%Xi};O*7L9?8;K2oj^`V-vk=AP zC8qM@Py6bwc&2@gH++>dzGX?@vdIx%!u8d&zJl3Y z|Mi0E>D=o7Tu}ag<#nVzuG$0=w~~46LMj8|2f2akA+yx7>ydTWHcUq#D0Nmc zPhw~bv)yg^psMz|r)<)l^emaJs=4l2G%@m1k1j|xK@8u)FXQ>#b?lg)K)@fzYRg72 zrGft$5Hb}2TN7}yK4AxcJi&ndmS`T+Q~^4OrA&}~!e|J{n>^cFx?G5alL__!RXe!C z;K_ZAR)r6A4H+<&1z;m$2TwD4GS^hCG;3$^+WDmfJ=!%H52pbrLmrHwm;jgd0*}6o zT`Ft?Kv8$VN#iTLJIvizx%(P+>B2sZ_)K|nk6>wu2}nQx5{43-lNRuBwU zeB@g^xhvs|0N^G!;1~Sk^-$GxZq*GeE{BrA8Y&ASikikt%?&i80*gi**yZclhIga> z7&R*teY&(4aRnJ>Y5jUtH~Anpq|7UbQT})Qi)lEd=AM!nPi4|m`7<3pucC?yN)!f$ z`zcW{On}6=gm9(|iXuFs^j&1oT04)v#NBc3C@s}?akqxMHtxu@3lpYNh;ivvLnx!i zHp?7WgTYp6FLOr?rjh_y<{-a^YeaN&-@y)j4s#Hf$LYBpbOzd;F!8{0TryU0$K!L> z-7axCH{*tLIpPX9bH~n16ins9FyOYwkQp0 z0&fm$3D`9hUs`-&@ia_E@^1T9qQ1xRw%Xe{9%s|-;96+D;XzYYk#H2xmX^U#W45>y zmJ+vpVU(%!J8S34ozA854e8q04)?b&9<6XX_)oq7QJec?M-Wfs{`IlY00TCtkA>pG zwa*D%EPve^oQv`6fi9N6Uc@5iZ;l2XH-2-qT>QHC`S#{%d61~_njc{goKep{|K5NW zh)}=lg?={}eOM2gCbbVsyOjv~>W(ZzC9jcZHfs3y8A zx>Sy8@qNqWs18R}ag`e+^Y4bkP;uZpg~esy%E)+puc zQNH1DlOes;nxm_5f6Zan!Cs7b#)dvyjec)@%o%NpHm`9-*K7v=9(@2$tc$MI)}x=- zNsBf}-Rn{J2D2?2<=RGEd(gc0V04qVDf*E1P;|4lIohJNM7N->EzzymZ;fulep_@q z_S>NeZ=HXn4Jn)Y`r*uth2;|0_Z}NL! zatXp4zDD3C5EDP;-_aRu-!(jlEJs(1Q~97(_>LZVFy%K+M~=W2PTmUS-5(PN?o?^! zl^(7Qsepc&OkXOfpQ!rs^fOeKCoN}fDZf<@l*0TV+e`fF0$3*GPf*9IE}uFzDX+k)tPI zZPA$mH<|MAIOPUAcr^!XA`&UTP9)0B3Pwuq;C1Qhfr-IO$Ah@nF*(3=B#lLfR0 zxAMH;~ZtxpNS@-Uu(539m?o zS4@3rI{e^Fcv~{O?dRc#al@BCJ}|ZJx^Km8x1;b82yC&X2|7va3Bk7q2cNXE+eXrq zg|SAp86!!B=Z8PWa=2TcxtZexdfg7Tx)OxJrs$c7?gHfn0m-9`4j8fIDf%ei?dkN< zH%EKqh>X4o4f^OaxS_TD5ljnT+caFB#} zW~2{A&|@(TAtsEHG84|k1`%_DUjg|JxFohE?mr{Parj~OL!<+c#H)vJQ&F}O&&;pu zsx5^-{EzA}#JcIjDjbS2hwQ3xrkiX)e-JF62~;No)l<#WfweP%hmwJZrUNYrPm9)s za@kq-6}V$(*)5j08x|0o!39KJbeksa{$T)MrRM+WY0lD>gC}5%-aYY^^es**l<-U&=1V26aYTuBtL5}K=p z&+%PYj*#s+attxt*gl|$W`!ZP*uq?@I`kyW6q$o>h7|_vj!-w-!QZr8FTx4;MZ~+a zzQM0T#laNInes{xz_lQPek8F?Tp{MlKsv6GBO0fr+%)ivSQjXp>r&iXkAL040<*-{!|lB`QIKODxjm;|v9h047!nWpcg^2fAkEBPi33 zBm*mE0!_(4({x}>!n5WcUq;E{Ct*UnF2K+rGZMpQIv}||{9Ayj-xLVjS7jr4k163K z{xES6aDJ=_x=F+tp`ykBLIugjYHrAm0fM^GAN#RyP>=v5wW>oE`wA(vohTv%`+ptK zHy14c|Bj5-*=m-SO1Rg)Y^WV!Z*+Mszg94#jfN9Nw|oqeheMF9Pd9;%K8j%tqOLh| z2s2C&mL)L8gM9{K7TpxMOopNrf)O(xc9S?ca~${&2717H#Gp(dy2Wr>(y<{b0(bB4 zdj^lt(ofoHA$6(Jkfsx1DrBi3Q@8Gkkl7cCQV0Q@0E=V67h;Vb5~(FUI?>g`w!#_^ z-Ylnw<0mM1kKYxj1?;)oL7*nWgzs*pU|XWt8@{@!gVVnHYhIeiZ3d?w+=QKXlK}br zqc9W&iaEkOyCyvgEr9aOA2>lJ9SjF3N`qLRqoble@{7&#Eq?#}Zhz~jEP$N6(ye;= zjJg>ZPGb66j~fwm22f8w+HY={D6)yoT&9OTxB+ObG%rIlz(631`GD1G@a9u^B#nw; zErOLui2j~C* zJxzQpVn6D#nP!<5s0S(J$=DzQcU#K8nDdxN#YRTpl=-HefIBXrLwdXl0I2wLDQs{= zDZsGc3S~dP%w&uJsfbrWDuB3D9%+os=im&HtFO8`5q2H`$js9Oz%&uF-H0WBCye;a zN~w}EX%B!z9=+L=U5c2kXpiC3XkLj~mh#F=WmQXCr~yc)`{4B4Blml-pdZCk1Nfgi zj~$@Xm;VX^YE@3T-aIiCn$CSdWX^l03)&ODcBqQ3=T^OP0y~J15V#9QmnF9fp-4aX z@C{@ht9|YHnNU+Q)HGXGIkTiGxuhvk)|3c0eN?nKv25#&s@kbtub!Q$TAQp|n^?B) z+6u_FmQt)-OtEtQ7BC_uu<#5^wE~=n`U#B2tmd!-*c@}egB<`fC!0GaB|Zk&z;2E6 zST;I`8?uT~&>*LaEReIr#g<)ocM-zaF~*LUmSzXD@S5FiUAa*&IZ9-w%>D2^G*c0i zCYp=fCs|2CQs_^i28|UNx=ln^(J4<^#xP!BKXh{6LaS%`&c<6J^=onKsNVz;I~fjp z40_OlwCDPE9BUd>pEZXJ8X!`CY8a|qpl*O9^uVB4DKuzkso4^#Ux#YVhl$Uv&!e@J z%msZ`7#dakGK(74vtcR<3|6}6S@0RU_cO^h^(=!IqjEp|$2G*FL)K1%^su*`ua_13 z47J0uy1-o!)kVNHgDKbDi*;R3AJ!r8Wz1yA2bs59XHXDc9;#?ANxUKNd=^I8BQd|R zd>V_F)Z6TbnLgz_C!UM#J_O2I5mt}q$1GVu?%xD!RaFK<}Qx^x!u@_dN;g?Ed1oEsn~R= zacs|xFw{aZ-U zIgbB1Xpb>;H!7CAUU|7PS+VA&^)I))*z%+3kDq$`sj=1@q4Jr~@}Gv5U)hihJ%9lX zR8FqHzGBv>f#clwWYNRsByl?E>)41Oa230nxYD12vqQ%&mND7 z!3?Nm;xk}npfj6+%z)G+EsP=8MeJGN889>ESBkI&7AtxQek}vNXZa?-K;`a3+DQNe zP!~~*T)LX0GVZ0LsFX+Ki7Qa5!Iu?LNd=Y$ZMMb-mDX#E}D}z0dhY)iI?aTfFo-n zi3n&kiTu%LNt<-Azfa%<3%vk1^%`{Xq6quc95LUEbiXjNiuWCZ*a|!@WRw80AHwT+#G*#`zQkj0*CFVXw!6K4kFf z4H3G(4MHY407GmDujp2&?X z`s?$b56P3?#=%@Cc9{RmGUq=SidXV}np**D_HnO`KDp+3XCRrkYiy@X|Cw-oGF*Rc zZz5cu2p^mdL=&EJI|vq5KjLh z@YAV06TnkWzl7G9ceT*aD%cb6I~oHiMtP7}NTh;05A1L4>DcjTTj!x2Deu9yXxpJw zu72K-oASoUd?+INC47_&dCDh?HtG>0%N`Kq8W%Lo11<;(J{5qb7WF8MqC*av2B9%P z=UXWFhxniSE9^j-g%(e?O>LPDtr^?%S7ocuja)0jL2d|a>bY(I+;?M9WM)xQa#2&F zwE4>Dm1948dgj61$p?2QHa_|j-@DHxiVu#rB0WSfJhl&spUSH5R`^}*FIUa%J)GQo zIMM!O;;EyFCy!k}uFV{OHhKKn#Idut9F8wKce(KMoU@fbC2g*At+#?w@vS_t;%v<9 zqQw)Ro$Q|6nRdjE#UP z(_{}0m~EuXW%m?Q*2*xcqUGRStj|TD;*Gni;KHC=G!-iejbP#vOvPl9Svfd+00Dco>pjbO03& zuofp8DJ-xd7MsH&>AeWH3_)qI`%n0vqsPKH?8haEV>j)Q|J`pJ0xDvPjN8EAU-sO%YS*(xlPxLYv0`U zR>yZbzI))EjmhH9>A-=6=fJ`_LP?PHNlV63VgZe{q|~D@w}A*233Ji0l{95lW=VXB zC7H5Y4`+SeT)d3u#a@_zEt~bGY|ONPuSdYwYmv9MXZ%Jz*01d@*Z7RhcDEqo7Ebl| z7NPICIhwK zfAmMY-dQ};*p_T;vzz&Tlw0spd}8lRZdDR?l|H0apuPK*ws+g6eS1HWbEMaOGyc|> z-uTjw;xn7tlbhOSm(^a2&B1qV+d}9yQ66bQFh-7kOahxo#y3CbLL%I7~{LeLDht;pZ z;mdpB>pNq~5iCO%m4swOpN|5b*@O(bWL`Q=G7zPsZFbL~qDbco%scs?^QY6fm$(F=7(SCtd9!;tN?bcH4{4J8WWESJE&e~$w_4lsCv?2{NaPm)RE&B`k~zPt2V43U5n!L9Jp z^5lKJ#CzlH5(QTQ_AjYd@s8iKv7n&(;?Q0)uE%& z0gd=EXGZc^yqkWEomFPU0@r-oF52je0Ti6&z^oy;1SC#afPv}Rdpx2fHMX&DtNHm$r00l5eledw*Zoj3q4 z@CVN|-*S2K3TJ}_3=cdLT#8&o*Mn8?7Apw9{P}aAA9vl#cLegk(fl!@nunLnIb3;# zh&6c2i(lnE_RlKUIezGW*!?HYhu!_C*4&6@xy_AZmuZ8bED$I%H2-p%a~Kf}R^2(0 zwmVlMe)%NgSDr-t@=L_8fJFHU9?oZ+FJsPY1vrPjxp^MKdDwOyjus;3zqg@CB4XYw zMlXE07{l0Z3Dk76XH&corb|B^In;)vRcF=LxE?6$f6!! z8M>J-0RDnNjS@1v>i*ur=Bp183A||($m`;e6Hx{nW?%3IYKP^3xSSc^#ylCKrnt}7 za>B%WBW*DA0Uo2V5LK!wx+;8kp*)~35pB~4ky#r_u$fAOu`2LxJvOVLMd=wO9|UuC zn&IPhs~clB!VD1FPGe}`or(__8iqOh5KWEc7~XS(xRl3B>QFhQ=174!Yz$a1j!Zoi zPR0gMiL^iEMe%{yAsW2|28V}Fj-FOBmk%*hw9DMR&)p5~{xf#{#A@8QVv@rXkv^jy z!lJ8|yZ}ZD&z!)^ z8^vc-Ua+;4yVLwb)D4`jL-GRST)L;(->LmI#tUY*oFI^ieFtYqW%eF^v=n#g z6GEdi|J>lXw;^OSz+>`lbBYMN3`^%+@t0>mIzk z;+?(Yo|i(irIj!FXDe!6DnMe=m-1#y7hn4Ph0jmrPM6l>wtsd}C7!6N9rs-KE%~d! zBE}YLf3f{~dD7x`|d;k=hV`BFoj5Jr2ZLHJ|<*$*1gu7oIm62BS`gBjfqa`tv4AvP$ClELSt0 zuh5^*BJjcUS+4SV=qb=cYD3=u*{N+o->kiB-()2<(GOW#jH@R4GT!8HY=GWYZwuv{ zvVjSLmuH>|VNbN03Hl%6TFNUPAZp?ibPkWSGejd3ZN>(`S#rjtykd81=Pgq?Jw356 zz*?j@1Lk>gJ9=a8+jx-C8cUHq{P0X*RWh&&pv{=mQ(bR8^~O`llJ&oGxJw`4#eEm{ zO>KN@>l<5>C2M}=#>EeCvHe2(ROwrlZ&W5rR{zS2ixA|OR-~0>4aiW4-_ZHx8J%z5*~1Z7 zfqG!b7%sV#e<6QzN4SZzZ=X$scD!4g4DC+%b}wY3*lOvC(>O?* z`~T>#N1tSY>NRGl1=TBF@#505_Kj1Z(#G8g4u)|Fx?}+kmdpFB{0g?&%J$q}sTWF5^nNgI{twWTxH;c`t9uwH{Y>ca=WNi4+yj zL#p%oO#d~x5{r>lUizI(eT$!3{{OMcn`oG)%{#WnGXR)ceo*|U>*>-S5 zK13Dyrb+u7TpZFshbhA(WS~#+vEXgZ6o57)OL5s+9z21!kCMI;^OAF zTCTJ#4}AadyN9u>*bb24GFvxYle@Kd0}?s$fkm@Llqvs&?wPdq-PIz^bR4qKv-Y^E zvA4vBk>$y4cNZsGA zLjalmTc)Nd&kVJ_hFFmO^6sK!2!UR4MN%^;B_YpbwyIK0G;xHrO5Q1yyvF+27nM>} zjZMi%0x9RwdXUkTR;Zx-tQ9IH-*+ptYDWZ*%tnJ^>mo<@-THp)=kY-iZFcLa4}kv5 zQOIaDGhCg}%S^2J{u-Z{fr2Y39LbcCQPFQXcq*8K42zABy+nFqa}9QXiCK5bM+j<+ z-J^6`!6_a{IZ$k6=1?S~M}LRNuw_AWlXTEi_5{V6MK#M3g7c){g*cJy*tsEp z@X+*lAF)B~;U1u_TMB7MFrPOIwhFqlp0^6N4XgI7+0K>R!i9v_&6mxK18)sq8D4%| zsD0pr+>W`#kF#B&?8@uem5cVb@~`ACCkC^3gtEJY?5<#T_guowYlgC+gLwmUyWy$& zg5|tre&7RJG3+qr?bP0~Xz~g#Rb8xF=!75l#Q`CA)9miQ*ncZSlU9ROCan^e6xZF; zou&cXwwiInraP@SaY338u6s;*z5(fcPNZd>uCgjwham)goXOho9&pC?KYK+mP8b zRY@5|1CU{>zVL|~Ifvsa3Sz(n4HFc~Cw-%^^u-Ays^FDqCgK2(18?ltM+v;UQ9vAc z&DM~)P@umGAU^xA>=$Zwt(0tdeaClqENymPZ!z?IHQ6cmFPlL z;z&O;L%|)p*04u=CsAwY z##KjGqZapHf5d2F_y$z|IyfwH+PbK-CJXjN_cLqbL_zrhqZSr?p*}FA-sTGt6}$+&FK&`3Ohr%z~+ zv#2r6LY6AQQWdgn6f7G9Pm>0IBywH8FdsYkY;%3WV z)c$UbFuiYd6n9i=e^9Q&Ref}kl!P?8#%kEEf;aI&eIK~bKHm`2=kJMquBdVSLHhml zSe?itb5(K{=^3!yWX{`3_|JygFj)&AKI!R`QI=i6g}wh?*86@5;6##97!6Fwj$g+! zdN`ghmxtFrx{!_QH6YJY51UiY)rG-?d+gj}^9`3;FSZ6!E3O+W!YNjfFNY2UU+#BY zs;{g#4SjqzeOIA~dl z3&=q}7bu@LQ%ap%lc1sXR~jmPHuai$U^!1-Kvbx4@&W>NFv8>60s;*vJ@WRYquJoN zF!Y;Y-Lj52?<|OuUB_VNYa>(5+%CREWRR5UF&e81)0mY{vlY%)ovX3iZv*9sgZoNm9c;rxaL-RqXi zmOx?sQq^+D^3J7Np>RhaeMiu;W0gmkKO0D|yl$yf#zC4m4){dg($S**L6Z*G7+Nl2 z4+Mm@CvX7{gWhURhaNHNdt3)t<2OD?*abAqC?yMDCfEq$LVEI8tT;1}&_&=V3A`V! zB=jOMEB@eUTgFey-9ScNu~J5oF#~<4nH!bFDL-`0Cm|ff%|@n?Hi7R9*r6xAAiKlr zOC&|^6S4*1r@Ded&v)`p>Oi_&#{V^%d!S$>Ip#M7lbm5|1!#pKdzoM_3)(B5?}3c{ zOUWUd>$=Ugkbm`{u(9h}LeSO|H1`HjbsCC9OB7H+bLqRea>IkJJ1E{5fvJ-L@~7daH_`zPO}qnPl-*X80WoKdB4;#gZ~ zAT+x=T(b8}u%AXxyVwrmcU7`DoP>s5*TpR$F|L$o$cGvJB4anCjRr0;7;mx?iYR`= zN{`})!K6wv=SL&H7@0|YaNtsf3Cj=>6dCBW#bC5bDU=Kqh9c+WagHMI7DoINC68n* z$2B!GGdV%}!cdA~c`~9s@exJ#B<*vs>5>j_zQg^2(tNEgGlSTz8=DDL7tIEw&)$c^ucl4h!lwQ4~dP$T}YkxXH`mg6G> z#0dsN%W)H;R{BMDhsTJwg{!9_7ZbM`$4N zb?+KA%dS?{zeDsjTFZX>yyi2fE_pLVeQcQ_>lVSfCIRDnRl|wQGUI)J|K2p8|+hn+7us#Dx^1qpLncLl(G%J;jySg0E(r_ zO5JE zl?j#(>R(lfy^&P;WWoeH8Hx!-+{BsDr@)!$f>!az$iw#$U4BKE6}tSNbon(dSF(Ih z3VNtleE3O}V+dZhO;r_6+wkvGWcX;@JqTSgJX#3X##!$>0R>vxG?p}B<=Si#5= z1M}wtkKhv%zD)WKk^iU9a`JTYvEk#>C&wTg!p@vb6v>y1NQ|lg7l|h(#~))+8EK>{ z&3BwWsw_H@l(92Yq`!~D4K_Y0_}6x=A<9&l`*O<`(k-|1Pg=e@EkP_zk> z;r8vboiO$$Bb2uW z%G(0Y_VdZ%w5<7}7jsvfWg%zHb!W}u;UK;K*jWL4FV~&5i&Iw<1?Qf*_7TdYRg-+;dU2vRt%^rw_?kSKbS1g$!OCc!t3&yuLT-k8Lvh|;>`Qbe0rRIyx=Z&j*g>y!V4rg;PSvfzr zcslGVTRagith!ni&ds}2d9m_#QbJn#Z}f>NskgH=&AYVNka7xVyIIDr>lW97;{!|e zZ9QK82HbSVuQKznN7>RYB)*i0w^`0rYvyc9>?VM|(a;HuZ33J~t(+_6g$`a8F|qby zV(FFTKiVX}w4_M$b`*;xoSn$aI~Bu&Cz`_pVu44`md(yn$JOI2%0q*lgU3lbEoun? z#g9#9CMdps!laINic(MvwE?~?N)<|2wkaA_k+5t+^dMPX>py)K8sbby8^|6J}_8R_L?(ftrM(uVOtiH7MT3NR=QfhS+Ld285c^$x35eu zZeJb{3VJ@U^@2~6{tw7sUY9d**Qp!TStau109xeCiM}NvjfJz)Srm?i3NxhBq zf6LP6-d)BRVMN+~8N*Uyj3XO$2q-=f)$lH0Fj_SX%bhGOpKcT3^h)dZ==&Z*no^}~ z>8@YKyQDXYd@b;HgWF6r4R7M$!G5W+N<^xM%E%)8nx#q_!otkM;Ap=JY^3^njZrZl zSA&%tGZ|&7_0ku#!)-*G->dd+3&AfzGh-j38x}mW$4%wkfStoff;6?`~aNbtu#1AF~51w+!1*9>iy%8^p&G&n&tNpF=hkkUy1 zq}IEL;n^a^Q+@}}4cG@VwJET|=oP^b6{>N$0h=%`;i}55Mj+dHA0{ zkSTTW=pBt_AhW+!$zQsg$-?_~=}GyW$;SH!lxOMAZDxLh0PcY-kFgf>nB}lj`mX#& z#mp9CW=Hp#dj8ap16iyev*Kc_l)++Wv)EMM-Ad`w-Ao?dcS%pm?@YeO(hsC7J`4fv z;X%EA9NPEzW@9UixD!kLgC73!l2qCzm!$UX-X--&^;dr3e*%~d1y&c87;57xDvjNf z>B;hBdmNq|Pp&7=rQrOg0wBtf~2>o zt+sz4E>k?pFnkcy8l@*xAHF8Tx7U-CcbOc@aw@26eP0>1tWBu(eZUl~zS4pmmF|u*+0KFcE ziRj}72;STfHfYqKgfsiWG30&HjABOzP*$HfIsF7kzA=<*Xsp4e6$H_smjbI+qEZSO zq&h36<8*Jyuv&CtoP?NX49SwxdQvN_2TplwBieT9zJ0wCKA%9Ca6R*EG5eEbR-b(a z|Hv^azR*9@x>Jlv@#I)y3=_PW5otgXZ{d7AP+CqNI|eccc|rTPi1w(j2Y`)XUK=qS zaGKPtEr4*`ZvGZ+5{MHY22wl>c@ZTt#TYKlK(;jasLPH=alxb%(x6gKw$c~1LrDBk zWQ%|n2ORLj?VjHUv7GH-*eM3L1r23w(MHq)DybqZ`HH za3Is2NQ=1FfWAw_|D-P?3`c!eL7qWu?RO`+jZJ#u`MFI^U})^ob_0sEm7F@KI9~V2 zL{P5@h$2T;5Kr9z@Q{o&s}YIasw84ku=SWSWX_`mGury2@>4n5Pz))y3#3`KnHH4; zkw4(pc3qb!|N*4_D3Wvo|=UQVzbGoc~>5EmVK1bpO^;Mg;RsRg1PFP8U#>H4?G}rCy_XK-WR$ z+;-}A>2R8RK(|}RsLf!g=;4Ia_bs$6rX7Sn(lL0g8W+w8_MlAyYzz@wCG+LL-snR+1Zd>XffNviEEviVnw*VyqTgn)V-SN`!0=%*KmQw2r>d5(^TKz(AU4k<>i>_ z4Lx_=_pETt8#s3S{Uf8e|DA7x7 z`<}zN=XLu%D|X*t^ZhUPuGn{CDt74X^_i!H(W$`b*!vG1!TndN*q033`-9j5Rm_f= z!3Nu|iR**oKYQrfz)yDL<}20e4+5^sR4YPCSgkrwTt9MLI4~GEaPTLSxaIY_V&fdi z$7#4p9>G(GMLW1~?=o@vgwIYNt<#goU@TS;||ULVQo=BTo7v239?=d1-ob6V8yhipeNq zQ=Y{_ljU6^k~HcahrLB;0f{$Im=i(6k4TYR=|eP#_&07ZG-cux1Em<>ibp@$2OAb& zSa1v^Ux>_-C}&Ki`X^z~U_yEsF*C!!ymo#<@95Mfhv${RWoyh)n?q#lS6gPEq5+kO zHS)L6P_XAR-QudnE}^(_X+kJ&zF}{{%x}Ni7}z%&+%<|M6laG}wj=1=A;#$tDmsGs z9aqN#4;~A49fPcBehJIC?gM9&R7lMS&TY5zHLgvc7ib(V#Br4`j9q+sJ|SGcDd4CH zZ)yxU>OQX75~^vtUeos8RH)s3y&Za4gMn$U(0=l^M)L&hsD1{DRHyFZgY%s$)v(_B z#)kR*;X*jfe)(%**XEF`MR2vew=dM%C$#nj`UgV&hXwo{ep>LJ4IX|v*#ET9`t+w7 z&2!pr-RJbvt3$rxPg}1JpNjf)Vb|7>t4(mVz4vIS{h-i(Ffec^G%zIKZ|FI}_iS+J zx!}NaLi=-wzEk%g<+M}RPdSM{JNk9MK~8R6xTt)w)xO{RZtu1JUq1A+hlGJM z!W4BdIou&g}GSdbymBV@)CdA_Oe>-i>}r8z3+Oj`F{E2&z=+xofT%D3LZKe z>^m#8pG79mYWGkk&uV)p6Y*z954|hu)vZcETHg8nJ@4)jc1;L_C~HHFZ0aKo7eR)irNrU&#(^>I_zO&8LPp)V{Ut%CMZ4g=*|m+eA%+xw38RsLpS?DgZ9k1rm3_2hB_Zg4neyTl^NkwPNKi#oXjl0NQ5yo*8weXr1x+W31+SP9`< zrrAo!Ch(u3VTRtVXVL<}HJ4p&u4fp&`m70tO>ZI|vxs}8hMW2LkX|^bY$MiuKjFfB zrzocnw2u35s^hD-qWsJied>@bO8lmra!KSC!`Zscbb_Fw37bJoFVoM&RwAz9v9qTq z#U*g~^hvh(!4ebn%*C~n?NWM3{P@T*C*MA(g^}b=**9#ZEV9BEcxfpX8S~gB{FBGY z+(IN{7)$7x=?VIIa#&pFm2FO3iet7pu^!7*`nz=bC0zozL=w-Ont(7U-z<}`fg(d# zAo9aYAS@BVX3?1$7@tRk3QF=3!S4UTrK*rCpQgm%^xO=J-gojzuG^X}?>@2~BwX-L zLF1L}yrQ8|+JqyPn2m&)PZC>_#`*fzAB!=NiWGh6)JUd@V8l52w{@n=gPjW^KQKyN7R=ZD1TbZFgdb5 zgVsUntz1otjTf^ul-(v|w}owvP;Q-&Tep-F+PG8LxD)1A9lN!k!mU-Oc9mLEiNAok za`BN+?LMJ)U#RwgPD9jPjW1VS?Rd8)xOIOS}81E*t9S$ly?OS_fTQ3g|vlzLg~(6{;oL_(v@sl z%30p@w)5(=Q0$(wuDI$J&n~B5dG_kVg6qIs3Ysb^NAC^h*3Bh_bBo^eFKv6{Yw!85 zHeKugL0fPKcGsiA4m5E%kUKJ$#8Mz)LCKtXB{Tn(srNH0R|>kWJ{c_No7?j_B)qCt z3yMPpTZMwHOJ55dd^m7qJXkO>XI{<8n@c3nR=lZS-1|oAa+*-t94Ku;D^{yF1fW4) zTNkiZhYO46Ea9Tkxzw8(x#7Akp}J0?t}|fY5Z<&sv}wPvX@9_8hin{$q3k*#yKbo{ znB5q5)GxIPjvWCC>mu?7^Y!gbh%{>?{s|l602xTpE zyc#dCiki>wo$Hu;;%2rZTvD~zyZrdO zTZEbpp`>Hp7|ttMc>LwIkDL{YiA!l$Oz%4z!}(>4+Lw<=DB1ezq2U^tlTPZACm?o}91@vjFCesJaA9|ETt;?x;T6AdO;aTahZ4*ehpP4HVgPkeBVOS}_+j z$r|LWLY|jeCAE0;k5C8IJiW%g(=Mu?iu{k*hOzr-!vWrgAxQi4fYJ)2d*xT^A$JlZ z?QaF6f|!0RsHfo2zt2{pAMV*oEm~+j8-?(G$M z)3DD+q)0|~?ut1((2;>LS(kCsj+qIGAF;gXAE+C4#~6CsP4feB#kmq4R}tJD&`L0k zOI;?WrnMn14Cv$HTE)1=xQKWh&~cM#67lsOB7&q6u}OJ`nU+c9 z!O_gy=sDjlT)2@IP&+t|m_~%7C%t~|lb9jIEink93eK<4%I`{ijZjB7N@Wy}oC^=0 ze{i7#`io>qttITp4>>9YN9CKlmXhD-#a>Ca)LK@h*NYDdj_qVgjU0^T6oec#f}>{1 zgm|}-4Qc5j!JRjXxB!g3Fu=G9FvdV*D`JlFYZWoWQXEbb-1M*>3bPRd2ww0)L}au` z!q~})vyntDr4UKjg%bmpcV<0u>%PM zu8)CP!Rw6xMplt}&F|A!K)iT~)7JFIz7fpqiD{fF8`s ziA(>nBX52$cQ+e!5RT<&TyYdHG=)kw3niPE4gwEa&iKCLT}Q~V6X?~doFPQH8%UHp z6Uq=Ek}aJHm9+_FZPb`XG$xc%kM{g#v&NEvW`@mnQdyo)nRf;x=kFnNyeXvAJk9&0_Jr2iJ@OJHmvaL7KodC@% zViR2h``(DvhZeQCF!&Af&*)9|B$J*iS&sE2jDgiO*sZ1(PmZ4_N)g8}R)jc%YD)4f z4jBKQ#4)TzgD2F~;F$yI!-$il=%kS##b{ORyIRx-ZP2UQ=S}n^K?W=d-gu2HE$Z)1 zhU+d9-kKW?(pu^weJxtI;{qh=jcWA=?qpP}vj|U=Mv{`KReaqEe(#|Es-i6la{w4E(4h;l%~En7RqcfUzponV9K+F+ZYxk?7PY8SSU- zq=o75O7)q6uRzhgAYy^I17~n1F(xF%U;|}xdYbzwJbmIMG=rI;T+UhM#)w_ao;Rbo zpyhxM6n#-`KdGHDv-PCSLUqH^EeeW}9Susr%@uQ##K$I|M59lUrApFUV~W&7*78!} zf!5C$=IgpgOmK*M3Nym@TfC3cw~3?; z_jm5{^t<;S>KxwX8R+ZkV#G&jZ+e{4JxUj*v%}r&kXD}WzfmFlnQ7>O=L5}a-@njn zE2kf!Vw{A;w=2F^;mWrwB5y`A+|kBlc(RW$yVf2?KA<5vH1RZ~w2awA+H#VkF1EB; z!>{s-W_!YP*54)+Y+FtV6l@C=9G>k9TMGnh`G+<~*p?&MiWUxs8oGss?qFHB@}f&< z=n9r~DKB;l4ZDM7*!vte@@j$^HDP*bJ{)yhLVMYdVY1t*&sL@NZ$^$mW_gQqj*~gx?z;y2vg8q?zAZJkYiiMuYLEJZa8!LSnc*m66W*t==db5&N3h4{wsRidC3wBM+spijvinFM2}_8_aebOY1BWA z^xI=42385sbVhWx^l zOR$7n4r91M^UgrRP6is-lkMOVHBtrGw(upQ(TZvgELl-6&5=ZiTW^;&hE(zhjGT{vEe-#CNa*WvU`Xp;y%rj z>alv#K(R2$L2}jtRo*Cj~XA<0*_Fwn@IHlB?j$P5$1GTMzn3(J=(DuP8}ec z3uqx)Ra%IJ(K&v^X#~J%5^w@fRHKMU5IKYO^3+ovJ;W`aA`c>x1iJX%=r+)tB)m_7 z@c=aGX+TSPFcH&dfzc$YX+f#cSKO&2#Oq07Lb2O%mpqWpY6^TXK72uX_3~r^PbDXb zs=#Vmi4(5a0uQ4Nv}wJj`_XQjz|v<0TJ)(!j&uQ-fzE4W3es z3zRAJlvDbu{GwNhYK69+!AqCaQ(r*IVLkF5>#6sc4;K+j7vHm6uvV z$6&7%;{7L2!4?pqSY)(>&@;*PiTph(4YRRCg%Fk}`;Z}(fqP{FPk@i%1Yc)Tste;X zkf(zU1K?n&EG)u|y1?t5ns6OB3p~_IU(p^v>H?gOy1RE>S7}<;nW`9?7PCvy$%Rpz zsLR@6aY#`+AAl%5%~#m|z-*_0y+*rUwrBD*xe`Uq02Ls{FdHS>`y&o7noo)Z(9Nd3 z18%G$NXYgXUmjkFd(87}yN)DtH{g)*iL~4=XICNU$cgu(kxW7hgq)A9^-G4OV{fN` zp%rD0U2Fks1~rPc`JZt^ZHCGKs>Z{BytA@d-%9O|{>ot@jb7n<9EL{N zaRolar;eFuTuU|@_B%_7XnuVBCuh8SQ`$Td6$J*di%)oo>C3rX2Ofef3-&1H5FIiA_HS z_Fbq--1LKKEgvKEeU<4aCq7J|c5zUz8qKqhpEJ(tKg=pyI2O!mIA_M$>B}KfBSIv0 zB7Ff=^y^!{5GtdmUGNhJM|@ZiWzf;kR>tQ2fXGN7r(}`luQntp?JxnTOaxG>6#@yy z)VU&p%)Oz6Byy0)&1t+Mwm^Yq0OsKM;!IbvM(@^=Zty6Oje*3w$5Nk@Io;Mv3m1(* z3WS^t011d6dwmH7ct=Y|54LugjoqsPZSP5MZSj$k;;8L_nTGRYBlI65lWzq15&!9v zr$#^mf=CIr$jNoxkrEF2B)&P&=!_&#ESR)8;p@gYWov}5hej;n=q?1A3t*K8-Y~Pf z_Ei>(xGauQ2Z2S#I032YutziZ#QFSrzmQe}b28SnInSRz^I<{x!V|%QMzClT=k*_E z=FAsg7(74tVF8%O!Gg{F^{OpX8tk{zG}a7u08-y@iNevYyElu6X|(AEVBT-grN-Ei zHf1vDA@$~{QS8kU>1(NGu!L;@y7eDRJxD{+d$JzP7nfx1Q9@ck5u@7?LLo+&<=znx zNX94m+RPkpG23}2_LldroJTA&qHHadlXb`I$g>=c201pik+I3MK)UEPNis=wpz76t zwDbhC78o;kK_Vi>M2NI8rjiEZ1NPh!sJ0PvR7I6><)c;4*G2=0j*fgFapc1aGzGrm zqzd`J$~cP4g4UKb%on!lq-xT$E)Ze4s zRXAiPP5GHDc9qumG63txe~m~hW1@*)VbPN$6lVz*bijFDbM4?S5C81&-w*vmVQBAU z;E|(&u}R^P$-v%8-d^fb9}RK!Mk~rSGJi3m9pWp9dbNFo{Jcu#V|7FMyvXa1@bbEV zlN|Z|N~`?R(%wR8z7xomHR+0W08Bn&sQE}f&6h|Q!h?J!y8ADz_~d+;9JDPqw)7qOEQ~Iv@Y{GMQAk5DJ3wu zK2D7LC#n}+N~tSKkm&z=UbB{}F<5UUWE<=tz1cEeID78weB=C+^HU4{K+cAswPrQ} zKB$02Y<{8XT+<&vH=hQt3NYZ&wA2ThH&G>$;stZ_0%olfmL+^a5C9QR%|y<)pd2tB#`Ab}bqfk6lR# zmTnC?wgNBAFS@kv;y%tXgp{0f(^6N^*$jhcSCWx$_1o2ZN} z)OixJbCxc2EoBAsb_MLaZZ&GMif(PzWR;;c@FH|!_;#wMwiRxe_Px6=ShGj4SIzDJ zu%=~szu=w>)*NHcAJw%jPXrElgt|j;2{!lO3S^=7FSiEs+yT4$RyHyNAsk#$Y;k|} zu#_L%It6RGe*gSnCoRhb`9}D4!L35)HwpN{J_mTb7qGuS`0W`JUBu&=MB zVMzUXX188*O>gS9>91L}xJGmjbkf6TCV~+o*ONlU+Hfd1N{hoy__%0^>vc zf;o!(J=#*7;@sN(x|ta2AZT}bqQ}t^N|f2Vm3oN|yZ${e=Eu)W1Ib}~-RKPQCum<| zsx~gR)Uq$!KECL&k_fWk2{E~4*9Li52SV!Zmgb~ zoG|gMMQz6kaB9Y3a^DT>YLF%%GyTZ>jCYEaA#cfGAz{CroH_aE6f6}pj5ucPC4{pP z|JRPehfDI_a4LKP`8hLQrVZVfo6k~UVUs6?pa2F2Ny&dw~oS9B2@ zA??GX{;5$fS5S&%4nMSaH#kMz9sR@Z1D(6}cJ1x#cjH9KwDDfW`VujVErg8rXv`6Z z>EuOe}>K~t)@;#4cgUEhn1~nzIe@+9Tw_*(+;HxAP zcBjiS)uEf}fD@}pV@&;{=V0h?Zs5h7S&|wxTK@EFfAqCKeeRE*BMdX;pAxb@Hm80{ zHHCk_`Rw`f^F3<@JgsT;mPE9`kjRlwWGDv|&H_{Pj5n~It06zqxEi29Z@_5R!gq9{ zFX?zfl`)bvEDPZufPIY9@Zw6m%}@Rjm5v!YR0Q5>*4lB2CMQYL4IZMvzE;@Tt=$phO18t;6HfV8jBOc@TL- zV>ADX=SZP?BjA~h`yBlR^#IA)K}^M-{bDDag(io~%E?b?aX7aS?mn#?rg8%imnzH} zT#g&ghftT=ss$28|A`vY>-!F3b7WTQ`%8d8rOr30&H4AJGuOBXQjLk}MZV-f!I&=% zNy;x_JKuc!{{;ye(e~HFL7^RLDSDd}S%z8bTC~9XB3Fjn>4ucIK zgCToH*U&5CXCPQn$t*~x6FD95#3(;!QnaXFoPsiFa7v5@u8#~KKw1c(K&a81@TKW@ zkx*!C`W~n!m;nJ%pV`nG(SD8fOw5o5m^k`P%i?`$^wi#?(x7{14kQ3=$jNZuE;_ycO+G*XeOYS^4b?v8TvXZMrS!=dv- zFFrDB3X^xKGW>-tS&MohcY|QrFuU(#_&YuEnm%MM70jh8>A4r`zgfRfDQw>xOy3u@ z?E5E&Yc63WtKh=PZ=PJ3px0UZZrJwSf#p>!%rw}(u~WA*L3>5d+x-GH`7dy}0!OY! zRUR}g6C6^PDYAzi={UxK$k*$0^not4^sN!+=}$Cw;Csk*$D}oE{XEfZ*v~yRvPk3j zE(hq-v#|Cie&Uy3T72CJZUg=$VgaTnW1W$#m^`ZU8IB|pgHT#SeMv`Pu_Wp_8PBjb zB7Zj#Q_g30r{ZdH!={EW1^L?CX>~d`>_8yLR5zF}KA4I|Id;5-87aKAu{vboIh#GF zxgEZAct*(a<)F%+e2gZ4MCN2Wh|4gJb(a_(irfx2de7y225{JytvX8%>_yx4AQyX2 zo;iNPMaG(^#?G83>r8Op$8aOb+nZ8?3FwdL4VxG-WSE}}D?wq15F@y$I728BIVFIf zAs-p#=h8LgaNq>|8!`Xf(~~B6Az_Zc83$$z)|8O?*qQ0+vs^xjtj$uU$OqHZWP&Q1 zxWjN9i*P389ou!7e2@=>6e3gbv`pp(D4z@;6H`g{*TG2CBv?tRPK0H6RCcYmrT{?8c_TH~`8HIjiRS0E~TCVfZ1ABmQ}8X;*i zl!@-52|!&SFBwsZk>T*^v!^CUT$PwVJ~#+PL#tTjn7EKMXXF}uQ6{vLjX-3XS$Pvr zRFr{KhyoJH5W-@0}C> zPJ)-T_+wz8Tm{a6FoU!joCz*pmOH066Q^3O1msRd#+7it5SsBHzjw1}eIi*#F>@IB z_m3W*gfF{+u1_G)toZ~IE*fAbw3Yjg5YF}pT?l=OSe4y}?FZ2>_#r68Kl;QZ7*%|} zL<~@e##TtUB?Tk?r{F(!aUh%^mjLrOyEPAL$y(Dm3RcJ`5+>m_d(3LYlPJ7iC-Ib| zUzcX^dF328I5#boAMGN9>Jb-)sQoN>^ip1fot{LpHjk4b)t-Mf$>#>3VID0=3!rUJ zOW2hr%ElX~3u$>-iW&{%i#FA^~29Isp#@|yp1Sz~B0u>7$ z?N|xDS2GNactjf&0WB344DPg zOxI5&jktiC(SeZ##AuN2m0!3*NgX3%nluQaTz-hKj)Go4l*Hl#oTgagafX0RABWWgxpK?I4ofEc8p&VoA;PjYYX(e^zM z1@}kd;QoM^NLEjj;ogmyQP2SS2y^wRyp0nI5 zO_Y-+j7v~ndX#!echVGfVYZK15KGsOR>cR*IaNe}@wcd13 zy7GP$^Tm_iPmT#r%!DDX0RyT@y zFyxU^3_T>>eMwr?($&-S4@!9|zn%mL(k6P0o@DHZDNV^W_asRW8O4pqjy)in zuZlIwg_hIK(57(Vu|v>XwVsf2+o17gqJ%_mCZKnULGNLuHqzbLIKC*R+2diUlH$H$ z`9*0{`c=N7Jt}YS3zk_7mRV@&2>KRlDG#2MAWu0&Fyh_Q20?rF52C#?7LcSFEkmEDxD%rAyA-!xF{Li;nW>sa ztY%p6uoLo72nLilr6XleLhrxuyJK2eJUF$N`3LmPo8FnR5?Pkt7`xftWe#8#?i@{^|U(IZV2I?J$c48GdT*EnHB50iXF^^&U%5X z&*z#Dzv3j0%!t4-#dLlV(W#`p`zzEYXvvK_4ZMYw*SAEM|A@<#&5S+bdlDlfqMMrV zDW3_`;~F$O>F(#eiPHJN_f2|EpcAq06cYQsM_K-w?*4_o*oLS4!~EPk%zzL{9X=6# zz+kTABWY58!;gakLjYl_JrS$?e&*!Fnd!-h3DPEK#@Laai$r`#m5R`Xk)wY_cMDX9 z7pV@nsXcm}rhG|w7s&x(V&)WRg&;>9C#!>?J&M&zCf(;wI(bJ@J0y}Kd-j!3Lo#4d zeR^tanAd}Ob@NBeuwFRIPtg8|U5&^Q(Vv1$8ivF;Cmt~(sE=l_ZQ%e0z&kYJW%&%oc4-1M_xgzylf)$KO;q=CcE0GlTQlh8D z4+1(8Ms@Yu1UDKEku>xgh$Lrxeh9sz?$gr|Exg=KdrwA^7|j4TrYC*SMCAVMObR?B z252UpL0?nzVB-`tvxtQ=)_6n7D;}c``2tkl1jQq^z_>pbw~81@{2iyA|0_k$yPHBN zbKopEDz5zk7qCE6HTlJh_JFfCV9a42=QvNUGi*$GA^BYLOT}}CU#z`hbgdTF-7q@C z?D}zLQ7Ch#khyckQn{EPv}_BfXOjcYBu&;X2!-ggHh`yR`i%+ZjV?Nt6Y!7Y@DA_u@`+bXRwX8~fTS33Be>P{lVp`b#=1|B113a)j z2%mSPm4`xl!s&UT^kN~s81l&FRhLh`QZhgOO6BrqeA^$+Dhy>+3t82(dtehtsOxxT ze4*l%>8q#lu@6>zE~Q>f#qHj3Zb>M&TF9+ti3%!01q}i!OOdi&7oI);EN;8QrIoY0 zKd=b>G$2Yra5Pzu@Tq>*Sl} z?6AcavN#2c^M<8hwQieGw`+E9$WndXQhhBGvH-~`H;hG}n>4nfa8_<0vpit0nC<*8 z7-9})oZw~idBdD;t|M&EJm0f0`uby+AA?!J6-Vy;rb{gsTVA#-=XJ zhAORE99Zc2T%#-75iTub_j=r~R#t^7+l9*Z8>Q{H4H()GTPm%D$tJN*GnZ$C@*OuF zrEjJ$cD&Vdr6*X`e6=iCwP&SZBd^vY7as{aHc)+F8&UiTIT{5=qiVGZ%g*mXwF*n- z_N->u&$qqy@RIgMV`r$WOMrT7Q3*_e7P>Bd?Uk?1>sJaltvFo^887b*I}7p0g{8v9 z72&Ea;SEjUnil#ihH<52SJiyNExRVCB;=?P91yc+`iSq(mCBr zFq2h@pVY9c8b2vFGaS&GWp+G@U$41bv!s2;{I)qz)Oy3-Mz*x%Z*`Yp(czuiw`&7M z58SYK+|0-qzrB{R(Es`)mmgW`c;~^l9}E_C+_3Nb{OejxhU3LD^5R?c+fU(D(3Z0X zKfVuZSJNB6_u$pEtNU*p^aM8_3N$_xunj_tso-Jl?CuwO|E%}_h50hXTW2i#AGD== zY?}9NCeIH2`?``iU0{luH9G1-#zg+01{65c(JIEQnDVS1xU)vhI0FfB^{&_MmYED74!aubHZ|6{ zi0j3+WAGseVPXsz7%Zq0g*agGlGMr>5ARAs#Q5Z>&kLT0KaxOqk#s3fAT1B^Prm<* z9aKf^BZ$|ko1|3ycL{thG#c7YM%xQ1f0h!+>RidHTsnA1uT9>*YR!1zxpU72jQMxV z5+Egq+-ta@;nk1d_#mAsCIE9tSg1;TFrhliEiRCQX=oxKpA<>lyE3UKl}Wk7(;)Yv>2a z#rH$H{D>~Y$cSN;5Wjj5_Ynh}h@P5+3=xn(Q36XGz!nLxOvs^7W%x!%SVXHu*PnoN z$Xbj)vdLnzhiv77t$fx1Y1NRmM6j03CP1zskX;`%*RN#c&riIzE0j?wWK@Q;i{}zx zOJKh7{Jw=uSc7Cr__LO~`wK1M{k0P}_v$a4hOuN2ywt`&&aR+Gm^F}c(L#@78^pJs zAULO;`+EeyY$Sr6X-I%P{L;f@P$2DvegA<(H?mwD3Y4o9Xq>V6{wQvu zWy(MSm*d5cD(1;Xqh^`~aH1UJ0v9emY6pxC zE(=5bfg$nl@DoYoB6zaU6!i&lV>aObniqM9Qf7KJvC$YKLy$&+gL!O%?gYBRSdQxI zBd;9bB6ti6eUYe~YU{cu!JXK|))rB2jN-}b5o#$0D9LNoyfDe-jiEdpjN_3pq0VT^ z=HQ50xsYf~fG?tiewh*>m4p^5{)b@fCqr|{=!c0VKl~MSgA?a94i3^<=uW2V0bLJz zf#$GZ=QU<(+=df?{}bA8>3R(oyzT2yV4z+T4guc!zG}2m=Cvs`8k_)>P<~WRAnJ4S z-@_#%uLJt@-gOwlD#HVEPnYhM-yx{J@}S1QxGy7#P=EWHu+g~I$GU_L) z#;PrITZW3I=%8@xCHfonEgu&svs8+q{7Peg6nafjoTPdNL6!J`U;!X#@|e_|;|`|7 zhyyamc(gX@?;goLE^)6i9LGPuj*s|bU|sLg_C68!+#3Ddd)cVzEoLI+wvT481a)yy zF2=~0&|4Qdk&whiPD_*(ND2*L*MrB1Gd{123${S!Y1BpjW?Dj|m9<&tfXmN7}9E-+>=3IPQ2V2BJM z2Sy@%qhpW+Q=}_g(ZViKA{JfD+LR=!Betd{3QSQoM(w#+oZNiKqm4ikOQf%ki~wE_ zQ5CD1iFPKkR!y>IBO|0^I06-PlDLa)Fm;QU;oc-rhHf!&Fy2jfLvl(gN=3<)KzcwC z`k&KhfY!i@mx){Pk_l$hXCW>K={LlgfLs!Xk8cu69iXNWPJ~>id@NrA1e3dvY-jl% z!p_VDhEY3Nv;2tzL4oGh^W#|>PtrgX8Y=jo!if1 zSnapz6K&(Zf1}G)T!7A!fql>|c_+q@X*tfqh`Byw9?_4EjYo`b(drn(iX#Rx*5GFp zU~W!{D88JiM;m^XnPYfLtsbZEgn)7R*#AzINalq@8Y`lm_GO~-5#8ideluc45db;u zk8+Jvs^A)81LPhWKIxr4`-23a4xgd&Br|-gINl`JYFhf-q4T-(<3d^y>6c4*csh({ zZCWZ_PWXQEyUEwOg*=at?zwL9K)rvJ5cDF!RwN?mr6Fr6G%4n_fBy8x&IX+SFEw3k zTHbPPJ1k!3r~lvS+2_mV6JFeaQ-50SZIh;;0@@YM^k3(f&uc*m%FF}mZogqK`!K)! zHhqB6(6sd1bb-zB?Ak@oJA2>Wd(9|h9SqtIuGVY})pQCqomVFV^gA5P9=TpKyzux! z+AAhJ3fUte%Sga70?n?J?77nyo;&~CYtOv?^~+xmRqTL9Sjh5#V0i#GA>NK zh5m;FlQXbg9mw;BY~JfO?;X7+yBsicRnPAD-JJ>m>kh%`cXv`Xj#2G(%gFEU*fh?) zTEW(R+oDN3sr}uW7lY*+JJY+jXn$x=>vksmuq=`8H)y+y5`I`yi~Aqtq;{7k{HTK7 z|EN~mU6t^ox}7FG{A7DtcTM6?lj*}xp**%J@u#+(8a!OHX}cQ}ucf8YeJOpuR>Q81 zTHMD_VPxcW2?&sgysGLv#UQWDIwm$z%#8Rj_Bysay}Xs8d2WN6buZ=kp@yC!Z=e+M zL18?T+N(?BPK?ThW?fu}`f7~(gh%!IN2O88af_(fA)=QL!(ktg_xNzXwO6l!go24> zRI2ATh691yc>kqKND!=SY1AxZc@0qrr(sA&Yo*#qJql;0U|PZoc4mC535AzSA-m^v z@{J2XFtO56fcsNLcqmbN8}&|hu*l2PwA+vJ8253L&dNW>rUr)ccIJpB$B5HMZ27?C_Y1wy5;9SRTO+G2%l^ zd8VlJsR9uzy zh{gSyJAuc=oD$b3jiz5EXZW92zN_Tswcg)ca@*8qoLk>tc6Vz$DN^rvQr&5Te^0O^ zf``W{SzHs>xs3ZO8{?(??o#gB8PdJBDA&{TCa}+$JAs3Z-v?8CH<-w@b#;9cC zEd=hq5Za!EE!cA@a0nbvfJb;hCO&wyu#=b|iF`9PA?VF7R8BL#KirRor2~RTt6~jkubsmX%=`EV_p(qp^)m}CmI_;Ehg~u zRW6;rD(yayu1PfYb`-sB@TJ&rJ5zr@I*%dOo zuA5z8bc3CMLKhN(_A>AkM0Rg>&|Wp$xsvIa&wTOW*Gd*9U#%80Yi7HMqW#RdX9Tcs zvRt983L&dv(GbjnOQE`zw7mJrQ};+X;aX(8GtG=Z{){Hxnz{m?M!}-(1R;gI0iFlPum%NNrw_AVY0 zoQ*I7o$n&a3CDcLi_ISud9I$hcIevV51tJcdBCx++ZeEKoZEjhyO1oK6fcx7Y?<#_ zah8Xi^@6khwqBdRG2F0ic`DG*O%HpuEBig6{X@e3A$mNbU3C^MR6}&2RJvIx-8`Qh&V|bQ259^)b_R1BuG<^Jxz(ZEO+xObup{?U z(#50&6O%?L3FkN$k_Fc$A*TW2E^En#Jd7s;>|Lj7^2*|}z;X7(xf7w(O@Z7^u(SjR zZt3Nr^jaakcEy&PH4Pd_z|rGo`bT7?zzF!n=nX}=Fv2$b@H z6%5hFz=E{kGfxa)V1QYnh#WtS#XnKr3VigW#^f5yh{m1ZWk59+d=72F7nR+6td!-9 zdc_B+>Fi%Zc)#t_o@ZFdUSI(h1@4NHG6bWuTiNp*f%M}=AD*L zW$5`Y>R&q7sJ8@+5xGQ+J+~Rk8G5&+Nq2Yc)pJlUSk zMzz;GxTJOpYi>sWW3BU;y_P;Jdb?Q4Px<9cG_M70Ro!&D^nR#9y7O41QZT!<-8cq% zQwCR%3hNc?Z78qk-|pjS9cmy3rdGV7oIpu|9gy1r9L=_N{3t{cfQJ@(+ioO80px8yv{5{$psCN(}T$#xe7`c1&JrH<64OQ0< z>S4(yGnDnBRuZJ!BQibpU~}qwYjM@}{*GP$fnBe#>lC}D;HvFiW!L`$EKkJf{T4go z<$m<$Fq{o?I?Z=6@3C zMyH<~JuBu1LuC;9V|D}pR{}UUry+3zd)G_k*<|L{EE+cq~E|ST2!O_X-s%8^o z6s|kqOdN4!izAG!NCmFzVDyx5K*lFrZ|s!7;9}YZigAd0mk`lzxT5ua2g}RAx*p}M z>o(M`>s+q&^bNIf0ql4Wx%5d*wBK{qBDhPe40 zh$NnxJ_BC9pK#HbgFb)Y$9-yvSJs2zmouVgT?~yYOm9-0H z?bnQfvi3mP!C+p0$ku<|)*nvG45e)l(l#tkgz9z*bvuJ;J6CyS!dZ2Tr$hC-g!)~9 zy4_b{c(WVS3g&o;p~5Diuxa_AP}n|azL`+~GDpZ>cij$|bHU#D zzP)ah+#bqp2s?Uj)^5K%zB~b5v#aWsMhE}Ckn7KcmtTHOM5ff*FKn7v%>}nw(*m~s zmAry^KXH$Pd3AHfa7JFJuu&*%3}(Q0wCj8a_{iLc<>KRlVqLEv=eQzFD(n z9xU#Q{)>~#Tj0hDfFw1DHs~uXJpStLi@O&mKrV1@UWH$A!{U>Ht$PD``#>^q?guz^ znGceez_{PrS0~@qIEN{j2N5$F$*2Eu`Y{mVLbF>H2 z6MvjrkNck_YY${5{=`&9_x0KXj>MmA?9k!irw!Tzd5J%5>?pv)wKVO4g2Zd-l;USv z?SZ1ipXn&Y&nmPBN)vxpxvK#W|Cp;iP+|PXyzRLEMTYi3mGKw$j%+;qa-$2^K)RN$ zne6Id*F1JDVAmpcEoE2aikMY&1>wYnrm%H4hHgSsToNT&`%7FP<$6Cf6YV%u{*jDv1eFV=Jd^9~O+@ zsEWymO->)H<126_+Zfu|wTk41DhTVS5LpeqzON&5wukyi)DQyf&;r-^O6Wo;F5kK; za95Sc_azs-Wt)?{FEL?kKk-wdw+2cSamc8Lj4{+PWau5*86H3sh+k*qTxdSuJpbro zSukVctPvDn+7+_sCA_eLI!n~l$vLRT?U>!Y0*7&>3%(ncY6x^>KERFK!OS(2Gosy@ zDKv07d=gRO5=*~AN!-&c6U%1;`iv;gsP$|^W_vLwvC{_0Hg3`ay^^77qpy)7{VQc# zMx}g07drR(f^^3uq(}_iM{?M{RKi&p0zmX}1*oc~{fK13bUew<-P#pA{fXwbuFPP( z)vMKXYWHfHm$+pQ>@hFtu9jY#_{`9!GeEI$EP*+SBb(G~+_fCtVlzlgy$#cV1@toY z7TtjkOz)Bnnc_R#-O17$vhSGil}rfcV9{&bepUOKX0zd>_Rh5Su$GE=LI)MAMf+!( zF|DET);>M-z!noe*CfJ)9bLFkHZ|are?{Xzp(BxEST{zv1#OF#rXSR@!zTcE96Hlq z#A$-uJYvNM=@`p$!BA8tU#UjXyMZvej$3nuM>+$!tn@`p!@D}%Fznm+|Ficl@Nre= zz3ATaen~UZjNY%&!3P2@Je8|OBsrKi0;U=l)d@97yab|eofH7U)x^xS)EEGH1tbI$#LYwg#J#>P$4 z({ual1~2Vdd+oK?<6GbQ*7po{;=X-9g@eR>z>qNY9qtXW^k4+N0d#XyqimS|9)#iV z_yjZl?E^_I9YufMBABj4LFlPloliY6@AlyD(~o`mv8SGZHq~RNAA9bJxU~`{gs>%r z&>&{YS!!!x!uvEfi)WEgjE!55#)zm{w**CqyWxpc84HCCQ6<2FojSlSSg=Dn=GXhf zP@Pn#8(F;z>oTF^4%K4a(4pcZKTjrg*?2JV%~V1ZR99Yj7iQu`3_2yijN zk6=RVPXd*!CC!kY!tDMfeYg!3K&#MVG*`~M+^6=Q*n6@)Dnj?pl|7ra{>p7c}+uU0iWjc+(a zq#f;qXe` z&$^5Xcv5V^Ak5=TFu$U}5HPnetGtv42pSH8Yk_6&P`aZ1B~7dJPnaQ6x;F^M_*;aK zQ!d0m2G>5F*2@-@41vp@{%O!i;NNB3Cy-PCF{$-^04Ju)1eJWNYFdH08a=A^`6%bf zv}4EbvckwBi$nbgB3nZSqG2Vw|ks zu;u%&CbgSfK(H&d-3m7fp7RO$-()s_`}3?t7)(E-%9tdTOT$xB$`MB|scahQg1#)E zK6zwOH*|#5tqpOrZ@wN0h6zs+wBS2L4HC565_YRmJ}qQ(*d4J0ddlTV61tyN=7~%w z)YS+ehjEjET$@w@+TbEs*qgCGexVHW zu52s6g_3BcpVpuQ+f}bpFTSg;9qqgOP0Di}|6Y}SJ)m@4VEkl};8Rylb%F!Og{}u^ z<7byvw#x-wGXak5Fw=X0$wu7W*AyOmJ8+Y(F4Zwzmx~}NXl3wJCs)a|vJjIU^A2}r ztCU>m9%UeO8){NU8c)|KPrFwoJ8xr+{+>+Ab} zrT;|9V^jKPtV84<#}XA1X2kB_!@E#YHSyrCAA& z92`;2i4dgwmt34>_ZBsrl6kC?MK@YNtn9s_uOUEJ74LT z&&_}F;nNS#=GM&@6un${rf_m66fp7%C^Md0cLiD%a5n*M5O2X$*UJx{c@R9n^X5Ov z{C*}3?pL?GUHQ)H_WA0%n6C;IUiO#AeQSSToLVz2&4|-oGkvf0ymONL&c3red*Ic;osF+$4{o=GY?ykCJy`Mm-##1;I zc=f(H_o`XtX%&Pe;?~8?}3!~IOHw#Q1&#b!Q$$rs! z+8H%}0D>*&#nRKIahHD~GkbFVi#ty5h-X%Udy`T10cFg2D`&lxcn2(}jAf|A?)bD^I&AFIg6SvkN zbKX~Ryd4bC<8AL26h<@Vo%wO+^7mc75Autq+T;1PGY`(@Z+R^=o4@0Sn`iUdV|O2z z%{vfveUMi;wRNWCwXE5|=6K$gsB57JE@9r@7caUG#=`T?qN$;{v-Yyf2d6Qyl9lH( zE|qMXFIXN$RHM3Q+CM513X8553$9$8$rhi%>iP3VfV7nh`g{*li37CQTP}1BAxjq#W!j-HcT2_G0x5?CnaRd!rmQHnj#E5mIUZ(Y&Mv zAd_~~!oNNuzcGSPJ7mxRFS4d3D!}?yK7{X+@7!CLYDfJhv=W;gwY=M>-Lqb7LoM_? z4_oBze0AAveHDoGmS3fw)0c1B%aL33jaYyRg+Vb(G)1a@5Otsz1>Os)Su3X~ZYzZOh#4?z(bcWhqxM)S z3zF_>z?!u?4^_fa9t6A6I5rC~F?itt^on2URMbZtX}_e7qwY&P@dYQs*wZ1OUERmK zob+9V@T0jOadk5TeAtcS2+6PRL8XMQbyPM(S7t#eGh*oucR6uV5V{{$$-z4T1C|j- zdow2myMLd-4?+Hu8gvlZUd7cBEFcx-m`U8K)Xpd?MvFH;{%!C+9hzAokB6Nts1}AtD+@^pG8khcWqO2gUfIt-C%@Oz;W~5+nO9`7w z5?MjT4GvEXC(OJ6oXg1^yKo`{K?}kXD6H@hBC1C+(S&4DiPK4^sil;x1WmiR2K@!I z1~CEcPaOec5A0E=>v+?=!x?S`@c{&TYPUsiBR&z7o+5w@x--f8>qO|9;QudZ7`V%Co`gtZ&}) zYTr!xw+7Di&br|SZ{>p3!S`{0-0DXJLh)NI7guhJS8bbj=S`KLcp_#i0!_v@`{#|5 zjn7%0`VxjLx(2y+SG4h@<$3Sq-OuHoaG%{gYh5;Di(6OgUUdjg_g5#LzyH<3??%qA z`NJcxiRT`hE#Lg-ZE^SRxMR=prYjkl$6FS%^AG{M@tc+xR>JhwlXcn-i`wFfSMP^r zFi5qiZ6Q17#TBPlM6C-sg=g1Ieg2ypUie&e*Oh|ui&Y!WPrPpa)5Gzq-LnO|qit96 z3Qs>4-GkOa-`Nr`Uh{*t+2ZZdcA`&8;yLROj@u#>`X|jN+F+`C$z3*I=zrDTrUQWBqc%s(xa3RUL@8eG&*p8 zf&vgi?NEaK8{u^*AxtE75lr7h$!_|I!<`@vP(lX=s23c37!8pgqnyVnA-NZqTf9Vf z%su9_bVo;ciI9v$>H!k?Vi0mrLIjFLDv1&{VnG6v0#TGH*-6PR>QD)d$Cv3RF@>Zn z$V1pPxX$cHAY8;GSWD0UhDv^k?*4@Cm{tZ8jC`G1&#(v`*Q5v~#C+$+OLn+nD|au| zO<0lh>}^}Q*UjzHze8bEDJ*^;DM(XMyezc*jgb4U;9>te-WA;V|F48H{QN7yf6Zie zRvouq&$o!x*E}w9%k?UoxbeErAg;b{%M>?Wtrg8=S1dxiUcSrv*kKThKN2Xh2^qO3 z_a3)jGr7bZC>>PRowvX4g9vB3^SaS3-tkeDP*ncSnwXGx&0-WkCth_4RV&XIyj}%i z?R8^@xaF!}2&}y-c*Rcf^_*X^zgJfaJH-|eaWj7@WQZP=sH(m$n8b$b9)s8>Ubh*< zyO7$&ZP)#FantpDlepn}rc2DaR%#RTKh6z{;)ag|O0V5zbci|E3Xy#+*NLRqB<>fX z%$}1Q6SA&b`pshQWW#lV{$A^F8bru|93buIoaOI0%jZp**9=y(<*G+O*td1j`#;KY zx(vr{*9z}4pjrJUm>tA~oa?46(eiPvPuwehBvATs{e4z(#YY0AS09D_bx}<4&3kiV zf@dCU+rg4+7W$^gibnblh+^*I!-mabHk;DB_8LtDa&(mo#SeXWrWcSx{|MA065NgQ z_!jkJ$NCmCG8{DD%JnzO4gFQv(Tl&pk8gmAL(ok@5_-}ajlzeUp~tWl?6074ow0|- z$s&O)-m>g9wV5T0U+A$`sPdNs>MpE(vd3N_^r(iN=?rxh=?xgh!aZWdxEjne&>C2w z6X@U=XhxWO!>ADcf54(;3>&P*Zn4+Ujxk}Laf~D4h)PBHAyH#YHI_Rd1Z*Etb2@HV z`HJx0$RrIfsCvmEZAg@f;ABazx|voybg{&V;s*2_3M7 zd>A)uA!FIj3$~{-p3IoEPT5XBF}*#OxpqF&KVMLI&5XtPOPe5;UKXrR+2;h$tl)X2 z0ejcR?`(Tz+p9Y+W;Or*jx!BYYtDyWGrX2{KK$DF_lKXWnk;{|>XjYuWHnzBcKte@ z)y(`*z2S5>u5`RnYC)O|i--RHxi8NAks#1NVug)HJ`)59bY@BLZdkmK;5XbX;uyG07WhHz_{K?@7I zX6+57JeX6Ra%f!1Zptt-^EuJ9k#x*{o$ zwX#quyhVEom3An9(VjxNSB1P+`)xfrKn5z$HZ1n!VdRM~m~sU@)yTnDv-Xy>l}e>; zWl~w2U-Gw=OXY19Qbk*(RM}P~RkbaXmf<_Do=nuMj)-zN+%1OwA3^9@uAvsGng!0Q z=?UoaYI|z%wlA2Ykn@-~%E=AprR3xX3sQ0lgGDJh#le!4oYG)fN{&BRo|01$tW3$N z3NA~@SstuT$*BnjQgUj8D^hamf-6&U>VvCNa#jb|EXi4$lCv(U7q!xg&m6;AsV+^K zhT!^?nl~&N=Z#Bp?pQMNn}VBD>e&?Bl9IDExJ{Q+dw{6Pl&i<6!7H2f?ZF+ocL)yd zOzJu1G%m^68En$MMbOx+)T=;a2;?1u(_KrRU^`{sZoylGzi|NuYo+=$v)u ztGA)m+k@R`<&K+t=RWN_!TV9}&fo(`8-qPacLqO)v?=%?(&k_<(p@+0>qGj!2A>Uv zSnpbJcaYuf2A=K1{tR6G$JtX&p!O zb);`8xlj!rMJ>I-N0C01zOLZ0;A5*)i7X(Rdj0s4zENFIpq5bZ3rG*%q^>Upzm!y$ z;lNvb#`J0MIP>V@M~%+~zs%;apF!M{fVig=EG32Uje!0=ejogb(l);kd_MR)?EQh@ z@1j+QSlgdgo-1?NPuTU4bU65Q&*7m#rAGF}D86{2M?7#*$<_Xu%6{;0&<0 zp21ru)piaAzlv`Uvu}Sb_1iQDpl}wndX+m37K0*V{F*QxUq?-&hYUSql$HxUIgq#` zpCtXe%^kUl%zep|{F^*6b-aJmCx4+l34G)I7JOuX&<|T2n9#tHFmz!39i0@{^{&y# z;G=ZNkv%5D+u%_O)f+j6aHYfkqv2`^hBG6~90#W%c#;^E#v_{@eu{w#GnoOzrDZG{ z?yMYqNK}VHKh z`AJu@niZ|4&s2|$S1Y9;?S%#!l?%zjDM^uEx$iG`Y$MGHWia@AOmm8rfr^7tGKr;;*Uh8Ik)e;ZB`}{_p@b zK^Z^%43QppBpi}pKgJ#r9ETr8FqLs~L=sWH-XA_Pg22(ro21#z%fnA7O$B?1LW6yn zmg-fwTSZyb96kdM$6Z*TQfQba4r@V<14On|=&-+fG*V6AjGrM`-XT)6M8mqqq9 zZGo}2kb6vw1lctC4<2JnP_58kLo2RMUUCj<;3!+yQh+<_910^m5PwI3yy4Ku;MfGY z&jdU{4PIWC4!J7k#*$ecK0G=&5~z24NcgP-To71+9S-+B(#wtdBImLb77lO;3txyZ zlw!*$VFVB*tTHqutTJdMtn&QA?IxBtL>OoiWwNP*Kg?ab_VxyMb;@^5T?gd5T^-E{ z8$!d5^o{n1>8?M_?lMTRm4Km_)npmyr_Qr*K4<_b(W#dacl2+O^w!8hx29gEaG8h! zAiL;R`7&_RO}yL)Rpn2Z84m-@gNaBb$ff;^DV#!e#OZ#1<8zy4oy9Rz@gnkt zq$Us(gf-#YxFL0BtqIT)mCp$DmU1aO4^vtOI_DSmk5#mPXv)r-U=xfoFt}C;j7^)m$v-+qI<(Twhg3NvGK+tnQlDk z%M)JAYxEfZS68Fi@)s5)Z5Lf7erRbEDj6l_C1ocqrt4NP)?VV9Zw z#N^^a17ZUu83NE8GYC118vv=O9c~FYLm+b7If)-BSlo_gr#SKr&EqN3?^P*CaCcG{U@~rLn1LS1{Pv2~^V8 zhtSK344&V#r+q&()DZIOFos#n-G6Tf&qbVxgo~FAb~fTa1d;%~k#MlQeUt~Y29_m% zs;jfLeHVSo43Y@w$H_~!cI>5>iDZ#0Y~S15dVtCeKLU`JzumsKrL|>0axKG;3=9s8 zs%1NPJBJbaqF=6a|6RMNl_rLb-0U+4b~QHd6@HyVs11Q|Si)sdWL3ok3 zH+WyW{DL)dY*<&mt3%GWa6$`it%j+c{596g4(cZFUrW;-^oGWf%BXo5-Grk(*n4kl zM>9B#+5-%*GB?fC4|*909P!%lx;4^=Ee1F8$nWaj)pXA;Lb&0+BTB@RYv?jz$+8Q_A)T^CI&5D7)gxtX%5Q7_X(67}>I&VHRF}Fl$e+R=eO+n` zfG)7-s2HMqEy8#ku#c#U8L+VIlDwx2+!CxN+m>@QdyFy`zt8Yk|Bb{5g<} z!3nrKSjmvY7JnaBH7Mhk(Xs$7d}x?XAvNR#f_YRR@>Uu=baI3jx z@9!VQ8IWFK-Kh7&`vkoQ&vq2~65W>1Mxi0XPR9@;ktm!xzZ4n-{R<4ZgcA`Y0?ZEZ?z33FqxskOD^ zoRdlE6@Ti$Ez}ZHf8o=UaJPWC-^FryL`ec63S|jp7N(r6xKh8H@~v{iAybQ>o3Py^ zxK5a8a;4+!_Aq*kn2GRh2n#oY0HV~m9*jh^i}X86@_*oF@z0PP7q0t+?A#X%pDmnf zj%SsBx$SuKdrtQPh0l5R{%KP@XW0oy)byU!`GV>+e>^zf*1F2~og#YZN95{U~zA@3+$ zEcfj~$dRpW2;(Q1KNsdr24_|}d5^(#0HY*@9fNW};FT*0n;nzmUQlN!;IE8E)&3mw z9}US!kOmU?hr&rcgh^ul-pjKI)A!l6y0^gJH?7yMfs zM*^&nE0`V8s;}%_$jbRln1Ri#Pan6FMY$5mf5H zekB%xMwMVc)=n2US@J3$T3zZm4{20Lm--xw)2_5jPbKKSpdtvRT=EXjmaM+DQ2Ele z7PJj05ju^rOaEnc5ksY$UpHCAJ~V+->5-bzA*>a6MbcI=Bi~h0K-pAj84=vU(@-Q5 z0{@Xn0Yu+&7sjzPz7ic78BM%xZg2=J#QQzZyccIMGIB=w!Yq*qXLJXGKo+FsSb>f zpM6lFNMzKIiWMA5SOFMEhZR6hjBu={v;_E%nAtdT)A~j9md*GWWyxG=xN;it4`46n zF=MD9)O+o99A+o_5LYOS;pqno8DIgzhY%{#4{~l85wS7I`cdSkEY_tI3_2=d=$PZG zj&oKW4*3dTh!YJ2ybMQhyn^tZ7?p$(Es`|kLVGKb8yve>W%!cLB3s0QUHm+5fLclw zf}`oVGDdGKB`y|ho=M+VGZ##b=(>w0pMr$+FA%~3{gFF4e#uo#u~c%7k85}(>oO<` z;FT;Huk3K{%n&YQICd5qFBFJK;d+WuLxlHO3;U?`%0-8ZO8i^A2M4E0!G9Y^rl8m@ zc2_E5Kp+7+aNWgdMN*e)A;RKH8jyGVq z;JCxD^)dodP+16jewXYDupNApRnURQKO6p$38`0kPwUBu0}fVQT@C}rrj-5n04ayE zt4j+ykpW)^Mo5O`3#QcIlXYbrAckYg1y_}DA*xxGgn;z?RF*hlDVNeerTr^lkhve` zj_K-E%8q2BEt-KO=;1Ewf%24!@e{RFEX`F8w1|jT)Mfik-qTrv?8R5KmNes+wiRK6 zhMB8-e?D59k^jVg7g^-=3v`!7HV8bAa3l&9D}Ft4yv zFdVd@Rs(2Xoq|{y7_uYIMkgE>b`W!x?gvy_5%qu?=9jh&?cb*yS8xA27!jB9t^IXr zzN2q1)}0^PoFkbq75?>2zNM7$pvGKV@xTrnAby)>X!sj@ttU5_kIX-+tpZ zW0^1@cDa=2AUM$flGi__X=YcO)>7dqo$HCzhxK(XRRvbrpEuIS2Az7GeN zDpd4?1>R-G^CfCzynh@hu30^?k4xdO7Vr(5Vhc&gC?cM==gHm>wG8%> zG>YvLq&oNwqhl0plsUGsQ{@V|0kan6EuwjKvM>qZ$(FMuL=E3kG@IhqaXLO7?y5jyd>6oRpZg51I3Cxo!1gs~SUyVF)pl;Db zNC3%K>F5~A3lY!|93y`<0Hz-t)oPj(&{Is1Oxz_|HWCJ9OkIR8PM9$;-Gh)yqcRFk zF;Ry|QwyWWi*sECB5^US07HNB%sQxfj9bMBYmAsy7r`;LD*&)To8?wAijkOh`bIfO zkQ~wvNJLjrNTr06+Jv#@Z6YHoeKT&+rh}v7%;)A^@skR6R8oyZ{o@*HLqj zPa_SGQHcCc^ z1W9VadVdEUu^3B&Uf^L$(Gt1sd|nlNl>#uR2+>WYLHJfkUIJwI!&d;+skEOT8nGBs zXN)k0)*^>v=P}Y1U|JK5pMt6+Kp)kG0g}ZxH33W_V3}T)StxA5IFc7Rj$Xu)VT)Y1 zu)$46e9#G;?f?aZfw(%*77CE69Q7D9_j4?SY6xk7(?c3U03MZwk0L8EvpwtnXW(H-PIZatA%Nc+}u~X$rs3dBqVPTQ?Krel814o@(g|5hBLsQ*1G|05D zAkaXA99)$QUE1|%Xc%i}v%?`P?~Fzq4EANgyrR=XI~+yG9Va_mwhIs)#E2D{P+`P_ zf=;T(j*TB49a*(+@ZhRPhli@+Aev|#=DD$kzgZ!(EF%62(qvK|qTMy}XKL8C%1hIz z1_Eqc*#HAA5ky9Sx1f->ts=RS3KkU>Sh%7NjG~bmrDz2hBdN58{B_J|b#E`sy+8xP zjw8u0ro<%woE+OMle#YNb59S)}NKr`9V(n&fK9L^B* zmPx83=X}r_I0i$e5Gcy=gk=D+mc|cr!H#7Rn-!$rCK?nNGmnl*PlNV`-(_a=IEZ`3 zErFI0MQh3k0{mLRm|_Y`iM(F=s`{Z`c#&aal0dca`T`L*{yr?@Bxn`DCHY7{m-#?M zq`ap&s1A4&MtmS)m9cihDx_rS54oszhaLz z|Fy$CpXog{cw+G6BT*xTZt6R`9_Ea*FlWrpd8QRELaw;8qNe$5U(`D9%Z=KvW}59e z3kCjZ?>CF1ZLrVuHq&y_#)cGq0{gR|`q#@ipd*!s{J%N1VWTcu|#zj7f0mg4W! z{2j+Dj!V83SA0dJ88p5AJDXqGe9>3`i@efrZy=YzmGf0KXY5x^mV#CDfqL#~Iv&_E zMJ)`hd$nWA{);?6Vidun^=y94OwRWT&lO(GZ}1$r%NlJZ9#2Wm7iX(68zP8xnLFS=xbNK)P~Xp zt8RSUDhiqTr|$py{WpGfzbLpo3778|&g?7MIaBw>va8;4Reex|pu)emebRclsBGFe zeQ&&I<)rOb4)`>FWniXzZuy4z@(oIyt^A+)YOlG4;@Yb|AtU?Lz7zYVDyQ#_6|B7I zs{f$4YWlvP6|aKhX;03JuG6lm?w@&=b`(m#ytG^;a1P?3d4_FD{%j#jUrzA z(H)MK0^?f-XN%AHR)!ThZ~4rWQ(&a~Vn<8B{MK@@rOxnHHC6XkjYv5GBjwaNc4wI1 z+K{o^X8y6!jHf@gnUVA33?topT)WH6KQ5+b{kT-5`!bea;o7~%{Ns9-zgndGH7viu zjxYXrn`4jD`nI)^n(~wEMlb&Sw1!&BmKFSKzDf(zf`!>T(64HRV4(?M>2NmZ+gN-5 z7&a&3Bg%}V^o&k09#uwD(9nG+3|x&3<^}^8pgRA@U`eV>PL=Ip0pm;a6-iE0R9%kl zdk{awsIXXbP-jZaB<($7i{M>dO>5}a0Wu~|xfF)l1l}2Y6fQqhHYwBmASsW=09E}e zg0+$Swbfv37!Mf{Goz(k|LlLjcL!8GN5)t&z5kHumW-87I{mOC2k4RTqoKZW2pUOy zgHbkg@ZdBer{h2-9~%r0^%GguaJ%dgMurUZI~)%I>}bn;sLoHfv^7K?Vyu^k6#A8Z z69M0kZ3U4shKRhQT>;cR501dO8ua==zZ|23-o*hS(uadNwjR)XP*LUr))dAI`z&h# zXsb@pU7`LXAw&fM@dr|FK=}};IOU@l97eznj#uN%4tKNu&>;j+0J}z}3ZM%D5ttv0 z3Y@o62nHg?nJ$UUZs4nqa*3@#y6O;PryM*|`a;@vGzPjueI3X#lD1)Q*PU4uA{Xab zrGc9I}HTRM;>%#2+TvEv~dKuWj((#)D5UBr|BK(yumjvGc>?iAs(=9K*z z`(*7@-^}jU2QJ#$7cza5K}J4imrR?c2hOj1%@ix!7R%Zm^X!P4$@yUL)n)PQnyB@v z!DcUiFFS9csC;_a`RdpA$BR1WJe@I5=f_6Dn?JeiS2p~a_b(&r^jpr;85G>J;A{^x zp+HYfEqi|7$5s@0cG*W(A*)OL1eD)x75|6Dt?0p%jfSQQ@eOm{&Sk2%BrLQD~mRCS-3oeJtZQ9UG!9S9c-CExv@uwy<;zd zAkfrLX;XLf(f2e32zyZMvIPyBj3Z72cyk<3pC~m$HU&2eo5T^PMohr-mZ})4ZTTx9 z`9)o(O~&DDj6{xBgL0?!yfa%L3R2g`AnLHz$S;JJqpgsJ@aupo5mRzV_2XVAEP|I@ ziY!K{i6l^PR!hewcBKnjNOfr=)2Ygf6!I#iu5zU=t>j1sq`sN>=hoC^`e{_uIUt!+ z5CP~=2F_|B6M|fyTneX?n?kOoNyCVgTBdvvk}mXzu8}Ovu;V~A|D{hA(oAVJlXz#Q zn-#4#ztH752!gH4leU~Hn}$T}K@f=#p`<%)Nws|_8Ih$~nr@yAF|WMce-9Wiaai78 zcoTS0peZFq41Y1uE0A;4DWt!lAREjri4N%eJk^tCJSmHsP`^pbWLyC4aM^dGtd+6n<2 zgdqcG5@sW$oNBN|lD5Lxva8W`NdB87UDnsxL{eV{M*-za+TSH`gmwMdvkt>nv3*P+ z16Q$qoZJ#6^#b!s?PE`$f^1me5@F>pBgO3_LdHO?LVSe zz?3l5ujYIsGswh&e#Rjpf;fUxg5dWbKhC#H`&Qz=Q@Hg+0pFR^gjb+>UW5*Z@Cgh5 zB^U~7eqOwMviZ7E$S#?hm=4d}dw%@fgRgbI-ViI@bIH@1C|=G3vp-eh7eD;(xYBpM z1$8EM9VnA+HrYwtH+GtM_q(%ood;4)?!1(suA6ztb*2LOIx@7l=n+~GAQa@jbMMrD zjl50NKN?=Oe@)`gD;rPmP1D6#Y3n6VTcWa2?qF%TcrKrjHryL_4ArPa4kMY_j7Y7> zm+qy9w*9>an)i3?yD#C`-`lajW9Pp8O?w&7kOy-!keOPrw>8L&S3p2AWp6seCTtNp zNrBju2B|vMN78~|Tsg*y-5k%3ccB0^4*BzmP8bl^zSM8Gxm`9g5aw1)+|u|Um=N5yD-=(*PVAV zxRd^p%2Be2HL-XQ6Yy&WTX2|M`m+6u{hQ7c8E^;a%zC~j?kp!2(`8@X2VL^{4Da(# z#4{@Av-6(WOTXPYXN%wgI%cbixvS>aY?!sxM=g^_r$Mk~+P&|2E5Nz(6`bC-fB;<^ zU)%Nevf0wRPVc@_TKV$BXC8hnXX@ct>5j?W3%>lRyjN?!d;e_3#@EfWzLw}N_)fED zo^qXVJwG(PE0$Ax(YE3}cjA5dXnywl$G79L)*3(De1GcF%`@{|?;L|I=q-B4l*#C-edhN9DrM5*gej_uZ z224QCpray9;s=$>r^nAV&m5d-e&wuR8JU)9ZH#zM@6Jl2LHgV9qMIl2<&JS3R3oJ(m}l%?l`_ zFpg+*vHZG43`FfGjI}9d6<}7u>&z;+an*^}|6%bs;O#4o4lv2yaBtbOO1R+IxgI}$ zBy4UiF#KpUu?K&&Jq!15xp(^U&dc=psfZ@hrvQ!&lQWQj5g;X+v)A}xEPR@i{;NU2xK4U<_ZGmC=(rHM}b2@}1TWE0B@3`zeDt=>Th6y&)89=?O= zkY7SbB+}ta>M0RLtf#b>kcB9>?;SDd`wVp~(FCP4#oq5&VUg{XgK3^k0zxFOD2Z*0N_tg;0qw zVK!T6bU^-Kbl`K*>5fV#YK}LNnrp*k-=s8IFx7O)uj)`6mn$W8K{zh&h&kSi;Iy-&j}=W|9$ul?-OA*bum39z5#O!I?`3 zXYg!18JRLn2Bw0SOyzuFQB=JM&WJqyYy|WJ-YOZ+2qXNi zorJpxZ~vt{nYwYi9o+TL3w%qk{_PJabNPL1$duePo|FvGcoL>h@LU}kCO1O!b0Yi7i>->orgMsRFuAoY6! zadu&^Aw0sabgKBIj;pXJR0agT(?v&AVU^eg@0%Mf8w5H=%Yp-8CGM=ccB@BVUW(ERp?gey%Z4K{ zwb!O^Z~HQtonaiz@CAx+Pmx&eF;6aH`?2AT;q2GVv>?K zPGY=dm$?rt61-zp-+73R((?NQ+WX3ZnZh_Wp#A4E*sdylihCeGzB5ZSWYPsnh?l0F zcMypuG{%oQSuLPWpd!^mMm4)g<13MkpN-9m=!4~P0~V*Y88KX%u+zfqB^|JY73c&S zKjR5|Bm}KC;ETS5oes?0+sAThmyPsQnVy3PRR;>VPQ@a`dDI?WLDpIg^KDuE2EOC078vXiov;>o!CUDn?|WsC(X#eZ1q7 z>sdlp#l_0?G4}?t*DILM%m4bGPZ!*|&;_uU;#YLfygPr^?Vm3$dBOfmqu?q3^r{(; zxP9&gk9}vA;X;+CsoZ>_!LW0y`NGx=+`nnJHWi!SEH>kQ31P^P=|#4*!M8Q+1rMZ4 z=)+>wEoYF76p1|bQaC+imx2;RVy0X{qh_kFEEC2#64LUG)xcpu7lgXlrJ{pP0`Z){ zpQEM##TX6}k5gU9L6s987Q2ii20ZuUIk-CfLV!kzLh8QqY!~^RX z*2><@Vxpsy^T!b2_-_t`VYde5Zbfd0hsAR8afohqCQLqoDj6#__4;}s0CuFi=;j91LW-g!6DE}^h?o7<^n_a_9F*@L2_K7`^Js3lr4lTPL}p)T9ARva zhNKZ9YZ5MW9h45vW{|8VTsw~;0>-`kVZsQ-y@b8<*jSh Ud>8|h_Iv|hRK3CBI5 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 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/charset_normalizer/md.cp313-win_amd64.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/charset_normalizer/md.cp313-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..a766761830baed245aec1f59dd07ecd767034447 GIT binary patch literal 10752 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 +Requires-Python: >=3.10 +Description-Content-Type: text/markdown +License-Expression: BSD-3-Clause +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Typing :: Typed +License-File: LICENSE.txt +Requires-Dist: colorama; platform_system == 'Windows' +Project-URL: Changes, https://click.palletsprojects.com/page/changes/ +Project-URL: Chat, https://discord.gg/pallets +Project-URL: Documentation, https://click.palletsprojects.com/ +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Source, https://github.com/pallets/click/ + +

+ +# Click + +Click is a Python package for creating beautiful command line interfaces +in a composable way with as little code as necessary. It's the "Command +Line Interface Creation Kit". It's highly configurable but comes with +sensible defaults out of the box. + +It aims to make the process of writing command line tools quick and fun +while also preventing any frustration caused by the inability to +implement an intended CLI API. + +Click in three points: + +- Arbitrary nesting of commands +- Automatic help page generation +- Supports lazy loading of subcommands at runtime + + +## A Simple Example + +```python +import click + +@click.command() +@click.option("--count", default=1, help="Number of greetings.") +@click.option("--name", prompt="Your name", help="The person to greet.") +def hello(count, name): + """Simple program that greets NAME for a total of COUNT times.""" + for _ in range(count): + click.echo(f"Hello, {name}!") + +if __name__ == '__main__': + hello() +``` + +``` +$ python hello.py --count=3 +Your name: Click +Hello, Click! +Hello, Click! +Hello, Click! +``` + + +## Donate + +The Pallets organization develops and supports Click and other popular +packages. In order to grow the community of contributors and users, and +allow the maintainers to devote more time to the projects, [please +donate today][]. + +[please donate today]: https://palletsprojects.com/donate + +## Contributing + +See our [detailed contributing documentation][contrib] for many ways to +contribute, including reporting issues, requesting features, asking or answering +questions, and making PRs. + +[contrib]: https://palletsprojects.com/contributing/ + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/RECORD b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/RECORD new file mode 100644 index 0000000..3746bb1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/RECORD @@ -0,0 +1,24 @@ +click-8.4.2.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +click-8.4.2.dist-info/METADATA,sha256=GUyd2B1Wf5CB8CbH5AEGD7r6e8FHyOClizZotApkwDE,2621 +click-8.4.2.dist-info/RECORD,, +click-8.4.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +click-8.4.2.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82 +click-8.4.2.dist-info/licenses/LICENSE.txt,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475 +click/__init__.py,sha256=FId2fXCSJB3yeWD-e2uON-mBhFa2Yc9MvXGmHu8OXG0,4634 +click/_compat.py,sha256=gPNtXQ9q-G6Qil2b-MC5CsHsGGcQ4u6YSWy9_tlmuhc,18879 +click/_termui_impl.py,sha256=CGdg24AeXijeGSzbu0Z7x3c4aaahVFjVBpEbbjhQ5K4,31730 +click/_textwrap.py,sha256=7Z0N7Vmn-66TNSTUwp6OXJbcUXRmYET9h9c2ucD8oQQ,6270 +click/_utils.py,sha256=eCZCtwJtsYD5QYkkNWJ8MY_8ABIjy8MczgMMyVY32rQ,996 +click/_winconsole.py,sha256=KSxfNbMlYRa6GOJuCLgsg2Pb3dVkgJNPqLJPae-Pa10,8543 +click/core.py,sha256=rZz76ihNTFV4Y2sxp3H-m93GxL2acD5Pqs0IobEvmuk,140616 +click/decorators.py,sha256=9e1Ndu4jhGAcP6RGdNPAwAWtuP9hEs4ETp1u3lKmH1o,19709 +click/exceptions.py,sha256=HvSY34G4auj_bYRR8-T8CU8Jwq_1-OcsRU4ezfozeEk,11862 +click/formatting.py,sha256=8SW2KGkvjfz9Q1NbeojMHuZBN0cfnQJDs4mqDP6oXms,10444 +click/globals.py,sha256=gM-Nh6A4M0HB_SgkaF5M4ncGGMDHc_flHXu9_oh4GEU,1923 +click/parser.py,sha256=oJ-fU_3mvxugIuNtHaCATZ56lgEmHRggjJiSqEgYrjA,19052 +click/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +click/shell_completion.py,sha256=5tGGY5pV3mAZ17xT23OnuKrWqzEyyLVtrJ30npUxjkU,22618 +click/termui.py,sha256=Vn9ehmrQl92z2_6R4bVZOsHUI6j8LrT8u0RzNZUpCvY,33213 +click/testing.py,sha256=S9I-pspAlJH3RvZJWDQoJXb-M0nrAEJzXcUzrVXsT34,26458 +click/types.py,sha256=9G4DB-nBj-omA_XWsYwbQ3H9BkpH82wJj-kxIPScKmA,44788 +click/utils.py,sha256=XwrDxOzU__rnHn-rvJmJcD7ecbypUKMeDJQRjN2F-OA,20942 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/REQUESTED b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/WHEEL b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/WHEEL new file mode 100644 index 0000000..d8b9936 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.12.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/licenses/LICENSE.txt b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/licenses/LICENSE.txt new file mode 100644 index 0000000..d12a849 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/click-8.4.2.dist-info/licenses/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright 2014 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/crcmod/_crcfunext.cp313-win_amd64.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/crcmod/_crcfunext.cp313-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..e79642470f6ddb7a9881cf940a3c41c0f01d026a GIT binary patch literal 15872 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�eg)YnD*`j2AF&VagTQ2!p6D{-96Cf3f?)PXM~ zw4>Yr`W?{gODo-^m7wGFB$O}zae8Z?ubX{9UB6^NF%KSln?8W7l!=KJMXMrkM6O)>x}+| zA~lZk65h_y1lcXTofD&FmAc+Qf=t&_A-m6lb~fq1K{J1Ymn-W${T8o+;?pt5YJnVC zz!?5UV9J~%lOP*4Hk3w;-ZQ(XuevP_F9sU^s9(B!RWK2tC(+cctTIiyI?BIn}7kTha#d2E5qF-&mcncWnas8_wIYMso57gr zf8$KpV2%&LKT%7Pg(V>YEZONSyB2q48p}o-+4)&Pi(mzI2bf^#WT~XX@knKv`Kdu& zAG(#$EwHlesnAFKbeUA=^e4TKsq}N?8`YclF7Uf?@4?M5F2{)SH`WU+-BK3N%uIX`>~p zu~Vw|%e7R)YtJDmVCh*UM^;5b*io^Y4X@MthY_L8G|~5tDA=StM%B($&i(V z>OB?Jp|D&T4bmnw*c539_>tzhwLTxqu&#{wN~?pBXh<#%;9C=Zvpj`l?m*zH(crSE zzb1lRVwpb@YGN#hYSwr|k!ZDVwI9<2FPHbMtNjht{#u`03s~hKsW0>TB60|SBCrCX zkE||9LMKb3p^)s4RD=RGG8XL<)=D|l==GzQrigVWmxm1|5LyNR5Nkz94#SMKqiCd&Xv}l4;syM5 z-g@BZ@mFI8Z1hxz>NnuynQp0f$*hw78@!=_ALj+MT#%pqj9{M!94ONxh5Ks zJqZ;Tp*_-LtUBnO(-@}pbxutvG6(;QAp(%+_~y=;J4f%xLh55p5V`h`dYOO8`|rm8 zIbGy zT(27S71A&8}+V>C$2}5HdCMWbGAyaXm-&V;<(- z;$u{JRgTe)sb`L3^GBRZO})?PKR5zeSm&nTFIYGWVGglVQ}r_D3tN`0moYckuLZq~ zdBE~7*2~Cw_An06WQ+V}Q>W==>hc_C=jC~pGYZIp?28|6cw=ZrE@i$k|f0jdIwv3TKJo2zKPvK5WB^XEn*;S&J9hG8a~d!*b(#Uy}$2{&4ZEXvn`HT+<*o zR)^;_dTT;~aG)+SrzX(2pgP=`yJ7Au5gTf69rmDWMz=<;zG(UaGd93aJC8xdbZ2Wj zsyZ4vf*qSWwsxH880gsgQ2Rr>9?IJ(?X1|jc4yVjhMiDy>EB43+qbs2x9@82YVT_w lXjj`=M|y|YF}uUnA#pFw@X_9}t0R4fxZ~3f@BjDy{}*Tg87%++ literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/INSTALLER b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/INSTALLER new file mode 100644 index 0000000..5c69047 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/INSTALLER @@ -0,0 +1 @@ +uv \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/METADATA b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/METADATA new file mode 100644 index 0000000..0b486fa --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/METADATA @@ -0,0 +1,139 @@ +Metadata-Version: 2.4 +Name: cryptography +Version: 46.0.7 +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Natural Language :: English +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: POSIX +Classifier: Operating System :: POSIX :: BSD +Classifier: Operating System :: POSIX :: Linux +Classifier: Operating System :: Microsoft :: Windows +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable +Classifier: Topic :: Security :: Cryptography +Requires-Dist: cffi>=1.14 ; python_full_version == '3.8.*' and platform_python_implementation != 'PyPy' +Requires-Dist: cffi>=2.0.0 ; python_full_version >= '3.9' and platform_python_implementation != 'PyPy' +Requires-Dist: typing-extensions>=4.13.2 ; python_full_version < '3.11' +Requires-Dist: bcrypt>=3.1.5 ; extra == 'ssh' +Requires-Dist: nox[uv]>=2024.4.15 ; extra == 'nox' +Requires-Dist: cryptography-vectors==46.0.7 ; extra == 'test' +Requires-Dist: pytest>=7.4.0 ; extra == 'test' +Requires-Dist: pytest-benchmark>=4.0 ; extra == 'test' +Requires-Dist: pytest-cov>=2.10.1 ; extra == 'test' +Requires-Dist: pytest-xdist>=3.5.0 ; extra == 'test' +Requires-Dist: pretend>=0.7 ; extra == 'test' +Requires-Dist: certifi>=2024 ; extra == 'test' +Requires-Dist: pytest-randomly ; extra == 'test-randomorder' +Requires-Dist: sphinx>=5.3.0 ; extra == 'docs' +Requires-Dist: sphinx-rtd-theme>=3.0.0 ; extra == 'docs' +Requires-Dist: sphinx-inline-tabs ; extra == 'docs' +Requires-Dist: pyenchant>=3 ; extra == 'docstest' +Requires-Dist: readme-renderer>=30.0 ; extra == 'docstest' +Requires-Dist: sphinxcontrib-spelling>=7.3.1 ; extra == 'docstest' +Requires-Dist: build>=1.0.0 ; extra == 'sdist' +Requires-Dist: ruff>=0.11.11 ; extra == 'pep8test' +Requires-Dist: mypy>=1.14 ; extra == 'pep8test' +Requires-Dist: check-sdist ; extra == 'pep8test' +Requires-Dist: click>=8.0.1 ; extra == 'pep8test' +Provides-Extra: ssh +Provides-Extra: nox +Provides-Extra: test +Provides-Extra: test-randomorder +Provides-Extra: docs +Provides-Extra: docstest +Provides-Extra: sdist +Provides-Extra: pep8test +License-File: LICENSE +License-File: LICENSE.APACHE +License-File: LICENSE.BSD +Summary: cryptography is a package which provides cryptographic recipes and primitives to Python developers. +Author-email: The Python Cryptographic Authority and individual contributors +License-Expression: Apache-2.0 OR BSD-3-Clause +Requires-Python: >=3.8, !=3.9.0, !=3.9.1 +Description-Content-Type: text/x-rst; charset=UTF-8 +Project-URL: homepage, https://github.com/pyca/cryptography +Project-URL: documentation, https://cryptography.io/ +Project-URL: source, https://github.com/pyca/cryptography/ +Project-URL: issues, https://github.com/pyca/cryptography/issues +Project-URL: changelog, https://cryptography.io/en/latest/changelog/ + +pyca/cryptography +================= + +.. image:: https://img.shields.io/pypi/v/cryptography.svg + :target: https://pypi.org/project/cryptography/ + :alt: Latest Version + +.. image:: https://readthedocs.org/projects/cryptography/badge/?version=latest + :target: https://cryptography.io + :alt: Latest Docs + +.. image:: https://github.com/pyca/cryptography/actions/workflows/ci.yml/badge.svg + :target: https://github.com/pyca/cryptography/actions/workflows/ci.yml?query=branch%3Amain + +``cryptography`` is a package which provides cryptographic recipes and +primitives to Python developers. Our goal is for it to be your "cryptographic +standard library". It supports Python 3.8+ and PyPy3 7.3.11+. + +``cryptography`` includes both high level recipes and low level interfaces to +common cryptographic algorithms such as symmetric ciphers, message digests, and +key derivation functions. For example, to encrypt something with +``cryptography``'s high level symmetric encryption recipe: + +.. code-block:: pycon + + >>> from cryptography.fernet import Fernet + >>> # Put this somewhere safe! + >>> key = Fernet.generate_key() + >>> f = Fernet(key) + >>> token = f.encrypt(b"A really secret message. Not for prying eyes.") + >>> token + b'...' + >>> f.decrypt(token) + b'A really secret message. Not for prying eyes.' + +You can find more information in the `documentation`_. + +You can install ``cryptography`` with: + +.. code-block:: console + + $ pip install cryptography + +For full details see `the installation documentation`_. + +Discussion +~~~~~~~~~~ + +If you run into bugs, you can file them in our `issue tracker`_. + +We maintain a `cryptography-dev`_ mailing list for development discussion. + +You can also join ``#pyca`` on ``irc.libera.chat`` to ask questions or get +involved. + +Security +~~~~~~~~ + +Need to report a security issue? Please consult our `security reporting`_ +documentation. + + +.. _`documentation`: https://cryptography.io/ +.. _`the installation documentation`: https://cryptography.io/en/latest/installation/ +.. _`issue tracker`: https://github.com/pyca/cryptography/issues +.. _`cryptography-dev`: https://mail.python.org/mailman/listinfo/cryptography-dev +.. _`security reporting`: https://cryptography.io/en/latest/security/ + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/RECORD b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/RECORD new file mode 100644 index 0000000..8d6b112 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/RECORD @@ -0,0 +1,109 @@ +cryptography-46.0.7.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +cryptography-46.0.7.dist-info/METADATA,sha256=zW5_rTueQjaDE9RZqkkUvVnzmJOCgUWgAhn7xhx1z_E,5748 +cryptography-46.0.7.dist-info/RECORD,, +cryptography-46.0.7.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cryptography-46.0.7.dist-info/WHEEL,sha256=8hEf8NzM1FnmM77AjVt5h8nDuYkN3UqZ79LoIAHXeRE,95 +cryptography-46.0.7.dist-info/licenses/LICENSE,sha256=Pgx8CRqUi4JTO6mP18u0BDLW8amsv4X1ki0vmak65rs,197 +cryptography-46.0.7.dist-info/licenses/LICENSE.APACHE,sha256=qsc7MUj20dcRHbyjIJn2jSbGRMaBOuHk8F9leaomY_4,11360 +cryptography-46.0.7.dist-info/licenses/LICENSE.BSD,sha256=YCxMdILeZHndLpeTzaJ15eY9dz2s0eymiSMqtwCPtPs,1532 +cryptography/__about__.py,sha256=gqlbnDo1OfcbS26uUxuoIbg0fLAR7YZMVNMBWcqjG2A,445 +cryptography/__init__.py,sha256=mthuUrTd4FROCpUYrTIqhjz6s6T9djAZrV7nZ1oMm2o,364 +cryptography/exceptions.py,sha256=835EWILc2fwxw-gyFMriciC2SqhViETB10LBSytnDIc,1087 +cryptography/fernet.py,sha256=3Cvxkh0KJSbX8HbnCHu4wfCW7U0GgfUA3v_qQ8a8iWc,6963 +cryptography/hazmat/__init__.py,sha256=5IwrLWrVp0AjEr_4FdWG_V057NSJGY_W4egNNsuct0g,455 +cryptography/hazmat/_oid.py,sha256=p8ThjwJB56Ci_rAIrjyJ1f8VjgD6e39es2dh8JIUBOw,17240 +cryptography/hazmat/asn1/__init__.py,sha256=hS_EWx3wVvZzfbCcNV8hzcDnyMM8H-BhIoS1TipUosk,293 +cryptography/hazmat/asn1/asn1.py,sha256=eMEThEXa19LQjcyVofgHsW6tsZnjp3ddH7bWkkcxfLM,3860 +cryptography/hazmat/backends/__init__.py,sha256=O5jvKFQdZnXhKeqJ-HtulaEL9Ni7mr1mDzZY5kHlYhI,361 +cryptography/hazmat/backends/openssl/__init__.py,sha256=p3jmJfnCag9iE5sdMrN6VvVEu55u46xaS_IjoI0SrmA,305 +cryptography/hazmat/backends/openssl/backend.py,sha256=tV5AxBoFJ2GfA0DMWSY-0TxQJrpQoexzI9R4Kybb--4,10215 +cryptography/hazmat/bindings/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/_rust.pyd,sha256=_lxM21US95L7D1s84M2MFIRhSFHVb_XR5yFSE-ueC8o,9121280 +cryptography/hazmat/bindings/_rust/__init__.pyi,sha256=KhqLhXFPArPzzJ7DYO9Fl8FoXB_BagAd_r4Dm_Ze9Xo,1257 +cryptography/hazmat/bindings/_rust/_openssl.pyi,sha256=mpNJLuYLbCVrd5i33FBTmWwL_55Dw7JPkSLlSX9Q7oI,230 +cryptography/hazmat/bindings/_rust/asn1.pyi,sha256=BrGjC8J6nwuS-r3EVcdXJB8ndotfY9mbQYOfpbPG0HA,354 +cryptography/hazmat/bindings/_rust/declarative_asn1.pyi,sha256=2ECFmYue1EPkHEE2Bm7aLwkjB0mSUTpr23v9MN4pri4,892 +cryptography/hazmat/bindings/_rust/exceptions.pyi,sha256=exXr2xw_0pB1kk93cYbM3MohbzoUkjOms1ZMUi0uQZE,640 +cryptography/hazmat/bindings/_rust/ocsp.pyi,sha256=VPVWuKHI9EMs09ZLRYAGvR0Iz0mCMmEzXAkgJHovpoM,4020 +cryptography/hazmat/bindings/_rust/openssl/__init__.pyi,sha256=iOAMDyHoNwwCSZfZzuXDr64g4GpGUeDgEN-LjXqdrBM,1522 +cryptography/hazmat/bindings/_rust/openssl/aead.pyi,sha256=4Nddw6-ynzIB3w2W86WvkGKTLlTDk_6F5l54RHCuy3E,2688 +cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi,sha256=LhPzHWSXJq4grAJXn6zSvSSdV-aYIIscHDwIPlJGGPs,1315 +cryptography/hazmat/bindings/_rust/openssl/cmac.pyi,sha256=nPH0X57RYpsAkRowVpjQiHE566ThUTx7YXrsadmrmHk,564 +cryptography/hazmat/bindings/_rust/openssl/dh.pyi,sha256=Z3TC-G04-THtSdAOPLM1h2G7ml5bda1ElZUcn5wpuhk,1564 +cryptography/hazmat/bindings/_rust/openssl/dsa.pyi,sha256=qBtkgj2albt2qFcnZ9UDrhzoNhCVO7HTby5VSf1EXMI,1299 +cryptography/hazmat/bindings/_rust/openssl/ec.pyi,sha256=zJy0pRa5n-_p2dm45PxECB_-B6SVZyNKfjxFDpPqT38,1691 +cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi,sha256=VXfXd5G6hUivg399R1DYdmW3eTb0EebzDTqjRC2gaRw,532 +cryptography/hazmat/bindings/_rust/openssl/ed448.pyi,sha256=Yx49lqdnjsD7bxiDV1kcaMrDktug5evi5a6zerMiy2s,514 +cryptography/hazmat/bindings/_rust/openssl/hashes.pyi,sha256=OWZvBx7xfo_HJl41Nc--DugVyCVPIprZ3HlOPTSWH9g,984 +cryptography/hazmat/bindings/_rust/openssl/hmac.pyi,sha256=BXZn7NDjL3JAbYW0SQ8pg1iyC5DbQXVhUAiwsi8DFR8,702 +cryptography/hazmat/bindings/_rust/openssl/kdf.pyi,sha256=xXfFBb9QehHfDtEaxV_65Z0YK7NquOVIChpTLkgAs_k,2029 +cryptography/hazmat/bindings/_rust/openssl/keys.pyi,sha256=teIt8M6ZEMJrn4s3W0UnW0DZ-30Jd68WnSsKKG124l0,912 +cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi,sha256=_SW9NtQ5FDlAbdclFtWpT4lGmxKIKHpN-4j8J2BzYfQ,585 +cryptography/hazmat/bindings/_rust/openssl/rsa.pyi,sha256=2OQCNSXkxgc-3uw1xiCCloIQTV6p9_kK79Yu0rhZgPc,1364 +cryptography/hazmat/bindings/_rust/openssl/x25519.pyi,sha256=ewn4GpQyb7zPwE-ni7GtyQgMC0A1mLuqYsSyqv6nI_s,523 +cryptography/hazmat/bindings/_rust/openssl/x448.pyi,sha256=juTZTmli8jO_5Vcufg-vHvx_tCyezmSLIh_9PU3TczI,505 +cryptography/hazmat/bindings/_rust/pkcs12.pyi,sha256=vEEd5wDiZvb8ZGFaziLCaWLzAwoG_tvPUxLQw5_uOl8,1605 +cryptography/hazmat/bindings/_rust/pkcs7.pyi,sha256=txGBJijqZshEcqra6byPNbnisIdlxzOSIHP2hl9arPs,1601 +cryptography/hazmat/bindings/_rust/test_support.pyi,sha256=PPhld-WkO743iXFPebeG0LtgK0aTzGdjcIsay1Gm5GE,757 +cryptography/hazmat/bindings/_rust/x509.pyi,sha256=n9X0IQ6ICbdIi-ExdCFZoBgeY6njm3QOVAVZwDQdnbk,9784 +cryptography/hazmat/bindings/openssl/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/openssl/_conditional.py,sha256=DMOpA_XN4l70zTc5_J9DpwlbQeUBRTWpfIJ4yRIn1-U,5791 +cryptography/hazmat/bindings/openssl/binding.py,sha256=x8eocEmukO4cm7cHqfVmOoYY7CCXdoF1v1WhZQt9neo,4610 +cryptography/hazmat/decrepit/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/ciphers/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/ciphers/algorithms.py,sha256=YrKgHS4MfwWaMmPBYRymRRlC0phwWp9ycICFezeJPGk,2595 +cryptography/hazmat/primitives/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/_asymmetric.py,sha256=RhgcouUB6HTiFDBrR1LxqkMjpUxIiNvQ1r_zJjRG6qQ,532 +cryptography/hazmat/primitives/_cipheralgorithm.py,sha256=Eh3i7lwedHfi0eLSsH93PZxQKzY9I6lkK67vL4V5tOc,1522 +cryptography/hazmat/primitives/_serialization.py,sha256=chgPCSF2jxI2Cr5gB-qbWXOvOfupBh4CARS0KAhv9AM,5123 +cryptography/hazmat/primitives/asymmetric/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/asymmetric/dh.py,sha256=0v_vEFFz5pQ1QG-FkWDyvgv7IfuVZSH5Q6LyFI5A8rg,3645 +cryptography/hazmat/primitives/asymmetric/dsa.py,sha256=Ld_bbbqQFz12dObHxIkzEQzX0SWWP41RLSWkYSaKhqE,4213 +cryptography/hazmat/primitives/asymmetric/ec.py,sha256=dj0ZR_jTVI1wojjipjbXNVccPSIRObWxSZcTGQKGbHc,13437 +cryptography/hazmat/primitives/asymmetric/ed25519.py,sha256=jZW5cs472wXXV3eB0sE1b8w64gdazwwU0_MT5UOTiXs,3700 +cryptography/hazmat/primitives/asymmetric/ed448.py,sha256=yAetgn2f2JYf0BO8MapGzXeThsvSMG5LmUCrxVOidAA,3729 +cryptography/hazmat/primitives/asymmetric/padding.py,sha256=vQ6l6gOg9HqcbOsvHrSiJRVLdEj9L4m4HkRGYziTyFA,2854 +cryptography/hazmat/primitives/asymmetric/rsa.py,sha256=ZnKOo2f34MCCOupC03Y1uR-_jiSG5IrelHEmxaME3D4,8303 +cryptography/hazmat/primitives/asymmetric/types.py,sha256=LnsOJym-wmPUJ7Knu_7bCNU3kIiELCd6krOaW_JU08I,2996 +cryptography/hazmat/primitives/asymmetric/utils.py,sha256=DPTs6T4F-UhwzFQTh-1fSEpQzazH2jf2xpIro3ItF4o,790 +cryptography/hazmat/primitives/asymmetric/x25519.py,sha256=_4nQeZ3yJ3Lg0RpXnaqA-1yt6vbx1F-wzLcaZHwSpeE,3613 +cryptography/hazmat/primitives/asymmetric/x448.py,sha256=WKBLtuVfJqiBRro654fGaQAlvsKbqbNkK7c4A_ZCdV0,3642 +cryptography/hazmat/primitives/ciphers/__init__.py,sha256=eyEXmjk6_CZXaOPYDr7vAYGXr29QvzgWL2-4CSolLFs,680 +cryptography/hazmat/primitives/ciphers/aead.py,sha256=Fzlyx7w8KYQakzDp1zWgJnIr62zgZrgVh1u2h4exB54,634 +cryptography/hazmat/primitives/ciphers/algorithms.py,sha256=Q7ZJwcsx83Mgxv5y7r6CyJKSdsOwC-my-5A67-ma2vw,3407 +cryptography/hazmat/primitives/ciphers/base.py,sha256=aBC7HHBBoixebmparVr0UlODs3VD0A7B6oz_AaRjDv8,4253 +cryptography/hazmat/primitives/ciphers/modes.py,sha256=20stpwhDtbAvpH0SMf9EDHIciwmTF-JMBUOZ9bU8WiQ,8318 +cryptography/hazmat/primitives/cmac.py,sha256=sz_s6H_cYnOvx-VNWdIKhRhe3Ymp8z8J0D3CBqOX3gg,338 +cryptography/hazmat/primitives/constant_time.py,sha256=xdunWT0nf8OvKdcqUhhlFKayGp4_PgVJRU2W1wLSr_A,422 +cryptography/hazmat/primitives/hashes.py,sha256=M8BrlKB3U6DEtHvWTV5VRjpteHv1kS3Zxm_Bsk04cr8,5184 +cryptography/hazmat/primitives/hmac.py,sha256=RpB3z9z5skirCQrm7zQbtnp9pLMnAjrlTUvKqF5aDDc,423 +cryptography/hazmat/primitives/kdf/__init__.py,sha256=4XibZnrYq4hh5xBjWiIXzaYW6FKx8hPbVaa_cB9zS64,750 +cryptography/hazmat/primitives/kdf/argon2.py,sha256=UFDNXG0v-rw3DqAQTB1UQAsQC2M5Ejg0k_6OCyhLKus,460 +cryptography/hazmat/primitives/kdf/concatkdf.py,sha256=Ua8KoLXXnzgsrAUmHpyKymaPt8aPRP0EHEaBz7QCQ9I,3737 +cryptography/hazmat/primitives/kdf/hkdf.py,sha256=M0lAEfRoc4kpp4-nwDj9yB-vNZukIOYEQrUlWsBNn9o,543 +cryptography/hazmat/primitives/kdf/kbkdf.py,sha256=oZepvo4evhKkkJQWRDwaPoIbyTaFmDc5NPimxg6lfKg,9165 +cryptography/hazmat/primitives/kdf/pbkdf2.py,sha256=1WIwhELR0w8ztTpTu8BrFiYWmK3hUfJq08I79TxwieE,1957 +cryptography/hazmat/primitives/kdf/scrypt.py,sha256=XyWUdUUmhuI9V6TqAPOvujCSMGv1XQdg0a21IWCmO-U,590 +cryptography/hazmat/primitives/kdf/x963kdf.py,sha256=zLTcF665QFvXX2f8TS7fmBZTteXpFjKahzfjjQcCJyw,1999 +cryptography/hazmat/primitives/keywrap.py,sha256=XV4Pj2fqSeD-RqZVvY2cA3j5_7RwJSFygYuLfk2ujCo,5650 +cryptography/hazmat/primitives/padding.py,sha256=QT-U-NvV2eQGO1wVPbDiNGNSc9keRDS-ig5cQOrLz0E,1865 +cryptography/hazmat/primitives/poly1305.py,sha256=P5EPQV-RB_FJPahpg01u0Ts4S_PnAmsroxIGXbGeRRo,355 +cryptography/hazmat/primitives/serialization/__init__.py,sha256=Q7uTgDlt7n3WfsMT6jYwutC6DIg_7SEeoAm1GHZ5B5E,1705 +cryptography/hazmat/primitives/serialization/base.py,sha256=ikq5MJIwp_oUnjiaBco_PmQwOTYuGi-XkYUYHKy8Vo0,615 +cryptography/hazmat/primitives/serialization/pkcs12.py,sha256=mS9cFNG4afzvseoc5e1MWoY2VskfL8N8Y_OFjl67luY,5104 +cryptography/hazmat/primitives/serialization/pkcs7.py,sha256=5OR_Tkysxaprn4FegvJIfbep9rJ9wok6FLWvWwQ5-Mg,13943 +cryptography/hazmat/primitives/serialization/ssh.py,sha256=hPV5obFznz0QhFfXFPOeQ8y6MsurA0xVMQiLnLESEs8,53700 +cryptography/hazmat/primitives/twofactor/__init__.py,sha256=tmMZGB-g4IU1r7lIFqASU019zr0uPp_wEBYcwdDCKCA,258 +cryptography/hazmat/primitives/twofactor/hotp.py,sha256=ivZo5BrcCGWLsqql4nZV0XXCjyGPi_iHfDFltGlOJwk,3256 +cryptography/hazmat/primitives/twofactor/totp.py,sha256=m5LPpRL00kp4zY8gTjr55Hfz9aMlPS53kHmVkSQCmdY,1652 +cryptography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cryptography/utils.py,sha256=nFHkPQZycOQGeBtBRkWSA4WjOHFo7pwummQt-PPSkZc,4349 +cryptography/x509/__init__.py,sha256=xloN0swseNx-m2WFZmCA17gOoxQWqeU82UVjEdJBePQ,8257 +cryptography/x509/base.py,sha256=OrmTw3y8B6AE_nGXQPN8x9kq-d7rDWeH13gCq6T6D6U,27997 +cryptography/x509/certificate_transparency.py,sha256=JqoOIDhlwInrYMFW6IFn77WJ0viF-PB_rlZV3vs9MYc,797 +cryptography/x509/extensions.py,sha256=QxYrqR6SF1qzR9ZraP8wDiIczlEVlAFuwDRVcltB6Tk,77724 +cryptography/x509/general_name.py,sha256=sP_rV11Qlpsk4x3XXGJY_Mv0Q_s9dtjeLckHsjpLQoQ,7836 +cryptography/x509/name.py,sha256=ty0_xf0LnHwZAdEf-d8FLO1K4hGqx_7DsD3CHwoLJiY,15101 +cryptography/x509/ocsp.py,sha256=Yey6NdFV1MPjop24Mj_VenjEpg3kUaMopSWOK0AbeBs,12699 +cryptography/x509/oid.py,sha256=BUzgXXGVWilkBkdKPTm9R4qElE9gAGHgdYPMZAp7PJo,931 +cryptography/x509/verification.py,sha256=gR2C2c-XZQtblZhT5T5vjSKOtCb74ef2alPVmEcwFlM,958 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/REQUESTED b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/WHEEL b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/WHEEL new file mode 100644 index 0000000..dcfb13d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: maturin (1.9.4) +Root-Is-Purelib: false +Tag: cp311-abi3-win_amd64 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE new file mode 100644 index 0000000..b11f379 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE @@ -0,0 +1,3 @@ +This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.APACHE b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.APACHE new file mode 100644 index 0000000..62589ed --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.APACHE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.BSD b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.BSD new file mode 100644 index 0000000..ec1a29d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography-46.0.7.dist-info/licenses/LICENSE.BSD @@ -0,0 +1,27 @@ +Copyright (c) Individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of PyCA Cryptography nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography/hazmat/bindings/_rust.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/cryptography/hazmat/bindings/_rust.pyd new file mode 100644 index 0000000000000000000000000000000000000000..5e86a741cb8f774878a410228b10c248955694af GIT binary patch literal 9121280 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≺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

7Jr?QOLglXT+R9srPYTh-Q|)}Mc0!Av*_jx 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�C& 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�UvyNxeTQ||z)L!2=sqTRKzKMZD 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

Ykr=F9-i6d;d8#T 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�&+q=bHGIC2z@IW7 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 z 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ȿ+XHPwqnawhtKg;Xed@$(SW?@V%Mx|Q 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

caW0aV3+eIR?hRsZri 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

ey}0v#=a?CWaTEj6TkZ9Rla; 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ⅇ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%0A! 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 mvJYN}D@EF5;RhkNYL=i*7}A&U2+JzVuH1GW?Q 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 z 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
=MpzQb9nbPpazO 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 C<7}wivSo4sw*>Xcy36o>Wua> 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%0D9KZ5;YsPpPYyQ$iB^8H^E+pL;;n@O)+nQ2S2FPl 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%0D2)MJJa|_|vjwspig?6L@*pD-KSRU} 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%0D*_nd}!$&AK*# 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

  • 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≺`RZ$YOxWZD zIeyh(o~1C39KqRHFoVmtbTM2+Cu!K+a&U&N7}qq!t_xdZ+v}!gL@~G;zteF1Ih)~l z?b(juxR>9dCdnV>d8KMN^56A`qrZD7HDf;ThhwCBC^pCN5Nfh=N+N$EKqNO^4}_9U z5-$)mmf5IqHu{^Sj-cgAgqm<1S3xJb>{lcx4H8xhxL>3|t;x8|jvzE;j||x{=9pW@ z>S|HQxU3Y4g^nTKrW3UyAeF!`d6aB2In<=RJjnc4PX>02z`YESNU6j$LudJwdwoBz zS*ZWYm#IlY5Z(afkW~IO0BNm7ne%6C^h#EmJMZoR<0Gh?lo#9qzateW{~|nMYMzU_ zWkbvjif!+E{d9;ZRL{PC#*RGYWzCVA z?&k|ATJp%-zsD|l3A@j`uJCrvQ`Q`PK0I?pIKdU&WUfr?wXS8fotSOD^#Th55vId|$2!1vB}}2@HZ=pbyuRTcBt0h}4u& z*IT?d+24mp91|%B5l>U$5SMWG-M4+OPpSo_Vla+EmQ~JdR+D4pt8*wkcy;vnu$L8X zSt3DpOE|D3Cyb5o90sva^D~kEW)C}vIav&%*QO~`#;mivv@2L~2)91{>0-YVm0Br_ z+MZ@II{x9_-?Y>FUYpbJefcnL-yovxIK;0>mlA4<&CfK$JvP!4io-3^`7yt2(u7h| z!God{hP-BP!th~BSiY}1*q!%GrpXh6=ApND$#LZe-nm7IP-eMz^`Meh;$w#=#$<-J zZ3!jDX2vHM#m5f1+1j}V%_o?u1EkbUaP@_~@9YgI>zK^tBd#ut4DMo2G&xMx8dIYB zco+RFklUZ^J-@T`3mXID|LFf+^czhaj+`dcq{bGS23JMcB*h?9*Ol%en3^!$%t|+4 zjS>;@OFHeBD#-p$*t?A38K09{A8LxbK^&OLAi_aLVvVbv#p^y@{@BTY8?T+lqw~tv zVvFzDcATqyyOS^3qM5h;M-lqm5-?U(qgsNcX4f;TM}}l%5k&)%isD-Y_o}aG|P{+2pQ{A45TY>ST~iK1HxHfgokYp58D`BDL7FA9gou)5h%l!c^~GZm4=*i z?KB-_bf^uxp7s5Ne6;^Xc8KgX-R%m>c1ylRag}bc6Nzkf8FXe+CgLc>TM5s#)J5z%?LEe=)p{U)LC?B%w_c8y%GELw8-?>r!4Jv<#ZxW2&Am*J#V#NjY3t7ElsHUMj6M*OSR> z*TlWmbpU1IJ(}Y4m#e2clgCS)sA!r^mrVbej!qH{g$ryK3#ol58J>?0J~b~emPo+MXLk(8OF@4G?mFM6&+Ps7 z?=}Lea<@o!s1=esN61BKr7gmL$1qvUOWy2?`7z&hU_Shh{{{1h?bnI5HsUJDwnN($JS$VvAbGi3EfpK-uU|Usu`fSNh!3K1vCqo4+P|-e> zWrG5-9#5UK&~TuIw~3=rZ&EPq4YbPPJ|xrMIJEz1lvyiTRc2;eG^M|Jy_K7;j9_2w$Cq6P$9g>z94Eg8Ln3yvE^z;3TM4_S&- z9iMKI3O0p4dDRhUzi|;JJi^|7l^!x$#f&ibc9p#q_|1}d&egpty+PsB>Mlr{q)z)t zs^r-ssh5sOg`^*JKP*RWDSzrr>ETlD>P*RTDK~be^mHk;q?8Aq|2RZc-2V*CqIuJ2gZ~q~ijNXK z>njq4<)PT}^{Siv!hCuB!jCjs>W4;-L7aHPGi*BBjui0c>8*NoM06l#9#~Pa0g6}G z;xf>lTvYB|_)&5xZ;y)ZWxMk{XwGmA`NZyAL(fB28Eqf%Bi*XWeydcWDyDU1e#M)P zf5xJvqH*OSiecLoUg^p@SJZ}LpJzq}+yDLf-y_nGD?@Nu4bRL-qVdT{ z_6!GJ;2u+S9p&&mYhY5$I#2{za-P;|xhZFZ29dH7b<_g{yc0LDh6u3=tPH&A#!Px{|Z+iUMUqOCl%XF+D{<0B>T@UZ^mySFw9sY{Zb^+<# z7m>EpZBj*Tm50rVKk}Gpw8KQ^47Bt*Pb*3m4y2-3$rH!#$S;JkH|vhzmZkJQ#Rhc? zo+~O;msL6QW!WZNHggBA%!tDkTgrz)5Uu6$ijOK9KdQ^Fz>mH^n{M8UeI~Pb#+9t` zmAZW;e#{FEYc5+qH#?NIKAF8(3GqprLt9_WjPwp|<2rFc;gSq%hUP_s6zfx7_H7_x zG$x$E`2%>3#X&DC0$id_Y5>J7>;T@}WdN)7)*rxLz6db7V`ZE4g&V-%{i$;R_qXsi z=}2{NyZrYh!5_RNB6C&z(BwfK3;&)L!g@3Q5r5d;hHtV+mb0qR@5-_RQ4d?^ut={J zJqH!og?>fPtb+7HpW>p^mUPE&?8+0u3OK2Vi>`gCX!I6`l3V`RiIN-(5R_E< zDA@*|_EE9{S(ZzA;=Q^cWyj}^mQN5`H8)$x4^pg8VfB{EvcZKCf8;W^d-2D1KZR2i z{!$=A_l`S!G`2GbLf1=AW!7 zYDytZY1_+!>y%}PHqag))YgaOF0$oz{q$wa&s0JvogwTArBn3av(I&U+ns#|8vBr; zgWO*I%#qvv4|SsTUJG+47TQ3fkJ<~_mUqgQ!a0j@+XXCr9n3#{nbFGKUvn=}>WxUX}F_ie)!DK+bkyq0jrhppj^*(>k-!dfg+Pr{^7icqN>%{H1V4&o$wU z_klZ+?~#1Bk~Wr44!<(9T`hu*3r%)IDgf0`AD32@jitFiu`Sf&)iooG6rU5#m*?l`S77NMY zHCUMl(`%%ly9#B+iY0c*E7tC~u^CaUJTT=WzDfg?t$dA|6*&3>!U$ArH~neIYA>(u z%j7LS5@^YTfENbFqugJl#9>P8|7cHdX(&)3pZH>x4-~Dsx_4ko?qi=0&EWS-RDFCs z&sXmgC|dGm;H(w10!J;m76men%7H1LCHLa@%ImVM+wxH_1&Z3P9T?3c?X_!rL~>Nk zDeB3Sg*DV1vd98r{>eb(`+%ePR_yjxGU=AEGbs6zpnFT{&~eE#$dtXk%{FDp)p+ly zoyR510>_mIR8H(YB??3ejz(w_f=|I%}S{!rQJwvc=L-wXLB?Bt*82 zSMT3(enRn8q0}0sUh|b0qp-Q^>JEMUmw|J6|DqE8_uN59i_dRd8N$gMnwTtcB^4U> zVpjW{iL}0;+ItCiJXzmy2JjzNL`lM~uhOb5q%m^J9X)YyMxe+i0^dy!1+2`u6xlYl zF2w0y7MP{(BmX$@pp2{j5GY#xWmRDKJF!%s8~VL~tj#$cW~u%3pZRh!=X16{LdTbZ z;Y(%(e$iZ>sLA{)@G;H{(^`SFwmdL;eTBCwecnL+w?e~OquY{0{jBVfR`j^>J zl!~Ha-|bZqD1WPRCOcAT@M7(I1!9?OC|8vCoSM;?y5Ul)t?*vvXn64-hFTgsQrE*5 z+4@4;Hmj=scV?|DFIy7rpF&Z(w7l%ixn)Vt?{gPW!sSaX^|Pu~2(WDFdghQ<4XdSL zl)3()WOh0F)$+=jUxs5lXvVc{UdvIf9k-(VxLTU3h-~*VR#^6hyfxc4h5})XkinGh zUv9bx=W_^bTbtcmE%~;Gw{(dalC|DPM0n;BTD0}|Ly_Tn<_IMXJr@A1GS%Gp$_=@d zbo}~%mAujxL-q{GEBHj|d@;yvOs!}rl+;ojdQLl}z=K2zVD~m`LrJq_qPv@iZ3qq9 zH0-@(Q8}jorGByWD*>R0pGTdD_O(`jBJ>UA(6M-m*Ag1GG^7I&^bC~-yP{2j%GKV> z+ujOoU6L6nf7#PRUgUh*dM=c;B!yCAFFi#RLbK?(joa zxJf}VHFOsFjbG#;ilkOIZko3-c@#yCfd2jb1>N#X_)!&Cb>tV0XwCs-cMVFnW|W^b zOjcc5F1CNe$({B^Tt!bAOLQIW2|N$c35?l+XrYSwb}2pYrN$J~U+9|GE4Z~KCo;)z zH?$Xd-`PmiLI+}!=iI>bF^QsjB?~3CG2+edahQJ0=vYB;TLFK zF+X4_Dg;P$3(v%{0An2xctQui4Lsj4%5J+->vri9HZr#GOA>Y)Q}bSJ+%)GnMj!td?o~<_i{8T54c-f!#@E2YVSy&|v zZ>thV9-J@R>G$Que^=oa(qJWxOkJ!j+gN6+$f<=qP`Lp|q~k)~N-0A^-WPV^-MTaw z9fs5~Cs&K0uv58hLvr7(OS`VVeYY;{8K`JgxpL~*K(4Jzb0PoozKNw2p0(@lt%u}`Z7Oz@6=~MSrHdk)@svM_LyiS`( z!#4WDtxCB=QNmC!OfUAkeq(IMek@;KhG*g^mD(>5`y15Bx$=tgQKcEf-Zhc424{>Q zx&@8ftgcq`4Eq|!O>3X&)SFN3o9#fIkSYfQSsd~)kPe-85tG*BS5wsGq`jFeMi zH^B_%=cp6IyCLSUzE&S16Gg~xLC8hj_*nsvI{Vw=@)n7d-?gOd&b*Kk23J9>vE{S7 z=+9(-m3-G6Q7t-8pO@Y>&L`@(JQR8u_FT1ALUc36Wk|hmprrNIb0p6omaGIG{-*@~R_*yKCKyfiyfdLR$n2KXD0ir74~)K;{kV`0^%BR{ zH?nH!4ObFg#5+tBKGQYB$$tuHd)WIb4Rj?NQ|n)q0_Z6g=vD!pkY|3;0kp-#9%ZdL z(gK~3$EoK)2b8@cJs@;Xpy2?>O;-u#*mkoE?x*(82$BQ~i zUTanYMzz!MzrB`j_&Rg!E)CC1L*2FEPf?J;0~>zBBWa-R<}3#kH|=#MS3t>lVaSGc z(lK8Fv))}qd&d(p2DzcKOGkc(&i zA6E(e&R<^7OCtQZyHmBNOw;$1$uT}#lP2X3y5QS(b`aV|bIZ=8y`gZnVvmCTg zlNdBQ`W5f6ABkZ|HuqO)LsV7HU+_#!LadRbIVRnN>}S6B=Yw-}$7#uXtJ1^MrroN+ zF%;2vvH3g47x1yh`-DnAsB1X>WZ^<;h5ccvIAKuY%#=CoVj^i}o8nn=71=_s0u7TW z5^DO?HSaJrkI}w-oQ(C1&0syfogZ84Me-I5G;Ak#$!CZ|hY7H(oBrm%`H(kCGtW_l zLV7tz>rnjM0vhk4)42##_5w}B9-CI{eZ}{!h4mDd$P>0_;z9jl-X0SyJvuU6r_43z zkgA5YIQzGy;bE9qwx2S0kHFJC3f~JY=$VJHV6gOv=!Y}`gG?B)wQ1x?ftA%Mm-5e2 zfJ{P7wr9>g#_aQg^~4CjJv3wSzQSE1w~%Kuq}h35hz~Cc@XwsIWP2((+*^@6f^G*G zNd=S9B;1RRhMJ`RB=M6?!rvP6;4kIa9`+t{AqUu=E>s4D**o+NyZ!4}ONNj06I&Qa z$I;6PqaF1n@(G4u{Ri5fxbPdzI7H%(NX5<=PZI#Z-L;E4#CTKHqSrr5ZoiPzmMRz84Bu(abv0C zpPaKS)TGmSv3sm4@)MMjsoU$AkvgNi$ia+qp80y6x)sG5X|#o(Khx%1XZF8CR=kw% z4i&~NE36q>S7zH-E*BKmMhHXmp@NPvp#MOub7tN0US4Zn*6+mN;$*KC;5N04 zj~z}Np4J)#8^tR%747M@Cv!03>sj`BbR@`!8%F;^e2yx-wqhUK0;^37Xc_@d_1FQ< z&J1TIO(sG-b0rnM8VFaL8=ti}TfGsS&2Tuooo924aH(rqFD=A`Cwm!bJQmoS;~kOS z16GrBO~?VbMF12@8>*fl0F?lc*H@IbxB?fcKvmg$>ghY-vi}BdoXSQA_tPE!vTYbA z5LY=6{RE;HAj-Yf6544(onBi{R69rZ1zHJuSVrZ*wQK;I=DHDid4sbLi{GXZ0o~GA zfPL}y8Fq-e47;N)NAIZic8Py=ilsFCZt>dmozW2kbV7!L@3z}4nk)0nJ1>bW0u8L8 z48&=c`yI|qaw8kTC!*E-{2cdNQo&_wm<+5XHKGgDY^zJQdOOUvpNZk!P{@AIttlU0 zpdzhd?{%ULk}K6>UL{Xi`}OZ>$?1I_`8h9saD|*80hG3PWP2jBcE~XuYD)7t51S&| zXM!i&PNAV&v2|2h0IIcKWD4%g%+57ckQocER-!rLjs-zVrg>^{nx_V3nuDHAQ9$`G zCJQ^YtK{%tX&KT=VxsL{co>fMO9&fcIcQ$s>CD3S7WCW$;XPP7BKlD!wfybEb~2ljoe2?&SO5bm`<)>+tfH-_JeF z1<;J^XQ1IPbn*YGujdAy&SJk2yy{SIEpqy4uGhm}En7Et46jm4)LGrZ9xN@1ewsX* zJj1$R#;q?uf}LZ!V&~VVr?FG45%;mPKFB0b++SEv`-$0rTK_7x1Rr+8kk8LM>_P3O z&YUpHB1y9dLr^)%;2?7nN{tc7+Ign;D$BzOurhv7Vsgq%IUjOlaB?MdwwkbhN@PXo zxu2|ZCGQ~yZuz=BQI9yy@p;RTcWP*!SzcyqT#QPK_@8@PBYi+x7qpslmf=3nG-~{T zx0Y=pGBZKKi~8FH^w4JJE1K0ZIo|kHDrF;anjuRyh)Vn8R?-;K4AYM^a}$C}$!E;m zAAowBsE37U33XdC)sl@Z2o%h`pPgQ_H86D~5GA3CP_~!Kit$o}p0_B5K5RBhyYN;D zW=4n1|5kUIDBTtJC3`Q{kCK&D+VWArTui=H z3(Wdf>u<{R4OqlA~#tzy+k4w;HIPa!GX4`ZP$oL%d zw+XuBo?&^hMU2tz4ifoIuS#54ZEEA32J9q3rpKqy!InK-0ni&MvZzSNhX?2z;Vlo= zpr6`H+K18%Qb@2C4}9yYgbeeoM=czPKrh#r%V+~_=}xY!_B*+GMVC&#`ikqMx4_CoX(R@9TLJAd zV@6oyNo=jdoGBTrlS9hJjgNWhQQ&Bxq5ei+4CMn7frdIztpY`{1iYUi$rPZqbX zLmMZ{AOYSM~D4=R=kCUTjY(!S7ba`p^kyvAbCZ!3O; zk>1{QJ(KnFGj}btn@Y&`>!2qgUN{Jw*j zAS&xGuCp5rsyV9EB89*bgms3RLU^J^S+rJ}(P0S?TPn0O*0t?4^K?a;U~be@das$U zRi*V>h@2pXRAUBmB5I!+n^EB~ULX6v<)S3-KzI9lkqaqv4u)oBVDRDZMrAl8fiEnB zBXUj$b7DyS&AVrRlZwF?ns2z!+mNXJ0`1XvOGcry2*;9{bFwSF6fs6(-v#FOuJo>d zCqox^=biyXwh9kfa%ta62+Alsx6AV+FkgxaAXK&@IBmw*VBX%#(PX-yTm_O3YIVuqGHxt*3!DA)8j%Z{yW zrK13~clYbnO|HD|8Tr(-{oZLzXxDUP&bQVfFlO7Gq-8pl;drUZuj$Bx@BR2385mtb zg_IeHMn>xx{-l2r4KGXX3)=4jiqJlMf|jOr=E>9A?bd2HOIkPlx&D28oZmkk&{PVP zkiC#igx`PveIkE&`sK1}g-eq?{=Ou2pv~p~bvl3U_iKG%hu~;PetX~MLe1SP({*OI z{|B5p8-2U)V;;-J1D~BO<=(19h`WdO3*5XCX3c8l^?ybth2CBDk*%^MT%Y=Y@c+EY z{dPwI=R62st1)g(@C72}k4EzpPi?&C!1SIlb(5t2Xt8Dk`RtrA&DIW;2 zyROEb3XI-ocTRx?2dS(#8F>$dtJ!OY252=idx%{bff^OmOD$AZ?FUugiGG=KEQY-^ za?F4ye@L|*>}nd{QB%aPso1aS8O)LQUMpHlj-} zmynOQpZ?(Rk;vcEuV5YdXxak1+wr(NgRTToX*p%pVk_t*VeXC1^ZF1&Xj$7ewk7M# z((r^h454J(f87dHLYB5{o$Suv{x!{-cR=L4(EPSnd5laB z>B^HD{%1u_BQY~_y#0T)j?JWCo6MOZ{!6P_^9v{sHr?>NkeNly z5P$HJbGbLdO82F5Qw`e2l~#Df$FI`Lu*D$(7xP5^1256fgWlK5og5oll!0JjDe(={ zp8!8v6W3a(=699b(I6xbmYBj2jr-mXAP^dWKoK*X4c4~xoH&NPPA$kIVjuIDYud=k zx8bXB#u`2+e(gTBeBZ<8_;2{lq?pCGea~|`P3ihv$-5``C_ViVob>a~-{N&=`|Cq< zvCk#sb2Mg%h?Lv6MozTCo3syauGUI%3-oQ4&x8FZ#+RDaPiK*)*+qt@$pG5SpY+x) z4vt^Ua*#t!7r1=4k#Es#4ZQf!>>E3kfI(SrOlgt~XNp}Zmi{VlyY)Drwb3#&`!TyK zKL(U8uC)MjPXeH+{c9I(N|_+s_BUUfqA;4%h{qM1GYGZCEvlJ~XN^-Lu&5W9hX&~2 z>9eYtTSDGD(EiyHkXZ21z*e$x_Fgq#OcEjxZ`!$^LKFgt8MD70$v;STpjwLpcHzc& zkg%nkyL`j;s9=O63&W1KgJOew!kFZ# z2U%+>gXu4HzF?hAip?3lm4c+Bo)xI!cJuP$7PSt9-#{QnUBu?0U6^|^(v8nIT=Mp=P8#ZqmDWqJ?-t+1UZ~w z&iWrq4j)ix@w-fSmbjyMHb48z&g3u;!m(;F)^T0eqe-tty#sn$9(ejl*AokW`=2fR z^9BDk2Y+oV@H2OTKcp-CObgn|3%;syh7VOIo8P*yrjaAfx6>6j75ha6rI&i8)qL__ z`29+PHxvCC?S$R8f`(32r2S!A?aL#b@yos&?hk^q`XbKUx8^r~6#=TK@_L2-F;Yi9 zt>%;@JiQgugO!my-#=Hrm5_6^XKZ{CeAG}oW#E2 z_<3kE)+*qEx$hu)L@;?_ZDJY`<3#v@+dme$pjU&Yf4ias84IozGKk>*!eK&2z>3OM+8u|#Cks?c@)2AXG9Nkzh`S7G_N)zx{v!^ zn;gLJx{PRV_q)zJl`&nKM>iV}hj-Wr9bs==DZ4$5#}ZnK#|V#&GG63$El3(y7ih3u zQ@S3~=pU2jI~Mf?FLt0lcaD$x@bEU-bofc#wv_4dCp+!?QF!rz8b|Jp z;JxYlh+```(%IWprsz@2R+ub7@%ONJB_>kKi3lMFU)$>QU8iQV`b^;wFXG5FISapZ zK5?OmJlVbF|L}=s78Uv&^Gw=giRPA}uI2xn)TQMo`7J+^Ty3>fV0W*}+AiYpju*ZU zXS~7ZQ$FAF>H7nBGVz(+<#PnjBfI?W`mXEqspL7EPnu=={D=96*~etJZr2srnHM4o zs4P!eu4XVc%rPC%G;WQaSsAM%zF)(960t!wb^j6PyDHB{c4lGHvU;p`{vd{E8*9xZ zeki!}3Izw4z^sE?HHX<8Kkz9GYzvF-2o89n`79)MaWk`0;;EX-5yW@2H>`3q2tpwF zv%nqu95SvqCtx)5tqZ{}=A;W~ulem^K3lQ=>0TdOA*Vg& z%N;+Ut{hP1Z8nd9Eo?LjcTa6e_`<32HC9jxwLh4ndcUvDQ zwqz6SVFNc6o25`}R?!XxUvCz0&|uF36WPxqM9ZcC3tY|{7w@IFiR_O_RqK^me|lL% z`T(8w@r)IA_MNuXLR=#IYOJ`FKAY#a{O4LBJ*dc2~gMtwy2G&Cibiam=V1;whi6E)+oU$nmttiYs__Rs$q-S^AC2qAGd_*{*asQ zrkUx!|3lj~taR*(pBJKF_^c{WZU7Muly5N)Fy@jWvEt9(kCN<{5Wb2MztQcVQWh0B z4$FMd~H$EdbYZt}H#$K+#R@oQ^Ukv4O3@9sg_y1+==8W--b*1m(B}oTCQ7=v++E^pG46Y�B{ECAuZgy9G|J|0)9_yF)kG2ZvmZ^78 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

    s2x*mDLPEV$;rp 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 z%0D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 z�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 TVXvXM0 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ë~%uC18FMI(Q(PvfHW3p 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%0DB~mZX2PSJ6N4KJiaujdj<+`24G8n%Azw2Y=uDA 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

    U8@if*tvUit(e<(vdRQVMHRMe>a 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

    k?f036o}CrGI&emNQ=`ehxB>`{i=@N`MuCO-$-v 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
    h15(4Ezqq~&y@^pI)4G;0{ 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

    M_(R3-n%Ko6tp;#sb2+apz_mYC7;0p~Ov(6*^Wd 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

    6o==Tz!&#HGd%BwSoiJqD)!2?)1P8N` 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

    j;qTIv2<`)T_?=+1Dx68-Z-kd#d}* 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໭w&P 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

    {xLj2-MaxwGmc2F(( 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�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

    j^O*#<{U%# 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

    h3 zu4W$QlMLv}Nmr3`Mp}uSOQda#9)@()E4{Y$bXEINTlZe9W@YPZzwB3jIr~5j59(Ka zOX;eAbM^x9%XGzp`jz@U`$0|K**}SzvnL1(N>^EDzp4WL1>WQ4Wi_{A&NTdG-Q!NR zgNlxmhF&o7N0(Xq9f-EqEeDP6+&R-jdm&a@FrO{n z7@-9vy6vXY-RdWLcP;j+JH$(m$=C#++>vie&&mn?poIaQbrRgCmu}w8v?mS~i_J`D za+M3&ily4nmh3Yk|4h&=%hjvrIx)U|vHpy&TDr^M)v56vn-NAPERIW~Rg0|GI z&N@5p(}@>oSLmL2TG0D`nBIc8vN^#Yx2MPS{1nrxu%dy^xEw8BaF955g82@J?7)@0 z36Ue_`m+Tli!WaklQ-lukz#U=-f&b*zQBJSdfhzrXU-t9&t{!K`@(WM z!%FS)>&NX&KHN9bmnQS7(ia;~x(Ui5ml1_E9bae^ZMsFBJ~OH0>&E>pHG*8<>^&$J zU&v#m3n`=zDaHZ{x@nHoZ%^F4t-JL--E*`9i}$+kqNR3wren^RzHRPZ_PrG3Fo$W2 zzBRqvkZ{u#)BiPUv}_%5=p^%W>&p%t-s{#KD|)g1L-@(Wce)8zgYk9}qGqP=bQDBS zd!^>(tGN>k6)z#H%$R#E=z~4LUaylX8!d8{G;Rqd9Ox~iHs z#HQ{}Z>b(m5hveWL-{NRR+zk4-75B&S=&7;oX@FIrf(a0+swl{&BSM>zm7rOsFe+8 zRT?bcowD%kzj->Rdvh+Q(mZ_4CE~jp*Yz%Qo0*y9;eyowYUZ=51>}5wG~f z#PxSC4`z;YL;JLi>cnuLS3@bwR9UI-l+SR|K4)%yHMEuN>6CwNR4433=WS-_WlN5j z7#)r+e0r#t-`~#6_CiA^X%>|)VSBN`_in!B8`|{J!(2lvDHm#{{iJJk(5GLt$KIau zG1K>?O1_!;xJ|!WqL7(GFYn=P&ypHiMHNjV!0u0>p)AWr9eeBrZXe84c-jYB%2s@O zT3@Wc;ZLZqo6M0|kU7Fa52!@e;l=tpux7402V>n?qF@BR9lOZkm z=}p~<{qN4AUw1=~^_F-Op@t??)XDYDmjgQ55f2syGQ^;MdLP&!$MU9#6f*xD(_@h; zKZ%G!DOrJRyOK!LvsdrBU>di$bNg2N!E4Gfn`csX&t&5!{*vz5TO4YB_)Uuwr`D3c zpTX+OFlTpsvHqQNp81E*R6{Vn?IJv6W*_~y1=9ZH;O8E_WCIfk*)|Y!^6B)pm#~s* z?3TXW#Dz@+auc^qZ-{EU6~Cy)cYzvuAUnE}Z*0S6i=X?u2ZC=I_18#ecH-5y zI^_J`$d4lYCV?UKlg=AXwfkzStBECw9iEj7TkITk)&90xi%!(?^6~Afn(p#eGk$!F z_pe+y@<#Lin{Dn#mOOt;3!2T0`No`ldT9gQ6e;MoV^8Ia<%s#fx}vZAkIReo3x6Ci z$V2B_+fq7m+MJ&HlCHLD+%bCNx2A<9aN9FGEE3M`%o`;M>cRQ9?&}q{7JaLz+MT}# zBfCCf*P~5aAFY4jH;7H&enX_3I_JN+h0nU!(ed||9Xkb8l92hJt}0=b(nr!TKNBcJ zteB+e{y88E*vquK?)sB`XO2uXIUgVRP4=ny)t}x_NmTb}u_m9s=wRe=V(~W~cO*L= zEWJ`SLw53IC>bU8W@81p&M~>wfm?536&7rG;KKQrGrGe?xvtGlPr1=s))S7*H)TF1 zTVz1*-|gjF0KydCJrK6wE9Fc%NAIKcnLjC~cRl#z9Z4jOr-yVoQ;@O1N9s$VFXLC?gGr#tTgHc8wvfE}vLo~;rk-(Bgx!It|u zk8igZ*z)-gcg*nmuMu6{{J70WYs;TA`o#uyA{l?pNj+Nj!$~GnGquuuPIbHF5jAL2 zf%A9@|Hth|)f6L8?D8ojX2>1M7l^F{`UPid&-Tg_`D_fP9Q6Av?sLdr z5BehAMqdIuY2=919wifXi3k!0@h)mJCNm_>3#90 zUwhJA?ucbwnC09M^L8NH5lp#!amcMAPNrb4ti{e8&O5@M3OuAGlXAd;2>&n0pjv*F zL+%ujITcJJv_J9&;^i0XpZM7h2yuG@u_eAZ#FPl@Du^B}H{med8Ida$zeZ?(g?KG@ z;Gp?MFpPq!v5TJShU`(!wZLBFWG{S?oNdH6$>|;yDJ{(y#ey2<$0R>ID#mS92PpXt zk1Wu#UUi=4ty8?{(_ z+72^b&a0KEw%~BeTVnYR+&vJ{<)kel_(pdx%GTE-6ZB_2Z?T_<6Bi3Q>dsvYHCOg7 zCaAcg-=2t*vUAh})kGoKgJ(xP>x?})MCmQczz!yO(AzrW6LMc$yh3j5p!-HI>Kk%W z3Em-Rb<%x{j(Uikm-xsL+Y~Qxu+A-hvcoXaq(4q&@5GLBD5NrB@}M7BW_h-qoezaCD$+1A6wn(=W&{%!0b8Aqk83q7$JTc zG3mMoM~*~=Gs?FE_H5C;ce*|Iq_%H?FdHl`0YwY!|D=119YvZ*H|HMI^3M2$*xnYu z5bHbO7cG7vn6tqz1a%7h;sk@Zd^z$}XZfnltL0!b4&Ss@&)gplMCq0`7Gr@p8!RTlVhSwgq`NvD#hnO?Iq;3GB9DW;Y_XRe_Hw{pTI|KbUN&kk#RK1N z-|;8;9!I}MEaUi-$aT`mx`-<0k-P7it=kd(TJGB()jG~2c~w5+p&>exZkX%7!k)Uf zk8;0LjW8cIql$l<)Jo;wDE?|sY(Ao!F%l#V z=s9*Lk=y5vGVD$Gs^m#2I4GP{m`e=)2{XBVwN#TWnRt{8DFFNAOywkfFfYR+8*WGR zwiHjSu~-7g{?+REW3%T}vK3*JS1eU>k`gcMvCsfS%dyQ4%k=TR49{z@Nf)0>u|{D9 zHog|)X%$v@1+gTLD8Z^83k-NB;op++RUpw7WDmih z5(MgrmBN>EBBkVhKA4k%I1N$K1H;OF!S(g{Uf#q??V56T5>rp}2L9Sl-# z$@?$h%p1*z!m*l=5@Y04 zNWu8xUX0y{M`RlP#e!PR@vS3RKE0c=(X2kvx9_3PJf8oKJ~oVtL|IrLu$?)Nk;vo-Dw_!vZ4*s=)tVGiz&lSvnvV2rEw&S#r%6 zYUSshG70fW7p(D#58+t*eWvfNYlj`4yHxmMtV1?Cmt<5&wG;7Xi&ubsSlQrkq|?|FHDEVt1uiC8JigpK2+UvgB5MrPr^q)LY`O zV(WvQr}+Hv-^-`Eh}d7F7HGAvR*J6=b|#+QzoQ@(irEz%?I*Rqi`t(9dJgdoZvyls?gN&g9mD7J`0)>m?EEW)*^lVi`785rgv;)^J_yEO2yo z>d2{VV3;jYYp&`am01ouq+OW77G{yCKbP?LqoQN0@$A9`y!F$sytw$i_`LXgHg!Lq X|HV4LT7RW6usQJO|Nr@4bOQegi6dv2 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/dcd.bin b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/dcd.bin new file mode 100644 index 0000000000000000000000000000000000000000..ccdf38733735bb87ecd83152ad49085f269edaf0 GIT binary patch literal 1208 zcmb8vv1;2;6vpu*BNEfvSc9Ps5yWW?b-`eVX2_7hHE8hQAwz~xGGs`>g9i^DT=1Y6 zQ#54okRgKy4=K3Np+kp^eSknAPmtH>)P9owLtE$&EkB)mb)!jJ?<(I1 zzjVnVj&O_;3=NrIbPrZhd9D9PH>7b&N0C&T;Mg{;1XAOi);LXUuB?u`$l}1JM+y8e!87m z5la}L_C1@gVTg5XU=v%|!F@cyLv$En5BqqGCwPiyc#ao1z#)!sj1!zu9XZwlv<<3-dy@KIiit`f8mY z)*5$al|32R`!_G;Q`fnORZw}$Pw%Yq!%Cs<({Inaw`#inKj%wNo7aD)Z7bD!`%j%` af7faFUB9cxY(u8|ztN3$(|A*+@#b&Fb_Ci0 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/ivt_flashloader.bin b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/ivt_flashloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..cab033085b3a074b9a0cb9eecf07c34ad781ddaa GIT binary patch literal 87104 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%0AN;b$zD1Y-(ELFQx5Pzr*V>{2{eW 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 z zu%iXN7jq0#60?9%Ir65(gi_?Tb1-iq--bD>UzfdDFLK`f6y}LRH1owN0rMRS|D5PN z+#n@JBQFzW8si&e31P`jnr#RPBMM;UeH0<)M4E~)*9-%e4w|i1G?EUDF%MDFj7C>( z1aakUgb|$4NI0GoIT#GDTQeSnj$3OEA_f5#d6JV3Sv&P+(0X z@*?5nfa03V)z11&<_MQ@wO4B7KN|g{7OQn<;9~zq&Wug*8V-k~MBPIUJ zQL$lhvEdRvBPBL!j!B%(j!T>o6&5N{F`-P4sc3+DLXwh&6dU{0RC}8gAvuX;`Uhr( zh2+?zq}nGDAvswfN%pBs zD#eE3jK|8D43lMbSlz+&VEMuN2Ddl(eg@y~;NLU&_rjox=S7YeE#y?G@$z&V;yz@k zg}J$fAPTlJfpt|&U2g#%SCaRl>3Mb5P)Y!4op|2C_Xo}~1c?V^7oi-9u_mI7DWOaT zx%qnd)<^zMAI-SOca5mH;XM*^r+NutbG;Y2^dKU(zo<@JkQ;*Z05$ zytDmhozVXp#i}a-8h|uxv0;o2P0tEwz!_M~2DCm&3RDTu0HilFid+L2C=aUPI^IRG z&XQ+v)O)OgeuA|I^EJK#5Dz>YxfG9`Rb>frZ8+ABlz`xl*1n4M$v__P4Djd^9)xjU zB6x~Hyt8OSx}^d7ydfu%|K?&ea>SvJf0NZEgn~z(Ji~^rdVn`G?aU_<6lO$lXfwOg96gVnOaifJK$c2H!q+;-r9|t-L za!f-wuE~;y>13=B0~vhNz-Q_xlu#0h(pW%(B=M}Yrx1qwU{ZBc5`B2VGLsc0!C(L5JeIY0IFtWVMo@(h|D3xe$67m#b(5!22;n%!lD9WW24zv uu!$nX6j&rU5In-H8))j8fP5AO-1-s-*pFK$jbuQf4U7atpd(ns*a!f5nFT-q literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/w25q512_fdcb.bin b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/w25q512_fdcb.bin new file mode 100644 index 0000000000000000000000000000000000000000..f62c8434b63d2e4117f27325a3b1c024fb7653a7 GIT binary patch literal 512 zcmZ>Bc5`B2VGLsc0!C(LAOT{L1{hgbku|U&a|p4SStK}ER1m6IS&(@MaTtq@fay1Y n=E2mGLo)&OHz?rNnLxmP+&XC_1Bx#J1_o9j4T(AkNvv%E{@Mgg literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/w25q64_fdcb.bin b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/data/w25q64_fdcb.bin new file mode 100644 index 0000000000000000000000000000000000000000..61b605cc6cd4e223abf2acbeaf581662521dba66 GIT binary patch literal 512 zcmZ>Bc5`B2VGLsc0!C(L5JeIY0IFtWVMEr#h|D3xe$67m#b(5!22;n%!lD9WW24zv uu!$nX6j&rU5In-H8))j8fP5AO-1-s-*pFK$jbuQf4U7atpd(ns*a!f3-vvJa literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/INSTALLER b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/INSTALLER new file mode 100644 index 0000000..5c69047 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/INSTALLER @@ -0,0 +1 @@ +uv \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/METADATA b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/METADATA new file mode 100644 index 0000000..5181579 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/METADATA @@ -0,0 +1,130 @@ +Metadata-Version: 2.4 +Name: importlib_metadata +Version: 8.9.0 +Summary: Read metadata from Python packages +Author-email: "Jason R. Coombs" +License-Expression: Apache-2.0 +Project-URL: Source, https://github.com/python/importlib_metadata +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Requires-Python: >=3.10 +Description-Content-Type: text/x-rst +License-File: LICENSE +Requires-Dist: zipp>=3.20 +Provides-Extra: test +Requires-Dist: pytest!=8.1.*,>=6; extra == "test" +Requires-Dist: packaging; extra == "test" +Requires-Dist: pyfakefs; extra == "test" +Requires-Dist: pytest-perf>=0.9.2; extra == "test" +Provides-Extra: doc +Requires-Dist: sphinx>=3.5; extra == "doc" +Requires-Dist: jaraco.packaging>=9.3; extra == "doc" +Requires-Dist: rst.linker>=1.9; extra == "doc" +Requires-Dist: furo; extra == "doc" +Requires-Dist: sphinx-lint; extra == "doc" +Requires-Dist: jaraco.tidelift>=1.4; extra == "doc" +Provides-Extra: perf +Requires-Dist: ipython; extra == "perf" +Provides-Extra: check +Requires-Dist: pytest-checkdocs>=2.14; extra == "check" +Requires-Dist: pytest-ruff>=0.2.1; sys_platform != "cygwin" and extra == "check" +Provides-Extra: cover +Requires-Dist: pytest-cov; extra == "cover" +Provides-Extra: enabler +Requires-Dist: pytest-enabler>=3.4; extra == "enabler" +Provides-Extra: type +Requires-Dist: pytest-mypy>=1.0.1; platform_python_implementation != "PyPy" and extra == "type" +Dynamic: license-file + +.. image:: https://img.shields.io/pypi/v/importlib_metadata.svg + :target: https://pypi.org/project/importlib_metadata + +.. image:: https://img.shields.io/pypi/pyversions/importlib_metadata.svg + +.. image:: https://github.com/python/importlib_metadata/actions/workflows/main.yml/badge.svg + :target: https://github.com/python/importlib_metadata/actions?query=workflow%3A%22tests%22 + :alt: tests + +.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json + :target: https://github.com/astral-sh/ruff + :alt: Ruff + +.. image:: https://readthedocs.org/projects/importlib-metadata/badge/?version=latest + :target: https://importlib-metadata.readthedocs.io/en/latest/?badge=latest + +.. image:: https://img.shields.io/badge/skeleton-2025-informational + :target: https://blog.jaraco.com/skeleton + +.. image:: https://tidelift.com/badges/package/pypi/importlib-metadata + :target: https://tidelift.com/subscription/pkg/pypi-importlib-metadata?utm_source=pypi-importlib-metadata&utm_medium=readme + +Library to access the metadata for a Python package. + +This package supplies third-party access to the functionality of +`importlib.metadata `_ +including improvements added to subsequent Python versions. + + +Compatibility +============= + +New features are introduced in this third-party library and later merged +into CPython. The following table indicates which versions of this library +were contributed to different versions in the standard library: + +.. list-table:: + :header-rows: 1 + + * - importlib_metadata + - stdlib + * - 7.0 + - 3.13 + * - 6.5 + - 3.12 + * - 4.13 + - 3.11 + * - 4.6 + - 3.10 + * - 1.4 + - 3.8 + + +Usage +===== + +See the `online documentation `_ +for usage details. + +`Finder authors +`_ can +also add support for custom package installers. See the above documentation +for details. + + +Caveats +======= + +This project primarily supports third-party packages installed by PyPA +tools (or other conforming packages). It does not support: + +- Packages in the stdlib. +- Packages installed without metadata. + +Project details +=============== + + * Project home: https://github.com/python/importlib_metadata + * Report bugs at: https://github.com/python/importlib_metadata/issues + * Code hosting: https://github.com/python/importlib_metadata + * Documentation: https://importlib-metadata.readthedocs.io/ + +For Enterprise +============== + +Available as part of the Tidelift Subscription. + +This project and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use. + +`Learn more `_. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/RECORD b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/RECORD new file mode 100644 index 0000000..6f83192 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/RECORD @@ -0,0 +1,20 @@ +importlib_metadata-8.9.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +importlib_metadata-8.9.0.dist-info/METADATA,sha256=571mC1BVj1cZB0nBrwPCK51LVhroM9pG20A8Ulo3y88,4536 +importlib_metadata-8.9.0.dist-info/RECORD,, +importlib_metadata-8.9.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +importlib_metadata-8.9.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91 +importlib_metadata-8.9.0.dist-info/licenses/LICENSE,sha256=4ve7BVfno4FJnxW6p8HXdtg9ZhZZkXnXHTEJuOOfeyU,10278 +importlib_metadata-8.9.0.dist-info/top_level.txt,sha256=CO3fD9yylANiXkrMo4qHLV_mqXL2sC5JFKgt1yWAT-A,19 +importlib_metadata/__init__.py,sha256=l0bUNX8-gg5_malNOySP8DLhB1VH5pZnhrQ2kA6I2xc,38000 +importlib_metadata/_adapters.py,sha256=r5i8XLrKT6xmrpoREZhZrfczOYDmrVZeJBW5u0HzIGU,3797 +importlib_metadata/_collections.py,sha256=CxAhzlF3g1rwu_fMiB53JtRQiUFh0RgiMpoOvmK_ocg,760 +importlib_metadata/_compat.py,sha256=VC5ZDLlT-BcshauCShdFJvMNLntJJfZzNK1meGa-enw,1313 +importlib_metadata/_functools.py,sha256=hVPD-xQZF68JXAhQOzDqpsD-gav28Ga0p1T_wDzLuwc,3537 +importlib_metadata/_itertools.py,sha256=nMvp9SfHAQ_JYwK4L2i64lr3GRXGlYlikGTVzWbys_E,5351 +importlib_metadata/_meta.py,sha256=EtHyiJ5kGzWFDfKyQ2XQp6Vu113CeadKW1Vf6aGc1B4,1765 +importlib_metadata/_text.py,sha256=HCsFksZpJLeTP3NEk_ngrAeXVRRtTrtyh9eOABoRP4A,2166 +importlib_metadata/_typing.py,sha256=EQKhhsEgz_Sa-FnePI-faC72rNOOQwopjA1i5pG8FDU,367 +importlib_metadata/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +importlib_metadata/compat/py311.py,sha256=uqm-K-uohyj1042TH4a9Er_I5o7667DvulcD-gC_fSA,608 +importlib_metadata/diagnose.py,sha256=nkSRMiowlmkhLYhKhvCg9glmt_11Cox-EmLzEbqYTa8,379 +importlib_metadata/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/REQUESTED b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/WHEEL b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/WHEEL new file mode 100644 index 0000000..14a883f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (82.0.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/licenses/LICENSE b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..7b25cfb --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/licenses/LICENSE @@ -0,0 +1,73 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +Copyright 2026 [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/top_level.txt b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/top_level.txt new file mode 100644 index 0000000..bbb0754 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/importlib_metadata-8.9.0.dist-info/top_level.txt @@ -0,0 +1 @@ +importlib_metadata diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyexpat.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyexpat.pyd new file mode 100644 index 0000000000000000000000000000000000000000..555c1c7f6bca7adbed2d5f6990ef2869ff32bd62 GIT binary patch literal 221920 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

    w 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≈oi#hzyH}T6-aWnI~yRF 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 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyproject.toml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyproject.toml new file mode 100644 index 0000000..b2c8f31 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyproject.toml @@ -0,0 +1,26 @@ +[project] +name = "service-tui" +version = "0.2.0" +description = "TUI сервисного инженера для диагностики платы MIMXRT1052" +requires-python = ">=3.11" +dependencies = [ + "textual>=0.80.0", + "pyserial>=3.5", + "python-dotenv>=1.0.0", + "pyinstaller>=6.0.0", + "pyusb>=1.0.0", + "spsdk==3.7.0", +] + +[project.scripts] +service-tui = "main:main" + +[tool.uv] +package = false + +[dependency-groups] +dev = ["pytest>=8.0.0"] + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/INSTALLER b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/INSTALLER new file mode 100644 index 0000000..5c69047 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/INSTALLER @@ -0,0 +1 @@ +uv \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/METADATA b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/METADATA new file mode 100644 index 0000000..466684c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/METADATA @@ -0,0 +1,110 @@ +Metadata-Version: 2.4 +Name: pyreadline3 +Version: 3.5.6 +Summary: A python implementation of GNU readline. +Author-email: Bassem Girgis , Jorgen Stenarson , Gary Bishop , Jack Trainor +Maintainer-email: Bassem Girgis +License: BSD +Project-URL: Homepage, https://github.com/pyreadline3/pyreadline3 +Project-URL: Documentation, https://github.com/pyreadline3/pyreadline3 +Project-URL: Repository, https://github.com/pyreadline3/pyreadline3.git +Project-URL: Issues, https://github.com/pyreadline3/pyreadline3/issues +Project-URL: Changelog, https://github.com/pyreadline3/pyreadline3/blob/master/doc/ChangeLog +Keywords: readline,pyreadline,pyreadline3 +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Operating System :: Microsoft :: Windows +Classifier: License :: OSI Approved :: BSD License +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +License-File: LICENSE.md +Provides-Extra: dev +Requires-Dist: build; extra == "dev" +Requires-Dist: flake8; extra == "dev" +Requires-Dist: mypy; extra == "dev" +Requires-Dist: pytest; extra == "dev" +Requires-Dist: twine; extra == "dev" +Dynamic: license-file + +# pyreadline3 + +[![PyPi Badge](https://img.shields.io/pypi/v/pyreadline3)](https://pypi.org/project/pyreadline3/) +![Publish](https://github.com/pyreadline3/pyreadline3/workflows/Publish/badge.svg) +![Test](https://github.com/pyreadline3/pyreadline3/workflows/Test/badge.svg) +[![Downloads](https://static.pepy.tech/personalized-badge/pyreadline3?period=week&units=international_system&left_color=black&right_color=orange&left_text=Last%20Week)](https://pepy.tech/project/pyreadline3) +[![Downloads](https://static.pepy.tech/personalized-badge/pyreadline3?period=month&units=international_system&left_color=black&right_color=orange&left_text=Month)](https://pepy.tech/project/pyreadline3) +[![Downloads](https://static.pepy.tech/personalized-badge/pyreadline3?period=total&units=international_system&left_color=black&right_color=orange&left_text=Total)](https://pepy.tech/project/pyreadline3) + +The `pyreadline3` package is based on the stale package `pyreadline` located +[here](https://github.com/pyreadline/pyreadline). +The original `pyreadline` package is a Python implementation of GNU `readline` +functionality. +It is based on the `ctypes` based UNC `readline` package by Gary Bishop. +It is not complete. +It has been tested for use with Windows 10. + +Version 3.4+ of pyreadline3 runs on Python 3.8+. + +`pyreadline3` is available on PyPI and can be installed with + + pip install pyreadline3 + +## Features + +- keyboard text selection and copy/paste +- Shift-arrowkeys for text selection +- Control-c can be used for copy activate with allow_ctrl_c(True) in config file +- Double tapping ctrl-c will raise a KeyboardInterrupt, use ctrl_c_tap_time_interval(x) +- where x is your preferred tap time window, default 0.3 s. +- paste pastes first line of content on clipboard. +- ipython_paste, pastes tab-separated data as list of lists or numpy array if all data is numeric +- paste_mulitline_code pastes multi line code, removing any empty lines. + +The latest development version is always available at the project git +[repository](https://github.com/pyreadline3/pyreadline3) + +## Development + +To clone the library for development: + + git clone git@github.com:pyreadline3/pyreadline3.git + +or + + git clone https://github.com/pyreadline3/pyreadline3.git + +### Build The Virtual Environment + +The current earliest Python version supported is `3.8`. You need to be able to create a virtual environment at this version to make sure any changes you make is combatible. + +If you are using `conda`: + + conda create --prefix=.venv python=3.8 --yes + +If you are using `venv`, make sure you have the right base package: + + >> python --version + Python 3.8.x + +Once you verify your base Python, you can then create a virtual environment using: + + virtualenv -p py3.8 .venv + +### Setup + +Once you have created your virtual environment and made sure it is active in your current command line: + + pip install -e .[dev] + +This should all the dependencies you need for developing into the library and also allow you to run the unit tests: + + pytest + +### Debugging + + WIP diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/RECORD b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/RECORD new file mode 100644 index 0000000..7e09eaf --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/RECORD @@ -0,0 +1,57 @@ +pyreadline3-3.5.6.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +pyreadline3-3.5.6.dist-info/METADATA,sha256=L5eNhhOThfHP1J9FasR0vsb2F4Gwim5B0J3z9DvEh9w,4671 +pyreadline3-3.5.6.dist-info/RECORD,, +pyreadline3-3.5.6.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyreadline3-3.5.6.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91 +pyreadline3-3.5.6.dist-info/licenses/LICENSE.md,sha256=j8TY3mG0BTMCOxbmRSjRM3Gi6caGd9957V6TulcEcb0,2250 +pyreadline3-3.5.6.dist-info/top_level.txt,sha256=jFAZcAVg1WzdsUjogYZvyqSMaBAN38sqUZemcaDxF9E,21 +pyreadline3/__init__.py,sha256=Pyu6nWoyEUUQKG-mol6rpiC1LhaDWDr8Metw0QJ0ws0,1031 +pyreadline3/clipboard/__init__.py,sha256=ONeTJdTckSx0utxQbcZ8f6U7q6Jt6UE4mN_5FbBZMJ0,667 +pyreadline3/clipboard/api.py,sha256=ykFh4L-ITB11lphfFdSmJQN6xjqQgcCSU5NL-OYgdwQ,990 +pyreadline3/clipboard/get_clipboard_text_and_convert.py,sha256=UTdwFipxtAU6VySyg-FTHG3ay0Rd6vyGzlVZv_PIGNk,1839 +pyreadline3/clipboard/ironpython_clipboard.py,sha256=sYs8Ms8ElTOYFbOevag8HooXRfUp1dMREf5o0K6AMvw,893 +pyreadline3/clipboard/no_clipboard.py,sha256=o_jJjf8L182Hwwh9Xvq7Ux2WzSP7hLpMkwhcU2WUTcI,694 +pyreadline3/clipboard/obsolete.py,sha256=MyyGoYDi6K7asnjNqp_NCp9kdluDoYkzVUKfED1MSCk,954 +pyreadline3/clipboard/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyreadline3/clipboard/win32_clipboard.py,sha256=ltoON8oVG687GLJUr_HTqGpfzEeW04e1o8Ez1KTlTUM,4532 +pyreadline3/configuration/pyreadlineconfig.ini,sha256=FSps2a6pWneXPsPlr4aCnQFkixMRogT36H-fGYwWKV4,3922 +pyreadline3/configuration/startup.py,sha256=03fj2vhTtpIbquQOAU_NL4hpNdFh9dmvShoCkt3PWOQ,1098 +pyreadline3/console/__init__.py,sha256=1SwEGWL1DEWRUfRSQ1ifgtGLu8VNqfkoTJYGW2Kzelc,496 +pyreadline3/console/ansi.py,sha256=F3G_sO718SVZ10JFr786GCUD7pkRWKyyHB9j8Ehp-cU,8435 +pyreadline3/console/console.py,sha256=Q_llSFjpAikIbswe-q1M6R9lhDfIUdo9zF-FDxIyMlU,30700 +pyreadline3/console/console_attributes.py,sha256=Zeze7tKKCHVhDmwaS77eNmsM8F5moT7FEZBnRVsTS2k,463 +pyreadline3/console/consolebase.py,sha256=CATd1PAh0sfPriCZUF5oTD246IKfdyxq3hjQ_Un5cjI,1563 +pyreadline3/console/event.py,sha256=WoRNeZCLvzh5yoTdckqzbSLOoCZHhzKiW4U83uOHWUI,1273 +pyreadline3/console/ironpython_console.py,sha256=4SEoIBg0EmtJQ6TbNr_VuI0IwjYEK6Uj13VqQ8m97JM,14188 +pyreadline3/error.py,sha256=ahY4Szbx9rPf-ho3uwYsHD0OAzTw7ySrcYDpydD3tDA,569 +pyreadline3/get_doc.py,sha256=D5J3VY3N2c9ORsMxd3pWJN8Y9hqAAQiUDzhxF8Rt11A,530 +pyreadline3/keysyms/__init__.py,sha256=6fo58obJwJhuVVcW1YOtFd5n1mr_XACt_4zDYWBM8mA,778 +pyreadline3/keysyms/api.py,sha256=fnUDr7div2YXMN4ExVVixFbWmSLx1jfBtJX450jG8Hg,997 +pyreadline3/keysyms/constant_values.py,sha256=yCDvByrbUFXbDjyPpjDf0LJifLBQ9oUve7TVvhBaoEQ,2065 +pyreadline3/keysyms/ironpython_constants.py,sha256=1n11lTuLoVuAVGUy5a1ArWih3YHEsX5St3DNgz7YcHY,2718 +pyreadline3/keysyms/ironpython_keysyms.py,sha256=KrSu_0K7ZQ_eL_VZ9Ox43SLVQaEFgPBUIULyV4kmqrU,1545 +pyreadline3/keysyms/key_press.py,sha256=53lUDtBhNYP2mbyDRLbEHBQ4k61R2o92gSG-Waq1FQk,2315 +pyreadline3/keysyms/keysyms.py,sha256=A6giHnyaNEuEewHozmTV4kwB-h70OoYNxwdQ-n2_GlQ,2135 +pyreadline3/keysyms/make_key_press_from_key_description.py,sha256=2bLXMGvkecQzEplpuHLqcJQS0vpFNlZiZSI7sgTP76A,2926 +pyreadline3/keysyms/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyreadline3/keysyms/win32_constants.py,sha256=vG8mjXBE14FmW7CsIZotuj2WdEHNA2W9hKZY3xbE7-o,5452 +pyreadline3/lineeditor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyreadline3/lineeditor/history.py,sha256=DfsYUG9p3pG77vaMqKhKX2Qpw3ZCUwPDiBHR73AmGKY,11021 +pyreadline3/lineeditor/lineobj.py,sha256=UPndJGbs-BMVo4FbgGenp_gqNDDKP3S8embUfIrxNu4,25458 +pyreadline3/lineeditor/wordmatcher.py,sha256=CXzpmroARRc3H2wX-lZBAzD-Gnswtnn_THYfj0sTQZE,3653 +pyreadline3/logger/__init__.py,sha256=c07U4Ov5JksvfGubZ79juELGv3TZY9jeYP_dKbryKjo,769 +pyreadline3/logger/control.py,sha256=wQl9H7mT8nMitd-q-GlkSlsg3wQBJwwOAAR-osXMvIs,1970 +pyreadline3/logger/log.py,sha256=CAGWify6W2u3X6focadWmSMezFarY1PDAhpxPNPPbY4,625 +pyreadline3/logger/logger.py,sha256=5w6fn46sXM8rzB0JSSIYFydEWctTaX1vFBeBm6fRNCM,745 +pyreadline3/logger/null_handler.py,sha256=Usqu3O5k9vqMWIV6ErTn_HAhHzpaDMlyhYud8O7AGxQ,607 +pyreadline3/logger/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyreadline3/logger/socket_stream.py,sha256=Z9Zv0y9OOvvcwTQOZNsrTbWoDRpBm9knKmk3nrD-w68,1038 +pyreadline3/modes/__init__.py,sha256=BM7vslXGTj6-AeMMuMN1QTVQKzbUtcX0GmGSRXyK1Q4,204 +pyreadline3/modes/basemode.py,sha256=yRNSqPA9Ul8dHz1HZPh63qTxjigEA8tUmAe3K6aUFSI,22273 +pyreadline3/modes/emacs.py,sha256=MLwCKAr1Mj3wLPPLtaCXflxKdridwDmxmreP_C2oRYs,30610 +pyreadline3/modes/notemacs.py,sha256=TJ-nhAoS7i2yL5YbBB4V1GKR2xBWRAuRs405eamArLc,25617 +pyreadline3/modes/vi.py,sha256=OkDT1jdpY9qniVAFy2NiPN-krd0H7DI2I0w4i-KU0H4,41671 +pyreadline3/py3k_compat.py,sha256=W_R5kyM27e8ZWaqNe5NLm-NaiKeoI9WFpTuYTvpk-YQ,680 +pyreadline3/rlmain.py,sha256=HrsuTuoVD2DLPbBz-Ve9nnhGX-q_XBWZR7oIamAeOGs,22562 +pyreadline3/unicode_helper.py,sha256=RHXvPH41R98uR3iWDAJzsSZMqEYLKyMb-9FdhwJWgBw,1816 +readline.py,sha256=JrLlAjZTpQP8QWN5kNw8aR1XzDBhEU8hRaJYyPueLHY,2785 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/REQUESTED b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/WHEEL b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/WHEEL new file mode 100644 index 0000000..14a883f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (82.0.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/licenses/LICENSE.md b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/licenses/LICENSE.md new file mode 100644 index 0000000..73c4548 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/licenses/LICENSE.md @@ -0,0 +1,53 @@ +# LICENSE + +## pyreadline3 copyright and licensing notes + +Unless indicated otherwise, files in this project are covered by a BSD-type +license, included below. + +Individual authors are the holders of the copyright for their code and are +listed in each file. + +Some files may be licensed under different conditions. Ultimately each file +indicates clearly the conditions under which its author/authors have +decided to publish the code. + +## pyreadline3 license + +pyreadline3 is released under a BSD-type license. + +Copyright (c) 2020 Bassem Girgis . + +Copyright (c) 2006-2020 J�rgen Stenarson . + +Copyright (c) 2003-2006 Gary Bishop + +Copyright (c) 2003-2006 Jack Trainor + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +a. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +b. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +c. Neither the name of the copyright holders nor the names of any + contributors to this software may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/top_level.txt b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/top_level.txt new file mode 100644 index 0000000..437aaa5 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/pyreadline3-3.5.6.dist-info/top_level.txt @@ -0,0 +1,2 @@ +pyreadline3 +readline diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/select.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/select.pyd new file mode 100644 index 0000000000000000000000000000000000000000..f7d1e19964204781924d7b5fd875e8e2a6e13419 GIT binary patch literal 32992 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 A2LJ#7 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/INSTALLER b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/INSTALLER new file mode 100644 index 0000000..5c69047 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/INSTALLER @@ -0,0 +1 @@ +uv \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/METADATA b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/METADATA new file mode 100644 index 0000000..dba85b4 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/METADATA @@ -0,0 +1,141 @@ +Metadata-Version: 2.4 +Name: setuptools +Version: 80.10.2 +Summary: Easily download, build, install, upgrade, and uninstall Python packages +Author-email: Python Packaging Authority +License-Expression: MIT +Project-URL: Source, https://github.com/pypa/setuptools +Project-URL: Documentation, https://setuptools.pypa.io/ +Project-URL: Changelog, https://setuptools.pypa.io/en/stable/history.html +Keywords: CPAN PyPI distutils eggs package management +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: System :: Archiving :: Packaging +Classifier: Topic :: System :: Systems Administration +Classifier: Topic :: Utilities +Requires-Python: >=3.9 +Description-Content-Type: text/x-rst +License-File: LICENSE +Provides-Extra: test +Requires-Dist: pytest!=8.1.*,>=6; extra == "test" +Requires-Dist: virtualenv>=13.0.0; extra == "test" +Requires-Dist: wheel>=0.44.0; extra == "test" +Requires-Dist: pip>=19.1; extra == "test" +Requires-Dist: packaging>=24.2; extra == "test" +Requires-Dist: jaraco.envs>=2.2; extra == "test" +Requires-Dist: pytest-xdist>=3; extra == "test" +Requires-Dist: jaraco.path>=3.7.2; extra == "test" +Requires-Dist: build[virtualenv]>=1.0.3; extra == "test" +Requires-Dist: filelock>=3.4.0; extra == "test" +Requires-Dist: ini2toml[lite]>=0.14; extra == "test" +Requires-Dist: tomli-w>=1.0.0; extra == "test" +Requires-Dist: pytest-timeout; extra == "test" +Requires-Dist: pytest-perf; sys_platform != "cygwin" and extra == "test" +Requires-Dist: jaraco.develop>=7.21; (python_version >= "3.9" and sys_platform != "cygwin") and extra == "test" +Requires-Dist: pytest-home>=0.5; extra == "test" +Requires-Dist: pytest-subprocess; extra == "test" +Requires-Dist: pyproject-hooks!=1.1; extra == "test" +Requires-Dist: jaraco.test>=5.5; extra == "test" +Provides-Extra: doc +Requires-Dist: sphinx>=3.5; extra == "doc" +Requires-Dist: jaraco.packaging>=9.3; extra == "doc" +Requires-Dist: rst.linker>=1.9; extra == "doc" +Requires-Dist: furo; extra == "doc" +Requires-Dist: sphinx-lint; extra == "doc" +Requires-Dist: jaraco.tidelift>=1.4; extra == "doc" +Requires-Dist: pygments-github-lexers==0.0.5; extra == "doc" +Requires-Dist: sphinx-favicon; extra == "doc" +Requires-Dist: sphinx-inline-tabs; extra == "doc" +Requires-Dist: sphinx-reredirects; extra == "doc" +Requires-Dist: sphinxcontrib-towncrier; extra == "doc" +Requires-Dist: sphinx-notfound-page<2,>=1; extra == "doc" +Requires-Dist: pyproject-hooks!=1.1; extra == "doc" +Requires-Dist: towncrier<24.7; extra == "doc" +Provides-Extra: ssl +Provides-Extra: certs +Provides-Extra: core +Requires-Dist: packaging>=24.2; extra == "core" +Requires-Dist: more_itertools>=8.8; extra == "core" +Requires-Dist: jaraco.text>=3.7; extra == "core" +Requires-Dist: importlib_metadata>=6; python_version < "3.10" and extra == "core" +Requires-Dist: tomli>=2.0.1; python_version < "3.11" and extra == "core" +Requires-Dist: wheel>=0.43.0; extra == "core" +Requires-Dist: platformdirs>=4.2.2; extra == "core" +Requires-Dist: jaraco.functools>=4; extra == "core" +Requires-Dist: more_itertools; extra == "core" +Provides-Extra: check +Requires-Dist: pytest-checkdocs>=2.4; extra == "check" +Requires-Dist: pytest-ruff>=0.2.1; sys_platform != "cygwin" and extra == "check" +Requires-Dist: ruff>=0.8.0; sys_platform != "cygwin" and extra == "check" +Provides-Extra: cover +Requires-Dist: pytest-cov; extra == "cover" +Provides-Extra: enabler +Requires-Dist: pytest-enabler>=2.2; extra == "enabler" +Provides-Extra: type +Requires-Dist: pytest-mypy; extra == "type" +Requires-Dist: mypy==1.14.*; extra == "type" +Requires-Dist: importlib_metadata>=7.0.2; python_version < "3.10" and extra == "type" +Requires-Dist: jaraco.develop>=7.21; sys_platform != "cygwin" and extra == "type" +Dynamic: license-file + +.. |pypi-version| image:: https://img.shields.io/pypi/v/setuptools.svg + :target: https://pypi.org/project/setuptools + +.. |py-version| image:: https://img.shields.io/pypi/pyversions/setuptools.svg + +.. |test-badge| image:: https://github.com/pypa/setuptools/actions/workflows/main.yml/badge.svg + :target: https://github.com/pypa/setuptools/actions?query=workflow%3A%22tests%22 + :alt: tests + +.. |ruff-badge| image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json + :target: https://github.com/astral-sh/ruff + :alt: Ruff + +.. |docs-badge| image:: https://img.shields.io/readthedocs/setuptools/latest.svg + :target: https://setuptools.pypa.io + +.. |skeleton-badge| image:: https://img.shields.io/badge/skeleton-2025-informational + :target: https://blog.jaraco.com/skeleton + +.. |codecov-badge| image:: https://img.shields.io/codecov/c/github/pypa/setuptools/master.svg?logo=codecov&logoColor=white + :target: https://codecov.io/gh/pypa/setuptools + +.. |tidelift-badge| image:: https://tidelift.com/badges/github/pypa/setuptools?style=flat + :target: https://tidelift.com/subscription/pkg/pypi-setuptools?utm_source=pypi-setuptools&utm_medium=readme + +.. |discord-badge| image:: https://img.shields.io/discord/803025117553754132 + :target: https://discord.com/channels/803025117553754132/815945031150993468 + :alt: Discord + +|pypi-version| |py-version| |test-badge| |ruff-badge| |docs-badge| |skeleton-badge| |codecov-badge| |discord-badge| + +See the `Quickstart `_ +and the `User's Guide `_ for +instructions on how to use Setuptools. + +Questions and comments should be directed to `GitHub Discussions +`_. +Bug reports and especially tested patches may be +submitted directly to the `bug tracker +`_. + + +Code of Conduct +=============== + +Everyone interacting in the setuptools project's codebases, issue trackers, +chat rooms, and fora is expected to follow the +`PSF Code of Conduct `_. + + +For Enterprise +============== + +Available as part of the Tidelift Subscription. + +Setuptools and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use. + +`Learn more `_. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/RECORD b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/RECORD new file mode 100644 index 0000000..7b3e150 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/RECORD @@ -0,0 +1,460 @@ +_distutils_hack/__init__.py,sha256=34HmvLo07j45Uvd2VR-2aRQ7lJD91sTK6zJgn5fphbQ,6755 +_distutils_hack/override.py,sha256=Eu_s-NF6VIZ4Cqd0tbbA5wtWky2IZPNd8et6GLt1mzo,44 +distutils-precedence.pth,sha256=JjjOniUA5XKl4N5_rtZmHrVp0baW_LoHsN0iPaX10iQ,151 +pkg_resources/__init__.py,sha256=yxteYDjmlV_1pmFdIGMKt7J9dUXqoJ-6yhSSHeQ86g4,126234 +pkg_resources/api_tests.txt,sha256=XEdvy4igHHrq2qNHNMHnlfO6XSQKNqOyLHbl6QcpfAI,12595 +pkg_resources/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pkg_resources/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pkg_resources/tests/data/my-test-package-source/setup.cfg,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pkg_resources/tests/data/my-test-package-source/setup.py,sha256=1VobhAZbMb7M9mfhb_NE8PwDsvukoWLs9aUAS0pYhe8,105 +pkg_resources/tests/data/my-test-package-zip/my-test-package.zip,sha256=AYRcQ39GVePPnMT8TknP1gdDHyJnXhthESmpAjnzSCI,1809 +pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/PKG-INFO,sha256=JvWv9Io2PAuYwEEw2fBW4Qc5YvdbkscpKX1kmLzsoHk,187 +pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/SOURCES.txt,sha256=4ClkH8eTovZrdVrJFsVuxdbMEF--lBVSuKonDAPE5Jc,208 +pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/dependency_links.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +pkg_resources/tests/data/my-test-package_zipped-egg/my_test_package-1.0-py3.7.egg,sha256=ZTlMGxjRGiKDNkiA2c75jbQH2TWIteP00irF9gvczbo,843 +pkg_resources/tests/test_find_distributions.py,sha256=U91cov5L1COAIWLNq3Xy4plU7_MnOE1WtXMu6iV2waM,1972 +pkg_resources/tests/test_integration_zope_interface.py,sha256=nzVoK557KZQN0V3DIQ1sVeaCOgt4Kpl-CODAWsO7pmc,1652 +pkg_resources/tests/test_markers.py,sha256=0orKg7UMDf7fnuNQvRMOc-EF9EAP_JTQnk4mtGgbW50,241 +pkg_resources/tests/test_pkg_resources.py,sha256=5Mt4bJQhLCL8j8cC46Uv32Np2Xc1TTxLGawIfET55Fk,17111 +pkg_resources/tests/test_resources.py,sha256=K0LqMAUGpRQ9pUb9K0vyI7GesvtlQvTH074m-E2VQlo,31252 +pkg_resources/tests/test_working_set.py,sha256=lRtGJWIixSwSMSbjHgRxeJEQiLMRXcz3xzJL2qL7eXY,8602 +setuptools-80.10.2.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools-80.10.2.dist-info/METADATA,sha256=28yYQTiLf7VcIZAoj9aDsYOw-1V_V6M42GVT70cdKH0,6573 +setuptools-80.10.2.dist-info/RECORD,, +setuptools-80.10.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools-80.10.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92 +setuptools-80.10.2.dist-info/entry_points.txt,sha256=zkgthpf_Fa9NVE9p6FKT3Xk9DR1faAcRU4coggsV7jA,2449 +setuptools-80.10.2.dist-info/licenses/LICENSE,sha256=htoPAa6uRjSKPD1GUZXcHOzN55956HdppkuNoEsqR0E,1023 +setuptools-80.10.2.dist-info/top_level.txt,sha256=d9yL39v_W7qmKDDSH6sT4bE0j_Ls1M3P161OGgdsm4g,41 +setuptools/__init__.py,sha256=v1rZDv-VYE8tsPawfxG8c7jEyI8c37yAWxYO_FFmTIY,9275 +setuptools/_core_metadata.py,sha256=T7Tjp-WSoN881adev3R1wzXCPnkDHqbC2MgylN1yjS8,11978 +setuptools/_discovery.py,sha256=HxEpgYQ8zUaLOOSp8JIA4y2Mdvn9ysVxspPT-ppfzM4,836 +setuptools/_distutils/__init__.py,sha256=xGYuhWwLG07J0Q49BVnEjPy6wyDcd6veJMDJX7ljlyM,359 +setuptools/_distutils/_log.py,sha256=i-lNTTcXS8TmWITJ6DODGvtW5z5tMattJQ76h8rZxQU,42 +setuptools/_distutils/_macos_compat.py,sha256=JzUGhF4E5yIITHbUaPobZEWjGHdrrcNV63z86S4RjBc,239 +setuptools/_distutils/_modified.py,sha256=RF1n1CexyDYV3lvGbeXS0s-XCJVboDOIUbA8wEQqYTY,3211 +setuptools/_distutils/_msvccompiler.py,sha256=9PSfSHxvJnHnQL6Sqz4Xcz7iaBIT62p6BheQzGsSlwo,335 +setuptools/_distutils/archive_util.py,sha256=Qw2z-Pt-NV8lNUQrzjs3XDGWCWHMPnqHLyt8TiD2XEA,8884 +setuptools/_distutils/ccompiler.py,sha256=FKVjqzGJ7c-FtouNjhLiaMPm5LKMZHHAruXf8LU216c,524 +setuptools/_distutils/cmd.py,sha256=hXtaRaH7QBnfNOIqEvCt47iwZzD9MVvBdhhdQctHsxM,22186 +setuptools/_distutils/command/__init__.py,sha256=GfFAzbBqk1qxSH4BdaKioKS4hRRnD44BAmwEN85C4u8,386 +setuptools/_distutils/command/_framework_compat.py,sha256=0iZdSJYzGRWCCvzRDKE-R0-_yaAYvFMd1ylXb2eYXug,1609 +setuptools/_distutils/command/bdist.py,sha256=jWtk61R7fWNUUNxJV0thTZzU5n80L3Ay1waSiP9kiLA,5854 +setuptools/_distutils/command/bdist_dumb.py,sha256=Hx1jAqoZNxYIy4N5TLzUp6J5fi8Ls18py7UlLNFhO2E,4631 +setuptools/_distutils/command/bdist_rpm.py,sha256=nxcXXv5a7B-1ntWu4DbGmCtES4EBINrJaBQcRNAYCJI,21785 +setuptools/_distutils/command/build.py,sha256=SpHlagf0iNaKVyIhxDfhPFZ8X1-LAWOCQACy-yt2K0w,5923 +setuptools/_distutils/command/build_clib.py,sha256=aMqZcUfCbOAu_xr-A9iW-Q9YZHzpDGLRTezOgMQJmSQ,7777 +setuptools/_distutils/command/build_ext.py,sha256=zrrsu9HXnzV6bXYbJuZCK4SwVZMjKnl4pG1o3bNcxtc,32710 +setuptools/_distutils/command/build_py.py,sha256=Vfq-INemoMbg6f003BTy_Ufp8bjOZhmFIhpKMcfXLgs,16696 +setuptools/_distutils/command/build_scripts.py,sha256=emMEOONkNLPC-AMjKy45UksUlY1wk06esOGThpwidIM,5135 +setuptools/_distutils/command/check.py,sha256=yoNe2MPY4JcTM7rwoIQdfZ75q5Ri058I2coi-Gq9CjM,4946 +setuptools/_distutils/command/clean.py,sha256=dQAacOabwBXU9JoZ-1GFusq3eFltDaeXJFSYncqGbvE,2644 +setuptools/_distutils/command/config.py,sha256=qrrfz6NEQORmbqiY2XlvCDWYhsbLyxZXJsURKfYN_kw,12724 +setuptools/_distutils/command/install.py,sha256=-JenB-mua4hc2RI_-W8F9PnP_J-OaFO7E0PJGKxLo1o,30072 +setuptools/_distutils/command/install_data.py,sha256=GzBlUWWKubTYJlP-L0auUriq9cL-5RKOcoyHTttKj0Q,2875 +setuptools/_distutils/command/install_egg_info.py,sha256=ffiLoU1ivQJ8q2_WL7ZygZbUcOsgdFLKL7otEIJWWkI,2868 +setuptools/_distutils/command/install_headers.py,sha256=5ciKCj8c3XKsYNKdkdMvnypaUCKcoWCDeeZij3fD-Z4,1272 +setuptools/_distutils/command/install_lib.py,sha256=2s9-m5-b1qKm51F28lB5L39Z6vv_GHMlv9dNBSupok0,8588 +setuptools/_distutils/command/install_scripts.py,sha256=M0pPdiaqB7TGmqTMujpGGeiL0Iq_CTeGjMFtrmDmwzM,2002 +setuptools/_distutils/command/sdist.py,sha256=cRIF6Ht1hJ6ayOOFVycMFBUNxjo94e_rFYPx4Hi8Ahc,19151 +setuptools/_distutils/compat/__init__.py,sha256=J20aXGjJ86Rg41xFLIWlcWCgZ9edMdJ9vvdNEQ87vPQ,522 +setuptools/_distutils/compat/numpy.py,sha256=UFgneZw9w97g4c-yGoAIOyLxUOWQ-fPRIhhfMs7_Ouc,167 +setuptools/_distutils/compat/py39.py,sha256=hOsD6lwZLqZoMnacNJ3P6nUA-LJQhEpVtYTzVH0o96M,1964 +setuptools/_distutils/compilers/C/base.py,sha256=XR1rBCStCquqm7QOYXD41-LfvsFcPpGxrwxeXzJyn_w,54876 +setuptools/_distutils/compilers/C/cygwin.py,sha256=DUlwQSb55aj7OdcmcddrmCmVEjEaxIiJ5hHUO3GBPNs,11844 +setuptools/_distutils/compilers/C/errors.py,sha256=sKOVzJajMUmNdfywo9UM_QQGsKFcclDhtI5TlCiXMLc,573 +setuptools/_distutils/compilers/C/msvc.py,sha256=elzG8v9jN5QytLMwLCdUdSuZ3eZ3R98VUvnm9Y2PBCA,21404 +setuptools/_distutils/compilers/C/tests/test_base.py,sha256=rdhHc56bhXtm5NnN9BSHwr6c69UqzMItZQzlw2AsdMc,2706 +setuptools/_distutils/compilers/C/tests/test_cygwin.py,sha256=UgV2VgUXj3VulcbDc0UBWfEyJDx42tgSwS4LzHix3mY,2701 +setuptools/_distutils/compilers/C/tests/test_mingw.py,sha256=hCmwyywISpRoyOySbFHBL4TprWRV0mUWDKmOLO8XBXE,1900 +setuptools/_distutils/compilers/C/tests/test_msvc.py,sha256=DlGjmZ1mBSMXIgmlu80BKc7V-EJOZuYucwJwFh5dn28,4151 +setuptools/_distutils/compilers/C/tests/test_unix.py,sha256=AyadWw1fR-UeDl2TvIbYBzOJVHkpE_oRRQ3JTJWqaEA,14642 +setuptools/_distutils/compilers/C/unix.py,sha256=YH-y9g_pjBFjaJyHJQkDEBQ7q4D20I2-cWJNdgw-Yho,16531 +setuptools/_distutils/compilers/C/zos.py,sha256=vnNeWLRZkdIkdZ-YyBnL8idTUfcCOn0tLMW5OBJ0ScU,6586 +setuptools/_distutils/core.py,sha256=GEHKaFC48T3o-_SmH4864GvKyx1IgbVC6ISIPVlx7a4,9364 +setuptools/_distutils/cygwinccompiler.py,sha256=mG_cU8SVZ4amD_VtF5vH6BXP0-kghGsDPbDSXrQ963c,594 +setuptools/_distutils/debug.py,sha256=N6MrTAqK6l9SVk6tWweR108PM8Ol7qNlfyV-nHcLhsY,139 +setuptools/_distutils/dep_util.py,sha256=xN75p6ZpHhMiHEc-rpL2XilJQynHnDNiafHteaZ4tjU,349 +setuptools/_distutils/dir_util.py,sha256=DXPUlfVVGsg9B-Jgg4At_j9T7vM60OgwNXkQHqTo7-I,7236 +setuptools/_distutils/dist.py,sha256=gW598UE0WMkzXQQ31Nr-8L7MPw0oIOz5OSSRzYZlwrM,55794 +setuptools/_distutils/errors.py,sha256=PPE2oDRh5y9Q1beKK9rhdvDaCzQhi4HCXs4KcqfqgZY,3092 +setuptools/_distutils/extension.py,sha256=Foyu4gULcPqm1_U9zrYYHxNk4NqglXv1rbsOk_QrSds,11155 +setuptools/_distutils/fancy_getopt.py,sha256=PjdO-bWCW0imV_UN-MGEw9R2GP2OiE8pHjITgmTAY3Q,17895 +setuptools/_distutils/file_util.py,sha256=YFQL_pD3hLuER9II_H6-hDC_YIGEookdd4wedLuiTW0,7978 +setuptools/_distutils/filelist.py,sha256=MBeSRJmPcKmDv8ooZgSU4BiQPZ0Khwv8l_jhD50XycI,15337 +setuptools/_distutils/log.py,sha256=VyBs5j7z4-K6XTEEBThUc9HyMpoPLGtQpERqbz5ylww,1200 +setuptools/_distutils/spawn.py,sha256=zseCh9sEifyp0I5Vg719JNIASlROJ2ehXqQnHlpt89Q,4086 +setuptools/_distutils/sysconfig.py,sha256=KeI8OHbMuEzHJ8Q0cBez9KZny8iRy6Z6Y0AkMz1jlsU,19728 +setuptools/_distutils/tests/__init__.py,sha256=j-IoPZEtQv3EOPuqNTwalr6GLyRjzCC-OOaNvZzmHsI,1485 +setuptools/_distutils/tests/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_distutils/tests/compat/py39.py,sha256=t0GBTM-30jX-9zCfkwlNBFtzzabemx6065mJ0d9_VRw,1026 +setuptools/_distutils/tests/support.py,sha256=tjsYsyxvpTK4NrkCseh2ujvDIGV0Mf_b5SI5fP2T0yM,4099 +setuptools/_distutils/tests/test_archive_util.py,sha256=jozimSwPBF-JoJfN_vDaiVGZp66BNcWZGh34FlW57DQ,11787 +setuptools/_distutils/tests/test_bdist.py,sha256=xNHxUsLlHsZQRwkzLb_iSD24s-9Mk-NX2ffBWwOyPyc,1396 +setuptools/_distutils/tests/test_bdist_dumb.py,sha256=QF05MHNhPOdZyh88Xpw8KsO64s7pRFkl8KL-RoV4XK0,2247 +setuptools/_distutils/tests/test_bdist_rpm.py,sha256=Hdm-pwWgyaoGdGbEcGZa8cRhGU45y8gHK8umOanTjik,3932 +setuptools/_distutils/tests/test_build.py,sha256=JJY5XpOZco25ZY0pstxl-iI8mHsWP0ujf5o8aOtuZYY,1742 +setuptools/_distutils/tests/test_build_clib.py,sha256=Mo1ZFb4C1VXBYOGvnallwN7YCnTtr24akLDO8Zi4CsY,4331 +setuptools/_distutils/tests/test_build_ext.py,sha256=QFO9qYVhWWdJu17HXc4x9RMnLZlhk0lAHi9HVppbuX4,22545 +setuptools/_distutils/tests/test_build_py.py,sha256=NsfmRrojOHBXNMqWR_mp5g4PLTgjhD7iZFUffGZFIdw,6882 +setuptools/_distutils/tests/test_build_scripts.py,sha256=cD-FRy-oX55sXRX5Ez5xQCaeHrWajyKc4Xuwv2fe48w,2880 +setuptools/_distutils/tests/test_check.py,sha256=hHSV07qf7YoSxGsTbbsUQ9tssZz5RRNdbrY1s2SwaFI,6226 +setuptools/_distutils/tests/test_clean.py,sha256=hPH6jfIpGFUrvWbF1txkiNVSNaAxt2wq5XjV499zO4E,1240 +setuptools/_distutils/tests/test_cmd.py,sha256=bgRB79mitoOKR1OiyZHnCogvGxt3pWkxeTqIC04lQWQ,3254 +setuptools/_distutils/tests/test_config_cmd.py,sha256=Zs6WX0IfxDvmuC19XzuVNnYCnTr9Y-hl73TAmDSBN4Y,2664 +setuptools/_distutils/tests/test_core.py,sha256=L7XKVAxa-MGoAZeANopnuK9fRKneYhkSQpgw8XQvcF8,3829 +setuptools/_distutils/tests/test_dir_util.py,sha256=E84lC-k4riVUwURyWaQ0Jqx2ui2-io-0RuJa3M7qkJs,4500 +setuptools/_distutils/tests/test_dist.py,sha256=a6wlc5fQJd5qQ6HOndzcupNhjTxvj6-_JLtpuYvaP1M,18793 +setuptools/_distutils/tests/test_extension.py,sha256=-YejLgZCuycFrOBd64pVH0JvwMc9NwhzHvQxvvjXHqk,3670 +setuptools/_distutils/tests/test_file_util.py,sha256=livjnl3FkilQlrB2rFdFQq9nvjEVZHynNya0bfzv_b4,3522 +setuptools/_distutils/tests/test_filelist.py,sha256=rJwkqCUfkGDgWlD22TozsT8ycbupMHB8DXqThzwT1T4,10766 +setuptools/_distutils/tests/test_install.py,sha256=TfCB0ykhIxydIC2Q4SuTAZzSHvteMHgrBL9whoSgK9Q,8618 +setuptools/_distutils/tests/test_install_data.py,sha256=vKq3K97k0hBAnOg38nmwEdf7cEDVr9rTVyCeJolgb4A,2464 +setuptools/_distutils/tests/test_install_headers.py,sha256=PVAYpo_tYl980Qf64DPOmmSvyefIHdU06f7VsJeZykE,936 +setuptools/_distutils/tests/test_install_lib.py,sha256=qri6Rl-maNTQrNDV8DbeXNl0hjsfRIKiI4rfZLrmWBI,3612 +setuptools/_distutils/tests/test_install_scripts.py,sha256=KE3v0cDkFW-90IOID-OmZZGM2mhy-ZkEuuW7UXS2SHw,1600 +setuptools/_distutils/tests/test_log.py,sha256=isFtOufloCyEdZaQOV7cVUr46GwtdVMj43mGBB5XH7k,323 +setuptools/_distutils/tests/test_modified.py,sha256=h1--bOWmtJo1bpVV6uRhdnS9br71CBiNDM1MDwSGpug,4221 +setuptools/_distutils/tests/test_sdist.py,sha256=cfzUhlCA418-1vH9ta3IBs26c_jUBbkJoFOK5GnAyNk,15062 +setuptools/_distutils/tests/test_spawn.py,sha256=eS8w9D7bTxyFLSyRahJWeuh8Kc1F8RWWiY_dSG5B5Bc,4803 +setuptools/_distutils/tests/test_sysconfig.py,sha256=lxM8LsUi1TomjDV4HoYK8u5nUoBkeNL60Uq8PY1DcwU,11986 +setuptools/_distutils/tests/test_text_file.py,sha256=WQWSB5AfdBDZaMA8BFgipJPnsJb_2SKMfL90fSkRVtw,3460 +setuptools/_distutils/tests/test_util.py,sha256=H9zlZ4z4Vh4TfjNYDBsxP7wguQLpxCfJYyOcm1yZU3c,7988 +setuptools/_distutils/tests/test_version.py,sha256=ahfg_mP8wRy1sgwY-_Px5hrjgf6_upTIpnCgpR4yWRk,2750 +setuptools/_distutils/tests/test_versionpredicate.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_distutils/tests/unix_compat.py,sha256=z-op6C2iVdX1aq5BIBR7cqOxijKE97alNwJqHNdLpoI,386 +setuptools/_distutils/text_file.py,sha256=z4dkOJBr9Bo2LG0TNqm8sD63LEEaKSSP0J0bWBrFG3c,12101 +setuptools/_distutils/unixccompiler.py,sha256=1bXJWH4fiu_A2WfriHzf88xjllQTXnnjUkZdRKs9cWU,212 +setuptools/_distutils/util.py,sha256=Njfnqk60zMdkiAjRnGcTWX3t49-obHapOlbNvyIl02I,18094 +setuptools/_distutils/version.py,sha256=vImT5-ECXkQ21oKL0XYFiTqK6NyM09cpzBNoA_34CQU,12619 +setuptools/_distutils/versionpredicate.py,sha256=qBWQ6wTj12ODytoTmIydefIY2jb4uY1sdbgbuLn-IJM,5205 +setuptools/_distutils/zosccompiler.py,sha256=svdiXZ2kdcwKrJKfhUhib03y8gz7aGZKukXH3I7YkBc,58 +setuptools/_entry_points.py,sha256=10TjbzfGdqWGH06lQuPPGDDci-OnXoIzrfpIWba5AZw,2468 +setuptools/_imp.py,sha256=YY1EjZEN-0zYci1cxO10B_adAEOr7i8eK8JoCc9Ierc,2435 +setuptools/_importlib.py,sha256=aKIjcK0HKXNz2D-XTrxaixGn_juTkONwmu3dcheMOF0,223 +setuptools/_itertools.py,sha256=jWRfsIrpC7myooz3hDURj9GtvpswZeKXg2HakmEhNjo,657 +setuptools/_normalization.py,sha256=1H0YXdCuVkUcNX2zQqDyqa-4eWC8VI5vWjGGsbj7n8I,5798 +setuptools/_path.py,sha256=2Bv1q9_Hrd4oizKwcH3pv_05YVR6meovQE6ZtyD45yI,2976 +setuptools/_reqs.py,sha256=RRX-qYsz_fy6K66XchCHcIszK3bSAtU6aO1s3ZaLV14,1380 +setuptools/_scripts.py,sha256=5TrIWDVOuO3cRcfzcZAUBKPRH7K4svQRdQLZKKiD1bQ,11247 +setuptools/_shutil.py,sha256=IQQ1gcPX4X_wPilYGJGxChyMCqG43VOejoQZTIrCTY8,1578 +setuptools/_static.py,sha256=GTR79gESF1_JaK4trLkpDrEuCeEtPlwQW0MRv7VNQX4,4855 +setuptools/_vendor/.lock,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/autocommand-2.2.2.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/autocommand-2.2.2.dist-info/LICENSE,sha256=reeNBJgtaZctREqOFKlPh6IzTdOFXMgDSOqOJAqg3y0,7634 +setuptools/_vendor/autocommand-2.2.2.dist-info/METADATA,sha256=OADZuR3O6iBlpu1ieTgzYul6w4uOVrk0P0BO5TGGAJk,15006 +setuptools/_vendor/autocommand-2.2.2.dist-info/RECORD,sha256=K-5gcsvOxjkMVxB8jfywQikYqY7NtaLMNiGH8T1C6W8,1072 +setuptools/_vendor/autocommand-2.2.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/autocommand-2.2.2.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92 +setuptools/_vendor/autocommand-2.2.2.dist-info/top_level.txt,sha256=AzfhgKKS8EdAwWUTSF8mgeVQbXOY9kokHB6kSqwwqu0,12 +setuptools/_vendor/autocommand/__init__.py,sha256=zko5Rnvolvb-UXjCx_2ArPTGBWwUK5QY4LIQIKYR7As,1037 +setuptools/_vendor/autocommand/autoasync.py,sha256=AMdyrxNS4pqWJfP_xuoOcImOHWD-qT7x06wmKN1Vp-U,5680 +setuptools/_vendor/autocommand/autocommand.py,sha256=hmkEmQ72HtL55gnURVjDOnsfYlGd5lLXbvT4KG496Qw,2505 +setuptools/_vendor/autocommand/automain.py,sha256=A2b8i754Mxc_DjU9WFr6vqYDWlhz0cn8miu8d8EsxV8,2076 +setuptools/_vendor/autocommand/autoparse.py,sha256=WVWmZJPcbzUKXP40raQw_0HD8qPJ2V9VG1eFFmmnFxw,11642 +setuptools/_vendor/autocommand/errors.py,sha256=7aa3roh9Herd6nIKpQHNWEslWE8oq7GiHYVUuRqORnA,886 +setuptools/_vendor/backports.tarfile-1.2.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/backports.tarfile-1.2.0.dist-info/LICENSE,sha256=htoPAa6uRjSKPD1GUZXcHOzN55956HdppkuNoEsqR0E,1023 +setuptools/_vendor/backports.tarfile-1.2.0.dist-info/METADATA,sha256=ghXFTq132dxaEIolxr3HK1mZqm9iyUmaRANZQSr6WlE,2020 +setuptools/_vendor/backports.tarfile-1.2.0.dist-info/RECORD,sha256=D2nbcZtUIg1qSt_4v7BKyYr_6j3ItUBUoaeHoXVn9NE,1056 +setuptools/_vendor/backports.tarfile-1.2.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/backports.tarfile-1.2.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92 +setuptools/_vendor/backports.tarfile-1.2.0.dist-info/top_level.txt,sha256=cGjaLMOoBR1FK0ApojtzWVmViTtJ7JGIK_HwXiEsvtU,10 +setuptools/_vendor/backports/__init__.py,sha256=iOEMwnlORWezdO8-2vxBIPSR37D7JGjluZ8f55vzxls,81 +setuptools/_vendor/backports/tarfile/__init__.py,sha256=Pwf2qUIfB0SolJPCKcx3vz3UEu_aids4g4sAfxy94qg,108491 +setuptools/_vendor/backports/tarfile/__main__.py,sha256=Yw2oGT1afrz2eBskzdPYL8ReB_3liApmhFkN2EbDmc4,59 +setuptools/_vendor/backports/tarfile/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/backports/tarfile/compat/py38.py,sha256=iYkyt_gvWjLzGUTJD9TuTfMMjOk-ersXZmRlvQYN2qE,568 +setuptools/_vendor/importlib_metadata-8.7.1.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/importlib_metadata-8.7.1.dist-info/METADATA,sha256=o-OLnuQyYonUhkcE8w4pnudp4jCc6fSnXw3hpQrQo1Y,4670 +setuptools/_vendor/importlib_metadata-8.7.1.dist-info/RECORD,sha256=Uqa47g3hXPf9mWJfQ7l80uOUKshvFgVOqQ3kjmbyk1U,1868 +setuptools/_vendor/importlib_metadata-8.7.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/importlib_metadata-8.7.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91 +setuptools/_vendor/importlib_metadata-8.7.1.dist-info/licenses/LICENSE,sha256=RYUC4S2Xu_ZEOGBqIARKqF6wX7CoqAe7NdvsJT_R_AQ,10278 +setuptools/_vendor/importlib_metadata-8.7.1.dist-info/top_level.txt,sha256=CO3fD9yylANiXkrMo4qHLV_mqXL2sC5JFKgt1yWAT-A,19 +setuptools/_vendor/importlib_metadata/__init__.py,sha256=u7Ew4-UkpzNY-ka6k-WRkDhQZS1akkLMfWs2eEnUmGo,37734 +setuptools/_vendor/importlib_metadata/_adapters.py,sha256=r5i8XLrKT6xmrpoREZhZrfczOYDmrVZeJBW5u0HzIGU,3797 +setuptools/_vendor/importlib_metadata/_collections.py,sha256=CxAhzlF3g1rwu_fMiB53JtRQiUFh0RgiMpoOvmK_ocg,760 +setuptools/_vendor/importlib_metadata/_compat.py,sha256=VC5ZDLlT-BcshauCShdFJvMNLntJJfZzNK1meGa-enw,1313 +setuptools/_vendor/importlib_metadata/_functools.py,sha256=0pA2OoiVK6wnsGq8HvVIzgdkvLiZ0nfnfw7IsndjoHk,3510 +setuptools/_vendor/importlib_metadata/_itertools.py,sha256=nMvp9SfHAQ_JYwK4L2i64lr3GRXGlYlikGTVzWbys_E,5351 +setuptools/_vendor/importlib_metadata/_meta.py,sha256=EtHyiJ5kGzWFDfKyQ2XQp6Vu113CeadKW1Vf6aGc1B4,1765 +setuptools/_vendor/importlib_metadata/_text.py,sha256=HCsFksZpJLeTP3NEk_ngrAeXVRRtTrtyh9eOABoRP4A,2166 +setuptools/_vendor/importlib_metadata/_typing.py,sha256=EQKhhsEgz_Sa-FnePI-faC72rNOOQwopjA1i5pG8FDU,367 +setuptools/_vendor/importlib_metadata/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/importlib_metadata/compat/py311.py,sha256=uqm-K-uohyj1042TH4a9Er_I5o7667DvulcD-gC_fSA,608 +setuptools/_vendor/importlib_metadata/compat/py39.py,sha256=J3W7PUVRPNYMmcvT12RF8ndBU9e8_T0Ac4U87Bsrq70,1187 +setuptools/_vendor/importlib_metadata/diagnose.py,sha256=nkSRMiowlmkhLYhKhvCg9glmt_11Cox-EmLzEbqYTa8,379 +setuptools/_vendor/importlib_metadata/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/jaraco.text-4.0.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/jaraco.text-4.0.0.dist-info/LICENSE,sha256=htoPAa6uRjSKPD1GUZXcHOzN55956HdppkuNoEsqR0E,1023 +setuptools/_vendor/jaraco.text-4.0.0.dist-info/METADATA,sha256=XC_QkBLJVPE5sQYkl41TNaZUw0AUzQb29GbKaD28nFY,3731 +setuptools/_vendor/jaraco.text-4.0.0.dist-info/RECORD,sha256=Y7k2wwjQ_L4TkOgkVnzAB1NsMqhJrbAieOlfHUxzbDE,1157 +setuptools/_vendor/jaraco.text-4.0.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/jaraco.text-4.0.0.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91 +setuptools/_vendor/jaraco.text-4.0.0.dist-info/top_level.txt,sha256=0JnN3LfXH4LIRfXL-QFOGCJzQWZO3ELx4R1d_louoQM,7 +setuptools/_vendor/jaraco/context/__init__.py,sha256=br1ydYGo1Xr_Pu1anuEdd-QrjUiz_EY5L_5E4C03L4w,9809 +setuptools/_vendor/jaraco/context/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/jaraco/functools/__init__.py,sha256=ZJx9cMs2Nvk2xGUl8OjVGkpjdOaNlSzJrN4dGglgX2g,18599 +setuptools/_vendor/jaraco/functools/__init__.pyi,sha256=K4DcbnYIHE5QlMxqf9-cVp-WhycrhuTao4J7O7TMq4Y,3907 +setuptools/_vendor/jaraco/functools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/jaraco/text/Lorem ipsum.txt,sha256=N_7c_79zxOufBY9HZ3yzMgOkNv-TkOTTio4BydrSjgs,1335 +setuptools/_vendor/jaraco/text/__init__.py,sha256=lazNYXo8IhOR1bFigLAyGiiQao6jtO3KGWh8bZZPx3c,16762 +setuptools/_vendor/jaraco/text/layouts.py,sha256=HTC8aSTLZ7uXipyOXapRMC158juecjK6RVwitfmZ9_w,643 +setuptools/_vendor/jaraco/text/show-newlines.py,sha256=jT0vp4gLhG20hX2lTB-zKo_i3NgKzj79yRAdz4eMzIM,903 +setuptools/_vendor/jaraco/text/strip-prefix.py,sha256=NfVXV8JVNo6nqcuYASfMV7_y4Eo8zMQqlCOGvAnRIVw,412 +setuptools/_vendor/jaraco/text/to-dvorak.py,sha256=36nPPsiifwv6RfpAb--3zpgbIx8ohnnI1aR29IJTO9s,118 +setuptools/_vendor/jaraco/text/to-qwerty.py,sha256=IQoFY9v7vLTEybcput4KBYm_5GR35pmtgZ_xyrmdTgI,118 +setuptools/_vendor/jaraco_context-6.1.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/jaraco_context-6.1.0.dist-info/METADATA,sha256=BDXr_FIFXFqZdO0gwXG2RUOD6vnbsVCIFLp62XxZ1xI,4270 +setuptools/_vendor/jaraco_context-6.1.0.dist-info/RECORD,sha256=RZnYds60K37vA6o54jXE6-q2rqJAnb5jRJaFI5PR-Dc,777 +setuptools/_vendor/jaraco_context-6.1.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/jaraco_context-6.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91 +setuptools/_vendor/jaraco_context-6.1.0.dist-info/licenses/LICENSE,sha256=l1WhhRlmbl8PTK49qtPXASvK5IpgCzEjfXXp_hNOZoM,1076 +setuptools/_vendor/jaraco_context-6.1.0.dist-info/top_level.txt,sha256=0JnN3LfXH4LIRfXL-QFOGCJzQWZO3ELx4R1d_louoQM,7 +setuptools/_vendor/jaraco_functools-4.4.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/jaraco_functools-4.4.0.dist-info/METADATA,sha256=LnnajcNGmSSr46yLIqP-tWkqeb-fR7vIa2U11hhkGEk,2960 +setuptools/_vendor/jaraco_functools-4.4.0.dist-info/RECORD,sha256=uq_S1tlMG95FPkyAWsBVEdxTmG4KY7AvZ07w94i-wUY,882 +setuptools/_vendor/jaraco_functools-4.4.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/jaraco_functools-4.4.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91 +setuptools/_vendor/jaraco_functools-4.4.0.dist-info/licenses/LICENSE,sha256=WlfLTbheKi3YjCkGKJCK3VfjRRRJ4KmnH9-zh3b9dZ0,1076 +setuptools/_vendor/jaraco_functools-4.4.0.dist-info/top_level.txt,sha256=0JnN3LfXH4LIRfXL-QFOGCJzQWZO3ELx4R1d_louoQM,7 +setuptools/_vendor/more_itertools-10.8.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/more_itertools-10.8.0.dist-info/METADATA,sha256=arNRUUWr5YsGfwh8hnYxz0z11lP-2BuWQu4SCGw5BLg,39413 +setuptools/_vendor/more_itertools-10.8.0.dist-info/RECORD,sha256=ntGxNMCqg3IvNumfORiqlhDOOgpRTXk7u3SjaNRBoB0,1095 +setuptools/_vendor/more_itertools-10.8.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/more_itertools-10.8.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82 +setuptools/_vendor/more_itertools-10.8.0.dist-info/licenses/LICENSE,sha256=CfHIyelBrz5YTVlkHqm4fYPAyw_QB-te85Gn4mQ8GkY,1053 +setuptools/_vendor/more_itertools/__init__.py,sha256=5F7E_zpoGcEBW_T_3WE0WYYt8j-gJodIuiBcOJxrOv8,149 +setuptools/_vendor/more_itertools/__init__.pyi,sha256=5B3eTzON1BBuOLob1vCflyEb2lSd6usXQQ-Cv-hXkeA,43 +setuptools/_vendor/more_itertools/more.py,sha256=mNPKKu5UI7lRL460vgm0QTCWFiGMVCMosSPxVSdibos,163690 +setuptools/_vendor/more_itertools/more.pyi,sha256=fpEgNX3O66wY5cnT-s5VYDKNUpAcaCyU3iP84It3OOM,27119 +setuptools/_vendor/more_itertools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/more_itertools/recipes.py,sha256=Ma-kuBNZDFhaQDbIJgRmnrG86WzaupbOyUV3v8je3xw,41811 +setuptools/_vendor/more_itertools/recipes.pyi,sha256=LNRwN-OL3nkMfQAqx-PPc1fBaetUObb_Z6mdePyzh1c,6226 +setuptools/_vendor/packaging-26.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/packaging-26.0.dist-info/METADATA,sha256=M2K7fWom2iliuo2qpHhc0LrKwhq6kIoRlcyPWVgKJlo,3309 +setuptools/_vendor/packaging-26.0.dist-info/RECORD,sha256=9QUDMzqulReAfS-02B_CfLYKpkRmb1AXaBJibWIkzl0,2113 +setuptools/_vendor/packaging-26.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/packaging-26.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82 +setuptools/_vendor/packaging-26.0.dist-info/licenses/LICENSE,sha256=ytHvW9NA1z4HS6YU0m996spceUDD2MNIUuZcSQlobEg,197 +setuptools/_vendor/packaging-26.0.dist-info/licenses/LICENSE.APACHE,sha256=DVQuDIgE45qn836wDaWnYhSdxoLXgpRRKH4RuTjpRZQ,10174 +setuptools/_vendor/packaging-26.0.dist-info/licenses/LICENSE.BSD,sha256=tw5-m3QvHMb5SLNMFqo5_-zpQZY2S8iP8NIYDwAo-sU,1344 +setuptools/_vendor/packaging/__init__.py,sha256=y4lVbpeBzCGk-IPDw5BGBZ_b0P3ukEEJZAbGYc6Ey8c,494 +setuptools/_vendor/packaging/_elffile.py,sha256=-sKkptYqzYw2-x3QByJa5mB4rfPWu1pxkZHRx1WAFCY,3211 +setuptools/_vendor/packaging/_manylinux.py,sha256=Hf6nB0cOrayEs96-p3oIXAgGnFquv20DO5l-o2_Xnv0,9559 +setuptools/_vendor/packaging/_musllinux.py,sha256=Z6swjH3MA7XS3qXnmMN7QPhqP3fnoYI0eQ18e9-HgAE,2707 +setuptools/_vendor/packaging/_parser.py,sha256=U_DajsEx2VoC_F46fSVV3hDKNCWoQYkPkasO3dld0ig,10518 +setuptools/_vendor/packaging/_structures.py,sha256=Hn49Ta8zV9Wo8GiCL8Nl2ARZY983Un3pruZGVNldPwE,1514 +setuptools/_vendor/packaging/_tokenizer.py,sha256=M8EwNIdXeL9NMFuFrQtiOKwjka_xFx8KjRQnfE8O_z8,5421 +setuptools/_vendor/packaging/licenses/__init__.py,sha256=TwXLHZCXwSgdFwRLPxW602T6mSieunSFHM6fp8pgW78,5819 +setuptools/_vendor/packaging/licenses/_spdx.py,sha256=WW7DXiyg68up_YND_wpRYlr1SHhiV4FfJLQffghhMxQ,51122 +setuptools/_vendor/packaging/markers.py,sha256=ZX-cLvW1S3cZcEc0fHI4z7zSx5U2T19yMpDP_mE-CYw,12771 +setuptools/_vendor/packaging/metadata.py,sha256=CWVZpN_HfoYMSSDuCP7igOvGgqA9AOmpW8f3qTisfnc,39360 +setuptools/_vendor/packaging/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/packaging/pylock.py,sha256=-R1uNfJ4PaLto7Mg62YsGOHgvskuiIEqPwxOywl42Jk,22537 +setuptools/_vendor/packaging/requirements.py,sha256=PMCAWD8aNMnVD-6uZMedhBuAVX2573eZ4yPBLXmz04I,2870 +setuptools/_vendor/packaging/specifiers.py,sha256=EPNPimY_zFivthv1vdjZYz5IqkKGsnKR2yKh-EVyvZw,40797 +setuptools/_vendor/packaging/tags.py,sha256=cXLV1pJD3UtJlDg7Wz3zrfdQhRZqr8jumSAKKAAd2xE,22856 +setuptools/_vendor/packaging/utils.py,sha256=N4c6oZzFJy6klTZ3AnkNz7sSkJesuFWPp68LA3B5dAo,5040 +setuptools/_vendor/packaging/version.py,sha256=7XWlL2IDYLwDYC0ht6cFEhapLwLWbmyo4rb7sEFj0x8,23272 +setuptools/_vendor/platformdirs-4.4.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/platformdirs-4.4.0.dist-info/METADATA,sha256=u8UhbV9Md7-8VyJyZNUuZrzN5xzPeedeGmBG0CnTAiM,12831 +setuptools/_vendor/platformdirs-4.4.0.dist-info/RECORD,sha256=PQ0vHMAYWTxNi6ojlbrwscHGRbvYwYzQZPSctOTJXqA,1218 +setuptools/_vendor/platformdirs-4.4.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/platformdirs-4.4.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87 +setuptools/_vendor/platformdirs-4.4.0.dist-info/licenses/LICENSE,sha256=KeD9YukphQ6G6yjD_czwzv30-pSHkBHP-z0NS-1tTbY,1089 +setuptools/_vendor/platformdirs/__init__.py,sha256=iORRy6_lZ9tXLvO0W6fJPn8QV7F532ivl-f2WGmabBc,22284 +setuptools/_vendor/platformdirs/__main__.py,sha256=HnsUQHpiBaiTxwcmwVw-nFaPdVNZtQIdi1eWDtI-MzI,1493 +setuptools/_vendor/platformdirs/android.py,sha256=r0DshVBf-RO1jXJGX8C4Til7F1XWt-bkdWMgmvEiaYg,9013 +setuptools/_vendor/platformdirs/api.py,sha256=wPHOlwOsfz2oqQZ6A2FcCu5kEAj-JondzoNOHYFQ0h8,9281 +setuptools/_vendor/platformdirs/macos.py,sha256=0XoOgin1NK7Qki7iskD-oS8xKxw6bXgoKEgdqpCRAFQ,6322 +setuptools/_vendor/platformdirs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/platformdirs/unix.py,sha256=WZmkUA--L3JNRGmz32s35YfoD3ica6xKIPdCV_HhLcs,10458 +setuptools/_vendor/platformdirs/version.py,sha256=i31fi3nNO19D2FdSx8aldD7IFLSqm2YrAo6SmkV0FLM,704 +setuptools/_vendor/platformdirs/windows.py,sha256=IFpiohUBwxPtCzlyKwNtxyW4Jk8haa6W8o59mfrDXVo,10125 +setuptools/_vendor/tomli-2.4.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/tomli-2.4.0.dist-info/METADATA,sha256=9awKH4-6kItGRs1lUwnpGq2Wm2eHYWrFccpGKjgy_84,10567 +setuptools/_vendor/tomli-2.4.0.dist-info/RECORD,sha256=IlQwzpVkDo1Pzbk82uL8ONaFrsAW0OKT1fuZppWIb-0,822 +setuptools/_vendor/tomli-2.4.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/tomli-2.4.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82 +setuptools/_vendor/tomli-2.4.0.dist-info/licenses/LICENSE,sha256=uAgWsNUwuKzLTCIReDeQmEpuO2GSLCte6S8zcqsnQv4,1072 +setuptools/_vendor/tomli/__init__.py,sha256=ahtDjGJA2M_wWVvGpzx4YJtWxrWBx6qE-GH5-UYoECA,314 +setuptools/_vendor/tomli/_parser.py,sha256=txeATLE3zHyZ-ushXtYfrZ3LoIs7JzQF2W2KL1gwJPg,25958 +setuptools/_vendor/tomli/_re.py,sha256=oSNZ_ilFI6chEuQ01YRSoUydBQr_okF_mSdHTkFmv90,3396 +setuptools/_vendor/tomli/_types.py,sha256=-GTG2VUqkpxwMqzmVO4F7ybKddIbAnuAHXfmWQcTi3Q,254 +setuptools/_vendor/tomli/py.typed,sha256=8PjyZ1aVoQpRVvt71muvuq5qE-jTFZkK-GLHkhdebmc,26 +setuptools/_vendor/wheel-0.46.3.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/wheel-0.46.3.dist-info/METADATA,sha256=IpEKqXyonLzCCgGeJ_4xNgt5KaS9ZsoNMQ-ZpE9szTU,2410 +setuptools/_vendor/wheel-0.46.3.dist-info/RECORD,sha256=sCl8OtoXuHJ-Fd3W0eOMipCpl_d5_Pl4mW9v7GLstwI,1734 +setuptools/_vendor/wheel-0.46.3.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/wheel-0.46.3.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82 +setuptools/_vendor/wheel-0.46.3.dist-info/entry_points.txt,sha256=JJdtSAGTvMLbIkTVZUAMvGKO39FtWfCVF8mp_NH6e4g,110 +setuptools/_vendor/wheel-0.46.3.dist-info/licenses/LICENSE.txt,sha256=MMI2GGeRCPPo6h0qZYx8pBe9_IkcmO8aifpP8MmChlQ,1107 +setuptools/_vendor/wheel/__init__.py,sha256=UweKvhe4SyP7zFyDoYo8BOuwTA6q3-_WpMmY2NNO54c,59 +setuptools/_vendor/wheel/__main__.py,sha256=_83wl9tyGU2cHiqfudpubGHdRL5uonPXnzeznznkxzs,512 +setuptools/_vendor/wheel/_bdist_wheel.py,sha256=bpmNa7_s-CYFkVgXf9ENAYTiJ01XBhRW4pxH1T8XYsI,21729 +setuptools/_vendor/wheel/_commands/__init__.py,sha256=fCRAQZNDyj2JLrufdgPsBlaRS_t_j_aBUMpXj09KZ4E,4432 +setuptools/_vendor/wheel/_commands/convert.py,sha256=0wSJMU0m-6LY16Om8Wmmloy-hJWFZeOmI8hT-2Z7Qms,12743 +setuptools/_vendor/wheel/_commands/pack.py,sha256=o3iwjfRHl7N9ul-M2kHbewLJZnqBLAWf0tzUCwoiTMw,3078 +setuptools/_vendor/wheel/_commands/tags.py,sha256=Rv2ySVb8-qX3osKp3uJgxcIMXkjt43XUD0-zvC6KvnY,4775 +setuptools/_vendor/wheel/_commands/unpack.py,sha256=AjDSS23XYyCSFfifnMutinrpPv-DK_2wbNHkKAUFwgM,1016 +setuptools/_vendor/wheel/_metadata.py,sha256=BP5jC9uC1hyicp7nL4FJ2LYixNFpEJIV_uMDY1KBZBg,6188 +setuptools/_vendor/wheel/_setuptools_logging.py,sha256=-5KC-lne0ilOUWIDfOkqapUWGMFZhuKYDIavIZiB5kM,781 +setuptools/_vendor/wheel/bdist_wheel.py,sha256=HrzYiSzMkh5ohAAhlQnYBS1p8qbr85X6F59xqxd9kBg,1102 +setuptools/_vendor/wheel/macosx_libfile.py,sha256=pL0wm88jRMl_4ASgGlNg_mz69Zmv5xm8JSkjLdwyvIQ,16712 +setuptools/_vendor/wheel/metadata.py,sha256=GknOO7JJiZMlcEe_fiD7nqnDTTLd0sX_-IgipM4L3-4,757 +setuptools/_vendor/wheel/wheelfile.py,sha256=m_g_7TNsEp-j-xnvSr5yDLEFb1nhyObueq9Q5_1_lBA,8720 +setuptools/_vendor/zipp-3.23.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +setuptools/_vendor/zipp-3.23.0.dist-info/METADATA,sha256=vdZ9TRbPC_O4k-fRjNPS13StuC837Zhbx3cMYHIms1s,3563 +setuptools/_vendor/zipp-3.23.0.dist-info/RECORD,sha256=O_q2YKJHBPhCKOS7HOHw4_qf-A5cgGNSpiay9GDq2DY,1078 +setuptools/_vendor/zipp-3.23.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/zipp-3.23.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91 +setuptools/_vendor/zipp-3.23.0.dist-info/licenses/LICENSE,sha256=WlfLTbheKi3YjCkGKJCK3VfjRRRJ4KmnH9-zh3b9dZ0,1076 +setuptools/_vendor/zipp-3.23.0.dist-info/top_level.txt,sha256=iAbdoSHfaGqBfVb2XuR9JqSQHCoOsOtG6y9C_LSpqFw,5 +setuptools/_vendor/zipp/__init__.py,sha256=ieXh9GIMdABjKRX_JUJtP9k5wdBLK4Mt5X4nszSkmYE,11976 +setuptools/_vendor/zipp/_functools.py,sha256=f6Kt9LxZ4TE-cY1lJVdXSId3memSXmH9IdgMbU-_x2k,575 +setuptools/_vendor/zipp/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/_vendor/zipp/compat/overlay.py,sha256=oEIGAnbr8yGjuKTrVSO2ByewPui71uppbX18BLnYTKE,783 +setuptools/_vendor/zipp/compat/py310.py,sha256=S7i6N9mToEn3asNb2ILyjnzvITOXrATD_J4emjyBbDU,256 +setuptools/_vendor/zipp/compat/py313.py,sha256=RndvDNtuY7H2D9ecnnzcPBMZ8mZc42gmXD_IwQAXXAE,654 +setuptools/_vendor/zipp/glob.py,sha256=DLV9LBsDxA6YVW82e3-tkoNrus1h4R-j3BR6VqS0AzE,3382 +setuptools/archive_util.py,sha256=Tl_64hSTtc4y8x7xa98rFVUbG24oArpjzLAYGYP2_sI,7356 +setuptools/build_meta.py,sha256=8eEvuboZNOraTSixwLexIVVQU42oy-eH5Tel7QHAiS8,20140 +setuptools/cli-32.exe,sha256=MqzBvFQxFsviz_EMuGd3LfLyVP8mNMhwrvC0bEtpb9s,11776 +setuptools/cli-64.exe,sha256=u7PeVwdinmpgoMI4zUd7KPB_AGaYL9qVP6b87DkHOko,14336 +setuptools/cli-arm64.exe,sha256=uafQjaiA36yLz1SOuksG-1m28JsX0zFIoPZhgyiSbGE,13824 +setuptools/cli.exe,sha256=MqzBvFQxFsviz_EMuGd3LfLyVP8mNMhwrvC0bEtpb9s,11776 +setuptools/command/__init__.py,sha256=wdSrlNR0P6nCz9_oFtCAiAkeFJMsZa1jPcpXT53f0SM,803 +setuptools/command/_requirestxt.py,sha256=ItYMTJGh_i5TlQstX_nFopqEhkC4PJFadBL2Zd3V670,4228 +setuptools/command/alias.py,sha256=rDdrMt32DS6qf3K7tjZZyHD_dMKrm77AXcAtx-nBQ0I,2380 +setuptools/command/bdist_egg.py,sha256=nTongOhFu6vI6RXLjf6Qq_Fiel8rIt_EHxzdyOUPGZo,17355 +setuptools/command/bdist_rpm.py,sha256=LyqI49w48SKk0FmuHsE9MLzX1SuXjL7YMNbZMFZqFII,1435 +setuptools/command/bdist_wheel.py,sha256=SknYPVwhrRPfXudmO_gvqNHHHhzSfU8cEmFtQomQ9xI,22247 +setuptools/command/build.py,sha256=eI7STMERGGZEpzk1tvJN8p9IOjAAXMcGLzljv2mwI3M,6052 +setuptools/command/build_clib.py,sha256=AbgpPIF_3qL8fZr3JIebI-WHTMTBiMfrFkVQz8K40G4,4528 +setuptools/command/build_ext.py,sha256=v4lBclgoM2TEZtlAH1AHRHBSmktMzHGytEHDF_1ZR4E,18526 +setuptools/command/build_py.py,sha256=eHhfo9z7Qf79vSzrCnq-oEXayQC0R_nx3hWaTgWGv5M,15826 +setuptools/command/develop.py,sha256=TYKWIzfv3c3wjAYhH5UD8tW6S6ozZi_fpF6IJILm8Kg,1751 +setuptools/command/dist_info.py,sha256=HU752iLLmmYMHbsDBgz2ubRjkgJobugOp8H71LzzDys,3450 +setuptools/command/easy_install.py,sha256=XrN5cV51mfzbCDoapZ6iT8nCzaLpumdwJYRKeMHEjCQ,780 +setuptools/command/editable_wheel.py,sha256=1EhUMD0YkKTyFB0x6GhRuzSX7j91JgRTe2FDnbphFFs,34891 +setuptools/command/egg_info.py,sha256=5xd5VtgfQ6U6hz8XAs4pcetv1CEvVraKfZpTExxnvJk,25888 +setuptools/command/install.py,sha256=4x2hiNgBGQrFEXKuPBQMrb8ecSwIfYF4TYHZQLjPVAg,5066 +setuptools/command/install_egg_info.py,sha256=3I9IPCH7D59Sh-6aVYz-h6wwyxq-wkxrKwKg3nDdJqs,2075 +setuptools/command/install_lib.py,sha256=9n1_U83eHcERL_a_rv_LhHCkhXlLdqyZ4SdBow-9qcE,4319 +setuptools/command/install_scripts.py,sha256=JmDGngHzCO2Y1j4maFNdHB_ILhGPhk-b5KhxsZwUwiQ,2490 +setuptools/command/launcher manifest.xml,sha256=xlLbjWrB01tKC0-hlVkOKkiSPbzMml2eOPtJ_ucCnbE,628 +setuptools/command/rotate.py,sha256=XNd_BEEOWAJHW1FcLTMUWWl4QB6zAuk7b8VWQg3FHos,2187 +setuptools/command/saveopts.py,sha256=Np0PVb7SD7oTbu9Z9sosS7D-CkkIkU7x4glu5Es1tjA,692 +setuptools/command/sdist.py,sha256=nS2xogcTfQZwbZH1AQ5WYh13KCvNda9xwUT57sVxTec,7426 +setuptools/command/setopt.py,sha256=YV7qj2mB-aQsOrWCh3i_vbd9Kvt040o3Bb54eR8Yl5A,5116 +setuptools/command/test.py,sha256=x9z3DDCQi-_3-TRf8yNeQ9QH-G6yR1au7kX0ijedKqU,1400 +setuptools/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/compat/py310.py,sha256=JwjQZ3cNTizfpDLNl9GLsUGzBr-tVlMPxmMYVDTlhiI,344 +setuptools/compat/py311.py,sha256=e6tJAFwZEP82hmMBl10HYeSypelo_Ti2wTjKZVKLwOE,790 +setuptools/compat/py312.py,sha256=vYKVtdrdOTsO_R90dJkEXsFwfMJFuIFJflhIgHrjJ-Y,366 +setuptools/compat/py39.py,sha256=BJMtnkfcqyTfccqjYQxfoRtU2nTnWaEESBVkshTiXqY,493 +setuptools/config/NOTICE,sha256=Ld3wiBgpejuJ1D2V_2WdjahXQRCMkTbfo6TYVsBiO9g,493 +setuptools/config/__init__.py,sha256=aiPnL9BJn1O6MfmuNXyn8W2Lp8u9qizRVqwPiOdPIjY,1499 +setuptools/config/_apply_pyprojecttoml.py,sha256=tQXU9M4lcrd3iwO_2reihz22IbHaHg_Z-lAMBXZRzW8,19120 +setuptools/config/_validate_pyproject/NOTICE,sha256=XTANv6ZDE4sBO3WsnK7uWR-VG4sO4kKIw0zNkmxHgMg,18737 +setuptools/config/_validate_pyproject/__init__.py,sha256=dnp6T7ePP1R5z4OuC7Fd2dkFlIrtIfizUfvpGJP6nz0,1042 +setuptools/config/_validate_pyproject/error_reporting.py,sha256=meldD7nBQdolQhvG-43r1Ue-gU1n7ORAJR86vh3Rrvk,11813 +setuptools/config/_validate_pyproject/extra_validations.py,sha256=-GUG5S--ijY8WfXbdXPoHl6ywGsyEF9dtDpenSoJPHg,2858 +setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py,sha256=w749JgqKi8clBFcObdcbZVqsmF4oJ_QByhZ1SGbUFNw,1612 +setuptools/config/_validate_pyproject/fastjsonschema_validations.py,sha256=FihD5ZcM6p77BPZ04CGqh3BEwVNoPMKJZJAyuJpkAU0,354682 +setuptools/config/_validate_pyproject/formats.py,sha256=TETokJBK9hjl-cVg1olsojkJwLxfP7_chgJQNmzAB98,13564 +setuptools/config/distutils.schema.json,sha256=Tcp32kRnhwORGw_9p6GEi08lj2h15tQRzOYBbzGmcBU,972 +setuptools/config/expand.py,sha256=STKJ6oNAo6avEBVUiR25WpfIthVPVZQG65Z-5-t78QI,16064 +setuptools/config/pyprojecttoml.py,sha256=YMu5PdbJJI5azp6kR_boM1mflf5nqOA-InF4s6LnLgw,18320 +setuptools/config/setupcfg.py,sha256=Wnfbrk6D0GQV-Z2AE0b0KnL-WGrw-KQUcsem3naImBw,26695 +setuptools/config/setuptools.schema.json,sha256=dZBRuSEnZkatoVlt1kVwG8ocTeRdO7BD0xvOWKH54PY,16071 +setuptools/depends.py,sha256=jKYfjmt_2ZQYVghb8L9bU7LJ6erHJ5ze-K_fKV1BMXk,5965 +setuptools/discovery.py,sha256=XYIeFN20WEsEtssmpzCFlnda-Qxilj8KlLYKaJphAto,21286 +setuptools/dist.py,sha256=vaXXehKAG8Axl1KyEDC1VoM6yW3_jcIA879B-caGsKA,45205 +setuptools/errors.py,sha256=gY2x2PIaIgy01yRANRC-zcCwxDCqCScgJoCOZFe0yio,3024 +setuptools/extension.py,sha256=GbCxJ9rRk2rZcXS4qgmnzWNG36HlhLfUEvNwB-OKGk8,6818 +setuptools/glob.py,sha256=AC_B33DY8g-CHELxDsJrtwFrpiucSAZsakPFdSOQzhc,6062 +setuptools/gui-32.exe,sha256=hdrh6V13hF8stZvKw9Sv50u-TJGpvMW_SnHNQxBNvnw,11776 +setuptools/gui-64.exe,sha256=NHG2FA6txkEid9u-_j_vjDRaDxpZd2CGuAo2GMOoPjs,14336 +setuptools/gui-arm64.exe,sha256=5pT0dDQFyLWSb_RX22_n8aEt7HwWqcOGR4TT9OB64Jc,13824 +setuptools/gui.exe,sha256=hdrh6V13hF8stZvKw9Sv50u-TJGpvMW_SnHNQxBNvnw,11776 +setuptools/installer.py,sha256=Wy_hG1g1r-45E6IWh7lvQ0Pk0QHNl6JJbu3hQmr1_Ek,5184 +setuptools/launch.py,sha256=IBb5lEv69CyuZ9ewIrmKlXh154kdLmP29LKfTMkximE,820 +setuptools/logging.py,sha256=W16iHJ1HcCXYQ0RxyrEfJ83FT4175tCtoYg-E6uSpVI,1261 +setuptools/modified.py,sha256=ZwbfBfCFP88ltvbv_dJDz-t1LsQjnM-JUpgZnnQZjjM,568 +setuptools/monkey.py,sha256=nOD5vgLG7IpKAs7LrnpJxGPaCW54Rzj-onJmm91otoY,3733 +setuptools/msvc.py,sha256=IdCsRhdJLeyZG3gyDrGx2DqZymoay3ndBXC77taHHCA,42909 +setuptools/namespaces.py,sha256=2GGqYY1BNDEhMtBc1rHTv7klgmNVRdksJeW-L1f--ys,3171 +setuptools/script (dev).tmpl,sha256=RUzQzCQUaXtwdLtYHWYbIQmOaES5Brqq1FvUA_tu-5I,218 +setuptools/script.tmpl,sha256=WGTt5piezO27c-Dbx6l5Q4T3Ff20A5z7872hv3aAhYY,138 +setuptools/tests/__init__.py,sha256=AnBfls2iJbTDQzmMKeLRt-9lxhaOHUVOZEgXv89Uwvs,335 +setuptools/tests/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/tests/compat/py39.py,sha256=eUy7_F-6KRTOIKl-veshUu6I0EdTSdBZMh0EV0lZ1-g,135 +setuptools/tests/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/tests/config/downloads/__init__.py,sha256=9ixnDEdyL_arKbUzfuiJftAj9bGxKz8M9alOFZMjx9Y,1827 +setuptools/tests/config/downloads/preload.py,sha256=sIGGZpY3cmMpMwiJYYYYHG2ifZJkvJgEotRFtiulV1I,450 +setuptools/tests/config/setupcfg_examples.txt,sha256=cAbVvCbkFZuTUL6xRRzRgqyB0rLvJTfvw3D30glo2OE,1912 +setuptools/tests/config/test_apply_pyprojecttoml.py,sha256=KVBqnElEW5p9HJpTYnztZqd3RXYaY6SrSY8ek9ysq7s,28822 +setuptools/tests/config/test_expand.py,sha256=S0oT6JvgA_oujR4YS4RUuf5gmOt1CTQV66RQDzV8xd4,8933 +setuptools/tests/config/test_pyprojecttoml.py,sha256=CzLH1qcKDQGxCyLHC_ZYMObms1D_Jtp6AuJROOFI_D8,12438 +setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py,sha256=1MRtzcxZag-ElRwVGt0kUk4KPRA-RSwKkibO8-Vy51w,3265 +setuptools/tests/config/test_setupcfg.py,sha256=iwViCQFLGVWZLgCDrBv8HKBBCj-Onr8aNdioD9_lBEo,33712 +setuptools/tests/contexts.py,sha256=Ozdfc2KydF9x9wODUsdun800myLuP27uxoeT06Gbk7M,3166 +setuptools/tests/environment.py,sha256=95_UtTaRiuvwYC9eXKEHbn02kDtZysvZq3UZJmPUj1I,3102 +setuptools/tests/fixtures.py,sha256=jE7pIFQt91dZIUc6Btsffi8OdBqmY_7DNeWI1Stv7i8,12224 +setuptools/tests/indexes/test_links_priority/external.html,sha256=eL9euOuE93JKZdqlXxBOlHbKwIuNuIdq7GBRpsaPMcU,92 +setuptools/tests/indexes/test_links_priority/simple/foobar/index.html,sha256=DD-TKr7UU4zAjHHz4VexYDNSAzR27levSh1c-k3ZdLE,174 +setuptools/tests/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +setuptools/tests/integration/helpers.py,sha256=ieQtGuIohqNI_RHMH0yxE602Uz4E8wysUj7XaXYH30Y,2688 +setuptools/tests/integration/test_pbr.py,sha256=2eKuklFNmpnBgA_eEhYPBr6rLLG2Xm4MY6PlcmzZgGU,432 +setuptools/tests/integration/test_pip_install_sdist.py,sha256=SFbvuYF_hDzt6OtsQ5GjFNnxmoJ_eElfvpYsiyyGJ-g,8256 +setuptools/tests/mod_with_constant.py,sha256=X_Kj80M55w1tmQ4f7uZY91ZTALo4hKVT6EHxgYocUMQ,22 +setuptools/tests/namespaces.py,sha256=HPcI3nR5MCFWXpaADIJ1fwKxymcQgBkuw87Ic5PUSAQ,2774 +setuptools/tests/script-with-bom.py,sha256=hRRgIizEULGiG_ZTNoMY46HhKhxpWfy5FGcD6Qbh5fc,18 +setuptools/tests/test_archive_util.py,sha256=buuKdY8XkW26Pe3IKAoBRGHG0MDumnuNoPg2WsAQzIg,845 +setuptools/tests/test_bdist_deprecations.py,sha256=75Xq3gYn79LIIyusEltbHan0bEgAt2e_CaL7KLS8-KQ,775 +setuptools/tests/test_bdist_egg.py,sha256=6PaYN1F3JDbIh1uK0urv7yJFcx98z5dn9SOJ8Mv91l8,1957 +setuptools/tests/test_bdist_wheel.py,sha256=xGHVaggiYobkOuGwkLK2bNejcSh8z2Fiuq-ge_S-yKo,23091 +setuptools/tests/test_build.py,sha256=wJgMz2hwHADcLFg-nXrwRVhus7hjmAeEGgrpIQwCGnA,798 +setuptools/tests/test_build_clib.py,sha256=bX51XRAf4uO7IuHFpjePnoK8mE74N2gsoeEqF-ofgws,3123 +setuptools/tests/test_build_ext.py,sha256=e4ZSxsYPB5zq1KSqGEuATZ0t0PJQzMhjjkKJ-hIjcgc,10099 +setuptools/tests/test_build_meta.py,sha256=ToI7-2LUnHuIPhKN8EkDkSEfLCvLqLI6VJhqwR5pVuU,33320 +setuptools/tests/test_build_py.py,sha256=SIcHFX3YNErcVkWjf0eDRuKmsO9kTymKjfK-PkOi9M0,14201 +setuptools/tests/test_config_discovery.py,sha256=FqV-lOtkqaI-ayzU2zocSdD5TaRAgCZnixNDilKA6FQ,22580 +setuptools/tests/test_core_metadata.py,sha256=vbVJ5_Lsx_hsO_GdB6nQEXJRjA2ydx6_qSbr5LpheAA,20881 +setuptools/tests/test_depends.py,sha256=yQBXoQbNQlJit6mbRVoz6Bb553f3sNrq02lZimNz5XY,424 +setuptools/tests/test_develop.py,sha256=MHYL_YDqNMU5jhKkjsBUGKMGCkrva8CFR8dRc6kkYKE,3072 +setuptools/tests/test_dist.py,sha256=M4FikA-vL0_lZdA_5wry2Z9CBuSugr0Pj54dBZ3peBM,8951 +setuptools/tests/test_dist_info.py,sha256=EihdrU9UZkPV7d19G-K_OtOByp64GvGnf4or-f8Iq54,5005 +setuptools/tests/test_distutils_adoption.py,sha256=_eynrOfyEqXFEmjUJhzpe8GXPyTUPvNSObs4qAAmBy8,5987 +setuptools/tests/test_editable_install.py,sha256=Tg4kunvwYoDLYsfvSkggneUgpKQferUDx3EEvvdfmwE,42619 +setuptools/tests/test_egg_info.py,sha256=R7nT27YhVz9oSuDyimAGerWglkbRWiMSPBs5FzcSnBM,44941 +setuptools/tests/test_extern.py,sha256=rpKU6oCcksumLwf5TeKlDluFQ0TUfbPwTLQbpxcFrCU,296 +setuptools/tests/test_find_packages.py,sha256=CTLAcTzWGWBLCcd2aAsUVkvO3ibrlqexFBdDKOWPoq8,7819 +setuptools/tests/test_find_py_modules.py,sha256=zQjuhIG5TQN2SJPix9ARo4DL_w84Ln8QsHDUjjbrtAQ,2404 +setuptools/tests/test_glob.py,sha256=P3JvpH-kXQ4BZ3zvRF-zKxOgwyWzwIaQIz0WHdxS0kk,887 +setuptools/tests/test_install_scripts.py,sha256=scIrJ6a_ssKqg4vIBNaUjmAKHEYLUUZ9WKnPeKnE6gc,3433 +setuptools/tests/test_logging.py,sha256=zlE5DlldukC7Jc54FNvDV_7ux3ErAkrfrN5CSsnNOUQ,2099 +setuptools/tests/test_manifest.py,sha256=eMg65pIA52DizB6mpktSU-b8CjwaNCS5MSgL_V1LrFI,18562 +setuptools/tests/test_namespaces.py,sha256=Y6utoe5PHHqL_DlgawqB9F8XpsUDPvvw1sQMenK04e0,4515 +setuptools/tests/test_scripts.py,sha256=_ra506yQF7n72ROUDcz2r3CTsGsawO1m-1oqA9EQCfw,379 +setuptools/tests/test_sdist.py,sha256=oKMgvBrkfTsPH5jqsrhFxRMbtUDoOy4vKfwll3kGCg0,32808 +setuptools/tests/test_setopt.py,sha256=3VxxM4ATfP-P4AGnDjoWCnHr5-i9CSEQTFYU1-FTnvI,1365 +setuptools/tests/test_setuptools.py,sha256=_eIhqKf45-OtHqxRf20KndOZJlJdS0PuFLXBO3M-LN8,9008 +setuptools/tests/test_shutil_wrapper.py,sha256=g15E11PtZxG-InB2BWNFyH-svObXx2XcMhgMLJPuFnc,641 +setuptools/tests/test_unicode_utils.py,sha256=xWfEEl8jkQCt9othUTXJfFmdyATAFggJs2tTxjbumbw,316 +setuptools/tests/test_virtualenv.py,sha256=g-njC_9JTAs1YVx_1dGJ_Q6RlInO4qKVu9-XAgNb6TY,3730 +setuptools/tests/test_warnings.py,sha256=zwR2zcnCeCeDqILZlJOPAcuyPHoDvGu1OtOVYiLMk74,3347 +setuptools/tests/test_wheel.py,sha256=iMfVTNixu4puf6xvRYjQDw4Zg_OHVCQjSy7SztvVYqE,18722 +setuptools/tests/test_windows_wrappers.py,sha256=wBjXN3iGldkzRGTgKTrx99xqUqwPJ0V-ldyiB1pWD-g,7868 +setuptools/tests/text.py,sha256=a12197pMVTvB6FAWQ0ujT8fIQiLIWJlFAl1UCaDUDfg,123 +setuptools/tests/textwrap.py,sha256=FNNNq_MiaEJx88PnsbJQIRxmj1qmgcAOCXXRsODPJN4,98 +setuptools/unicode_utils.py,sha256=ukMGh8pEAw6F_Ezb-K5D3c-078RgA_GcF0oW6lg4lSs,3189 +setuptools/version.py,sha256=WJCeUuyq74Aok2TeK9-OexZOu8XrlQy7-y0BEuWNovQ,161 +setuptools/warnings.py,sha256=oY0Se5eOqje_FEyjTgonUc0XGwgsrI5cgm1kkwulz_w,3796 +setuptools/wheel.py,sha256=iI-LSDrgHMlJIzQMALVlJRq3Qesgbj7xa6hWZYJyZl4,9532 +setuptools/windows_support.py,sha256=wW4IYLM1Bv7Z1MaauP2xmPjyy-wkmQnXdyvXscAf9fw,726 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/REQUESTED b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/WHEEL b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/WHEEL new file mode 100644 index 0000000..0885d05 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (80.10.2) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/entry_points.txt b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/entry_points.txt new file mode 100644 index 0000000..0db0a6c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/entry_points.txt @@ -0,0 +1,51 @@ +[distutils.commands] +alias = setuptools.command.alias:alias +bdist_egg = setuptools.command.bdist_egg:bdist_egg +bdist_rpm = setuptools.command.bdist_rpm:bdist_rpm +bdist_wheel = setuptools.command.bdist_wheel:bdist_wheel +build = setuptools.command.build:build +build_clib = setuptools.command.build_clib:build_clib +build_ext = setuptools.command.build_ext:build_ext +build_py = setuptools.command.build_py:build_py +develop = setuptools.command.develop:develop +dist_info = setuptools.command.dist_info:dist_info +easy_install = setuptools.command.easy_install:easy_install +editable_wheel = setuptools.command.editable_wheel:editable_wheel +egg_info = setuptools.command.egg_info:egg_info +install = setuptools.command.install:install +install_egg_info = setuptools.command.install_egg_info:install_egg_info +install_lib = setuptools.command.install_lib:install_lib +install_scripts = setuptools.command.install_scripts:install_scripts +rotate = setuptools.command.rotate:rotate +saveopts = setuptools.command.saveopts:saveopts +sdist = setuptools.command.sdist:sdist +setopt = setuptools.command.setopt:setopt + +[distutils.setup_keywords] +dependency_links = setuptools.dist:assert_string_list +eager_resources = setuptools.dist:assert_string_list +entry_points = setuptools.dist:check_entry_points +exclude_package_data = setuptools.dist:check_package_data +extras_require = setuptools.dist:check_extras +include_package_data = setuptools.dist:assert_bool +install_requires = setuptools.dist:check_requirements +namespace_packages = setuptools.dist:check_nsp +package_data = setuptools.dist:check_package_data +packages = setuptools.dist:check_packages +python_requires = setuptools.dist:check_specifier +setup_requires = setuptools.dist:check_requirements +use_2to3 = setuptools.dist:invalid_unless_false +zip_safe = setuptools.dist:assert_bool + +[egg_info.writers] +PKG-INFO = setuptools.command.egg_info:write_pkg_info +dependency_links.txt = setuptools.command.egg_info:overwrite_arg +eager_resources.txt = setuptools.command.egg_info:overwrite_arg +entry_points.txt = setuptools.command.egg_info:write_entries +namespace_packages.txt = setuptools.command.egg_info:overwrite_arg +requires.txt = setuptools.command.egg_info:write_requirements +top_level.txt = setuptools.command.egg_info:write_toplevel_names + +[setuptools.finalize_distribution_options] +keywords = setuptools.dist:Distribution._finalize_setup_keywords +parent_finalize = setuptools.dist:_Distribution.finalize_options diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/licenses/LICENSE b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/licenses/LICENSE new file mode 100644 index 0000000..1bb5a44 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/licenses/LICENSE @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/top_level.txt b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/top_level.txt new file mode 100644 index 0000000..b5ac107 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools-80.10.2.dist-info/top_level.txt @@ -0,0 +1,3 @@ +_distutils_hack +pkg_resources +setuptools diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt new file mode 100644 index 0000000..986f944 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt @@ -0,0 +1,2 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit. Etiam tempor. Ut ullamcorper, ligula eu tempor congue, eros est euismod turpis, id tincidunt sapien risus a quam. Maecenas fermentum consequat mi. Donec fermentum. Pellentesque malesuada nulla a mi. Duis sapien sem, aliquet nec, commodo eget, consequat quis, neque. Aliquam faucibus, elit ut dictum aliquet, felis nisl adipiscing sapien, sed malesuada diam lacus eget erat. Cras mollis scelerisque nunc. Nullam arcu. Aliquam consequat. Curabitur augue lorem, dapibus quis, laoreet et, pretium ac, nisi. Aenean magna nisl, mollis quis, molestie eu, feugiat in, orci. In hac habitasse platea dictumst. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/apps/README.md b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/apps/README.md new file mode 100644 index 0000000..e97e639 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/apps/README.md @@ -0,0 +1,26 @@ +# SPSDK Applications + +After installing SPSDK, several applications are present directly on PATH as executables. + +- [spsdk](spsdk_apps.py) - entry point for all available applications. +- [blhost](blhost.py) - console script for MBoot module. +- [dk6prog](dk6prog.py) - utility for DK6 Programming tool. +- [nxpcrypto](nxpcrypto.py) - utility for generating/verifying RSA/ECC key pairs, and converting key file format (PEM/DER/RAW). +- [nxpdebugmbox](nxpdebugmbox.py) - utility for performing the Debug Authentication. +- [nxpdevhsm](nxpdevhsm.py) - utility for generating initialization SB file. +- [nxpdevscan](nxpdevscan.py) - utility for listing all connected NXP USB and UART devices. +- [nxpele](nxpele.py) - utility for communication with NXP EdgeLock Enclave. +- [nxpimage](nxpimage.py) - utility for generating TrustZone, MasterBootImage and SecureBinary images. +- [pfr](pfr.py) - simple utility for creation and analysis of protected regions(PFR /IFR) - CMPA, CFPA, ROMCFG and CMACTABLE. +- [sdphost](sdphost.py) - console script for SDP module. +- [sdpshost](sdpshost.py) - console script for SDPS module. +- [shadowregs](shadowregs.py) - utility for Shadow Registers controlling. +- [tpconfig](tpconfig.py) - utility for Trust provisioning config application. +- [tphost](tphost.py) - utility for Trust provisioning host application. + + +`` spsdk --help`` - lists all available commands. + +`` spsdk --help`` - print help for given application. + +`` spsdk --help `` - print help for given command. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/certgen_config.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/certgen_config.yaml new file mode 100644 index 0000000..cf33de8 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/certgen_config.yaml @@ -0,0 +1,65 @@ +# Copyright 2023-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +# This is template for configuration file used for generating certificates + +# ============================================== +# Issuer identification fields +# ============================================== +# All available option can be found within class NameOID in +# cryptography/src/cryptography/x509/oid.py at https://github.com/pyca/cryptography + +issuer: + COMMON_NAME: NXP + COUNTRY_NAME: CZ + LOCALITY_NAME: Roznov pod Radhostem + STATE_OR_PROVINCE_NAME: Morava + STREET_ADDRESS: 1.maje 1009 + ORGANIZATION_NAME: SPSDK Team + +# ============================================== +# Subject identification fields +# ============================================== +# All available option can be found within class NameOID in +# cryptography/src/cryptography/x509/oid.py at https://github.com/pyca/cryptography +subject: + COMMON_NAME: NXP - SPSDK + COUNTRY_NAME: CZ + LOCALITY_NAME: Roznov pod Radhostem + STATE_OR_PROVINCE_NAME: Morava + STREET_ADDRESS: 1.maje 1009 + ORGANIZATION_NAME: SPSDK Team + POSTAL_CODE: 756 61 + +# ============================================== +# The certificate settings +# ============================================== + +# Path, where issuer private key is stored +# If the issuer_private_key is encrypted, the interactive prompt will ask for password +# For loading the password in non-interactive way, the configuration parameter 'issuer_private_key_password' can be used. +# There are multiple formats of issuer_private_key_password values: +# 1. If the value is an existing path, first line of file is read and returned +# 2. If the value has format '$ENV_VAR', the value of environment variable ENV_VAR is returned +# 3. If the value has format '$ENV_VAR' and the value contains a valid path to a file, the first line of a file is returned +# 4. If the value does not match any options above, the input value itself is returned +issuer_private_key: issuer_key.pem +# Use PSS padding in case of RSA private key +pss_padding: false +# Path, where subject public key is stored +subject_public_key: subject_key.pub +# Serial number of certificate +serial_number: 12346578 +# Validity duration in days +duration: 3650 + +# ============================================== +# Certificate basic extensions +# ============================================== +extensions: + BASIC_CONSTRAINTS: + # Delegate certificate as a signing authority to create an intermediate certificates. + ca: false # Valid values true|false + # Integer length of the path of certificate signature from a given certificate, back to the root certificate + path_length: diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/crypto/oscca.asn b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/crypto/oscca.asn new file mode 100644 index 0000000..1c513cf --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/crypto/oscca.asn @@ -0,0 +1,27 @@ +-- Definition derived from openssl 3.0 + +OSCCA DEFINITIONS ::= BEGIN + + Signature ::= SEQUENCE { + r INTEGER, + s INTEGER + } + + KeySet ::= SEQUENCE { + number INTEGER, + prk OCTET STRING, + puk [1] EXPLICIT BIT STRING + } + + Private ::= SEQUENCE { + number INTEGER, + ids SEQUENCE OF OBJECT IDENTIFIER, + keyset OCTET STRING + } + + Public ::= SEQUENCE { + ids SEQUENCE OF OBJECT IDENTIFIER, + puk BIT STRING + } + +END diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/crypto/ultimaco_puk.asn b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/crypto/ultimaco_puk.asn new file mode 100644 index 0000000..ecff837 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/crypto/ultimaco_puk.asn @@ -0,0 +1,25 @@ +-- Definition based on OTPS HSM implementation +-- To generate Python code use 'asn1ate' with pyparsing<3 + +OTPS DEFINITIONS ::= BEGIN + + AlgorithmIdentifier ::= SEQUENCE { + algorithm OBJECT IDENTIFIER, + parameters ANY DEFINED BY algorithm OPTIONAL + } + + SubjectPublicKeyInfo ::= SEQUENCE { + algorithm AlgorithmIdentifier, + subjectPublicKey BIT STRING + } + + IdentifiedSubjectPublicKeyInfo ::= SEQUENCE { + identifier [0] IMPLICIT IA5String, + version [1] IMPLICIT INTEGER, + typeName [2] IMPLICIT IA5String, + owner [3] IMPLICIT IA5String OPTIONAL, + usage [4] IMPLICIT INTEGER, + subjectPublicKeyInfo SubjectPublicKeyInfo + } + +END diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/database_defaults.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/database_defaults.yaml new file mode 100644 index 0000000..126b571 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/database_defaults.yaml @@ -0,0 +1,480 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: {} +latest: latest + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: General Purpose Processor + # Web page of MCU representative + web: https://www.nxp.com + memory_map: {} # Memory map basic info + isp: + rom: + protocol: mboot # Possible options:[mboot, sdps, sdp] + interfaces: ["uart", "usb", "spi", "i2c"] + flashloader: {} + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_8000 + size: 0x1000 + tool: blhost + + # ======== Fuses description section ======== + fuses: + tool: blhost + reg_spec: fuses.json + grouped_registers: [] + + # ======== Blhost section ======== + blhost: {} + # properties: + # 0: list-properties + # 1: current-version + # 2: available-peripherals + # 3: flash-start-address + # 4: flash-size-in-bytes + # 5: flash-sector-size + # 6: flash-block-count + # 7: available-commands + # 8: check-status + # 9: reserved + # 10: verify-writes + # 11: max-packet-size + # 12: reserved-regions + # 13: reserved_1 + # 14: ram-start-address + # 15: ram-size-in-bytes + # 16: system-device-id + # 17: security-state + # 18: unique-device-id + # 19: flash-fac-support + # 20: flash-access-segment-size + # 21: flash-access-segment-count + # 22: flash-read-margin + # 23: qspi/otfad-init-status + # 24: target-version + # 25: external-memory-attributes + # 26: reliable-update-status + # 27: flash-page-size + # 28: irq-notify-pin + # 29: pfr-keystore-update-opt + # 30: byte-write-timeout-ms + # 31: fuse-locked-status + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert1] + rot_type: "cert_block_1" + isk_data_alignment: 4 + isk_data_limit: 96 + + # ======== DAT section ======== + dat: + socc: 0 # SOCC identification + based_on_ele: False # Flag if the implementation of DAT is based on EdgeLock Enclave + # famode_cert: [] # List of Fault analysis Mode certificates (names of MBI classes) + # famode_cfg_defaults: {} # Dictionary of default values of standard MBI members for FAmode image + used_beacons_on_ele: False # The DAT ELE implementation is using certificate and authentication beacons + auth_beacon_length: 2 # The length in bytes of authentication beacon + + dmbox_ap_ix: -1 # Typical Index of debug mailbox access port is 2 + mem_ap_ix: -1 # Typical Index of debug mailbox access port is 0 + # non_standard_statuses: # dictionary of non standard return statuses from various commands + # 2: # Command get_crp_level + # 0xFFFF_FFFF: ROP_LEVEL0 + # 0xEEBA_04C3: ROP_LEVEL1 + # 0x4939_8D8B: ROP_LEVEL2 + # 0xB0AB_B703: ROP_LEVEL3 + dac_rot_type: default # Default type is full RKTH/SRK value + + command_delays: # Additional standard command delays per individual DM commands + ERASE_FLASH: 0.5 + + # Memory addresses for SSF certificate data + ssf_cert_memory: + ecdsa_puk_address: 0x0 # Default address for ECDSA PUK (will be overridden by device-specific values) + ecdsa_puk_size: 0x0 # Default size for ECDSA PUK + hybrid_puk_address: 0x0 # Default address for Hybrid PUK + hybrid_puk_size: 0x0 # Default size for Hybrid PUK + + # ======== MBI section ======== + mbi: + mbi_classes: {} + images: {} + + # ======== HABv4 section ======== + hab: {} + + # ======== AHAB section ======== + ahab: + sub_features: [ahab_image] + containers_max_cnt: 2 + oem_images_max_cnt: 8 + valid_offset_minimal_alignment: 4 + container_types: [1] # Supported container types + certificate_type: standard # The standard certificate + iae_has_signed_offsets: False # There is a special cases when the Container is after images + core_ids: {} + image_types: {} + image_types_mapping: {} + allow_empty_hash: False # Some chips allow empty image hash in OEM Open LC + # image_types: Keep it here as a template for new NPI + # CSF: [0x01, csf, CSF Image] + # SCD: [0x02, scd, SCD Image] + # EXECUTABLE: [0x03, executable, Executable Image] + # DATA: [0x04, data, Data Image] + # DCD_IMAGE: [0x05, dcd_image, DCD Image] + # ELE: [0x06, ele, EdgeLock Enclave Image] + # PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + # DEK_VALIDATION_FCB_CHK: [0x08, dek_validation_fcb_chk, DEK validation FCB check Image] + # PROVISIONING_DATA: [0x09, provisioning_data, Provisioning data Image] + # EXECUTABLE_FAST_BOOT_IMAGE: [0x0A, executable_fast_boot_image, Executable fast boot Image] + # V2X_PRIMARY: [0x0B, v2x_primary, V2X primary Image] + # V2X_SECONDARY: [0x0C, v2x_secondary, V2X secondary Image] + # V2X_ROM_PATCH: [0x0D, v2x_rom_patch, V2X rom patch Image] + # V2X_DUMMY: [0x0E, v2x_dummy, V2X dummy Image] + + double_authentication_load_address: 0 + double_authentication_core_id: 0 + double_authentication_image_type: 0 + + extra_containers: [] + fuses: + _name: "AHAB SRK" + srkh: "__srk_hash" # SRK hash fuse + + # ======== PFR section ======== + pfr: + sub_features: [cmpa, cfpa] + cmpa: + erase_method: write_memory + additional_data: # extra data defined by customer + enabled: False + offset: -1 + max_size: 0 + cfpa: + additional_data: # extra data defined by customer + enabled: False + offset: -1 + max_size: 0 + requires_reset: False + requires_scratch_erase: False + + # ======== Bootable image section ======== + bootable_image: + mem_types: {} + + # ======== FCB section ======== + fcb: + mem_types: {} + + # ======== XMCD section ======== + xmcd: + header: + reg_spec: ../../common/xmcd/flexspi_ram_header.json + mem_types: {} + fuses: {} + + # ======== BEE section ======== + bee: {} + + # ======== IEE section ======== + iee: + key_blob_rec_size: 96 + key_blob_max_cnt: 4 + key_blob_min_cnt: 4 + has_kek_fuses: False + additional_template: [] + additional_template_text: "" + generate_keyblob: True + + # ======== OTFAD section ======== + otfad: + key_blob_rec_size: 64 + key_blob_max_cnt: 4 + key_blob_min_cnt: 4 + byte_swap: false + keyblob_byte_swap_cnt: 0 + sb_21_supported: True + has_kek_fuses: False + additional_template: [] + additional_template_text: "" + supports_key_scrambling: False + reversed_scramble_key: False + + # ======== Secure binary v2.1 section ======== + sb21: + keyblobs: true + supported_commands: [] + + # ======== Secure binary v3.1 section ======== + sb31: + supported_commands: [] + key_wraps_version: 1 + variable_block_length: false + commands_block_length: 256 + supports_compression: false + command_rules: [] + + # ======== Secure binary v4.0 section ======== + sb40: + supported_commands: [] + key_wraps_version: 2 + variable_block_length: true + commands_block_length: 4096 + supports_compression: true + + # ======== Secure binary vX section ======== + sbx: + commands_block_length: 256 + variable_block_length: false + supported_commands: [] + + # ======== Secure binary c section ======== + sbc: + commands_block_length: 256 + key_wraps_version: 2 + variable_block_length: false + supported_commands: [] + + # ======== Shadow registers section ======== + shadow_regs: + inverted_regs: {} + computed_fields: {} + reset_type: hw_reset # possible options: [hw_reset, nvic_reset] + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsm] + supported_commands: + - erase + - load + - programFuses + - programIFR + - copy + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + flag: 0x1 + key_blob_offset: 0x4 + key_blob_command_position: -1 + devbuff_wrapped_cust_mk_sk_key_size: 0x30 + + # ======== Trust Zone section ======== + tz: + version: v1 # TrustZone configuration version v1.0 + reg_spec: tz.json + + # ======== EdgeLock Enclave section ======== + ele: + ele_device: uboot_fastboot + + # ======== Memory configuration ======== + memcfg: + data_file: ../../common/memcfg/memcfg_data.yaml + peripherals: + flexspi_nor: + reg_spec: ../../common/memcfg/opt_word_flexspi_nor.json + region_number: 0x09 + ow_counts_rule: OptionSize + runtime_instance: True + mem_type: nor + interfaces: [octal_spi, quad_spi, hyper_flash] + instances: [] + xspi_nor: + reg_spec: ../../common/memcfg/opt_word_xspi_nor.json + region_number: 0x0b + ow_counts_rule: OptionSize + runtime_instance: True + mem_type: nor + interfaces: [octal_spi, quad_spi] + instances: [] + flexspi_nand: + reg_spec: ../../common/memcfg/opt_word_flexspi_nand.json + region_number: 0x101 + ow_counts_rule: OptionSize + runtime_instance: True + mem_type: nand + interfaces: [quad_spi] + instances: [] + semc_nor: + reg_spec: ../../common/memcfg/opt_word_semc_nor.json + region_number: 0x08 + ow_counts_rule: AcTimingMode + mem_type: nor + interfaces: [parallel] + instances: [] + semc_nand: + reg_spec: ../../common/memcfg/opt_word_semc_nand.json + region_number: 0x100 + ow_counts_rule: All + mem_type: nand + interfaces: [parallel] + instances: [] + spi_nor: + reg_spec: ../../common/memcfg/opt_word_spi_nor.json + region_number: 0x110 + ow_counts_rule: OptionSize + mem_type: nor + interfaces: [spi] + instances: [] + # spi_nand: + # region_number: 0x101 + # instances: [] + mmc: + reg_spec: ../../common/memcfg/opt_word_mmc.json + region_number: 0x121 + ow_counts_rule: All + mem_type: sd + interfaces: [instance_0, instance_1, instance_2, instance_3] + instances: [] + emmc: + reg_spec: ../../common/memcfg/opt_word_emmc.json + region_number: 0x121 + ow_counts_rule: All + mem_type: sd + interfaces: [instance_0, instance_1, instance_2, instance_3] + instances: [] + sd: + reg_spec: ../../common/memcfg/opt_word_sd.json + region_number: 0x120 + ow_counts_rule: All + mem_type: sd + interfaces: [instance_0, instance_1, instance_2, instance_3] + instances: [] + # XIP Memories in internal memory address range + # mem_region_internal = 0x0 # Internal memory (include all on chip memory) + # mem_region_quad_spi0 = 0x1 # Quad SPI memory 0 + # mem_region_ifr0_fuse = 0x4 # Nonvolatile information register 0. Only used by SB loader. + # mem_region_semc_nor = 0x8 # SEMC Nor memory + # mem_region_flexspi_nor = 0x9 # Flex SPI Nor memory + # mem_region_spifi_nor = 0xA # SPIFI Nor memory + # mem_region_flash_execute_only = 0x10 # Execute-only region on internal Flash + + # # NON-XIP Memories in external memory address range + # mem_region_semc_nand = 0x100 + 0x0 # SEMC NAND memory + # mem_region_spi_nand = 0x100 + 0x1 # SPI NAND memory + # mem_region_spi_nor_eeprom = 0x100 + 0x10 # SPI NOR/EEPROM memory + # mem_region_i2c_nor_eeprom = 0x100 + 0x11 # I2C NOR/EEPROM memory + # mem_region_sd = 0x100 + 0x20 # eSD, SD, SDHC, SDXC memory Card + # mem_region_mmc = 0x100 + 0x21 # MMC, eMMC memory Card + + # ======== Wireless Power section ======== + wpc: + insert_puc_only: false + need_reset: false + need_address_adjust: false + check_lifecycle: 0 + + # ======== Misc signing section ======== + signing: + pss_padding: false + + # ======== EL2GO TP section ======== + el2go_tp: + el2go_interface: mboot + el2go_name: null + prov_method: null + use_additional_data: false + fw_load_address: -1 + fw_read_address: -1 + user_data_address: -1 + ignored_otp: [] # format: index of a fuse (not uid, just the number) + ignored_otp_ranges: [] # format: [range1_start, range1_end, range2_start, range2_end,...] + clean_method: "none" + # format: "method1=value1[,value2];method2=value3;..." or "none" (default) + # methods are in secure_object.py:ValidationMethod + validation_method: "none" + uuid_fuse_index: "6 0 4" + use_prov_report: false + + # ======== LPCPROG section ======== + lpcprog: + part_ids: {} + buffer_address: 0x1000_0800 + buffer_size: 0x400 + page_size: 0x40 + sector_size: 0x400 + + # ======== DICE configuration ======== + dice: + had_length: 48 + had_members: + [ + ELS_AS_CFG0, + ELS_AS_CFG1, + ELS_AS_CFG2, + ELS_AS_ST0, + ELS_AS_ST1, + ELS_AS_ST2, + ELS_AS_FLAG0, + ] + critical_had_members: [ELS_AS_CFG0, ELS_AS_CFG1, ELS_AS_CFG2] + rtf_length: 32 + ca_puk_length: 64 + rkth_length: 32 + rkth_truncated_length: 32 + need_reset: false + + # ======== Fastboot ======== + fastboot: + address: 0x8280_0000 + size: 0x2000_0000 + + # ======== nxpuuu ========== + nxpuuu: + boot_devices: + emmc: + script: ../../common/uuu/emmc_burn_loader.lst + arguments: [_flash.bin, _image] + emmc_all: + script: ../../common/uuu/emmc_burn_all.lst + arguments: [_flash.bin, _image] + fat_write: + script: ../../common/uuu/fat_write.lst + arguments: [_image, _device, _partition, _filename] + nand: + script: ../../common/uuu/nand_burn_loader.lst + arguments: [_flash.bin, _image] + nvme_all: + script: ../../common/uuu/nvme_burn_all.lst + arguments: [_flash.bin, _image] + qspi: + script: ../../common/uuu/qspi_burn_loader.lst + arguments: [_flash.bin, _image] + sd: + script: ../../common/uuu/sd_burn_loader.lst + arguments: [_flash.bin, _image] + sd_all: + script: ../../common/uuu/sd_burn_all.lst + arguments: [_flash.bin, _image] + spi_nand: + script: ../../common/uuu/fspinand_burn_loader.lst + arguments: [_flash.bin, _image] + spl: + script: ../../common/uuu/spl_boot.lst + arguments: [_flash.bin] + + # ======== BCA section ======== + bca: + reg_spec: bca.json + + # ======== FCF section ======== + fcf: + reg_spec: fcf.json + + # ======== SHE section ======== + she_scec: {} + + # ===== TLV ===== + tlv_blob: {} + + # ======== Hardware Security Engine section ======== + hse: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/dice/fmc_template.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/dice/fmc_template.yaml new file mode 100644 index 0000000..1f27715 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/dice/fmc_template.yaml @@ -0,0 +1,28 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +# issuer common name; required +issuer_name: NXP DICE 2.0 - IDevID +# subject common name; required +subject_name: NXP DICE 2.0 - FMC Alias + +# Include Customer TCB Table; optional (default=false) +include_cust_table: true +# Customer SVN for Customer TCB Table; required if include_cust_table = true +cust_svn: 0xabcd + +# Include NXP TCB Table; optional (default=false) +include_nxp_table: true + +# ECDSA/MLDSA mode; optional (default=ecdsa) +mode: ecdsa +# Template key; optional (if omitted a new temporary key will be generated each time) +template_key: idevid_ecc384.pem + +# Where to store the FMC Alias certificate; optional +template_output: alias_fmc.der +# Where to store the FMC Alias certificate offset descriptor; optional +descriptor_output: descriptor.bin +# Where to store the final FMC Alias certificate container; required +container_output: container.bin diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/dice/tcg_dice.asn b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/dice/tcg_dice.asn new file mode 100644 index 0000000..665bb30 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/dice/tcg_dice.asn @@ -0,0 +1,65 @@ +TCG DEFINITIONS ::= BEGIN + + tcg OBJECT IDENTIFIER ::= { 2 23 133 } + tcg-dice OBJECT IDENTIFIER ::= { tcg platformClass(5) 4 } + + FWID ::= SEQUENCE { + hashAlg OBJECT IDENTIFIER, + digest OCTET STRING + } + + FWIDLIST ::= SEQUENCE SIZE (1..10) OF FWID + + OperationalFlags ::= BIT STRING { + notConfigured (0), + notSecure (1), + recovery (2), + debug (3), + notReplayProtected (4), + notIntegrityProtected (5), + notRuntimeMeasured (6), + notImmutable (7), + notTcb (8), + fixedWidth (31) + } + + OperationalFlagsMask ::= BIT STRING { + notConfigured (0), + notSecure (1), + recovery (2), + debug (3), + notReplayProtected (4), + notIntegrityProtected (5), + notRuntimeMeasured (6), + notImmutable (7), + notTcb (8), + fixedWidth (31) + } + + tcg-dice-TcbInfo OBJECT IDENTIFIER ::= { tcg-dice 1 } + + DiceTcbInfo ::= SEQUENCE { + vendor [0] IMPLICIT UTF8String OPTIONAL, + model [1] IMPLICIT UTF8String OPTIONAL, + version [2] IMPLICIT UTF8String OPTIONAL, + svn [3] IMPLICIT INTEGER OPTIONAL, + layer [4] IMPLICIT INTEGER OPTIONAL, + index [5] IMPLICIT INTEGER OPTIONAL, + fwids [6] IMPLICIT FWIDLIST OPTIONAL, + flags [7] IMPLICIT OperationalFlags OPTIONAL, + vendorInfo [8] IMPLICIT OCTET STRING OPTIONAL, + type [9] IMPLICIT OCTET STRING OPTIONAL, + flagsMask [10]IMPLICIT OperationalFlagsMask OPTIONAL + } + + tcg-dice-MultiTcbInfo OBJECT IDENTIFIER ::= { tcg-dice 5 } + + DiceTcbInfoSeq ::= SEQUENCE SIZE (1..3) OF DiceTcbInfo + + tcg-dice-Ueid OBJECT IDENTIFIER ::= { tcg-dice 4 } + + TcgUeid ::= SEQUENCE { + ueid OCTET STRING + } + +END diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/fcb_flexspi_nor_modification.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/fcb_flexspi_nor_modification.yaml new file mode 100644 index 0000000..ef82d92 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/fcb_flexspi_nor_modification.yaml @@ -0,0 +1,508 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +field082: + bitfields: + field082-bits-0-7: + no_yaml_comments: true + field082-bits-10-15: + no_yaml_comments: true + field082-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field084: + bitfields: + field084-bits-0-7: + no_yaml_comments: true + field084-bits-10-15: + no_yaml_comments: true + field084-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field086: + bitfields: + field086-bits-0-7: + no_yaml_comments: true + field086-bits-10-15: + no_yaml_comments: true + field086-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field088: + bitfields: + field088-bits-0-7: + no_yaml_comments: true + field088-bits-10-15: + no_yaml_comments: true + field088-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field08A: + bitfields: + field08A-bits-0-7: + no_yaml_comments: true + field08A-bits-10-15: + no_yaml_comments: true + field08A-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field08C: + bitfields: + field08C-bits-0-7: + no_yaml_comments: true + field08C-bits-10-15: + no_yaml_comments: true + field08C-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field08E: + bitfields: + field08E-bits-0-7: + no_yaml_comments: true + field08E-bits-10-15: + no_yaml_comments: true + field08E-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field092: + bitfields: + field092-bits-0-7: + no_yaml_comments: true + field092-bits-10-15: + no_yaml_comments: true + field092-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field094: + bitfields: + field094-bits-0-7: + no_yaml_comments: true + field094-bits-10-15: + no_yaml_comments: true + field094-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field096: + bitfields: + field096-bits-0-7: + no_yaml_comments: true + field096-bits-10-15: + no_yaml_comments: true + field096-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field098: + bitfields: + field098-bits-0-7: + no_yaml_comments: true + field098-bits-10-15: + no_yaml_comments: true + field098-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field09A: + bitfields: + field09A-bits-0-7: + no_yaml_comments: true + field09A-bits-10-15: + no_yaml_comments: true + field09A-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field09C: + bitfields: + field09C-bits-0-7: + no_yaml_comments: true + field09C-bits-10-15: + no_yaml_comments: true + field09C-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field09E: + bitfields: + field09E-bits-0-7: + no_yaml_comments: true + field09E-bits-10-15: + no_yaml_comments: true + field09E-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0A2: + bitfields: + field0A2-bits-0-7: + no_yaml_comments: true + field0A2-bits-10-15: + no_yaml_comments: true + field0A2-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0A4: + bitfields: + field0A4-bits-0-7: + no_yaml_comments: true + field0A4-bits-10-15: + no_yaml_comments: true + field0A4-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0A6: + bitfields: + field0A6-bits-0-7: + no_yaml_comments: true + field0A6-bits-10-15: + no_yaml_comments: true + field0A6-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0A8: + bitfields: + field0A8-bits-0-7: + no_yaml_comments: true + field0A8-bits-10-15: + no_yaml_comments: true + field0A8-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0AA: + bitfields: + field0AA-bits-0-7: + no_yaml_comments: true + field0AA-bits-10-15: + no_yaml_comments: true + field0AA-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0AC: + bitfields: + field0AC-bits-0-7: + no_yaml_comments: true + field0AC-bits-10-15: + no_yaml_comments: true + field0AC-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0AE: + bitfields: + field0AE-bits-0-7: + no_yaml_comments: true + field0AE-bits-10-15: + no_yaml_comments: true + field0AE-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0B2: + bitfields: + field0B2-bits-0-7: + no_yaml_comments: true + field0B2-bits-10-15: + no_yaml_comments: true + field0B2-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0B4: + bitfields: + field0B4-bits-0-7: + no_yaml_comments: true + field0B4-bits-10-15: + no_yaml_comments: true + field0B4-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0B6: + bitfields: + field0B6-bits-0-7: + no_yaml_comments: true + field0B6-bits-10-15: + no_yaml_comments: true + field0B6-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0B8: + bitfields: + field0B8-bits-0-7: + no_yaml_comments: true + field0B8-bits-10-15: + no_yaml_comments: true + field0B8-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0BA: + bitfields: + field0BA-bits-0-7: + no_yaml_comments: true + field0BA-bits-10-15: + no_yaml_comments: true + field0BA-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0BC: + bitfields: + field0BC-bits-0-7: + no_yaml_comments: true + field0BC-bits-10-15: + no_yaml_comments: true + field0BC-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0BE: + bitfields: + field0BE-bits-0-7: + no_yaml_comments: true + field0BE-bits-10-15: + no_yaml_comments: true + field0BE-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0C2: + bitfields: + field0C2-bits-0-7: + no_yaml_comments: true + field0C2-bits-10-15: + no_yaml_comments: true + field0C2-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0C4: + bitfields: + field0C4-bits-0-7: + no_yaml_comments: true + field0C4-bits-10-15: + no_yaml_comments: true + field0C4-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0C6: + bitfields: + field0C6-bits-0-7: + no_yaml_comments: true + field0C6-bits-10-15: + no_yaml_comments: true + field0C6-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0C8: + bitfields: + field0C8-bits-0-7: + no_yaml_comments: true + field0C8-bits-10-15: + no_yaml_comments: true + field0C8-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0CA: + bitfields: + field0CA-bits-0-7: + no_yaml_comments: true + field0CA-bits-10-15: + no_yaml_comments: true + field0CA-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0CC: + bitfields: + field0CC-bits-0-7: + no_yaml_comments: true + field0CC-bits-10-15: + no_yaml_comments: true + field0CC-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0CE: + bitfields: + field0CE-bits-0-7: + no_yaml_comments: true + field0CE-bits-10-15: + no_yaml_comments: true + field0CE-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0D2: + bitfields: + field0D2-bits-0-7: + no_yaml_comments: true + field0D2-bits-10-15: + no_yaml_comments: true + field0D2-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0D4: + bitfields: + field0D4-bits-0-7: + no_yaml_comments: true + field0D4-bits-10-15: + no_yaml_comments: true + field0D4-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0D6: + bitfields: + field0D6-bits-0-7: + no_yaml_comments: true + field0D6-bits-10-15: + no_yaml_comments: true + field0D6-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0D8: + bitfields: + field0D8-bits-0-7: + no_yaml_comments: true + field0D8-bits-10-15: + no_yaml_comments: true + field0D8-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0DA: + bitfields: + field0DA-bits-0-7: + no_yaml_comments: true + field0DA-bits-10-15: + no_yaml_comments: true + field0DA-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0DC: + bitfields: + field0DC-bits-0-7: + no_yaml_comments: true + field0DC-bits-10-15: + no_yaml_comments: true + field0DC-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0DE: + bitfields: + field0DE-bits-0-7: + no_yaml_comments: true + field0DE-bits-10-15: + no_yaml_comments: true + field0DE-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0E2: + bitfields: + field0E2-bits-0-7: + no_yaml_comments: true + field0E2-bits-10-15: + no_yaml_comments: true + field0E2-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0E4: + bitfields: + field0E4-bits-0-7: + no_yaml_comments: true + field0E4-bits-10-15: + no_yaml_comments: true + field0E4-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0E6: + bitfields: + field0E6-bits-0-7: + no_yaml_comments: true + field0E6-bits-10-15: + no_yaml_comments: true + field0E6-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0E8: + bitfields: + field0E8-bits-0-7: + no_yaml_comments: true + field0E8-bits-10-15: + no_yaml_comments: true + field0E8-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0EA: + bitfields: + field0EA-bits-0-7: + no_yaml_comments: true + field0EA-bits-10-15: + no_yaml_comments: true + field0EA-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0EC: + bitfields: + field0EC-bits-0-7: + no_yaml_comments: true + field0EC-bits-10-15: + no_yaml_comments: true + field0EC-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0EE: + bitfields: + field0EE-bits-0-7: + no_yaml_comments: true + field0EE-bits-10-15: + no_yaml_comments: true + field0EE-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0F2: + bitfields: + field0F2-bits-0-7: + no_yaml_comments: true + field0F2-bits-10-15: + no_yaml_comments: true + field0F2-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0F4: + bitfields: + field0F4-bits-0-7: + no_yaml_comments: true + field0F4-bits-10-15: + no_yaml_comments: true + field0F4-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0F6: + bitfields: + field0F6-bits-0-7: + no_yaml_comments: true + field0F6-bits-10-15: + no_yaml_comments: true + field0F6-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0F8: + bitfields: + field0F8-bits-0-7: + no_yaml_comments: true + field0F8-bits-10-15: + no_yaml_comments: true + field0F8-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0FA: + bitfields: + field0FA-bits-0-7: + no_yaml_comments: true + field0FA-bits-10-15: + no_yaml_comments: true + field0FA-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0FC: + bitfields: + field0FC-bits-0-7: + no_yaml_comments: true + field0FC-bits-10-15: + no_yaml_comments: true + field0FC-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true +field0FE: + bitfields: + field0FE-bits-0-7: + no_yaml_comments: true + field0FE-bits-10-15: + no_yaml_comments: true + field0FE-bits-8-9: + no_yaml_comments: true + no_yaml_comments: true diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/memcfg_data.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/memcfg_data.yaml new file mode 100644 index 0000000..5220642 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/memcfg_data.yaml @@ -0,0 +1,380 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +# ======== Flash memories configuration ======== + +# *********************************************************************** +# NOR +# *********************************************************************** + +# Winbond +W25QxxxJV: + manufacturer: Winbond + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] + tested: True +W35T51NW: + manufacturer: Winbond + type: nor + interfaces: + octal_spi: + option_words: [0xc0603005] +# Macronix +MX25Uxxx32F: + manufacturer: Macronix + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] + tested: True +MX25Lxxx45G: + manufacturer: Macronix + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] + tested: True +MX25UMxxx45G: + manufacturer: Macronix + type: nor + interfaces: + octal_spi: + option_words: [0xc0403007] +MX66UMxxx45G: + manufacturer: Macronix + type: nor + interfaces: + octal_spi: + option_words: [0xc0403007] +MX25LMxxx45G: + manufacturer: Macronix + type: nor + interfaces: + octal_spi: + option_words: [0xc0403007] +MX25UM51345G: + manufacturer: Macronix + type: nor + interfaces: + octal_spi: + option_words: [0xc0403007] +# GigaDevice +GD25QxxxC: + manufacturer: GigaDevice + type: nor + interfaces: + quad_spi: + option_words: [0xc0000406] +GD25LBxxxE: + manufacturer: GigaDevice + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] +GD25LTxxxE: + manufacturer: GigaDevice + type: nor + interfaces: + quad_spi: + option_words: [0xc0000008] +GD25LXxxxE: + manufacturer: GigaDevice + type: nor + interfaces: + quad_spi: + option_words: [0xc0603008] +# ISSI +IS25LPxxxA: + manufacturer: ISSI + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] +IS25WPxxxA: + manufacturer: ISSI + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] +IS25LXxxx: + manufacturer: ISSI + type: nor + interfaces: + octal_spi: + option_words: [0xC0603005] +IS25WXxxx: + manufacturer: ISSI + type: nor + interfaces: + octal_spi: + option_words: [0xC0603005] +IS26KSxxxS: + manufacturer: ISSI + type: nor + interfaces: + hyper_flash: + option_words: [0xc0233007] +IS26KLxxxS: + manufacturer: ISSI + type: nor + interfaces: + hyper_flash: + option_words: [0xc0233007] +# Micron +MT25QLxxxA: + manufacturer: Micron + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] +MT35XUxxxABA1G: + manufacturer: Micron + type: nor + interfaces: + octal_spi: + option_words: [0xC0703005] +MT35XUxxxABA2G: + manufacturer: Micron + type: nor + interfaces: + octal_spi: + option_words: [0xC0633005] + tested: True +MT28EW128ABA: + manufacturer: Micron + type: nor + interfaces: + parallel: + option_words: [0xD0000600] +MT28UG128ABA: + manufacturer: Micron + type: nor + interfaces: + parallel: + option_words: [0xD0000601] +# Adesto +AT25SFxxxA: + manufacturer: Adesto + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] +ATXPxxx: + manufacturer: Adesto + type: nor + interfaces: + octal_spi: + option_words: [0xc0803007] +# Cypress +S25FSxxxS: + manufacturer: Cypress + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] +S25FLxxxS: + manufacturer: Cypress + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] +S26KSxxxS: + manufacturer: Cypress + type: nor + interfaces: + hyper_flash: + option_words: [0xc0233007] +S26KLxxxS: + manufacturer: Cypress + type: nor + interfaces: + hyper_flash: + option_words: [0xc0233007] +# Microchip +SST26VFxxxB: + manufacturer: Microchip + type: nor + interfaces: + quad_spi: + option_words: [0xc0000005] +# FudanMicro +FM25Qxxx: + manufacturer: FudanMicro + type: nor + interfaces: + quad_spi: + option_words: [0xc0000205] +# BoyaMicro +BY25QxxxBS: + manufacturer: BoyaMicro + type: nor + interfaces: + quad_spi: + option_words: [0xc0000405] +# XMC +XM25QHxxxB: + manufacturer: XMC + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] +XM25QUxxxB: + manufacturer: XMC + type: nor + interfaces: + quad_spi: + option_words: [0xc0000007] +# XTXtech +X25FxxxB: + manufacturer: XTXtech + type: nor + interfaces: + quad_spi: + option_words: [0xc0000407] +X25QxxxD: + manufacturer: XTXtech + type: nor + interfaces: + quad_spi: + option_words: [0xc0000407] +# Puya +P25QxxxLE: + manufacturer: Puya + type: nor + interfaces: + quad_spi: + option_words: [0xc0000405] +P25QxxxH: + manufacturer: Puya + type: nor + interfaces: + quad_spi: + option_words: [0xc0000405] +P25QxxxU: + manufacturer: Puya + type: nor + interfaces: + quad_spi: + option_words: [0xc0000405] +# AMIC +A25LQxxx: + manufacturer: AMIC + type: nor + interfaces: + quad_spi: + option_words: [0xc0000105] + +# *********************************************************************** +# NAND +# *********************************************************************** + +# Winbond +W25N01G: + manufacturer: Winbond + type: nand + interfaces: + quad_spi: + option_words: [0xC1010026, 0x000000ef] +W25N02K: + manufacturer: Winbond + type: nand + interfaces: + quad_spi: + option_words: [0xC1020026, 0x000000ef] +# Macronix +MX35UF1G: + manufacturer: Macronix + type: nand + interfaces: + quad_spi: + option_words: [0xC1010026, 0x000000c2] +MX35LF1G: + manufacturer: Macronix + type: nand + interfaces: + quad_spi: + option_words: [0xC1010026, 0x000000c2] +MX35UF2G: + manufacturer: Macronix + type: nand + interfaces: + quad_spi: + option_words: [0xC1020026, 0x000000c2] +MX35LF2G: + manufacturer: Macronix + type: nand + interfaces: + quad_spi: + option_words: [0xC1020026, 0x000000c2] +# GigaDevice +GD5F1GQ5: + manufacturer: GigaDevice + type: nand + interfaces: + quad_spi: + option_words: [0xC1010026, 0x000000c8] +GD5F2GQ5: + manufacturer: GigaDevice + type: nand + interfaces: + quad_spi: + option_words: [0xC1020026, 0x000000c8] +# Micron +MT29F1G01AA: + manufacturer: Micron + type: nand + interfaces: + quad_spi: + option_words: [0xC1011022, 0x0000002c] +MT29F2G01AA: + manufacturer: Micron + type: nand + interfaces: + quad_spi: + option_words: [0xC1021022, 0x0000002c] +# Paragon +PN26Q01A: + manufacturer: Paragon + type: nand + interfaces: + quad_spi: + option_words: [0xC1010026, 0x000000a1] +PN26G01A: + manufacturer: Paragon + type: nand + interfaces: + quad_spi: + option_words: [0xC1010026, 0x000000a1] +PN26Q02A: + manufacturer: Paragon + type: nand + interfaces: + quad_spi: + option_words: [0xC1020026, 0x000000a1] +PN26G02A: + manufacturer: Paragon + type: nand + interfaces: + quad_spi: + option_words: [0xC1020026, 0x000000a1] + +# *********************************************************************** +# SD +# *********************************************************************** + +# General +1bit_sdr12: + manufacturer: General + type: sd + interfaces: + instance_0: + option_words: [0xD0000000] + instance_1: + option_words: [0xD0000001] + instance_2: + option_words: [0xD0000002] + instance_3: + option_words: [0xD0000003] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_emmc.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_emmc.json new file mode 100644 index 0000000..57c0ea3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_emmc.json @@ -0,0 +1,395 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "eMMC card Configuration Option 0", + "default_value_int": "0xc0000000", + "bitfields": [ + { + "id": "field000-bit0", + "width": 1, + "name": "BootConfigEnable", + "access": "RW", + "description": "Boot configuration", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Boot configuration disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Boot configuration enabled" + } + ] + }, + { + "width": 1 + }, + { + "id": "field000-bit2", + "width": 1, + "name": "BootAcknowledge", + "access": "RW", + "description": "Boot acknowledge", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Boot acknowledge disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Boot acknowledge enabled" + } + ] + }, + { + "id": "field000-bit3", + "width": 1, + "name": "ResetBootBusConditions", + "access": "RW", + "description": "Reset boot BUS conditions", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Don't change BUS conditions" + }, + { + "name": "Enabled", + "value": 1, + "description": "Reset boot BUS conditions" + } + ] + }, + { + "id": "field000-bits4-5", + "width": 2, + "name": "BootMode", + "access": "RW", + "description": "Boot mode configuration", + "values": [ + { + "name": "SDRWithDefaultTiming", + "value": 0, + "description": "Single data rate with backward compatible timings" + }, + { + "name": "SDRWithHighSpeedTiming", + "value": 1, + "description": "Single data rate with high speed timing" + }, + { + "name": "DDRTiming", + "value": 2, + "description": "Dual date rate" + } + ] + }, + { + "width": 2 + }, + { + "id": "field000-bits8-11", + "width": 4, + "name": "BusWidth", + "access": "RW", + "description": "eMMC card data bus width(BUS_WIDTH in Extended CSD)", + "values": [ + { + "name": "1bit", + "value": 0, + "description": "eMMC data bus width is 1 bit" + }, + { + "name": "4bit", + "value": 1, + "description": "eMMC data bus width is 4 bits" + }, + { + "name": "8bit", + "value": 2, + "description": "eMMC data bus width is 8 bits" + }, + { + "name": "4bitDDR", + "value": 5, + "description": "eMMC data bus width is 4 bits ddr" + }, + { + "name": "8bitDDR", + "value": 6, + "description": "eMMC data bus width is 8 bits ddr" + } + ] + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "TimingMode", + "access": "RW", + "description": "Select the bus timing when accesses eMMC memory", + "values": [ + { + "name": "HighSpeedTimingNormal", + "value": 0, + "description": "eMMC card using none high-speed timing" + }, + { + "name": "HighSpeedTiming", + "value": 1, + "description": "eMMC card using high-speed timing" + }, + { + "name": "HighSpeed200Timing", + "value": 2, + "description": "eMMC card high speed 200 timing" + }, + { + "name": "HighSpeed400Timing", + "value": 3, + "description": "eMMC card high speed 400 timing" + } + ] + }, + { + "id": "field000-bits16-17", + "width": 2, + "name": "BootBusWidth", + "access": "RW", + "description": "eMMC card boot bus width(BOOT_BUS_WIDTH in Extended CSD)", + "values": [ + { + "name": "1bitSDR4bitDDR", + "value": 0, + "description": "x1 (sdr) or x4 (ddr) bus width in boot operation mode(default)" + }, + { + "name": "4bitSDR4bitDDR", + "value": 1, + "description": "x4 (sdr/ddr) bus width in boot operation mode" + }, + { + "name": "8bitSDR8bitDDR", + "value": 2, + "description": "x8 (sdr/ddr) bus width in boot operation mode" + } + ] + }, + { + "width": 2 + }, + { + "id": "field000-bits20-22", + "width": 3, + "name": "BootPartitionEnabled", + "access": "RW", + "description": "eMMC card boot partition enabled(BOOT_PARTITION_ENABLE in Extended CSD)", + "values": [ + { + "name": "Not", + "value": 0, + "description": "Device not boot enabled (default)" + }, + { + "name": "Partition1", + "value": 1, + "description": "Boot partition 1 enabled for boot" + }, + { + "name": "Partition2", + "value": 2, + "description": "Boot partition 2 enabled for boot" + }, + { + "name": "UserAera", + "value": 7, + "description": "User area enabled for boot" + } + ] + }, + { + "width": 1 + }, + { + "id": "field000-bits24-26", + "width": 3, + "name": "PartitionAccess", + "access": "RW", + "description": "eMMC card partition to be accessed(BOOT_PARTITION_ACCESS in Extended CSD)", + "values": [ + { + "name": "PartitionUserAera", + "value": 0, + "description": "No access to boot partition (default), normal partition" + }, + { + "name": "PartitionBoot1", + "value": 1, + "description": "Read/Write boot partition 1" + }, + { + "name": "PartitionBoot2", + "value": 2, + "description": "Read/Write boot partition 2" + }, + { + "name": "RPMB", + "value": 3, + "description": "Replay protected mem block" + }, + { + "name": "GeneralPurposePartition1", + "value": 4, + "description": "access to general purpose partition 1" + }, + { + "name": "GeneralPurposePartition2", + "value": 5, + "description": "access to general purpose partition 2" + }, + { + "name": "GeneralPurposePartition3", + "value": 6, + "description": "access to general purpose partition 3" + }, + { + "name": "GeneralPurposePartition4", + "value": 7, + "description": "access to general purpose partition 4" + } + ] + }, + { + "width": 1 + }, + { + "width": 4 + } + ] + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "ConfigOption1", + "description": "eMMC card Configuration Option 1 - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 19 + }, + { + "id": "field004-bit19", + "width": 1, + "name": "EnablePowerCycle", + "access": "RW", + "description": "Execute power cycle before initialization", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Power cycle disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Execute power cycle before initialization" + } + ] + }, + { + "id": "field004-bit20", + "width": 1, + "name": "PowerUpDelay", + "access": "RW", + "description": "Set power up delay", + "values": [ + { + "name": "5ms", + "value": 0, + "description": "Power up delay 5ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "Power up delay 2.5ms" + } + ] + }, + { + "width": 2 + }, + { + "id": "field004-bit23", + "width": 1, + "name": "PowerUpPolarity", + "access": "RW", + "description": "eMMC power control polarity. Only valid when PWR_CYCLE_ENABLE is enabled", + "values": [ + { + "name": "Low", + "value": 0, + "description": "Power down when uSDHC.RST set low" + }, + { + "name": "High", + "value": 1, + "description": "Power down when uSDHC.RST set high" + } + ] + }, + { + "id": "field004-bits24-25", + "width": 2, + "name": "PowerDownTime", + "access": "RW", + "description": "Set power down time", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "Power up delay 20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "Power up delay 10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "Power up delay 5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "Power up delay 2.5ms" + } + ] + }, + { + "width": 2 + }, + { + "width": 4 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nand.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nand.json new file mode 100644 index 0000000..c39dc3c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nand.json @@ -0,0 +1,276 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "FlexSPI NAND Configuration Option 0", + "default_value_int": "0xc0000020", + "bitfields": [ + { + "id": "field000-bits0-3", + "width": 4, + "name": "MaxFreq", + "access": "RW", + "description": "The maximum work frequency for specified Flash device", + "values": [ + { + "name": "NoChange", + "value": 0, + "description": "Don't change FlexSPI clock setting" + }, + { + "name": "30Mhz", + "value": 1, + "description": "30MHz" + }, + { + "name": "50Mhz", + "value": 2, + "description": "50MHz" + }, + { + "name": "60Mhz", + "value": 3, + "description": "60MHz" + }, + { + "name": "80Mhz", + "value": 4, + "description": "80MHz" + }, + { + "name": "100Mhz", + "value": 5, + "description": "100MHz" + }, + { + "name": "120Mhz", + "value": 6, + "description": "120MHz" + }, + { + "name": "133Mhz", + "value": 7, + "description": "133MHz" + }, + { + "name": "166Mhz", + "value": 8, + "description": "166MHz" + } + ] + }, + { + "id": "field000-bits4-7", + "width": 4, + "name": "PageSize", + "access": "RW", + "description": "Specify page size in KB.", + "values": [ + { + "name": "2KB", + "value": 2, + "description": "NAND is using 2KB pages" + }, + { + "name": "4KB", + "value": 4, + "description": "NAND is using 4KB pages" + } + ] + }, + { + "id": "field000-bits8-11", + "width": 4, + "name": "PagesPerBlock", + "access": "RW", + "description": "Specify the count of pages per one block", + "values": [ + { + "name": "64", + "value": 0, + "description": "64 pages per one block" + }, + { + "name": "128", + "value": 1, + "description": "128 pages per one block" + }, + { + "name": "256", + "value": 2, + "description": "256 pages per one block" + }, + { + "name": "32", + "value": 3, + "description": "32 pages per one block" + } + ] + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "HasMultiPlanes", + "access": "RW", + "description": "Has or no multiplanes", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "NAND memory has not multiplanes" + }, + { + "name": "Enabled", + "value": 1, + "description": "NAND memory has multiplanes" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "FlashSize", + "access": "RW", + "description": "Overall flash size", + "values": [ + { + "name": "512Mbit", + "value": 0, + "description": "Memory size is 512Mbit" + }, + { + "name": "1Gbit", + "value": 1, + "description": "Memory size is 1Gbit" + }, + { + "name": "2Gbit", + "value": 2, + "description": "Memory size is 2Gbit" + }, + { + "name": "4Gbit", + "value": 4, + "description": "Memory size is 4Gbit" + }, + { + "name": "8Gbit", + "value": 8, + "description": "Memory size is 8Gbit" + } + ] + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "DeviceType", + "access": "RW", + "description": "Device type of NAND.", + "values": [ + { + "name": "QuadSpi", + "value": 0, + "description": "QuadSPI NAND" + }, + { + "name": "Octal", + "value": 1, + "description": "OctalSPI NAND" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "OptionSize", + "access": "RW", + "description": "Option Size", + "values": [ + { + "name": "OptionSize1", + "value": 0, + "description": "Option words = 1" + }, + { + "name": "OptionSize2", + "value": 1, + "description": "Option words = 2" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "ConfigOption1", + "description": "FlexSPI NAND flash Configuration Option 1 - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field004-bits0-7", + "width": 8, + "name": "ManufacturerId", + "access": "RW", + "description": "Manufacture ID" + }, + { + "id": "field004-bits8-15", + "width": 8, + "name": "EccFailureMask", + "access": "RW", + "description": "ECC Failure mask" + }, + { + "id": "field004-bits16-23", + "width": 8, + "name": "EccCheckMask", + "access": "RW", + "description": "ECC Check Mask" + }, + { + "id": "field004-bits24-27", + "width": 4, + "name": "PinMuxGroup", + "access": "RW", + "description": "Select the FlexSPI Pin MUx group" + }, + { + "id": "field004-bits28-31", + "width": 4, + "name": "FlashConnection", + "access": "RW", + "description": "Select the FlexSPI Port A/B", + "values": [ + { + "name": "SingleFlashPort_A", + "value": 0, + "description": "Single Flash connected to port A" + }, + { + "name": "SingleFlashPort_B", + "value": 2, + "description": "Single Flash connected to port B" + } + ] + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nor.json new file mode 100644 index 0000000..daf5ec2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nor.json @@ -0,0 +1,338 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "FlexSPI NOR Configuration Option 0", + "default_value_int": "0xc0000000", + "bitfields": [ + { + "id": "field000-bits0-3", + "width": 4, + "name": "MaxFreq", + "access": "RW", + "description": "The maximum work frequency for specified Flash device", + "values": [ + { + "name": "NoChange", + "value": 0, + "description": "Don't change FlexSPI clock setting" + }, + { + "name": "30Mhz", + "value": 1, + "description": "30MHz" + }, + { + "name": "50Mhz", + "value": 2, + "description": "50MHz" + }, + { + "name": "60Mhz", + "value": 3, + "description": "60MHz" + }, + { + "name": "75Mhz", + "value": 4, + "description": "75MHz" + }, + { + "name": "80Mhz", + "value": 5, + "description": "80MHz" + }, + { + "name": "100Mhz", + "value": 6, + "description": "100MHz" + }, + { + "name": "133Mhz", + "value": 7, + "description": "133MHz" + }, + { + "name": "166Mhz", + "value": 8, + "description": "166MHz" + } + ] + }, + { + "id": "field000-bits4-7", + "width": 4, + "name": "Misc", + "access": "RW", + "description": "Specify miscellaneous mode for selected flash type; Experimental feature, do not use in products, keep it as 0.", + "values": [ + { + "name": "NotEnabled", + "value": 0, + "description": "Miscellaneous mode is not enabled" + }, + { + "name": "Mode0-4-4", + "value": 1, + "description": "Enable 0-4-4 mode for High Random Read performance" + }, + { + "name": "SwappedMode", + "value": 3, + "description": " Data Order Swapped mode (for MXIC OctaFlash only)" + }, + { + "name": "InternalLoopBack", + "value": 5, + "description": " Select the FlexSPI data sample source as internal loop back, more details please refer FlexSPI usage" + }, + { + "name": "StandSpiMode", + "value": 6, + "description": " Config the FlexSPI NOR flash running at stand SPI mode" + } + ] + }, + { + "id": "field000-bits8-11", + "width": 4, + "name": "QuadEnableType", + "access": "RW", + "description": "Specify the Quad Enable sequence, only applicable for device that only JESD216 compliant, this field is ignored if device support JESD216A or later version. This field will be effective only if device is compliant with JESD216 only (9 longword SDFP table)", + "values": [ + { + "name": "NotConfigure", + "value": 0, + "description": "Not Configured" + }, + { + "name": "Bit6InSR1", + "value": 1, + "description": "QE bit is bit6 in StatusReg1" + }, + { + "name": "Bit1InSR2", + "value": 2, + "description": "QE bit is bit1 in StatusReg2" + }, + { + "name": "Bit7InSR2", + "value": 3, + "description": "QE bit is bit7 in StatusReg2" + }, + { + "name": "Bit1InSR2EnableCmdIs0x31", + "value": 4, + "description": "QE bit is bit1 in StatusReg2, enable command is 0x31" + } + ] + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "CMDPad(s)", + "access": "RW", + "description": "Commands pads for the Flash device (1/4/8), for device that works under 1-1-4,1-4-4,1-1-8 or 1-8-8 mode, CMD pad(s) value is always 0x0, for devices that only support 4-4-4 mode for high performance, CMD pads value is 2, for devices that only support 8-8-8 mode for high performance, CMD pads value is 3", + "values": [ + { + "name": "1", + "value": 0, + "description": "1 bit" + }, + { + "name": "4", + "value": 2, + "description": "4 bits" + }, + { + "name": "8", + "value": 3, + "description": "8 bits" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "Query CMDPad(s)", + "access": "RW", + "description": "Command pads (1/4/8) for the SFDP command", + "values": [ + { + "name": "1", + "value": 0, + "description": "1 bit" + }, + { + "name": "4", + "value": 2, + "description": "4 bits" + }, + { + "name": "8", + "value": 3, + "description": "8 bits" + } + ] + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "Device Detection Type", + "access": "RW", + "description": "SW defined device types used for config block autodetection", + "values": [ + { + "name": "QuadSPI_SDR", + "value": 0, + "description": "QuadSPI SDR" + }, + { + "name": "QuadSPI_DDR", + "value": 1, + "description": "QuadSPI DDR" + }, + { + "name": "HyperFLASH_1V8", + "value": 2, + "description": "HyperFLASH 1V8" + }, + { + "name": "HyperFLASH_3V", + "value": 3, + "description": "HyperFLASH 3V" + }, + { + "name": "MXICOPI_DDR", + "value": 4, + "description": "MXICOPI DDR" + }, + { + "name": "MicronOPI_DDR", + "value": 6, + "description": "MicronOPI DDR" + }, + { + "name": "MicronOPI_SDR", + "value": 7, + "description": "MicronOPI SDR" + }, + { + "name": "AdestoOPI_DDR", + "value": 8, + "description": "AdestoOPI DDR" + }, + { + "name": "AdestoOPI_SDR", + "value": 9, + "description": "AdestoOPI SDR" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "OptionSize", + "access": "RW", + "description": "Option Size", + "values": [ + { + "name": "OptionSize1", + "value": 0, + "description": "Option words = 1" + }, + { + "name": "OptionSize2", + "value": 1, + "description": "Option words = 2" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "ConfigOption1", + "description": "FlexSPI NOR Flash Configuration Option 1 - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field004-bits0-7", + "width": 8, + "name": "DummyCycles", + "access": "RW", + "description": "User provided dummy cycles for SDR/DDR read command: 0 - Auto detection, Others - Specified dummy cycles" + }, + { + "id": "field004-bits8-15", + "width": 8, + "name": "StatusOverride", + "access": "RW", + "description": "Override status register value during device mode configuration" + }, + { + "id": "field004-bits16-19", + "width": 4, + "name": "PinMuxGroup", + "access": "RW", + "description": "Pin multiplexer group selection" + }, + { + "id": "field004-bits20-23", + "width": 4, + "name": "DqsPinMuxGroup", + "access": "RW", + "description": "DQS Pin multiplexer group selection" + }, + { + "id": "field004-bits24-27", + "width": 4, + "name": "PinDriveStrength", + "access": "RW", + "description": "The Drive Strength of FlexSPI Pads" + }, + { + "id": "field004-bits28-31", + "width": 4, + "name": "FlashConnection", + "access": "RW", + "description": "Select the FlexSPI Port A/B", + "values": [ + { + "name": "SingleFlashPort_A", + "value": 0, + "description": "Single Flash connected to port A" + }, + { + "name": "ParallelMode", + "value": 1, + "description": "Parallel mode" + }, + { + "name": "SingleFlashPort_B", + "value": 2, + "description": "Single Flash connected to port B" + } + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nor_legacy.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nor_legacy.json new file mode 100644 index 0000000..b7d0544 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_flexspi_nor_legacy.json @@ -0,0 +1,273 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "FlexSPI NOR Configuration Option 0", + "default_value_int": "0xc0000000", + "bitfields": [ + { + "id": "field000-bits0-3", + "width": 4, + "name": "MaxFreq", + "access": "RW", + "description": "The maximum work frequency for specified Flash device; 0 - Don't change FlexSPI clock setting" + }, + { + "id": "field000-bits4-7", + "width": 4, + "name": "Misc", + "access": "RW", + "description": "Specify miscellaneous mode for selected flash type; Experimental feature, do not use in products, keep it as 0.", + "values": [ + { + "name": "NotEnabled", + "value": 0, + "description": "Miscellaneous mode is not enabled" + }, + { + "name": "Mode0-4-4", + "value": 1, + "description": "Enable 0-4-4 mode for High Random Read performance" + }, + { + "name": "SwappedMode", + "value": 3, + "description": " Data Order Swapped mode (for MXIC OctaFlash only)" + }, + { + "name": "InternalLoopBack", + "value": 5, + "description": " Select the FlexSPI data sample source as internal loop back, more details please refer FlexSPI usage" + }, + { + "name": "StandSpiMode", + "value": 6, + "description": " Config the FlexSPI NOR flash running at stand SPI mode" + } + ] + }, + { + "id": "field000-bits8-11", + "width": 4, + "name": "QuadEnableType", + "access": "RW", + "description": "Specify the Quad Enable sequence, only applicable for device that only JESD216 compliant, this field is ignored if device support JESD216A or later version. This field will be effective only if device is compliant with JESD216 only (9 longword SDFP table)", + "values": [ + { + "name": "NotConfigure", + "value": 0, + "description": "Not Configured" + }, + { + "name": "Bit6InSR1", + "value": 1, + "description": "QE bit is bit6 in StatusReg1" + }, + { + "name": "Bit1InSR2", + "value": 2, + "description": "QE bit is bit1 in StatusReg2" + }, + { + "name": "Bit7InSR2", + "value": 3, + "description": "QE bit is bit7 in StatusReg2" + }, + { + "name": "Bit1InSR2EnableCmdIs0x31", + "value": 4, + "description": "QE bit is bit1 in StatusReg2, enable command is 0x31" + } + ] + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "CMDPad(s)", + "access": "RW", + "description": "Commands pads for the Flash device (1/4/8), for device that works under 1-1-4,1-4-4,1-1-8 or 1-8-8 mode, CMD pad(s) value is always 0x0, for devices that only support 4-4-4 mode for high performance, CMD pads value is 2, for devices that only support 8-8-8 mode for high performance, CMD pads value is 3", + "values": [ + { + "name": "1", + "value": 0, + "description": "1 bit" + }, + { + "name": "4", + "value": 2, + "description": "4 bits" + }, + { + "name": "8", + "value": 3, + "description": "8 bits" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "QueryCMDPad(s)", + "access": "RW", + "description": "Command pads (1/4/8) for the SFDP command", + "values": [ + { + "name": "1", + "value": 0, + "description": "1 bit" + }, + { + "name": "4", + "value": 2, + "description": "4 bits" + }, + { + "name": "8", + "value": 3, + "description": "8 bits" + } + ] + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "DeviceDetectionType", + "access": "RW", + "description": "SW defined device types used for config block autodetection", + "values": [ + { + "name": "QuadSPI_SDR", + "value": 0, + "description": "QuadSPI SDR" + }, + { + "name": "QuadSPI_DDR", + "value": 1, + "description": "QuadSPI DDR" + }, + { + "name": "HyperFLASH_1V8", + "value": 2, + "description": "HyperFLASH 1V8" + }, + { + "name": "HyperFLASH_3V", + "value": 3, + "description": "HyperFLASH 3V" + }, + { + "name": "MXICOPI_DDR", + "value": 4, + "description": "MXICOPI DDR" + }, + { + "name": "MicronOPI_DDR", + "value": 6, + "description": "MicronOPI DDR" + }, + { + "name": "MicronOPI_SDR", + "value": 7, + "description": "MicronOPI SDR" + }, + { + "name": "AdestoOPI_DDR", + "value": 8, + "description": "AdestoOPI DDR" + }, + { + "name": "AdestoOPI_SDR", + "value": 9, + "description": "AdestoOPI SDR" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "OptionSize", + "access": "RW", + "description": "Option Size", + "values": [ + { + "name": "OptionSize1", + "value": 0, + "description": "Option words = 1" + }, + { + "name": "OptionSize2", + "value": 1, + "description": "Option words = 2" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "ConfigOption1", + "description": "FlexSPI NOR Flash Configuration Option 1 - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field004-bits0-7", + "width": 8, + "name": "DummyCycles", + "access": "RW", + "description": "User provided dummy cycles for SDR/DDR read command: 0 - Auto detection, Others - Specified dummy cycles" + }, + { + "id": "field004-bits8-15", + "width": 8, + "name": "StatusOverride", + "access": "RW", + "description": "Override status register value during device mode configuration" + }, + { + "width": 8 + }, + { + "id": "field004-bits24-31", + "width": 8, + "name": "FlashConnection", + "access": "RW", + "description": "Select the FlexSPI Port A/B", + "values": [ + { + "name": "SingleFlashPort_A", + "value": 0, + "description": "Single Flash connected to port A" + }, + { + "name": "ParallelMode", + "value": 1, + "description": "Parallel mode" + }, + { + "name": "SingleFlashPort_B", + "value": 2, + "description": "Single Flash connected to port B" + } + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_mmc.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_mmc.json new file mode 100644 index 0000000..c306f94 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_mmc.json @@ -0,0 +1,430 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "MMC card Configuration Option 0", + "default_value_int": "0xc0000000", + "bitfields": [ + { + "id": "field000-bit0", + "width": 1, + "name": "BootConfigEnable", + "access": "RW", + "description": "Boot configuration", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Boot configuration disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Boot configuration enabled" + } + ] + }, + { + "width": 1 + }, + { + "id": "field000-bit2", + "width": 1, + "name": "BootAcknowledge", + "access": "RW", + "description": "Boot acknowledge", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Boot acknowledge disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Boot acknowledge enabled" + } + ] + }, + { + "id": "field000-bit3", + "width": 1, + "name": "ResetBootBusConditions", + "access": "RW", + "description": "Reset boot BUS conditions", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Don't change BUS conditions" + }, + { + "name": "Enabled", + "value": 1, + "description": "Reset boot BUS conditions" + } + ] + }, + { + "id": "field000-bits4-5", + "width": 2, + "name": "BootMode", + "access": "RW", + "description": "Boot mode configuration", + "values": [ + { + "name": "SDRWithDefaultTiming", + "value": 0, + "description": "Single data rate with backward compatible timings" + }, + { + "name": "SDRWithHighSpeedTiming", + "value": 1, + "description": "Single data rate with high speed timing" + }, + { + "name": "DDRTiming", + "value": 2, + "description": "Dual date rate" + } + ] + }, + { + "width": 2 + }, + { + "id": "field000-bits8-11", + "width": 4, + "name": "BusWidth", + "access": "RW", + "description": "MMC card data bus width(BUS_WIDTH in Extended CSD)", + "values": [ + { + "name": "1bit", + "value": 0, + "description": "MMC data bus width is 1 bit" + }, + { + "name": "4bit", + "value": 1, + "description": "MMC data bus width is 4 bits" + }, + { + "name": "8bit", + "value": 2, + "description": "MMC data bus width is 8 bits" + }, + { + "name": "4bitDDR", + "value": 5, + "description": "MMC data bus width is 4 bits ddr" + }, + { + "name": "8bitDDR", + "value": 6, + "description": "MMC data bus width is 8 bits ddr" + } + ] + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "TimingMode", + "access": "RW", + "description": "MMC card high-speed timing(HS_TIMING in Extended CSD)", + "values": [ + { + "name": "HighSpeedTimingNone", + "value": 0, + "description": "MMC card using none high-speed timing" + }, + { + "name": "HighSpeedTiming", + "value": 1, + "description": "MMC card using high-speed timing" + }, + { + "name": "HighSpeed200Timing", + "value": 2, + "description": "MMC card high speed 200 timing" + }, + { + "name": "HighSpeed400Timing", + "value": 3, + "description": "MMC card high speed 400 timing" + }, + { + "name": "HighSpeed26MHZTiming", + "value": 4, + "description": "MMC high speed 26MHZ timing" + }, + { + "name": "HighSpeed52MHZTiming", + "value": 5, + "description": "MMC high speed 52MHZ timing" + }, + { + "name": "HighSpeedDDR52Timing", + "value": 6, + "description": "MMC high speed timing DDR52 1.8V" + } + ] + }, + { + "id": "field000-bits16-17", + "width": 2, + "name": "BootBusWidth", + "access": "RW", + "description": "MMC card boot bus width(BOOT_BUS_WIDTH in Extended CSD)", + "values": [ + { + "name": "1bitSDR4bitDDR", + "value": 0, + "description": "x1 (sdr) or x4 (ddr) bus width in boot operation mode(default)" + }, + { + "name": "4bitSDR4bitDDR", + "value": 1, + "description": "x4 (sdr/ddr) bus width in boot operation mode" + }, + { + "name": "8bitSDR8bitDDR", + "value": 2, + "description": "x8 (sdr/ddr) bus width in boot operation mode" + } + ] + }, + { + "width": 2 + }, + { + "id": "field000-bits20-22", + "width": 3, + "name": "BootPartitionEnabled", + "access": "RW", + "description": "MMC card boot partition enabled(BOOT_PARTITION_ENABLE in Extended CSD)", + "values": [ + { + "name": "Not", + "value": 0, + "description": "Device not boot enabled (default)" + }, + { + "name": "Partition1", + "value": 1, + "description": "Boot partition 1 enabled for boot" + }, + { + "name": "Partition2", + "value": 2, + "description": "Boot partition 2 enabled for boot" + }, + { + "name": "UserAera", + "value": 7, + "description": "User area enabled for boot" + } + ] + }, + { + "width": 1 + }, + { + "id": "field000-bits24-26", + "width": 3, + "name": "PartitionAccess", + "access": "RW", + "description": "MMC card partition to be accessed(BOOT_PARTITION_ACCESS in Extended CSD)", + "values": [ + { + "name": "PartitionUserAera", + "value": 0, + "description": "No access to boot partition (default), normal partition" + }, + { + "name": "PartitionBoot1", + "value": 1, + "description": "Read/Write boot partition 1" + }, + { + "name": "PartitionBoot2", + "value": 2, + "description": "Read/Write boot partition 2" + }, + { + "name": "RPMB", + "value": 3, + "description": "Replay protected mem block" + }, + { + "name": "GeneralPurposePartition1", + "value": 4, + "description": "access to general purpose partition 1" + }, + { + "name": "GeneralPurposePartition2", + "value": 5, + "description": "access to general purpose partition 2" + }, + { + "name": "GeneralPurposePartition3", + "value": 6, + "description": "access to general purpose partition 3" + }, + { + "name": "GeneralPurposePartition4", + "value": 7, + "description": "access to general purpose partition 4" + } + ] + }, + { + "width": 1 + }, + { + "width": 4 + } + ] + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "ConfigOption1", + "description": "MMC card Configuration Option 1 - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field004-bits0-3", + "width": 4, + "name": "Instance", + "access": "RW", + "description": "MMC peripheral instance" + }, + { + "width": 2 + }, + { + "width": 10 + }, + { + "width": 2 + }, + { + "id": "field004-bit18", + "width": 1, + "name": "1V8", + "access": "RW", + "description": "MMC interface BUS use 1V8", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "1V8 disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "1V8 enabled" + } + ] + }, + { + "id": "field004-bit19", + "width": 1, + "name": "EnablePowerCycle", + "access": "RW", + "description": "Execute power cycle before initialization", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Power cycle disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Execute power cycle before initialization" + } + ] + }, + { + "id": "field004-bit20", + "width": 1, + "name": "PowerUpDelay", + "access": "RW", + "description": "Set power up delay", + "values": [ + { + "name": "5ms", + "value": 0, + "description": "Power up delay 5ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "Power up delay 2.5ms" + } + ] + }, + { + "width": 2 + }, + { + "id": "field004-bit23", + "width": 1, + "name": "PowerUpPolarity", + "access": "RW", + "description": "Power up polarity - May vary on different devices" + }, + { + "id": "field004-bits24-25", + "width": 2, + "name": "PowerDownTime", + "access": "RW", + "description": "Set power down time", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "Power up delay 20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "Power up delay 10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "Power up delay 5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "Power up delay 2.5ms" + } + ] + }, + { + "width": 2 + }, + { + "width": 4 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_sd.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_sd.json new file mode 100644 index 0000000..a7994bf --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_sd.json @@ -0,0 +1,183 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "SD card Configuration Option 0", + "default_value_int": "0xd0000000", + "bitfields": [ + { + "id": "field000-bits0-3", + "width": 4, + "name": "Instance", + "access": "RW", + "description": "SD peripheral instance" + }, + { + "width": 4 + }, + { + "id": "field000-bit8", + "width": 1, + "name": "BusWidth", + "access": "RW", + "description": "SD interface BUS width", + "values": [ + { + "name": "1bit", + "value": 0, + "description": "BUS width 1 bit" + }, + { + "name": "4bit", + "value": 1, + "description": "BUS width 4 bit" + } + ] + }, + { + "id": "field000-bits9-11", + "width": 3, + "name": "TunningStart", + "access": "RW", + "description": "Tunning start - the final value will be multiplicated by 32" + }, + { + "id": "field000-bits12-14", + "width": 3, + "name": "TimingMode", + "access": "RW", + "description": "SD card timing mode flags", + "values": [ + { + "name": "SDR12DefaultMode", + "value": 0, + "description": "Identification mode and SDR12" + }, + { + "name": "SDR25HighSpeedMode", + "value": 1, + "description": "High speed mode and SDR25" + }, + { + "name": "SDR50Mode", + "value": 2, + "description": "SDR50 mode" + }, + { + "name": "SDR104Mode", + "value": 3, + "description": "SDR104 mode" + }, + { + "name": "DDR50Mode", + "value": 4, + "description": "DDR50 mode" + } + ] + }, + { + "width": 4 + }, + { + "id": "field000-bit19", + "width": 1, + "name": "EnablePowerCycle", + "access": "RW", + "description": "Execute power cycle before initialization", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Power cycle disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Execute power cycle before initialization" + } + ] + }, + { + "id": "field000-bit20", + "width": 1, + "name": "PowerUpDelay", + "access": "RW", + "description": "Set power up delay", + "values": [ + { + "name": "5ms", + "value": 0, + "description": "Power up delay 5ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "Power up delay 2.5ms" + } + ] + }, + { + "id": "field000-bits21-22", + "width": 2, + "name": "TunningStep", + "access": "RW", + "description": "Tunning step - the final value will be multiplicated by 2. In case of zero it used value 1" + }, + { + "id": "field000-bit23", + "width": 1, + "name": "PowerUpPolarity", + "access": "RW", + "description": "Power up polarity - May vary on different devices" + }, + { + "id": "field000-bits24-25", + "width": 2, + "name": "PowerDownTime", + "access": "RW", + "description": "Set power down time", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "Power up delay 20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "Power up delay 10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "Power up delay 5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "Power up delay 2.5ms" + } + ] + }, + { + "width": 2 + }, + { + "width": 4 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_semc_nand.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_semc_nand.json new file mode 100644 index 0000000..1daa119 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_semc_nand.json @@ -0,0 +1,195 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "SEMC NAND Configuration Option 0", + "default_value_int": "0xd0000100", + "bitfields": [ + { + "id": "field000-bits0-2", + "width": 3, + "name": "OnfiVersion", + "access": "RW", + "description": "ONFI version" + }, + { + "id": "field000-bit3", + "width": 1, + "name": "EdoMode", + "access": "RW", + "description": "EDO mode", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "EDO mode disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "EDO mode enabled" + } + ] + }, + { + "id": "field000-bits4-6", + "width": 3, + "name": "OnfiTimingMode", + "access": "RW", + "description": "ONFI Timing mode", + "values": [ + { + "name": "10MHz", + "value": 0, + "description": "Mode 0, 10MHz" + }, + { + "name": "20MHz", + "value": 1, + "description": "Mode 1, 20MHz" + }, + { + "name": "28MHz", + "value": 2, + "description": "Mode 2, 28MHz" + }, + { + "name": "33MHz", + "value": 3, + "description": "Mode 3, 33MHz" + }, + { + "name": "40MHz", + "value": 4, + "description": "Mode 4, 40MHz" + }, + { + "name": "50MHz", + "value": 5, + "description": "Mode 5, 50MHz" + }, + { + "name": "Fastest0", + "value": 6, + "description": "Mode 6, Fastest mode 0" + }, + { + "name": "Fastest1", + "value": 7, + "description": "Mode 7, Fastest mode 1" + } + ] + }, + { + "width": 1 + }, + { + "id": "field000-bits8-9", + "width": 2, + "name": "IoPortDiv8", + "access": "RW", + "description": "IO port size, Minimum is 1" + }, + { + "width": 2 + }, + { + "id": "field000-bits12-14", + "width": 3, + "name": "PcsSelection", + "access": "RW", + "description": "SEMC NAND PCS selection", + "values": [ + { + "name": "CSX0", + "value": 0, + "description": "SEMC NAND CSX0" + }, + { + "name": "CSX1", + "value": 1, + "description": "SEMC NAND CSX1" + }, + { + "name": "CSX2", + "value": 2, + "description": "SEMC NAND CSX2" + }, + { + "name": "CSX3", + "value": 3, + "description": "SEMC NAND CSX3" + }, + { + "name": "A8", + "value": 4, + "description": "SEMC NAND A8" + } + ] + }, + { + "width": 1 + }, + { + "id": "field000-bit16", + "width": 1, + "name": "EccType", + "access": "RW", + "description": "ECC type", + "values": [ + { + "name": "SW", + "value": 0, + "description": "Software ECC" + }, + { + "name": "HW", + "value": 1, + "description": "Hardware ECC" + } + ] + }, + { + "id": "field000-bit17", + "width": 1, + "name": "EccStatus", + "access": "RW", + "description": "ECC status", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "ECC enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "ECC disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_semc_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_semc_nor.json new file mode 100644 index 0000000..cd0f2ba --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_semc_nor.json @@ -0,0 +1,289 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "SEMC NOR Configuration Option 0", + "default_value_int": "0xd0000100", + "bitfields": [ + { + "id": "field000-bits0-1", + "width": 2, + "name": "CommandSet", + "access": "RW", + "description": "SEMC Parallel NOR Flash command set", + "values": [ + { + "name": "EPSCD", + "value": 0, + "description": "As Micron MT28EW Embedded Parallel NOR Standard Command Definitions" + }, + { + "name": "SFMCD", + "value": 1, + "description": "As Micron MT28GU StrataFlash Memory Command Definitions" + } + ] + }, + { + "id": "field000-bits2-3", + "width": 2, + "name": "AcTimingMode", + "access": "RW", + "description": "SEMC Parallel NOR AC timing mode (Async read mode)", + "values": [ + { + "name": "DefaultSafe", + "value": 0, + "description": "Timing default safe" + }, + { + "name": "DefaultSast", + "value": 1, + "description": "Timing default fast" + }, + { + "name": "UserDefined", + "value": 2, + "description": "Timing user defined. The definition (next 6 option words) MUST follow this option word" + } + ] + }, + { + "width": 4 + }, + { + "id": "field000-bits8-9", + "width": 2, + "name": "IoPortDiv8", + "access": "RW", + "description": "IO port size, Minimum is 1" + }, + { + "id": "field000-bit10", + "width": 1, + "name": "AdvPortPolarity", + "access": "RW", + "description": "ADV# polarity", + "values": [ + { + "name": "Low", + "value": 0, + "description": "ADV polarity low" + }, + { + "name": "High", + "value": 1, + "description": "ADV polarity high" + } + ] + }, + { + "width": 1 + }, + { + "id": "field000-bits12-14", + "width": 3, + "name": "PcsSelection", + "access": "RW", + "description": "SEMC NOR PCS selection", + "values": [ + { + "name": "CSX0", + "value": 0, + "description": "SEMC NOR CSX0" + }, + { + "name": "CSX1", + "value": 1, + "description": "SEMC NOR CSX1" + }, + { + "name": "CSX2", + "value": 2, + "description": "SEMC NOR CSX2" + }, + { + "name": "CSX3", + "value": 3, + "description": "SEMC NOR CSX3" + }, + { + "name": "A8", + "value": 4, + "description": "SEMC NOR A8" + }, + { + "name": "RDY", + "value": 5, + "description": "SEMC NOR RDY" + } + ] + }, + { + "width": 1 + }, + { + "width": 8 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "ConfigOption1", + "description": "SEMC NOR Configuration Option 1 - User definition - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field004-bits0-15", + "width": 16, + "name": "min_tCEH_ns", + "access": "RW", + "description": "User definition min_tCEH_ns" + }, + { + "id": "field004-bits16-31", + "width": 16, + "name": "min_tCES_ns", + "access": "RW", + "description": "User definition min_tCES_ns" + } + ] + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "ConfigOption2", + "description": "SEMC NOR Configuration Option 2 - User definition - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field008-bits0-15", + "width": 16, + "name": "min_tAS_ns", + "access": "RW", + "description": "User definition min_tAS_ns" + }, + { + "id": "field008-bits16-31", + "width": 16, + "name": "min_tCEITV_ns", + "access": "RW", + "description": "User definition min_tCEITV_ns" + } + ] + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "ConfigOption3", + "description": "SEMC NOR Configuration Option 3 - User definition - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field00C-bits0-15", + "width": 16, + "name": "min_tTA_ns", + "access": "RW", + "description": "User definition min_tTA_ns" + }, + { + "id": "field00C-bits16-31", + "width": 16, + "name": "min_tAH_ns", + "access": "RW", + "description": "User definition min_tAH_ns" + } + ] + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "ConfigOption4", + "description": "SEMC NOR Configuration Option 4 - User definition - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field010-bits0-15", + "width": 16, + "name": "min_tWEH_ns", + "access": "RW", + "description": "User definition min_tWEH_ns" + }, + { + "id": "field010-bits16-31", + "width": 16, + "name": "min_tWEL_ns", + "access": "RW", + "description": "User definition min_tWEL_ns" + } + ] + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "ConfigOption5", + "description": "SEMC NOR Configuration Option 5 - User definition - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-15", + "width": 16, + "name": "min_tREL_ns", + "access": "RW", + "description": "User definition min_tREL_ns" + }, + { + "id": "field014-bits16-31", + "width": 16, + "name": "min_tAWDH_ns", + "access": "RW", + "description": "User definition min_tAWDH_ns" + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "ConfigOption6", + "description": "SEMC NOR Configuration Option 6 - User definition - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 16 + }, + { + "id": "field018-bits16-31", + "width": 16, + "name": "max_tREH_ns", + "access": "RW", + "description": "User definition max_tREH_ns" + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_spi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_spi_nor.json new file mode 100644 index 0000000..263a16d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_spi_nor.json @@ -0,0 +1,356 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "FlexSPI NOR Configuration Option 0", + "default_value_int": "0xc0000000", + "bitfields": [ + { + "id": "field000-bits0-3", + "width": 4, + "name": "PageSize", + "access": "RW", + "description": "Page size of the NOR flash device", + "values": [ + { + "name": "256B", + "value": 0, + "description": "Page size 256B" + }, + { + "name": "512B", + "value": 1, + "description": "Page size 512B" + }, + { + "name": "1MB", + "value": 2, + "description": "Page size 1MB" + }, + { + "name": "32B", + "value": 3, + "description": "Page size 32B" + }, + { + "name": "64B", + "value": 4, + "description": "Page size 64B" + }, + { + "name": "128B", + "value": 5, + "description": "Page size 128B" + } + ] + }, + { + "id": "field000-bits4-7", + "width": 4, + "name": "SectorSize", + "access": "RW", + "description": "Sector size of the NOR flash device", + "values": [ + { + "name": "4KB", + "value": 0, + "description": "Page size 4KB" + }, + { + "name": "8KB", + "value": 1, + "description": "Page size 8KB" + }, + { + "name": "32KB", + "value": 2, + "description": "Page size 32KB" + }, + { + "name": "64KB", + "value": 3, + "description": "Page size 64KB" + }, + { + "name": "128KB", + "value": 4, + "description": "Page size 128KB" + }, + { + "name": "256KB", + "value": 5, + "description": "Page size 256KB" + } + ] + }, + { + "id": "field000-bits8-11", + "width": 4, + "name": "MemorySize", + "access": "RW", + "description": "Memory capacity of the NOR flash device", + "values": [ + { + "name": "512KB", + "value": 0, + "description": "Page size 512KB" + }, + { + "name": "1MB", + "value": 1, + "description": "Page size 1MB" + }, + { + "name": "2MB", + "value": 2, + "description": "Page size 2MB" + }, + { + "name": "4MB", + "value": 3, + "description": "Page size 4MB" + }, + { + "name": "8MB", + "value": 4, + "description": "Page size 8MB" + }, + { + "name": "16MB", + "value": 5, + "description": "Page size 16MB" + }, + { + "name": "32MB", + "value": 6, + "description": "Page size 32MB" + }, + { + "name": "64MB", + "value": 7, + "description": "Page size 64MB" + }, + { + "name": "128MB", + "value": 8, + "description": "Page size 128MB" + }, + { + "name": "256MB", + "value": 9, + "description": "Page size 256MB" + }, + { + "name": "512MB", + "value": 10, + "description": "Page size 512MB" + }, + { + "name": "1GB", + "value": 11, + "description": "Page size 1GB" + }, + { + "name": "32KB", + "value": 12, + "description": "Page size 32KB" + }, + { + "name": "64KB", + "value": 13, + "description": "Page size 64KB" + }, + { + "name": "128KB", + "value": 14, + "description": "Page size 128KB" + }, + { + "name": "256KB", + "value": 15, + "description": "Page size 256KB" + } + ] + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "MemoryType", + "access": "RW", + "description": "Memory type used to configure and access the NOR flash", + "values": [ + { + "name": "NorFlash", + "value": 0, + "description": "SPI NOR FLASH" + }, + { + "name": "EEPROM", + "value": 1, + "description": "SPI EEPROM" + }, + { + "name": "Terminator", + "value": 2, + "description": "Terminator" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "PcsIndex", + "access": "RW", + "description": "PCS index used by SPI to access serial NOR flash", + "values": [ + { + "name": "PCS0", + "value": 0, + "description": "Use SPIx PCS0" + }, + { + "name": "PCS1", + "value": 1, + "description": "Use SPIx PCS1" + }, + { + "name": "PCS2", + "value": 2, + "description": "Use SPIx PCS2" + }, + { + "name": "PCS3", + "value": 3, + "description": "Use SPIx PCS3" + } + ] + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "SpiIndex", + "access": "RW", + "description": "SPI interface used to access serial NOR flash", + "values": [ + { + "name": "SPI0", + "value": 0, + "description": "Use SPI0" + }, + { + "name": "SPI1", + "value": 1, + "description": "Use SPI1" + }, + { + "name": "SPI2", + "value": 2, + "description": "Use SPI2" + }, + { + "name": "SPI3", + "value": 3, + "description": "Use SPI3" + }, + { + "name": "SPI4", + "value": 4, + "description": "Use SPI4" + }, + { + "name": "SPI5", + "value": 5, + "description": "Use SPI5" + }, + { + "name": "SPI6", + "value": 6, + "description": "Use SPI6" + }, + { + "name": "SPI7", + "value": 7, + "description": "Use SPI7" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "OptionSize", + "access": "RW", + "description": "Option Size", + "values": [ + { + "name": "OptionSize1", + "value": 0, + "description": "Option words = 1" + }, + { + "name": "OptionSize2", + "value": 1, + "description": "Option words = 2" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "ConfigOption1", + "description": "SPI NOR flash Configuration Option 1 - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field004-bits0-3", + "width": 4, + "name": "SpiSpeed", + "access": "RW", + "description": "Spi NOR/EEPROM module clock freq", + "values": [ + { + "name": "20MHz", + "value": 0, + "description": "SPI Clock set to 20MHz" + }, + { + "name": "10MHz", + "value": 1, + "description": "SPI Clock set to 10MHz" + }, + { + "name": "5MHz", + "value": 2, + "description": "SPI Clock set to 5MHz" + }, + { + "name": "2MHz", + "value": 3, + "description": "SPI Clock set to 2MHz" + } + ] + }, + { + "width": 28 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_spi_nor_legacy.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_spi_nor_legacy.json new file mode 100644 index 0000000..dc90949 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_spi_nor_legacy.json @@ -0,0 +1,267 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "FlexSPI NOR Configuration Option 0", + "default_value_int": "0xc0000000", + "bitfields": [ + { + "id": "field000-bits0-3", + "width": 4, + "name": "PageSize", + "access": "RW", + "description": "Page size of the NOR flash device", + "values": [ + { + "name": "256B", + "value": 0, + "description": "Page size 256B" + }, + { + "name": "512B", + "value": 1, + "description": "Page size 512B" + }, + { + "name": "1MB", + "value": 2, + "description": "Page size 1MB" + }, + { + "name": "32B", + "value": 3, + "description": "Page size 32B" + }, + { + "name": "64B", + "value": 4, + "description": "Page size 64B" + }, + { + "name": "128B", + "value": 5, + "description": "Page size 128B" + } + ] + }, + { + "id": "field000-bits4-7", + "width": 4, + "name": "SectorSize", + "access": "RW", + "description": "Sector size of the NOR flash device", + "values": [ + { + "name": "4KB", + "value": 0, + "description": "Page size 4KB" + }, + { + "name": "8KB", + "value": 1, + "description": "Page size 8KB" + }, + { + "name": "32KB", + "value": 2, + "description": "Page size 32KB" + }, + { + "name": "64KB", + "value": 3, + "description": "Page size 64KB" + }, + { + "name": "128KB", + "value": 4, + "description": "Page size 128KB" + }, + { + "name": "256KB", + "value": 5, + "description": "Page size 256KB" + } + ] + }, + { + "id": "field000-bits8-11", + "width": 4, + "name": "MemorySize", + "access": "RW", + "description": "Memory capacity of the NOR flash device", + "values": [ + { + "name": "512KB", + "value": 0, + "description": "Page size 512KB" + }, + { + "name": "1MB", + "value": 1, + "description": "Page size 1MB" + }, + { + "name": "2MB", + "value": 2, + "description": "Page size 2MB" + }, + { + "name": "4MB", + "value": 3, + "description": "Page size 4MB" + }, + { + "name": "8MB", + "value": 4, + "description": "Page size 8MB" + }, + { + "name": "16MB", + "value": 5, + "description": "Page size 16MB" + }, + { + "name": "32MB", + "value": 6, + "description": "Page size 32MB" + }, + { + "name": "64MB", + "value": 7, + "description": "Page size 64MB" + }, + { + "name": "128MB", + "value": 8, + "description": "Page size 128MB" + }, + { + "name": "256MB", + "value": 9, + "description": "Page size 256MB" + }, + { + "name": "512MB", + "value": 10, + "description": "Page size 512MB" + }, + { + "name": "1GB", + "value": 11, + "description": "Page size 1GB" + }, + { + "name": "32KB", + "value": 12, + "description": "Page size 32KB" + }, + { + "name": "64KB", + "value": 13, + "description": "Page size 64KB" + }, + { + "name": "128KB", + "value": 14, + "description": "Page size 128KB" + }, + { + "name": "256KB", + "value": 15, + "description": "Page size 256KB" + } + ] + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "MemoryType", + "access": "RW", + "description": "Memory type used to configure and access the NOR flash", + "values": [ + { + "name": "Manual", + "value": 0, + "description": "Configure manually based on configure option block" + }, + { + "name": "Auto", + "value": 2, + "description": "AutoConfigure the Nor flash via SFDP info" + } + ] + }, + { + "width": 4 + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "SpiIndex", + "access": "RW", + "description": "SPI interface used to access serial NOR flash", + "values": [ + { + "name": "SPI0", + "value": 0, + "description": "Use SPI0" + }, + { + "name": "SPI1", + "value": 1, + "description": "Use SPI1" + }, + { + "name": "SPI2", + "value": 2, + "description": "Use SPI2" + }, + { + "name": "SPI3", + "value": 3, + "description": "Use SPI3" + }, + { + "name": "SPI4", + "value": 4, + "description": "Use SPI4" + }, + { + "name": "SPI5", + "value": 5, + "description": "Use SPI5" + }, + { + "name": "SPI6", + "value": 6, + "description": "Use SPI6" + }, + { + "name": "SPI7", + "value": 7, + "description": "Use SPI7" + } + ] + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_xspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_xspi_nor.json new file mode 100644 index 0000000..12a4c16 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/memcfg/opt_word_xspi_nor.json @@ -0,0 +1,318 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "ConfigOption0", + "description": "FlexSPI NOR Configuration Option 0", + "default_value_int": "0xc0000000", + "bitfields": [ + { + "id": "field000-bits0-3", + "width": 4, + "name": "MaxFreq", + "access": "RW", + "description": "The maximum work frequency for specified Flash device", + "values": [ + { + "name": "NoChange", + "value": 0, + "description": "Don't change FlexSPI clock setting" + }, + { + "name": "30Mhz", + "value": 1, + "description": "30MHz" + }, + { + "name": "50Mhz", + "value": 2, + "description": "50MHz" + }, + { + "name": "60Mhz", + "value": 3, + "description": "60MHz" + }, + { + "name": "80Mhz", + "value": 4, + "description": "80MHz" + }, + { + "name": "100Mhz", + "value": 5, + "description": "100MHz" + }, + { + "name": "120Mhz", + "value": 6, + "description": "120MHz" + }, + { + "name": "133Mhz", + "value": 7, + "description": "133MHz" + }, + { + "name": "166Mhz", + "value": 8, + "description": "166MHz" + }, + { + "name": "200Mhz", + "value": 8, + "description": "200MHz" + } + ] + }, + { + "id": "field000-bits4-7", + "width": 4, + "name": "Misc", + "access": "RW", + "description": "Specify miscellaneous mode for selected flash type; Experimental feature, do not use in products, keep it as 0.", + "values": [ + { + "name": "NotEnabled", + "value": 0, + "description": "Miscellaneous mode is not enabled" + }, + { + "name": "Mode0-4-4", + "value": 1, + "description": "Enable 0-4-4 mode for High Random Read performance" + }, + { + "name": "SwappedMode", + "value": 3, + "description": " Data Order Swapped mode (for MXIC OctaFlash only)" + } + ] + }, + { + "id": "field000-bits8-11", + "width": 4, + "name": "QuadEnableType", + "access": "RW", + "description": "Specify the Quad Enable sequence, only applicable for device that only JESD216 compliant, this field is ignored if device support JESD216A or later version. This field will be effective only if device is compliant with JESD216 only (9 longword SDFP table)", + "values": [ + { + "name": "NotConfigure", + "value": 0, + "description": "Not Configured" + }, + { + "name": "Bit6InSR1", + "value": 1, + "description": "QE bit is bit6 in StatusReg1" + }, + { + "name": "Bit1InSR2", + "value": 2, + "description": "QE bit is bit1 in StatusReg2" + }, + { + "name": "Bit7InSR2", + "value": 3, + "description": "QE bit is bit7 in StatusReg2" + }, + { + "name": "Bit1InSR2EnableCmdIs0x31", + "value": 4, + "description": "QE bit is bit1 in StatusReg2, enable command is 0x31" + } + ] + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "CMDPad(s)", + "access": "RW", + "description": "Commands pads for the Flash device (1/4/8), for device that works under 1-1-4,1-4-4,1-1-8 or 1-8-8 mode, CMD pad(s) value is always 0x0, for devices that only support 4-4-4 mode for high performance, CMD pads value is 2, for devices that only support 8-8-8 mode for high performance, CMD pads value is 3", + "values": [ + { + "name": "1", + "value": 0, + "description": "1 bit" + }, + { + "name": "4", + "value": 2, + "description": "4 bits" + }, + { + "name": "8", + "value": 3, + "description": "8 bits" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "Query CMDPad(s)", + "access": "RW", + "description": "Command pads (1/4/8) for the SFDP command", + "values": [ + { + "name": "1", + "value": 0, + "description": "1 bit" + }, + { + "name": "4", + "value": 2, + "description": "4 bits" + }, + { + "name": "8", + "value": 3, + "description": "8 bits" + } + ] + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "Device Detection Type", + "access": "RW", + "description": "SW defined device types used for config block autodetection", + "values": [ + { + "name": "QuadSPI_SDR", + "value": 0, + "description": "QuadSPI SDR" + }, + { + "name": "QuadSPI_DDR", + "value": 1, + "description": "QuadSPI DDR" + }, + { + "name": "HyperFLASH_3V", + "value": 3, + "description": "HyperFLASH 3V" + }, + { + "name": "MXICOPI_DDR", + "value": 4, + "description": "MXICOPI DDR" + }, + { + "name": "MicronOPI_DDR", + "value": 6, + "description": "MicronOPI DDR" + }, + { + "name": "AdestoOPI_DDR", + "value": 8, + "description": "AdestoOPI DDR" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "OptionSize", + "access": "RW", + "description": "Option Size", + "values": [ + { + "name": "OptionSize1", + "value": 0, + "description": "Option words = 1" + }, + { + "name": "OptionSize2", + "value": 1, + "description": "Option words = 2" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "ConfigOption1", + "description": "FlexSPI NOR Flash Configuration Option 1 - Optional", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field004-bits0-7", + "width": 8, + "name": "DummyCycles", + "access": "RW", + "description": "User provided dummy cycles for SDR/DDR read command: 0 - Auto detection, Others - Specified dummy cycles" + }, + { + "id": "field004-bits8-15", + "width": 8, + "name": "StatusOverride", + "access": "RW", + "description": "Override status register value during device mode configuration" + }, + { + "id": "field004-bits16-19", + "width": 4, + "name": "PinMuxGroup", + "access": "RW", + "description": "Pin multiplexer group selection" + }, + { + "id": "field004-bits20-23", + "width": 4, + "name": "DqsPinMuxGroup", + "access": "RW", + "description": "DQS Pin multiplexer group selection" + }, + { + "id": "field004-bits24-27", + "width": 4, + "name": "PinDriveStrength", + "access": "RW", + "description": "The Drive Strength of FlexSPI Pads" + }, + { + "id": "field004-bits28-31", + "width": 4, + "name": "FlashConnection", + "access": "RW", + "description": "Select the FlexSPI Port A/B", + "values": [ + { + "name": "SingleFlashPort_A", + "value": 0, + "description": "Single Flash connected to port A" + }, + { + "name": "ParallelMode", + "value": 1, + "description": "Parallel mode" + }, + { + "name": "SingleFlashPort_B", + "value": 2, + "description": "Single Flash connected to port B" + } + ] + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/pfrc_rules.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/pfrc_rules.yaml new file mode 100644 index 0000000..c1c8924 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/pfrc_rules.yaml @@ -0,0 +1,77 @@ +# Copyright 2020-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +rules: + - req_id: "1.1" + desc: + Never write any non-zero configuration into DCFG_CC_SOCU_NS_PIN before DCFG_CC_SOCU_PIN + contains any valid (non-zero) configuration. + msg: The CMPA.DCFG_CC_SOCU_PIN[0:9] must be set in case the CFPA.DCFG_CC_SOCU_NS_PIN[0:9] is set. + cond: any(True if (((CFPA.DCFG_CC_SOCU_NS_PIN >> index) & 1) and not ((CMPA.DCFG_CC_SOCU_PIN >> index) & 1)) else False for index in range(0, int(10))) + + - req_id: "1.2" + desc: + Never write any non-zero configuration into DCFG_CC_SOCU_NS_DFLT before DCFG_CC_SOCU_DFLT + contains any valid (non-zero) configuration. + msg: The CMPA.DCFG_CC_SOCU_DFLT[0:9] must be set in case the CFPA.DCFG_CC_SOCU_NS_DFLT[0:9] is set. + cond: any(True if (((CFPA.DCFG_CC_SOCU_NS_DFLT >> index) & 1) and not ((CMPA.DCFG_CC_SOCU_DFLT >> index) & 1)) else False for index in range(0, int(10))) + + - req_id: "1.3" + desc: Inverse value (upper 16 bits) of DCFG_CC_SOCU_PIN must be always + valid. Only exception are blank devices where CC_SOCU_PIN contains all + zeros. + msg: Inverse values are generated automatically based on configuration. + cond: CMPA.DCFG_CC_SOCU_PIN != 0 and (~(CMPA.DCFG_CC_SOCU_PIN>>int(16)) & 0xFFFF) != (CMPA.DCFG_CC_SOCU_PIN & 0xFFFF) + + - req_id: "1.4" + desc: Inverse value (upper 16 bits) of DCFG_CC_SOCU_DFLT must be always + valid. Only exception are blank devices where CC_SOCU_DFLT contains all + zeros. + msg: Inverse values are generated automatically based on configuration. + cond: CMPA.DCFG_CC_SOCU_DFLT != 0 and (~(CMPA.DCFG_CC_SOCU_DFLT>>int(16)) & 0xFFFF) != (CMPA.DCFG_CC_SOCU_DFLT & 0xFFFF) + + - req_id: "1.5" + desc: Inverse value (upper 16 bits) of DCFG_CC_SOCU_NS_PIN must be always + valid. Only exception are blank devices where CC_SOCU_xxx contains all + zeros. + msg: Inverse values are generated automatically based on configuration. + cond: CFPA.DCFG_CC_SOCU_NS_PIN != 0 and (~(CFPA.DCFG_CC_SOCU_NS_PIN>>int(16)) & 0xFFFF) != (CFPA.DCFG_CC_SOCU_NS_PIN & 0xFFFF) + + - req_id: "1.6" + desc: Inverse value (upper 16 bits) of DCFG_CC_SOCU_NS_DFLT must be always + valid. Only exception are blank devices where CC_SOCU_DFLT contains all + zeros. + msg: Inverse values are generated automatically based on configuration. + cond: CFPA.DCFG_CC_SOCU_NS_DFLT != 0 and (~(CFPA.DCFG_CC_SOCU_NS_DFLT>>int(16)) & 0xFFFF) != (CFPA.DCFG_CC_SOCU_NS_DFLT & 0xFFFF) + + - req_id: "1.7" + desc: + Do not write invalid PIN/DFLT configuration in CMPA area. Setting PIN bit + to 0 and DFLT bit to 1 for given feature is not allowed + msg: Invalid bit combination. If CMPA.DCFG_CC_SOCU_PIN[0:9] is 0, CMPA.DCFG_CC_SOCU_DFLT[0:9] can't be set to 1! + cond: any(True if (not ((CMPA.DCFG_CC_SOCU_PIN >> index) & 1) and ((CMPA.DCFG_CC_SOCU_DFLT >> index) & 1)) else False for index in range(0, int(10))) + + - req_id: "1.8" + desc: + Do not write invalid PIN/DFLT configuration in CFPA area. Setting PIN bit + to 0 and DFLT bit to 1 for given feature is not allowed + msg: Invalid bit combination. If CFPA.DCFG_CC_SOCU_NS_PIN[0:9] is 0, CFPA.DCFG_CC_SOCU_NS_DFLT[0:9] can't be set to 1! + cond: any(True if (not ((CFPA.DCFG_CC_SOCU_NS_PIN >> index) & 1) and ((CFPA.DCFG_CC_SOCU_NS_DFLT >> index) & 1)) else False for index in range(0, int(10))) + + - req_id: "1.9" + desc: If CMPA DCFG_CC_SOCU_DFLT is used the DCFG_CC_SOCU_PIN must be used also. + msg: The CMPA DCFG_CC_SOCU_PIN is not set, but the DCFG_CC_SOCU_DFLT is defined. + cond: CMPA.DCFG_CC_SOCU_DFLT != 0 and CMPA.DCFG_CC_SOCU_PIN==0 + + - req_id: "1.10" + desc: If CMPA DCFG_CC_SOCU_PIN is used the DCFG_CC_SOCU_DFLT must be used also. + msg: The CMPA DCFG_CC_SOCU_DFLT is not set, but the DCFG_CC_SOCU_PIN is defined. + cond: CMPA.DCFG_CC_SOCU_PIN != 0 and CMPA.DCFG_CC_SOCU_DFLT==0 + + - req_id: "2.1" + desc: + This CMPA_PROG_IN_PROGRESS must be always 0x00000000. Only ROM bootloader + is allowed to write anything to this field. + msg: The CMPA_PROG_IN_PROGRESS must be set to 0! + cond: CFPA.CMPA_PROG_IN_PROGRESS != 0 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/emmc_burn_all.lst b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/emmc_burn_all.lst new file mode 100644 index 0000000..d868d05 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/emmc_burn_all.lst @@ -0,0 +1,38 @@ +uuu_version 1.4.149 + +# @_flash.bin | bootloader, which can extract from wic image +# @_image [_flash.bin] | wic image burn to emmc. + + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flash.bin -scanlimited 0x800000 + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM +SDPS: boot -scanterm -f _flash.bin -scanlimited 0x800000 + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flash.bin -offset 0x57c00 +SDPU: jump -scanlimited 0x800000 +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flash.bin -skipspl -scanterm -scanlimited 0x800000 +SDPV: jump -scanlimited 0x800000 +# } + + +FB: ucmd setenv fastboot_dev mmc +FB: ucmd setenv mmcdev ${emmc_dev} +FB: ucmd mmc dev ${emmc_dev} +FB: flash -raw2sparse all _image +FB: flash -scanterm -scanlimited 0x800000 bootloader _flash.bin +FB: ucmd if env exists emmc_ack; then ; else setenv emmc_ack 0; fi; +FB: ucmd mmc partconf ${emmc_dev} ${emmc_ack} 1 0 +FB: done diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/emmc_burn_loader.lst b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/emmc_burn_loader.lst new file mode 100644 index 0000000..27128fe --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/emmc_burn_loader.lst @@ -0,0 +1,35 @@ +uuu_version 1.2.39 + +# @_flash.bin | bootloader +# @_image [_flash.bin] | image burn to emmc, default is the same as bootloader + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flash.bin + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM +SDPS: boot -f _flash.bin + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flash.bin -offset 0x57c00 +SDPU: jump +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flash.bin -skipspl +SDPV: jump +# } + +FB: ucmd setenv fastboot_dev mmc +FB: ucmd setenv mmcdev ${emmc_dev} +FB: ucmd mmc dev ${emmc_dev} +FB: flash bootloader _image +FB: ucmd if env exists emmc_ack; then ; else setenv emmc_ack 0; fi; +FB: ucmd mmc partconf ${emmc_dev} ${emmc_ack} 1 0 +FB: Done diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/fat_write.lst b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/fat_write.lst new file mode 100644 index 0000000..5949aff --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/fat_write.lst @@ -0,0 +1,12 @@ +uuu_version 1.1.4 + +# @_image | image, which cp to fat partition +# @_device | storage device, mmc\sata +# @_partition | fat partition number, like 1:1 +# @_filename [_image] | file name in target fat partition, only support rootdir now + +FB: ucmd setenv fastboot_buffer ${loadaddr} +FB: download -f _image +FB: ucmd if test ! -n "$fastboot_bytes"; then setenv fastboot_bytes $filesize; else true; fi +FB[-t 20000]: ucmd fatwrite _device _partition ${fastboot_buffer} _filename ${fastboot_bytes} +FB: done diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/fspinand_burn_loader.lst b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/fspinand_burn_loader.lst new file mode 100644 index 0000000..2a31f63 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/fspinand_burn_loader.lst @@ -0,0 +1,36 @@ +uuu_version 1.2.39 + +# @_flexspi.bin | bootloader +# @_image [_flexspi.bin] | image burn to fspinand, default is the same as bootloader + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flexspi.bin + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM, skip QSPI header +SDPS: boot -f _flexspi.bin -skipfhdr + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flexspi.bin -offset 0x10000 -skipfhdr +SDPU: jump +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flexspi.bin -skipspl -skipfhdr +SDPV: jump +# } + +FB: ucmd setenv fastboot_buffer ${loadaddr} +FB: download -f _image + +FB: ucmd if test ! -n "$fastboot_bytes"; then setenv fastboot_bytes $filesize; else true; fi + +FB[-t 60000]: ucmd fspinand init spi-nand0 ${fastboot_buffer} ${fastboot_bytes} + +FB: done diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/nand_burn_loader.lst b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/nand_burn_loader.lst new file mode 100644 index 0000000..d81e3cc --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/nand_burn_loader.lst @@ -0,0 +1,35 @@ +uuu_version 1.2.39 + +# @_flash.bin | bootloader +# @_image [_flash.bin] | image burn to nand, default is the same as bootloader + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flash.bin + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM +SDPS: boot -f _flash.bin + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flash.bin -offset 0x57c00 +SDPU: jump +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flash.bin -skipspl +SDPV: jump +# } + +FB: ucmd setenv fastboot_buffer ${loadaddr} +FB: download -f _image +FB: ucmd if test ! -n "$fastboot_bytes"; then setenv fastboot_bytes $filesize; else true; fi +# Burn image to nandfit partition if needed +FB: ucmd if env exists nandfit_part; then nand erase.part nandfit; nand write ${fastboot_buffer} nandfit ${fastboot_bytes}; else true; fi; +FB: ucmd nandbcb init ${fastboot_buffer} nandboot ${fastboot_bytes} +FB: Done diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/nvme_burn_all.lst b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/nvme_burn_all.lst new file mode 100644 index 0000000..41e6bff --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/nvme_burn_all.lst @@ -0,0 +1,34 @@ +uuu_version 1.4.149 + +# @_flash.bin | bootloader, which can extract from wic image +# @_image [_flash.bin] | wic image burn to emmc. + + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flash.bin -scanlimited 0x800000 + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM +SDPS: boot -scanterm -f _flash.bin -scanlimited 0x800000 + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flash.bin -offset 0x57c00 +SDPU: jump -scanlimited 0x800000 +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flash.bin -skipspl -scanterm -scanlimited 0x800000 +SDPV: jump -scanlimited 0x800000 +# } + +FB: ucmd pci +FB: ucmd nvme scan +FB: ucmd setenv fastboot_buffer ${loadaddr} +FB: write -format "nvme write ${fastboot_buffer} @off @size" -blksz 512 -f _image +FB: done diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/qspi_burn_loader.lst b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/qspi_burn_loader.lst new file mode 100644 index 0000000..4028f18 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/qspi_burn_loader.lst @@ -0,0 +1,43 @@ +uuu_version 1.2.39 + +# @_flexspi.bin | bootloader +# @_image [_flexspi.bin] | image burn to flexspi, default is the same as bootloader + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flexspi.bin + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM, skip QSPI header +SDPS: boot -f _flexspi.bin -skipfhdr + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flexspi.bin -offset 0x10000 -skipfhdr +SDPU: jump +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flexspi.bin -skipspl -skipfhdr +SDPV: jump +# } + +FB: ucmd setenv fastboot_buffer ${loadaddr} +FB: download -f _image + +FB: ucmd if test ! -n "$fastboot_bytes"; then setenv fastboot_bytes $filesize; else true; fi + +# Check Image if include flexspi header +FB: ucmd if qspihdr dump ${fastboot_buffer}; then setenv qspihdr_exist yes; else setenv qspihdr_exist no; fi; + +FB[-t 60000]: ucmd if test ${qspihdr_exist} = yes; then qspihdr init ${fastboot_buffer} ${fastboot_bytes} safe; else true; fi; + +#if uboot can't support qspihdr command, use uboot image to write qspi image, which require image include qspi flash header +FB: ucmd if test ${qspihdr_exist} = no; then sf probe; else true; fi; +FB[-t 40000]: ucmd if test ${qspihdr_exist} = no; then sf erase 0 +${fastboot_bytes}; else true; fi; +FB[-t 20000]: ucmd if test ${qspihdr_exist} = no; then sf write ${fastboot_buffer} 0 ${fastboot_bytes}; else true; fi; +FB: done diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/sd_burn_all.lst b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/sd_burn_all.lst new file mode 100644 index 0000000..ae6ec6d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/sd_burn_all.lst @@ -0,0 +1,35 @@ +uuu_version 1.4.149 + +# @_flash.bin | bootloader, which can extract from wic image +# @_image [_flash.bin] | wic image burn to emmc. + + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flash.bin -scanlimited 0x800000 + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM +SDPS: boot -scanterm -f _flash.bin -scanlimited 0x800000 + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flash.bin -offset 0x57c00 -scanlimited 0x800000 +SDPU: jump -scanlimited 0x800000 +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flash.bin -skipspl -scanterm -scanlimited 0x800000 +SDPV: jump -scanlimited 0x800000 +# } + +FB: ucmd setenv fastboot_dev mmc +FB: ucmd setenv mmcdev ${sd_dev} +FB: ucmd mmc dev ${sd_dev} +FB: flash -raw2sparse all _image +FB: flash -scanterm -scanlimited 0x800000 bootloader _flash.bin +FB: done diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/sd_burn_loader.lst b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/sd_burn_loader.lst new file mode 100644 index 0000000..4acb0c7 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/sd_burn_loader.lst @@ -0,0 +1,33 @@ +uuu_version 1.2.39 + +# @_flash.bin | bootloader +# @_image [_flash.bin] | image burn to emmc, default is the same as bootloader + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flash.bin + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM +SDPS: boot -f _flash.bin + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flash.bin -offset 0x57c00 +SDPU: jump +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flash.bin -skipspl +SDPV: jump +# } + +FB: ucmd setenv fastboot_dev mmc +FB: ucmd setenv mmcdev ${sd_dev} +FB: ucmd mmc dev ${sd_dev} +FB: flash bootloader _image +FB: Done diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/spl_boot.lst b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/spl_boot.lst new file mode 100644 index 0000000..d7f5cec --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/uuu/spl_boot.lst @@ -0,0 +1,26 @@ +uuu_version 1.2.39 + +# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ +SDP: boot -f _flash.bin + +# This command will be run when ROM support stream mode +# i.MX8QXP, i.MX8QM +SDPS[-t 10000]: boot -f _flash.bin + +# These commands will be run when use SPL and will be skipped if no spl +# SDPU will be deprecated. please use SDPV instead of SDPU +# { +SDPU: delay 1000 +SDPU: write -f _flash.bin -offset 0x57c00 +SDPU: jump +SDPU: done +# } + +# These commands will be run when use SPL and will be skipped if no spl +# if (SPL support SDPV) +# { +SDPV: delay 1000 +SDPV: write -f _flash.bin -skipspl +SDPV: jump +SDPV: done +# } diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_full.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_full.json new file mode 100644 index 0000000..6723146 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_full.json @@ -0,0 +1,2075 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "header", + "description": "XMCD Header", + "default_value_int": "0xc0011204", + "bitfields": [ + { + "id": "field000-bits0-11", + "width": 12, + "name": "configurationBlockSize", + "access": "RW", + "description": "Configuration block size including XMCD header itself" + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "configurationBlockType", + "access": "RW", + "description": "Configuration block type: 0 - Simplified, 1 - Full", + "values": [ + { + "name": "SIMPLIFIED", + "value": 0, + "description": "Simplified configuration block type" + }, + { + "name": "FULL", + "value": 1, + "description": "Full configuration block type" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "instance", + "access": "RW", + "description": "SoC defined instances" + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "memoryInterface", + "access": "RW", + "description": "Memory interface: 0 - FlexSPI, 1 - SEMC", + "values": [ + { + "name": "FLEXSPI", + "value": 0, + "description": "FlexSPI memory interface" + }, + { + "name": "SEMC", + "value": 1, + "description": "SEMC memory interface" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "version", + "access": "RW", + "description": "Version, fixed value 0x0" + }, + { + "id": "field000-bits28-31", + "width": 4, + "name": "tag", + "access": "RW", + "description": "Tag, fixed value 0xC" + } + ] + } + ] + }, + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag: fixed value 0x62666366, ascii: 'fcfb'", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version: [31:24] - 'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix", + "default_value_int": "0x100", + "bitfields": [ + { + "id": "field008-bits0-7", + "width": 8, + "name": "bugfix", + "access": "RW", + "description": " bugfix" + }, + { + "id": "field008-bits8-15", + "width": 8, + "name": "major", + "access": "RW", + "description": " major = 1" + }, + { + "id": "field008-bits16-23", + "width": 8, + "name": "minor", + "access": "RW", + "description": " minor" + }, + { + "id": "field008-bits24-31", + "width": 8, + "name": "ascii", + "access": "RW", + "description": " ascii 'V'" + } + ] + }, + { + "id": "Reserved00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field010-bits0-7", + "width": 8, + "name": "readSampleClkSrc", + "access": "RW", + "description": " Read Sample Clock Source", + "values": [ + { + "name": "SAMPLE_CLK_SRC_0", + "value": 0, + "description": "0 - Internal loopback" + }, + { + "name": "SAMPLE_CLK_SRC_1", + "value": 1, + "description": "1 - loopback from DQS pad" + }, + { + "name": "SAMPLE_CLK_SRC_3", + "value": 3, + "description": "3 - Flash provided DQS" + } + ] + } + ] + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3", + "default_value_int": "0x3" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3", + "default_value_int": "0x3" + }, + { + "id": "field013", + "offset_int": "0x13", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address width, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet", + "default_value_int": "0x3" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configuration Enable feature: 1 - Enabled, 0 - Disabled", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "deviceModeCfgEnable", + "access": "RW", + "description": " Device Mode Configuration Enable feature", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "0 - Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "1 - Enabled" + } + ] + } + ] + }, + { + "id": "field015", + "offset_int": "0x15", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type: Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc.", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field015-bits0-7", + "width": 8, + "name": "deviceModeType", + "access": "RW", + "description": " Specify the configuration command type", + "values": [ + { + "name": "GENERIC", + "value": 0, + "description": "0 - Generic" + }, + { + "name": "QUAD_ENABLE", + "value": 1, + "description": "1 - Quad Enable" + }, + { + "name": "SPI_TO_XSPI", + "value": 2, + "description": "2 - SPI-to-xSPI Mode" + }, + { + "name": "XSPI_TO_SPI", + "value": 3, + "description": "3 - xSPI-to-SPI Mode" + } + ] + } + ] + }, + { + "id": "field016", + "offset_int": "0x16", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT number of sequences, [15:8] - LUT sequence index, [31:16] Reserved", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field018-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field018-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Config Command Enable feature: 1 - Enable, 0 - Disable", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "configCmdEnable", + "access": "RW", + "description": " Config Command Enable feature", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "0 - Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "1 - Enabled" + } + ] + } + ] + }, + { + "id": "field021", + "offset_int": "0x21", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeType, configModeType for configCmdSeq[0]", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field021-bits0-7", + "width": 8, + "name": "configModeType_0", + "access": "RW", + "description": " Specify the configure mode type", + "values": [ + { + "name": "GENERIC", + "value": 0, + "description": "0 - Generic" + }, + { + "name": "QUAD_ENABLE", + "value": 1, + "description": "1 - Quad Enable" + }, + { + "name": "SPI_TO_XSPI", + "value": 2, + "description": "2 - SPI-to-xSPI Mode" + }, + { + "name": "XSPI_TO_SPI", + "value": 3, + "description": "3 - xSPI-to-SPI Mode" + } + ] + } + ] + }, + { + "id": "field022", + "offset_int": "0x22", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeType, configModeType for configCmdSeq[1]", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field022-bits0-7", + "width": 8, + "name": "configModeType_1", + "access": "RW", + "description": " Specify the configure mode type", + "values": [ + { + "name": "GENERIC", + "value": 0, + "description": "0 - Generic" + }, + { + "name": "QUAD_ENABLE", + "value": 1, + "description": "1 - Quad Enable" + }, + { + "name": "SPI_TO_XSPI", + "value": 2, + "description": "2 - SPI-to-xSPI Mode" + }, + { + "name": "XSPI_TO_SPI", + "value": 3, + "description": "3 - xSPI-to-SPI Mode" + } + ] + } + ] + }, + { + "id": "field023", + "offset_int": "0x23", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeType, configModeType for configCmdSeq[2]", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field023-bits0-7", + "width": 8, + "name": "configModeType_2", + "access": "RW", + "description": " Specify the configure mode type", + "values": [ + { + "name": "GENERIC", + "value": 0, + "description": "0 - Generic" + }, + { + "name": "QUAD_ENABLE", + "value": 1, + "description": "1 - Quad Enable" + }, + { + "name": "SPI_TO_XSPI", + "value": 2, + "description": "2 - SPI-to-xSPI Mode" + }, + { + "name": "XSPI_TO_SPI", + "value": 3, + "description": "3 - xSPI-to-SPI Mode" + } + ] + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field02C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field02C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved030", + "offset_int": "0x30", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "Reserved040", + "offset_int": "0x40", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Option, see Misc feature bit definitions for more details", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field044-bit0", + "width": 1, + "name": "bit0", + "access": "RW", + "description": " Bit0 - differential clock enable" + }, + { + "id": "field044-bit1", + "width": 1, + "name": "bit1", + "access": "RW", + "description": " Bit1 - CK2 enable" + }, + { + "id": "field044-bit2", + "width": 1, + "name": "bit2", + "access": "RW", + "description": " Bit2 - ParallelModeEnable" + }, + { + "id": "field044-bit3", + "width": 1, + "name": "bit3", + "access": "RW", + "description": " Bit3 - wordAddressableEnable" + }, + { + "id": "field044-bit4", + "width": 1, + "name": "bit4", + "access": "RW", + "description": " Bit4 - Half-Speed access enable" + }, + { + "id": "field044-bit5", + "width": 1, + "name": "bit5", + "access": "RW", + "description": " Bit5 - Pad Settings Override Enable" + }, + { + "id": "field044-bit6", + "width": 1, + "name": "bit6", + "access": "RW", + "description": " Bit6 - DDR Mode Enable" + }, + { + "id": "field044-bit7", + "width": 1, + "name": "bit7", + "access": "RW", + "description": " Bit7 - Pad Settings Override Enable" + }, + { + "id": "field044-bit8", + "width": 1, + "name": "bit8", + "access": "RW", + "description": " Bit8 - Second Pinmux group" + }, + { + "id": "field044-bit9", + "width": 1, + "name": "bit9", + "access": "RW", + "description": " Bit9 - Second DQS pi mux group" + }, + { + "id": "field044-bit10", + "width": 1, + "name": "bit10", + "access": "RW", + "description": " Bit10 - Write Mask Enable" + }, + { + "id": "field044-bit11", + "width": 1, + "name": "bit11", + "access": "RW", + "description": " Bit11 - Write Opt1 Clear" + }, + { + "width": 20 + } + ] + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details", + "default_value_int": "0x3", + "bitfields": [ + { + "id": "field048-bits0-7", + "width": 8, + "name": "deviceType", + "access": "RW", + "description": " Device Type", + "values": [ + { + "name": "SERIAL_NOR", + "value": 1, + "description": "1 - Serial NOR" + }, + { + "name": "SERIAL_NAND", + "value": 2, + "description": "2 - Serial NAND" + }, + { + "name": "SERIAL_RAM", + "value": 3, + "description": "3 - Serial RAM" + } + ] + } + ] + }, + { + "id": "field049", + "offset_int": "0x49", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal", + "default_value_int": "0x1", + "bitfields": [ + { + "id": "field049-bits0-7", + "width": 8, + "name": "sflashPadType", + "access": "RW", + "description": " Serial Flash Pad Type", + "values": [ + { + "name": "SINGLE", + "value": 1, + "description": "1 - Single pad" + }, + { + "name": "DUAL", + "value": 2, + "description": "2 - Dual pads" + }, + { + "name": "QUAD", + "value": 3, + "description": "3 - Quad pads" + }, + { + "name": "OCTAL", + "value": 4, + "description": "4 - Octal pads" + } + ] + } + ] + }, + { + "id": "field04A", + "offset_int": "0x4a", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details", + "default_value_int": "0x0" + }, + { + "id": "field04B", + "offset_int": "0x4b", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field04B-bits0-7", + "width": 8, + "name": "lutCustomSeqEnable", + "access": "RW", + "description": " LUT customization Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "0 - Use pre-defined LUT sequence index and number" + }, + { + "name": "ENABLED", + "value": 1, + "description": "1 - Use LUT sequence parameters provided in this block" + } + ] + } + ] + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved050", + "offset_int": "0x50", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31", + "default_value_int": "0x0" + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field082-bits0-7", + "width": 8, + "name": "busyBitPolarity", + "access": "RW", + "description": " Busy flag polarity", + "values": [ + { + "name": "0", + "value": 0, + "description": "0 - 1 represents busy" + }, + { + "name": "1", + "value": 1, + "description": "1 - 0 represents busy" + } + ] + }, + { + "width":8 + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "lookupTable_0", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "lookupTable_1", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "lookupTable_2", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "lookupTable_3", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "lookupTable_4", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "lookupTable_5", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "lookupTable_6", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "lookupTable_7", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "lookupTable_8", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "lookupTable_9", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "lookupTable_10", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "lookupTable_11", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "lookupTable_12", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "lookupTable_13", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "lookupTable_14", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "lookupTable_15", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "lookupTable_16", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "lookupTable_17", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "lookupTable_18", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "lookupTable_19", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "lookupTable_20", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "lookupTable_21", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "lookupTable_22", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "lookupTable_23", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "lookupTable_24", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "lookupTable_25", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "lookupTable_26", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "lookupTable_27", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "lookupTable_28", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "lookupTable_29", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "lookupTable_30", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "lookupTable_31", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "lookupTable_32", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "lookupTable_33", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "lookupTable_34", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "lookupTable_35", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "lookupTable_36", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "lookupTable_37", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "lookupTable_38", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "lookupTable_39", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "lookupTable_40", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "lookupTable_41", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "lookupTable_42", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "lookupTable_43", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "lookupTable_44", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "lookupTable_45", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "lookupTable_46", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "lookupTable_47", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "lookupTable_48", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "lookupTable_49", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "lookupTable_50", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "lookupTable_51", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "lookupTable_52", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "lookupTable_53", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "lookupTable_54", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "lookupTable_55", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "lookupTable_56", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "lookupTable_57", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "lookupTable_58", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "lookupTable_59", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "lookupTable_60", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "lookupTable_61", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "lookupTable_62", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lookupTable_63", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1B0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Number of sequences, valid number: 1-16" + }, + { + "id": "field1B0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved01B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same", + "default_value_int": "0x0" + }, + { + "id": "Reserved01CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "reserved0_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1D0-bits0-7", + "width": 8, + "name": "serialNorType", + "access": "RW", + "description": " Serial NOR Flash type", + "values": [ + { + "name": "TYPE_0", + "value": 0, + "description": "0" + }, + { + "name": "TYPE_1", + "value": 1, + "description": "1" + }, + { + "name": "TYPE_2", + "value": 2, + "description": "2" + }, + { + "name": "TYPE_3", + "value": 3, + "description": "3" + } + ] + } + ] + }, + { + "id": "field1D1", + "offset_int": "0x1d1", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command", + "default_value_int": "0x0" + }, + { + "id": "field1D2", + "offset_int": "0x1d2", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1D2-bits0-7", + "width": 8, + "name": "halfClkForNonReadCmd", + "access": "RW", + "description": " Half the Serial Clock for non-read command", + "values": [ + { + "name": "FALSE", + "value": 0, + "description": "0" + }, + { + "name": "TRUE", + "value": 1, + "description": "1" + } + ] + } + ] + }, + { + "id": "field1D3", + "offset_int": "0x1d3", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "blockSize", + "description": " Block size", + "default_value_int": "0x0" + }, + { + "id": "Reserved01D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "Reserved2_0", + "deprecated_names": ["reserve2_0"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "Reserved2_1", + "deprecated_names": ["reserve2_1"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "Reserved2_2", + "deprecated_names": ["reserve2_2"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "Reserved2_3", + "deprecated_names": ["reserve2_3"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "Reserved2_4", + "deprecated_names": ["reserve2_4"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "Reserved2_5", + "deprecated_names": ["reserve2_5"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "Reserved2_6", + "deprecated_names": ["reserve2_6"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "Reserved2_7", + "deprecated_names": ["reserve2_7"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "Reserved2_8", + "deprecated_names": ["reserve2_8"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved01FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "Reserved2_9", + "deprecated_names": ["reserve2_9"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved0200", + "offset_int": "0x200", + "reg_width": 32, + "name": "Reserved2_10", + "deprecated_names": ["reserve2_10"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_header.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_header.json new file mode 100644 index 0000000..65fd310 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_header.json @@ -0,0 +1,89 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "header", + "description": "XMCD Header", + "default_value_int": "0xc0000000", + "bitfields": [ + { + "id": "field000-bits0-11", + "width": 12, + "name": "configurationBlockSize", + "access": "RW", + "description": "Configuration block size including XMCD header itself" + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "configurationBlockType", + "access": "RW", + "description": "Configuration block type: 0 - Simplified, 1 - Full", + "values": [ + { + "name": "Simplified", + "value": 0, + "description": "Simplified configuration block type" + }, + { + "name": "Full", + "value": 1, + "description": "Full configuration block type" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "instance", + "access": "RW", + "description": "SoC defined instances" + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "memoryInterface", + "access": "RW", + "description": "Memory interface: 0 - FlexSPI, 1 - SEMC", + "values": [ + { + "name": "FlexSPI", + "value": 0, + "description": "FlexSPI memory interface" + }, + { + "name": "SEMC", + "value": 1, + "description": "SEMC memory interface" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "version", + "access": "RO", + "description": "Version, fixed value 0x0" + }, + { + "id": "field000-bits28-31", + "width": 4, + "name": "tag", + "access": "RO", + "description": "Tag, fixed value 0xC" + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_simplified.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_simplified.json new file mode 100644 index 0000000..83238b0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/flexspi_ram_simplified.json @@ -0,0 +1,312 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "header", + "description": "XMCD Header", + "default_value_int": "0xc001000c", + "bitfields": [ + { + "id": "field000-bits0-11", + "width": 12, + "name": "configurationBlockSize", + "access": "RW", + "description": "Configuration block size including XMCD header itself" + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "configurationBlockType", + "access": "RW", + "description": "Configuration block type: 0 - Simplified, 1 - Full", + "values": [ + { + "name": "Simplified", + "value": 0, + "description": "Simplified configuration block type" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "instance", + "access": "RW", + "description": "SoC defined instances" + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "memoryInterface", + "access": "RW", + "description": "Memory interface: 0 - FlexSPI, 1 - SEMC", + "values": [ + { + "name": "FlexSPI", + "value": 0, + "description": "FlexSPI memory interface" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "version", + "access": "RO", + "description": "Version, fixed value 0x0" + }, + { + "id": "field000-bits28-31", + "width": 4, + "name": "tag", + "access": "RO", + "description": "Tag, fixed value 0xC" + } + ] + } + ] + }, + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "configOption0", + "description": "XMCD Configuration Option 0", + "default_value_int": "0xc1000700", + "bitfields": [ + { + "id": "field004-bits0-7", + "width": 8, + "name": "sizeInMB", + "access": "RW", + "description": "Size in MB: 0 - Auto detection, Others - Size in MB" + }, + { + "id": "field004-bits8-11", + "width": 4, + "name": "maximumFrequency", + "access": "RW", + "description": "Maximum frequency (SoC specific definitions)", + "values": [ + { + "name": "30MHz", + "value": 1, + "description": "Maximum 30MHz" + }, + { + "name": "50MHz", + "value": 2, + "description": "Maximum 50MHz" + }, + { + "name": "60MHz", + "value": 3, + "description": "Maximum 60MHz" + }, + { + "name": "80MHz", + "value": 4, + "description": "Maximum 80MHz" + }, + { + "name": "100MHz", + "value": 5, + "description": "Maximum 100MHz" + }, + { + "name": "120MHz", + "value": 6, + "description": "Maximum 120MHz" + }, + { + "name": "133MHz", + "value": 7, + "description": "Maximum 133MHz" + }, + { + "name": "166MHz", + "value": 8, + "description": "Maximum 166MHz" + }, + { + "name": "200MHz", + "value": 9, + "description": "Maximum 200MHz" + } + ] + }, + { + "id": "field004-bits12-15", + "width": 4, + "name": "misc", + "access": "RW", + "description": "Misc. For HyperRAM: 0 - 1.8V, 1 - 3V", + "values": [ + { + "name": "1.8V", + "value": 0, + "description": "1.8V" + }, + { + "name": "3V", + "value": 1, + "description": "3V" + } + ] + }, + { + "width": 4 + }, + { + "id": "field004-bits20-23", + "width": 4, + "name": "deviceType", + "access": "RW", + "description": "Device type: 0 - HyperRAM, 1 - APMemory", + "values": [ + { + "name": "HYPER_RAM", + "value": 0, + "description": "HyperRAM" + }, + { + "name": "AP_MEMORY", + "value": 1, + "description": "APMemory" + } + ] + }, + { + "id": "field004-bits24-27", + "width": 4, + "name": "optionSize", + "access": "RW", + "description": "Option Size", + "values": [ + { + "name": "1", + "value": 0, + "description": "Option words = 1" + }, + { + "name": "2", + "value": 1, + "description": "Option words = 2" + } + ] + }, + { + "id": "field004-bits28-31", + "width": 4, + "name": "tag", + "access": "RO", + "description": "Tag, fixed value 0xC" + } + ] + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "configOption1", + "description": "XMCD Configuration Option 1", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field008-bits0-3", + "width": 4, + "name": "readDummyCycles", + "access": "RW", + "description": "Read dummy cycles: 0 - Auto detection, Others - Specified dummy cycles" + }, + { + "id": "field008-bits4-7", + "width": 4, + "name": "writeDummyCycles", + "access": "RW", + "description": "Write dummy cycles: 0 - Auto detection, Others - Specified dummy cycles" + }, + { + "width": 8 + }, + { + "id": "field008-bits16-19", + "width": 4, + "name": "pinMuxGroup", + "access": "RW", + "description": "Pin mux group: 0 - Primary Group, 1 - Secondary group", + "values": [ + { + "name": "Primary group", + "value": 0, + "description": "Primary group" + }, + { + "name": "Secondary group", + "value": 1, + "description": "Secondary group" + } + ] + }, + { + "id": "field008-bits20-23", + "width": 4, + "name": "dqsPinmuxGroup", + "access": "RW", + "description": "DQS pin mux group: 0 - Default Group, 1 - Secondary group", + "values": [ + { + "name": "Default group", + "value": 0, + "description": "Default group" + }, + { + "name": "Secondary group", + "value": 1, + "description": "Secondary group" + } + ] + }, + { + "width": 4 + }, + { + "id": "field008-bits28-31", + "width": 4, + "name": "ramConnection", + "access": "RW", + "description": "RAM connection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "PORTA" + }, + { + "name": "PORTB", + "value": 1, + "description": "PORTB" + } + ] + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_full.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_full.json new file mode 100644 index 0000000..3f12ba4 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_full.json @@ -0,0 +1,715 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "header", + "description": "XMCD Header", + "default_value_int": "0xc0101048", + "bitfields": [ + { + "id": "field000-bits0-11", + "width": 12, + "name": "configurationBlockSize", + "access": "RW", + "description": "Configuration block size including XMCD header itself" + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "configurationBlockType", + "access": "RW", + "description": "Configuration block type: 0 - Simplified, 1 - Full", + "values": [ + { + "name": "SIMPLIFIED", + "value": 0, + "description": "Simplified configuration block type" + }, + { + "name": "FULL", + "value": 1, + "description": "Full configuration block type" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "instance", + "access": "RW", + "description": "SoC defined instances" + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "memoryInterface", + "access": "RW", + "description": "Memory interface: 0 - FlexSPI, 1 - SEMC", + "values": [ + { + "name": "FLEXSPI", + "value": 0, + "description": "FlexSPI memory interface" + }, + { + "name": "SEMC", + "value": 1, + "description": "SEMC memory interface" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "version", + "access": "RW", + "description": "Version, fixed value 0x0" + }, + { + "id": "field000-bits28-31", + "width": 4, + "name": "tag", + "access": "RW", + "description": "Tag, fixed value 0xC" + } + ] + } + ] + }, + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 8, + "name": "magicNumber", + "description": "Fixed to 0xA1", + "default_value_int": "0xa1" + }, + { + "id": "field005", + "offset_int": "0x5", + "reg_width": 8, + "name": "version", + "description": "Set to 1 for this implementation", + "default_value_int": "0x1" + }, + { + "id": "field006", + "offset_int": "0x6", + "reg_width": 8, + "name": "configOption", + "description": "Simplified - 0x00, Full - 0xFF - Must be 0xFF in this case", + "default_value_int": "0xff", + "bitfields": [ + { + "id": "field006-bits0-7", + "width": 8, + "name": "configOption", + "access": "RW", + "description": "Config option", + "values": [ + { + "name": "FULL", + "value": 0, + "description": "Full configuration. Must configure all fields." + } + ] + } + ] + }, + { + "id": "field007", + "offset_int": "0x7", + "reg_width": 8, + "name": "clkMhz", + "description": "Set the working frequency in the unit of MHz", + "default_value_int": "0xA6" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "sdramSizeKb", + "description": "Set the memory size of SDRAM CS0 in the unit of kilobytes. Range: 0x0000_0004~0x0040_0000, i.e. 4~4*1024*1024 kilobytes.", + "default_value_int": "0x10000" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "portSize", + "description": "Port size of SDRAM: 0 - 8-bit, 1 - 16-bit, 2 - 32-bit", + "default_value_int": "0x2", + "bitfields": [ + { + "id": "field00C-bits0-7", + "width": 8, + "name": "portSize", + "access": "RW", + "description": "Port size of SDRAM", + "values": [ + { + "name": "8_BIT", + "value": 0, + "description": "8-bit" + }, + { + "name": "16_BIT", + "value": 1, + "description": "16-bit" + }, + { + "name": "32_BIT", + "value": 2, + "description": "32-bit" + } + ] + } + ] + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "pinConfigPull", + "description": "Pull config of the SDRAM GPIO pin: 0 - Forbidden, 1 - Pull up, 2 - Pull down, 3 - No pull, Others - Invalid value", + "default_value_int": "0x3", + "bitfields": [ + { + "id": "field00D-bits0-7", + "width": 8, + "name": "pinConfigPull", + "access": "RW", + "description": "Pull config of the SDRAM GPIO pin", + "values": [ + { + "name": "FORBIDDEN", + "value": 0, + "description": "Forbidden" + }, + { + "name": "PULL_UP", + "value": 1, + "description": "Pull up" + }, + { + "name": "PULL_DOWN", + "value": 2, + "description": "Pull down" + }, + { + "name": "NO_PULL", + "value": 3, + "description": "No pull" + } + ] + } + ] + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "pinConfigDriveStrength", + "description": "Driver config of SDRAM GPIO pin: 0 - High driver, 1 - Normal driver, Others - Invalid value", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field00E-bits0-7", + "width": 8, + "name": "pinConfigDriveStrength", + "access": "RW", + "description": "Driver config of SDRAM GPIO pin", + "values": [ + { + "name": "DRIVE_STRENGTH_HIGH", + "value": 0, + "description": "High driver" + }, + { + "name": "DRIVE_STRENGTH_NORM", + "value": 1, + "description": "Normal driver" + } + ] + } + ] + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "muxRdy", + "description": "SDRAM CSn device selection: 1 - SDRAM CS1, 2 - SDRAM CS2, 3 - SDRAM CS3, Others - Invalid for SDRAM, select other external devices", + "default_value_int": "0x1", + "bitfields": [ + { + "id": "field00F-bits0-7", + "width": 8, + "name": "muxRdy", + "access": "RW", + "description": "SDRAM CSn device selection", + "values": [ + { + "name": "CS1", + "value": 1, + "description": "SDRAM CS1" + }, + { + "name": "CS2", + "value": 2, + "description": "SDRAM CS2" + }, + { + "name": "CS3", + "value": 3, + "description": "SDRAM CS3" + } + ] + } + ] + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "muxCsx0", + "description": "SDRAM CSn device selection: 1 - SDRAM CS1, 2 - SDRAM CS2, 3 - SDRAM CS3, Others - Invalid for SDRAM, select other external devices", + "default_value_int": "0x1", + "bitfields": [ + { + "id": "field010-bits0-7", + "width": 8, + "name": "muxCsx0", + "access": "RW", + "description": "SDRAM CSn device selection", + "values": [ + { + "name": "CSX0_CS1", + "value": 1, + "description": "SDRAM CS1" + }, + { + "name": "CSX0_CS2", + "value": 2, + "description": "SDRAM CS2" + }, + { + "name": "CSX0_CS3", + "value": 3, + "description": "SDRAM CS3" + } + ] + } + ] + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "muxCsx1", + "description": "SDRAM CSn device selection: 1 - SDRAM CS1, 2 - SDRAM CS2, 3 - SDRAM CS3, Others - Invalid for SDRAM, select other external devices", + "default_value_int": "0x1", + "bitfields": [ + { + "id": "field011-bits0-7", + "width": 8, + "name": "muxCsx1", + "access": "RW", + "description": "SDRAM CSn device selection", + "values": [ + { + "name": "CSX1_CS1", + "value": 1, + "description": "SDRAM CS1" + }, + { + "name": "CSX1_CS2", + "value": 2, + "description": "SDRAM CS2" + }, + { + "name": "CSX1_CS3", + "value": 3, + "description": "SDRAM CS3" + } + ] + } + ] + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 8, + "name": "muxCsx2", + "description": "SDRAM CSn device selection: 1 - SDRAM CS1, 2 - SDRAM CS2, 3 - SDRAM CS3, Others - Invalid for SDRAM, select other external devices", + "default_value_int": "0x1", + "bitfields": [ + { + "id": "field012-bits0-7", + "width": 8, + "name": "muxCsx2", + "access": "RW", + "description": "SDRAM CSn device selection", + "values": [ + { + "name": "CSX2_CS1", + "value": 1, + "description": "SDRAM CS1" + }, + { + "name": "CSX2_CS2", + "value": 2, + "description": "SDRAM CS2" + }, + { + "name": "CSX2_CS3", + "value": 3, + "description": "SDRAM CS3" + } + ] + } + ] + }, + { + "id": "field013", + "offset_int": "0x13", + "reg_width": 8, + "name": "muxCsx3", + "description": "SDRAM CSn device selection: 1 - SDRAM CS1, 2 - SDRAM CS2, 3 - SDRAM CS3, Others - Invalid for SDRAM, select other external devices", + "default_value_int": "0x1", + "bitfields": [ + { + "id": "field013-bits0-7", + "width": 8, + "name": "muxCsx3", + "access": "RW", + "description": "SDRAM CSn device selection", + "values": [ + { + "name": "CSX3_CS1", + "value": 1, + "description": "SDRAM CS1" + }, + { + "name": "CSX3_CS2", + "value": 2, + "description": "SDRAM CS2" + }, + { + "name": "CSX3_CS3", + "value": 3, + "description": "SDRAM CS3" + } + ] + } + ] + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 8, + "name": "bank", + "description": "Bank numbers of SDRAM device: 0 - 4 banks, 1 - 2 banks, Others - Invalid value", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "bank", + "access": "RW", + "description": "Bank numbers of SDRAM device", + "values": [ + { + "name": "BANK_4", + "value": 0, + "description": "4 banks" + }, + { + "name": "BANK_2", + "value": 1, + "description": "2 banks" + } + ] + } + ] + }, + { + "id": "field015", + "offset_int": "0x15", + "reg_width": 8, + "name": "burstLen", + "description": "Burst length: 0 - 1, 1 - 2, 2 - 4, 3 - 8, Others - Invalid value", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field015-bits0-7", + "width": 8, + "name": "burstLen", + "access": "RW", + "description": "Burst length", + "values": [ + { + "name": "BURST_LEN_1", + "value": 0, + "description": "1" + }, + { + "name": "BURST_LEN_2", + "value": 1, + "description": "2" + }, + { + "name": "BURST_LEN_4", + "value": 2, + "description": "4" + }, + { + "name": "BURST_LEN_8", + "value": 3, + "description": "8" + } + ] + } + ] + }, + { + "id": "field016", + "offset_int": "0x16", + "reg_width": 8, + "name": "columnAddrBitNum", + "description": "Column address bit number: 0 - 12 bit, 1 - 11 bit, 2 - 10 bit, 3 - 9 bit, 4 - 8 bit, Others - Invalid value", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field016-bits0-7", + "width": 8, + "name": "columnAddrBitNum", + "access": "RW", + "description": "Column address bit number", + "values": [ + { + "name": "COL_ADDR_BIT_NUM_12", + "value": 0, + "description": "12 bit" + }, + { + "name": "COL_ADDR_BIT_NUM_11", + "value": 1, + "description": "11 bit" + }, + { + "name": "COL_ADDR_BIT_NUM_10", + "value": 2, + "description": "10 bit" + }, + { + "name": "COL_ADDR_BIT_NUM_9", + "value": 3, + "description": "9 bit" + }, + { + "name": "COL_ADDR_BIT_NUM_8", + "value": 4, + "description": "8 bit" + } + ] + } + ] + }, + { + "id": "field017", + "offset_int": "0x17", + "reg_width": 8, + "name": "casLatency", + "description": "CAS Latency: 1 - 1, 2 - 2, 3 - 3, Others - Invalid value", + "default_value_int": "0x1", + "bitfields": [ + { + "id": "field017-bits0-7", + "width": 8, + "name": "casLatency", + "access": "RW", + "description": "CAS Latency", + "values": [ + { + "name": "CAS_LATENCY_1", + "value": 1, + "description": "1" + }, + { + "name": "CAS_LATENCY_2", + "value": 2, + "description": "2" + }, + { + "name": "CAS_LATENCY_3", + "value": 3, + "description": "3" + } + ] + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 8, + "name": "writeRecoveryNs", + "description": "Write recovery time in unit of nanosecond. This could help to meet tWR timing requirement by the SDRAM device.", + "default_value_int": "0x0" + }, + { + "id": "field019", + "offset_int": "0x19", + "reg_width": 8, + "name": "refreshRecoveryNs", + "description": "Refresh recovery time in unit of nanosecond. This could help to meet tRFC timing requirement by the SDRAM device.", + "default_value_int": "0x0" + }, + { + "id": "field01A", + "offset_int": "0x1a", + "reg_width": 8, + "name": "act2readwriteNs", + "description": "Act to read/write wait time in unit of nanosecond. This could help to meet tRCD timing requirement by the SDRAM device.", + "default_value_int": "0x0" + }, + { + "id": "field01B", + "offset_int": "0x1b", + "reg_width": 8, + "name": "precharge2actNs", + "description": "Precharge to active wait time in unit of nanosecond. This could help to meet tRP timing requirement by SDRAM device.", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "act2actBanksNs", + "description": "Active to active wait time between two different banks in unit of nanosecond. This could help to meet tRRD timing requirement by the SDRAM device.", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "refresh2refreshNs", + "description": "Auto refresh to auto refresh wait time in unit of nanosecond. This could help to meet tRFC timing requirement by the SDRAM device.", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "selfrefRecoveryNs", + "description": "Self refresh recovery time in unit of nanosecond. This could help to meet tXSR timing requirement by the SDRAM device.", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "act2prechargeMinNs", + "description": "ACT to Precharge minimum time in unit of nanosecond. This could help to meet tRAS(max) timing requirement by the SDRAM device.", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "act2prechargeMaxNs", + "description": "ACT to Precharge maximum time in unit of nanosecond. This could help to meet tRAS(max) timing requirement by the SDRAM device.", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "refreshperiodPerrowNs", + "description": "Refresh timer period in unit of nanosecond. Set to (tREF(ms) * 1000000/rows) value.", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "modeRegister", + "description": "Define the specific mode of operation of SDRAM. Set to the value required by SDRAM device.", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "sdram0Base", + "description": "Base address of SDRAM CS0. Range: 0x8000_0000~0xDFFF_FFFF.", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "sdram1Base", + "description": "Base address of SDRAM CS1. Range: 0x8000_0000~0xDFFF_FFFF. If CS1 is not being used, set the address to 0.", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "sdram2Base", + "description": "Base address of SDRAM CS2. Range: 0x8000_0000~0xDFFF_FFFF. If CS2 is not being used, set the address to 0.", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "sdram3Base", + "description": "Base address of SDRAM CS3. Range: 0x8000_0000~0xDFFF_FFFF. If CS3 is not being used, set the address to 0.", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "sdram1SizeKb", + "description": "Set the memory size of SDRAM CS1 in unit of kbytes. Range: 0x0000_0004~0x0040_0000, i.e. 4~4*1024*1024 kilobytes.", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "sdram2SizeKb", + "description": "Set the memory size of SDRAM CS2 in unit of kbytes. Range: 0x0000_0004~0x0040_0000, i.e. 4~4*1024*1024 kilobytes.", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "sdram3SizeKb", + "description": "Set the memory size of SDRAM CS3 in unit of kbytes. Range: 0x0000_0004~0x0040_0000, i.e. 4~4*1024*1024 kilobytes.", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_header.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_header.json new file mode 100644 index 0000000..a825431 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_header.json @@ -0,0 +1,89 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "header", + "description": "XMCD Header", + "default_value_int": "0xc0000000", + "bitfields": [ + { + "id": "field000-bits0-11", + "width": 12, + "name": "configurationBlockSize", + "access": "RW", + "description": "Configuration block size including XMCD header itself" + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "configurationBlockType", + "access": "RW", + "description": "Configuration block type: 0 - Simplified, 1 - Full", + "values": [ + { + "name": "SIMPLIFIED", + "value": 0, + "description": "Simplified configuration block type" + }, + { + "name": "FULL", + "value": 1, + "description": "Full configuration block type" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "instance", + "access": "RW", + "description": "SoC defined instances" + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "memoryInterface", + "access": "RW", + "description": "Memory interface: 0 - FlexSPI, 1 - SEMC", + "values": [ + { + "name": "FLEXSPI", + "value": 0, + "description": "FlexSPI memory interface" + }, + { + "name": "SEMC", + "value": 1, + "description": "SEMC memory interface" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "version", + "access": "RO", + "description": "Version, fixed value 0x0" + }, + { + "id": "field000-bits28-31", + "width": 4, + "name": "tag", + "access": "RO", + "description": "Tag, fixed value 0xC" + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_simplified.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_simplified.json new file mode 100644 index 0000000..eb865ad --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/semc_sdram_simplified.json @@ -0,0 +1,178 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "header", + "description": "XMCD Header", + "default_value_int": "0xc010000d", + "bitfields": [ + { + "id": "field000-bits0-11", + "width": 12, + "name": "configurationBlockSize", + "access": "RW", + "description": "Configuration block size including XMCD header itself" + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "configurationBlockType", + "access": "RW", + "description": "Configuration block type: 0 - Simplified, 1 - Full", + "values": [ + { + "name": "Simplified", + "value": 0, + "description": "Simplified configuration block type" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "instance", + "access": "RW", + "description": "SoC defined instances" + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "memoryInterface", + "access": "RW", + "description": "Memory interface: 0 - FlexSPI, 1 - SEMC", + "values": [ + { + "name": "SEMC", + "value": 1, + "description": "SEMC memory interface" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "version", + "access": "RO", + "description": "Version, fixed value 0x0" + }, + { + "id": "field000-bits28-31", + "width": 4, + "name": "tag", + "access": "RO", + "description": "Tag, fixed value 0xC" + } + ] + } + ] + }, + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 8, + "access": "RO", + "name": "magicNumber", + "description": "Magic number: Fixed to 0xA1", + "default_value_int": "0xA1" + }, + { + "id": "field005", + "offset_int": "0x5", + "reg_width": 8, + "name": "version", + "description": "Version: Set to 1 for this implementation", + "default_value_int": "0x1" + }, + { + "id": "field006", + "offset_int": "0x6", + "reg_width": 8, + "name": "configOption", + "description": "Config option: Simplified - 0x00, Full - 0xFF; Must be 0x00 in this case", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field006-bits0-7", + "width": 8, + "name": "configOption", + "access": "RW", + "description": "Config option", + "values": [ + { + "name": "Simplified", + "value": 0, + "description": "Simplified configuration" + } + ] + } + ] + }, + { + "id": "field007", + "offset_int": "0x7", + "reg_width": 8, + "name": "clkMhz", + "description": "Set the working frequency in the unit of MHz", + "default_value_int": "0xA6" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "sdramSizeKb", + "description": "Set the memory size of SDRAM CS0 in the unit of kilobytes. Range: 0x0000_0004~0x0040_0000, i.e. 4~4*1024*1024 kilobytes.", + "default_value_int": "0x10000" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "portSize", + "description": "Port size of SDRAM", + "default_value_int": "0x2", + "bitfields": [ + { + "id": "field00C-bits0-7", + "width": 8, + "name": "portSize", + "access": "RW", + "description": "Port size of SDRAM", + "values": [ + { + "name": "8bit", + "value": 0, + "description": "8-bit" + }, + { + "name": "16bit", + "value": 1, + "description": "16-bit" + }, + { + "name": "32bit", + "value": 2, + "description": "32-bit" + } + ] + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/xspi_ram_header.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/xspi_ram_header.json new file mode 100644 index 0000000..fef92e6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/xspi_ram_header.json @@ -0,0 +1,96 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "header", + "description": "XMCD Header", + "default_value_int": "0xc0000000", + "bitfields": [ + { + "id": "field000-bits0-11", + "width": 12, + "name": "configurationBlockSize", + "access": "RW", + "description": "Configuration block size including XMCD header itself" + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "configurationBlockType", + "access": "RW", + "description": "Configuration block type: 0 - Simplified, 1 - Full", + "values": [ + { + "name": "SIMPLIFIED", + "value": 0, + "description": "Simplified configuration block type" + }, + { + "name": "FULL", + "value": 1, + "description": "Full configuration block type" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "instance", + "access": "RW", + "description": "XSPI instance: 0 - XSPI0, 1 - XSPI1", + "values": [ + { + "name": "XSPI0", + "value": 0, + "description": "XSPI0" + }, + { + "name": "XSPI1", + "value": 1, + "description": "XSPI1" + } + ] + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "memoryInterface", + "access": "RW", + "description": "Memory interface: 0 - XSPI", + "values": [ + { + "name": "XSPI", + "value": 0, + "description": "XSPI memory interface" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "version", + "access": "RO", + "description": "Version, fixed value 0x0" + }, + { + "id": "field000-bits28-31", + "width": 4, + "name": "tag", + "access": "RO", + "description": "Tag, fixed value 0xC" + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/xspi_ram_simplified.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/xspi_ram_simplified.json new file mode 100644 index 0000000..2bca2de --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/common/xmcd/xspi_ram_simplified.json @@ -0,0 +1,310 @@ +{ + "cpu": "General", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "header", + "description": "XMCD Header", + "default_value_int": "0xc000000c", + "bitfields": [ + { + "id": "field000-bits0-11", + "width": 12, + "name": "configurationBlockSize", + "access": "RW", + "description": "Configuration block size including XMCD header itself" + }, + { + "id": "field000-bits12-15", + "width": 4, + "name": "configurationBlockType", + "access": "RW", + "description": "Configuration block type: 0 - Simplified, 1 - Full", + "values": [ + { + "name": "SIMPLIFIED", + "value": 0, + "description": "Simplified configuration block type" + } + ] + }, + { + "id": "field000-bits16-19", + "width": 4, + "name": "instance", + "access": "RW", + "description": "XSPI instance: 0 - XSPI0, 1 - XSPI1", + "values": [ + { + "name": "XSPI0", + "value": 0, + "description": "XSPI0" + }, + { + "name": "XSPI1", + "value": 1, + "description": "XSPI1" + } + ] + }, + { + "id": "field000-bits20-23", + "width": 4, + "name": "memoryInterface", + "access": "RW", + "description": "Memory interface: 0 - XSPI", + "values": [ + { + "name": "XSPI", + "value": 0, + "description": "XSPI memory interface" + } + ] + }, + { + "id": "field000-bits24-27", + "width": 4, + "name": "version", + "access": "RO", + "description": "Version, fixed value 0x0" + }, + { + "id": "field000-bits28-31", + "width": 4, + "name": "tag", + "access": "RO", + "description": "Tag, fixed value 0xC" + } + ] + } + ] + }, + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "configOption0", + "description": "XMCD Configuration Option 0", + "default_value_int": "0xc1000700", + "bitfields": [ + { + "id": "field004-bits0-7", + "width": 8, + "name": "sizeInMB", + "access": "RW", + "description": "Size in MB: 0 - Auto detection, Others - Size in MB" + }, + { + "id": "field004-bits8-11", + "width": 4, + "name": "maximumFrequency", + "access": "RW", + "description": "Maximum frequency (SoC specific definitions)", + "values": [ + { + "name": "MAX_FREQ_30_MHZ", + "value": 1, + "description": "Maximum 30MHz" + }, + { + "name": "MAX_FREQ_50_MHZ", + "value": 2, + "description": "Maximum 50MHz" + }, + { + "name": "MAX_FREQ_60_MHZ", + "value": 3, + "description": "Maximum 60MHz" + }, + { + "name": "MAX_FREQ_80_MHZ", + "value": 4, + "description": "Maximum 80MHz" + }, + { + "name": "MAX_FREQ_100_MHZ", + "value": 5, + "description": "Maximum 100MHz" + }, + { + "name": "MAX_FREQ_120_MHZ", + "value": 6, + "description": "Maximum 120MHz" + }, + { + "name": "MAX_FREQ_133_MHZ", + "value": 7, + "description": "Maximum 133MHz" + }, + { + "name": "MAX_FREQ_166_MHZ", + "value": 8, + "description": "Maximum 166MHz" + }, + { + "name": "MAX_FREQ_200_MHZ", + "value": 9, + "description": "Maximum 200MHz" + } + ] + }, + { + "id": "field004-bits12-15", + "width": 4, + "name": "misc", + "access": "RW", + "description": "Misc. For HyperRAM: 0 - Differential clock driven, 1 - Single-ended clock driven", + "values": [ + { + "name": "DIFFERENTIAL_CLOCK", + "value": 0, + "description": "Differential clock driven" + }, + { + "name": "SINGLE_ENDED_CLOCK", + "value": 1, + "description": "Single-ended clock driven" + } + ] + }, + { + "width": 4 + }, + { + "id": "field004-bits20-23", + "width": 4, + "name": "deviceType", + "access": "RW", + "description": "Device type: 0 - HyperRAM, 1 - APMemory", + "values": [ + { + "name": "HYPER_RAM", + "value": 0, + "description": "HyperRAM" + }, + { + "name": "AP_MEMORY", + "value": 1, + "description": "APMemory" + } + ] + }, + { + "id": "field004-bits24-27", + "width": 4, + "name": "optionSize", + "access": "RW", + "description": "Option Size", + "values": [ + { + "name": "OPTION_SIZE_1", + "value": 0, + "description": "Option words = 1" + }, + { + "name": "OPTION_SIZE_2", + "value": 1, + "description": "Option words = 2" + } + ] + }, + { + "id": "field004-bits28-31", + "width": 4, + "name": "tag", + "access": "RO", + "description": "Tag, fixed value 0xC" + } + ] + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "configOption1", + "description": "XMCD Configuration Option 1", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field008-bits0-3", + "width": 4, + "name": "readDummyCycles", + "access": "RW", + "description": "Read dummy cycles: 0 - Auto detection, Others - Specified dummy cycles" + }, + { + "id": "field008-bits4-7", + "width": 4, + "name": "writeDummyCycles", + "access": "RW", + "description": "Write dummy cycles: 0 - Auto detection, Others - Specified dummy cycles" + }, + { + "id": "field008-bits8-14", + "width": 7, + "name": "maxCsLowTime", + "access": "RW", + "description": "Maximum CS Low time - value x 0.1" + }, + { + "id": "field008-bit15", + "width": 1, + "name": "busWidth", + "access": "RW", + "description": "Bus width", + "values": [ + { + "name": "BUS_WIDTH_X8", + "value": 0, + "description": "X8 mode" + }, + { + "name": "BUS_WIDTH_X16", + "value": 1, + "description": "X16 mode" + } + ] + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "id": "field008-bits28-31", + "width": 4, + "name": "ramConnection", + "access": "RW", + "description": "RAM connection configuration", + "values": [ + { + "name": "CONNECTION_PORTA", + "value": 0, + "description": "RAM connection: 0 - PORTA" + } + ] + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/database.yaml new file mode 100644 index 0000000..fbaac4b --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/database.yaml @@ -0,0 +1,28 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw45b41z8 + +revisions: + a0: + features: + pfr: + romcfg: + reg_spec: ifr_romcfg_a0.json + a1: + features: + pfr: + romcfg: + reg_spec: ifr_romcfg_a1.json +latest: a1 + +# General MCU information +info: + spsdk_predecessor_name: k32w1xx + # Web page of MCU representative + web: https://www.nxp.com/products/wireless/multiprotocol-mcus/tri-core-secure-and-ultra-low-power-mcu-for-matter-over-thread-and-bluetooth-le-5-3:K32W148 + + isp: + rom: + interfaces: ["uart", "spi", "i2c"] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a0.json new file mode 100644 index 0000000..ffd1192 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a0.json @@ -0,0 +1,1347 @@ +{ + "cpu": "K32W148", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "FLW_Configuration", + "description": "FLW Configuration", + "offset_int": "0", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field000-bit0", + "name": "RESTORE_FLW_FLAG", + "description": "FLW Configuration", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal, use specified mapping" + }, + { + "name": "UNINITIALIZED", + "value": 1, + "description": "Dual Image Boot is uninitialized" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00001", + "name": "Reserved 0x00001", + "description": "This field is reserved for internal use", + "offset_int": "0x0001", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00004", + "name": "Reserved 0x00004", + "description": "This field is reserved for internal use", + "offset_int": "0x0004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "FLW_REGION_ABASE", + "description": "FLW region, the starting address of the alternative boot image", + "offset_int": "0x0008", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field00C", + "name": "FLW_REGION_BCNT", + "description": "FLW region, the size of the alternative boot image in 32 KB blocks", + "offset_int": "0x000C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00010-0001F", + "description": "Block 00010-0001F" + }, + "registers": [ + { + "id": "field010", + "name": "CONFIGURE_NPX_FOR_NORMAL_BOOT", + "description": "NPX configuration", + "offset_int": "0x0010", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "USE_PRINCE", + "description": "Configure NPX to use PRINCE", + "values": [ + { + "name": "CONFIGURE_NPX", + "value": 0, + "description": "Configure NPX" + }, + { + "name": "NOT_CONFIGURE_NPX", + "value": 1, + "description": "Not configure NPX" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "GLOBAL_LOCK", + "description": "Global lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SYSTEM_LOCK", + "description": "System lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "System lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "System lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "GLOBAL_DECRYPTION", + "description": "Global decryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global decryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global decryption disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "GLOBAL_ENCRYPTION", + "description": "Global encryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global encryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global encryption disable" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "STICKY", + "description": "NPX configuration", + "offset_int": "0x0011", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field011-bit0", + "name": "CONFIGURE_NPX_REQUIRED", + "description": "Configure NPX required", + "values": [ + { + "name": "REQUIRED", + "value": 0, + "description": "NPX config. required; ROM follows normal boot path" + }, + { + "name": "NOT_REQUIRED", + "value": 1, + "description": "Not required, ROM follows Low-power wakeup path" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00012", + "name": "Reserved 0x00012", + "description": "This field is reserved for internal use", + "offset_int": "0x0012", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "NPX_REGIONS_VALID", + "description": "NPX regions valid", + "offset_int": "0x0018", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field01C", + "name": "NPX_REGIONS_COUNT", + "description": "NPX regions count", + "offset_int": "0x001C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00020-0002F", + "description": "Block 00020-0002F" + }, + "registers": [ + { + "id": "field020", + "name": "NPX_REGION_0_VALID", + "description": "NPX region 0 valid", + "offset_int": "0x0020", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field024", + "name": "NPX_REGION_0_START_ADDRESS", + "description": "NPX region 0 start address", + "offset_int": "0x0024", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field028", + "name": "NPX_REGION_0_END_ADDRESS", + "description": "NPX region 0 end address", + "offset_int": "0x0028", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field02C", + "name": "NPX_REGION_1_VALID", + "description": "NPX region 1 valid", + "offset_int": "0x002C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00030-0003F", + "description": "Block 00030-0003F" + }, + "registers": [ + { + "id": "field030", + "name": "NPX_REGION_1_START_ADDRESS", + "description": "NPX region 1 start address", + "offset_int": "0x0030", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field034", + "name": "NPX_REGION_1_END_ADDRESS", + "description": "NPX region 1 end address", + "offset_int": "0x0034", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field038", + "name": "NPX_REGION_2_VALID", + "description": "NPX region 2 valid", + "offset_int": "0x0038", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field03C", + "name": "NPX_REGION_2_START_ADDRESS", + "description": "NPX region 2 start address", + "offset_int": "0x003C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00040-0004F", + "description": "Block 00040-0004F" + }, + "registers": [ + { + "id": "field040", + "name": "NPX_REGION_2_END_ADDRESS", + "description": "NPX region 2 end address", + "offset_int": "0x0040", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field044", + "name": "NPX_REGION_3_VALID", + "description": "NPX region 3 valid", + "offset_int": "0x0044", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field048", + "name": "NPX_REGION_3_START_ADDRESS", + "description": "NPX region 3 start address", + "offset_int": "0x0048", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field04C", + "name": "NPX_REGION_3_END_ADDRESS", + "description": "NPX region 3 end address", + "offset_int": "0x004C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00050-0005F", + "description": "Block 00050-0005F" + }, + "registers": [ + { + "id": "field050", + "name": "BOOT_CONFIGURATION", + "description": "Boot configuration", + "offset_int": "0x0050", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field050-bit0", + "name": "ENABLE_ISP_OR_NOT", + "description": "Enable ISP", + "values": [ + { + "name": "BOOT_CFG_PIN_ENABLED", + "value": 1, + "description": "Boot config pin enabled" + }, + { + "name": "BOOT_CFG_PIN_DIS", + "value": 0, + "description": "Boot config pin disabled" + } + ] + }, + { + "width": 2, + "id": "field050-bits1-2", + "name": "BOOT_SPEED", + "description": "Boot speed", + "values": [ + { + "name": "NORMAL_BOOT_32_MHZ", + "value": 0, + "description": "Normal Boot (32MHz)" + }, + { + "name": "FAST_BOOT_96_MHZ", + "value": 2, + "description": "Fast Boot (96 MHz)" + }, + { + "name": "NORM_BOOT_DFLT1", + "value": 1, + "description": "Normal Boot (default)" + }, + { + "name": "NORM_BOOT_DFLT2", + "value": 3, + "description": "Normal Boot (default)" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "Reserved00051", + "name": "Reserved 0x00051", + "description": "This field is reserved for internal use", + "offset_int": "0x0051", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00060-0006F", + "description": "Block 00060-0006F" + }, + "registers": [ + { + "id": "field060", + "name": "SECURE_BOOT_OPTIONS", + "description": "Secure Boot options", + "offset_int": "0x0060", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field060-bit0", + "name": "SECURE_BOOT_MODE", + "description": "Secure Boot failure mode", + "values": [ + { + "name": "INFINITE_SLEEP", + "value": 0, + "description": "Infinite sleep" + }, + { + "name": "SERIAL_DOWNLOAD", + "value": 1, + "description": "Serial download" + } + ] + }, + { + "width": 1, + "id": "field060-bit1", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN", + "description": "Secure Boot failure alert pin", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot failure alert pin is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot failure alert pin is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field061", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN_SELECTION", + "description": "Secure Boot Failure Alert Pin Selection", + "offset_int": "0x0061", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field061-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field061-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00062", + "name": "Reserved 0x00062", + "description": "This field is reserved for internal use", + "offset_int": "0x0062", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00070-0007F", + "description": "Block 00070-0007F" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00080-0008F", + "description": "Block 00080-0008F" + }, + "registers": [ + { + "id": "field080", + "name": "BOOT_IMAGE_BASE_ADDRESS0", + "description": "Boot Image Base Address 0", + "offset_int": "0x0080", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field084", + "name": "BOOT_IMAGE_BASE_ADDRESS1", + "description": "Boot Image Base Address 1", + "offset_int": "0x0084", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field088", + "name": "BOOT_IMAGE_BASE_ADDRESS2", + "description": "Boot Image Base Address 2", + "offset_int": "0x0088", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field08C", + "name": "BOOT_IMAGE_BASE_ADDRESS3", + "description": "Boot Image Base Address 3", + "offset_int": "0x008C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00090-0009F", + "description": "Block 00090-0009F" + }, + "registers": [ + { + "id": "field090", + "name": "BOOT_IMAGE_BASE_ADDRESS4", + "description": "Boot Image Base Address 4", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field094", + "name": "BOOT_IMAGE_BASE_ADDRESS5", + "description": "Boot Image Base Address 5", + "offset_int": "0x0094", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field098", + "name": "BOOT_IMAGE_BASE_ADDRESS6", + "description": "Boot Image Base Address 6", + "offset_int": "0x0098", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field09C", + "name": "BOOT_IMAGE_BASE_ADDRESS7", + "description": "Boot Image Base Address 7", + "offset_int": "0x009C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 000A0-000AF", + "description": "Block 000A0-000AF" + }, + "registers": [ + { + "id": "field0A0", + "name": "BOOT_IMAGE_BASE_ADDRESS8", + "description": "Boot Image Base Address 8", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0A4", + "name": "BOOT_IMAGE_BASE_ADDRESS9", + "description": "Boot Image Base Address 9", + "offset_int": "0x00A4", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0A8", + "name": "BOOT_IMAGE_BASE_ADDRESS10", + "description": "Boot Image Base Address 10", + "offset_int": "0x00A8", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0AC", + "name": "BOOT_IMAGE_BASE_ADDRESS11", + "description": "Boot Image Base Address 11", + "offset_int": "0x00AC", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 000B0-000BF", + "description": "Block 000B0-000BF" + }, + "registers": [ + { + "id": "field0B0", + "name": "BOOT_IMAGE_BASE_ADDRESS12", + "description": "Boot Image Base Address 12", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0B4", + "name": "BOOT_IMAGE_BASE_ADDRESS13", + "description": "Boot Image Base Address 13", + "offset_int": "0x00B4", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0B8", + "name": "BOOT_IMAGE_BASE_ADDRESS14", + "description": "Boot Image Base Address 14", + "offset_int": "0x00B8", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0BC", + "name": "BOOT_IMAGE_BASE_ADDRESS15", + "description": "Boot Image Base Address 15", + "offset_int": "0x00BC", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 000C0-000CF", + "description": "Block 000C0-000CF" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000D0-000DF", + "description": "Block 000D0-000DF" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000E0-000EF", + "description": "Block 000E0-000EF" + }, + "registers": [ + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000F0-000FF", + "description": "Block 000F0-000FF" + }, + "registers": [ + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00100-0010F", + "description": "Block 00100-0010F" + }, + "registers": [ + { + "id": "field100", + "name": "PERIPHERALS_ENABLE", + "description": "Peripherals Enable", + "offset_int": "0x0100", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field100-bit0", + "name": "LPUART1_PERIPHERAL_FOR_ISP", + "description": "LPUART1 peripheral for ISP", + "values": [ + { + "name": "LPUART1_DISABLED", + "value": 0, + "description": "LPUART1 disabled" + }, + { + "name": "LUPART1_ENABLED", + "value": 1, + "description": "LUPART1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit1", + "name": "LPI2C1_PERIPHERAL_FOR_ISP", + "description": "LPI2C1 peripheral for ISP", + "values": [ + { + "name": "LPI2C1_DISABLED", + "value": 0, + "description": "LPI2C1 disabled" + }, + { + "name": "LPI2C1_ENABLED", + "value": 1, + "description": "LPI2C1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit2", + "name": "LPSPI1_PERIPHERAL_FOR_ISP", + "description": "LPSPI1 peripheral for ISP", + "values": [ + { + "name": "LPSPI1_DISABLED", + "value": 0, + "description": "LPSPI1 disabled" + }, + { + "name": "LPSPI1_ENABLED", + "value": 1, + "description": "LPSPI1 enabled" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "Reserved00101", + "name": "Reserved 0x00101", + "description": "This field is reserved for internal use", + "offset_int": "0x0101", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "field104", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Peripheral Detection Timeout", + "offset_int": "0x0104", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "Reserved00106", + "name": "Reserved 0x00106", + "description": "This field is reserved for internal use", + "offset_int": "0x0106", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field108", + "name": "I2C_SLAVE_ADDRESS", + "description": "I2C Slave Address", + "offset_int": "0x0108", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "Reserved00109", + "name": "Reserved 0x00109", + "description": "This field is reserved for internal use", + "offset_int": "0x0109", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00110-0011F", + "description": "Block 00110-0011F" + }, + "registers": [ + { + "id": "field110", + "name": "SSS_LOADABLE_FW_ENTRY_ADDRESS", + "description": "SSS_Loadable_FW_Entry_Address", + "offset_int": "0x0110", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a1.json new file mode 100644 index 0000000..4f9a3e7 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a1.json @@ -0,0 +1,1422 @@ +{ + "cpu": "K32W148", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "FLW_Configuration", + "description": "FLW Configuration", + "offset_int": "0", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field000-bit0", + "name": "RESTORE_FLW_FLAG", + "description": "FLW Configuration", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal, use specified mapping" + }, + { + "name": "UNINITIALIZED", + "value": 1, + "description": "Dual Image Boot is uninitialized" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00001", + "name": "Reserved 0x00001", + "description": "This field is reserved for internal use", + "offset_int": "0x0001", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00004", + "name": "Reserved 0x00004", + "description": "This field is reserved for internal use", + "offset_int": "0x0004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "FLW_REGION_ABASE", + "description": "FLW region, the starting address of the alternative boot image", + "offset_int": "0x0008", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field00C", + "name": "FLW_REGION_BCNT", + "description": "FLW region, the size of the alternative boot image in 32 KB blocks", + "offset_int": "0x000C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00010-0001F", + "description": "Block 00010-0001F" + }, + "registers": [ + { + "id": "field010", + "name": "CONFIGURE_NPX_FOR_NORMAL_BOOT", + "description": "NPX configuration", + "offset_int": "0x0010", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "USE_PRINCE", + "description": "Configure NPX to use PRINCE", + "values": [ + { + "name": "CONFIGURE_NPX", + "value": 0, + "description": "Configure NPX" + }, + { + "name": "NOT_CONFIGURE_NPX", + "value": 1, + "description": "Not configure NPX" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "GLOBAL_LOCK", + "description": "Global lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SYSTEM_LOCK", + "description": "System lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "System lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "System lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "GLOBAL_DECRYPTION", + "description": "Global decryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global decryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global decryption disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "GLOBAL_ENCRYPTION", + "description": "Global encryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global encryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global encryption disable" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "STICKY", + "description": "NPX configuration", + "offset_int": "0x0011", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field011-bit0", + "name": "CONFIGURE_NPX_REQUIRED", + "description": "Configure NPX required", + "values": [ + { + "name": "REQUIRED", + "value": 0, + "description": "NPX config. required; ROM follows normal boot path" + }, + { + "name": "NOT_REQUIRED", + "value": 1, + "description": "Not required, ROM follows Low-power wakeup path" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00012", + "name": "Reserved 0x00012", + "description": "This field is reserved for internal use", + "offset_int": "0x0012", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "NPX_REGIONS_VALID", + "description": "NPX regions valid", + "offset_int": "0x0018", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field01C", + "name": "NPX_REGIONS_COUNT", + "description": "NPX regions count", + "offset_int": "0x001C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00020-0002F", + "description": "Block 00020-0002F" + }, + "registers": [ + { + "id": "field020", + "name": "NPX_REGION_0_VALID", + "description": "NPX region 0 valid", + "offset_int": "0x0020", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field024", + "name": "NPX_REGION_0_START_ADDRESS", + "description": "NPX region 0 start address", + "offset_int": "0x0024", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field028", + "name": "NPX_REGION_0_END_ADDRESS", + "description": "NPX region 0 end address", + "offset_int": "0x0028", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field02C", + "name": "NPX_REGION_1_VALID", + "description": "NPX region 1 valid", + "offset_int": "0x002C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00030-0003F", + "description": "Block 00030-0003F" + }, + "registers": [ + { + "id": "field030", + "name": "NPX_REGION_1_START_ADDRESS", + "description": "NPX region 1 start address", + "offset_int": "0x0030", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field034", + "name": "NPX_REGION_1_END_ADDRESS", + "description": "NPX region 1 end address", + "offset_int": "0x0034", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field038", + "name": "NPX_REGION_2_VALID", + "description": "NPX region 2 valid", + "offset_int": "0x0038", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field03C", + "name": "NPX_REGION_2_START_ADDRESS", + "description": "NPX region 2 start address", + "offset_int": "0x003C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00040-0004F", + "description": "Block 00040-0004F" + }, + "registers": [ + { + "id": "field040", + "name": "NPX_REGION_2_END_ADDRESS", + "description": "NPX region 2 end address", + "offset_int": "0x0040", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field044", + "name": "NPX_REGION_3_VALID", + "description": "NPX region 3 valid", + "offset_int": "0x0044", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field048", + "name": "NPX_REGION_3_START_ADDRESS", + "description": "NPX region 3 start address", + "offset_int": "0x0048", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field04C", + "name": "NPX_REGION_3_END_ADDRESS", + "description": "NPX region 3 end address", + "offset_int": "0x004C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00050-0005F", + "description": "Block 00050-0005F" + }, + "registers": [ + { + "id": "field050", + "name": "BOOT_CONFIGURATION", + "description": "Boot configuration", + "offset_int": "0x0050", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field050-bit0", + "name": "ENABLE_ISP_OR_NOT", + "description": "Enable ISP", + "values": [ + { + "name": "ENABLED", + "value": 1, + "description": "Boot config pin enabled" + }, + { + "name": "DISABLED", + "value": 0, + "description": "Boot config pin disabled" + } + ] + }, + { + "width": 2, + "id": "field050-bits1-2", + "name": "BOOT_SPEED", + "description": "Boot speed", + "values": [ + { + "name": "NORMAL_BOOT_32_MHZ", + "value": 0, + "description": "Normal Boot (32MHz)" + }, + { + "name": "FAST_BOOT_96_MHZ", + "value": 2, + "description": "Fast Boot (96 MHz)" + }, + { + "name": "NORM_BOOT_DFLT1", + "value": 1, + "description": "Normal Boot (default)" + }, + { + "name": "NORM_BOOT_DFLT2", + "value": 3, + "description": "Normal Boot (default)" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "Reserved00051", + "name": "Reserved 0x00051", + "description": "This field is reserved for internal use", + "offset_int": "0x0051", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00060-0006F", + "description": "Block 00060-0006F" + }, + "registers": [ + { + "id": "field060", + "name": "SECURE_BOOT_OPTIONS", + "description": "Secure Boot options", + "offset_int": "0x0060", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field060-bit0", + "name": "SECURE_BOOT_MODE", + "description": "Secure Boot failure mode", + "values": [ + { + "name": "INFINITE_SLEEP", + "value": 0, + "description": "Infinite sleep" + }, + { + "name": "SERIAL_DOWNLOAD", + "value": 1, + "description": "Serial download" + } + ] + }, + { + "width": 1, + "id": "field060-bit1", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN", + "description": "Secure Boot failure alert pin", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot failure alert pin is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot failure alert pin is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field061", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN_SELECTION", + "description": "Secure Boot Failure Alert Pin Selection", + "offset_int": "0x0061", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field061-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field061-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00062", + "name": "Reserved 0x00062", + "description": "This field is reserved for internal use", + "offset_int": "0x0062", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00070-0007F", + "description": "Block 00070-0007F" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00080-0008F", + "description": "Block 00080-0008F" + }, + "registers": [ + { + "id": "field080", + "name": "BOOT_IMAGE_BASE_ADDRESS3", + "description": "Boot Image Base Address 3", + "offset_int": "0x0080", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00090-0009F", + "description": "Block 00090-0009F" + }, + "registers": [ + { + "id": "field090", + "name": "BOOT_IMAGE_BASE_ADDRESS2", + "description": "Boot Image Base Address 2", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000A0-000AF", + "description": "Block 000A0-000AF" + }, + "registers": [ + { + "id": "field0A0", + "name": "BOOT_IMAGE_BASE_ADDRESS1", + "description": "Boot Image Base Address 1", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000B0-000BF", + "description": "Block 000B0-000BF" + }, + "registers": [ + { + "id": "field0B0", + "name": "BOOT_IMAGE_BASE_ADDRESS0", + "description": "Boot Image Base Address 0", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000C0-000CF", + "description": "Block 000C0-000CF" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000D0-000DF", + "description": "Block 000D0-000DF" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000E0-000EF", + "description": "Block 000E0-000EF" + }, + "registers": [ + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000F0-000FF", + "description": "Block 000F0-000FF" + }, + "registers": [ + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00100-0010F", + "description": "Block 00100-0010F" + }, + "registers": [ + { + "id": "field100", + "name": "PERIPHERALS_ENABLE", + "description": "Peripherals Enable", + "offset_int": "0x0100", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field100-bit0", + "name": "LPUART1_PERIPHERAL_FOR_ISP", + "description": "LPUART1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPUART1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPUART1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit1", + "name": "LPI2C1_PERIPHERAL_FOR_ISP", + "description": "LPI2C1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPI2C1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPI2C1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit2", + "name": "LPSPI1_PERIPHERAL_FOR_ISP", + "description": "LPSPI1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPSPI1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPSPI1 enabled" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "Reserved00101", + "name": "Reserved 0x00101", + "description": "This field is reserved for internal use", + "offset_int": "0x0101", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "field104", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Peripheral Detection Timeout", + "offset_int": "0x0104", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "Reserved00106", + "name": "Reserved 0x00106", + "description": "This field is reserved for internal use", + "offset_int": "0x0106", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field108", + "name": "I2C_SLAVE_ADDRESS", + "description": "I2C Slave Address", + "offset_int": "0x0108", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "Reserved00109", + "name": "Reserved 0x00109", + "description": "This field is reserved for internal use", + "offset_int": "0x0109", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00110-0011F", + "description": "Block 00110-0011F" + }, + "registers": [ + { + "id": "field110", + "name": "SSS_LOADABLE_FW_ENTRY_ADDRESS", + "description": "SSS_Loadable_FW_Entry_Address", + "offset_int": "0x0110", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00120-0012F", + "description": "Block 00120-0012F" + }, + "registers": [ + { + "id": "field120", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION", + "description": "Secure Hash based image verification feature", + "offset_int": "0x0120", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "bitfields": [ + { + "width": 32, + "id": "field120-bits0-31", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION_CONFIG", + "description": "Secure Hash based image verification feature", + "values": [ + { + "name": "DISABLED", + "value": 4294967295, + "description": "Disabled (ECDSA based verification will be used)." + }, + { + "name": "ENABLED", + "value": 1213415752, + "description": "Enabled ('HASH')." + } + ] + } + ] + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a2.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a2.json new file mode 100644 index 0000000..72a3782 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/k32w148/ifr_romcfg_a2.json @@ -0,0 +1,1422 @@ +{ + "cpu": "K32W148", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "FLW_Configuration", + "description": "FLW Configuration", + "offset_int": "0", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field000-bit0", + "name": "RESTORE_FLW_FLAG", + "description": "FLW Configuration", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal, use specified mapping" + }, + { + "name": "UNINITIALIZED", + "value": 1, + "description": "Dual Image Boot is uninitialized" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00001", + "name": "Reserved 0x00001", + "description": "This field is reserved for internal use", + "offset_int": "0x0001", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00004", + "name": "Reserved 0x00004", + "description": "This field is reserved for internal use", + "offset_int": "0x0004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "FLW_REGION_ABASE", + "description": "FLW region, the starting address of the alternative boot image", + "offset_int": "0x0008", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field00C", + "name": "FLW_REGION_BCNT", + "description": "FLW region, the size of the alternative boot image in 32 KB blocks", + "offset_int": "0x000C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00010-0001F", + "description": "Block 00010-0001F" + }, + "registers": [ + { + "id": "field010", + "name": "CONFIGURE_NPX_FOR_NORMAL_BOOT", + "description": "NPX configuration", + "offset_int": "0x0010", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "USE_PRINCE", + "description": "Configure NPX to use PRINCE", + "values": [ + { + "name": "CONFIGURE_NPX", + "value": 0, + "description": "Configure NPX" + }, + { + "name": "NOT_CONFIGURE_NPX", + "value": 1, + "description": "Not configure NPX" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "GLOBAL_LOCK", + "description": "Global lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SYSTEM_LOCK", + "description": "System lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "System lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "System lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "GLOBAL_DECRYPTION", + "description": "Global decryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global decryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global decryption disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "GLOBAL_ENCRYPTION", + "description": "Global encryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global encryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global encryption disable" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "STICKY", + "description": "NPX configuration", + "offset_int": "0x0011", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field011-bit0", + "name": "CONFIGURE_NPX_REQUIRED", + "description": "Configure NPX required", + "values": [ + { + "name": "REQUIRED", + "value": 0, + "description": "NPX config. required; ROM follows normal boot path" + }, + { + "name": "NOT_REQUIRED", + "value": 1, + "description": "Not required, ROM follows Low-power wakeup path" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00012", + "name": "Reserved 0x00012", + "description": "This field is reserved for internal use", + "offset_int": "0x0012", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "NPX_REGIONS_VALID", + "description": "NPX regions valid", + "offset_int": "0x0018", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field01C", + "name": "NPX_REGIONS_COUNT", + "description": "NPX regions count", + "offset_int": "0x001C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00020-0002F", + "description": "Block 00020-0002F" + }, + "registers": [ + { + "id": "field020", + "name": "NPX_REGION_0_VALID", + "description": "NPX region 0 valid", + "offset_int": "0x0020", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field024", + "name": "NPX_REGION_0_START_ADDRESS", + "description": "NPX region 0 start address", + "offset_int": "0x0024", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field028", + "name": "NPX_REGION_0_END_ADDRESS", + "description": "NPX region 0 end address", + "offset_int": "0x0028", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field02C", + "name": "NPX_REGION_1_VALID", + "description": "NPX region 1 valid", + "offset_int": "0x002C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00030-0003F", + "description": "Block 00030-0003F" + }, + "registers": [ + { + "id": "field030", + "name": "NPX_REGION_1_START_ADDRESS", + "description": "NPX region 1 start address", + "offset_int": "0x0030", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field034", + "name": "NPX_REGION_1_END_ADDRESS", + "description": "NPX region 1 end address", + "offset_int": "0x0034", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field038", + "name": "NPX_REGION_2_VALID", + "description": "NPX region 2 valid", + "offset_int": "0x0038", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field03C", + "name": "NPX_REGION_2_START_ADDRESS", + "description": "NPX region 2 start address", + "offset_int": "0x003C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00040-0004F", + "description": "Block 00040-0004F" + }, + "registers": [ + { + "id": "field040", + "name": "NPX_REGION_2_END_ADDRESS", + "description": "NPX region 2 end address", + "offset_int": "0x0040", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field044", + "name": "NPX_REGION_3_VALID", + "description": "NPX region 3 valid", + "offset_int": "0x0044", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field048", + "name": "NPX_REGION_3_START_ADDRESS", + "description": "NPX region 3 start address", + "offset_int": "0x0048", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field04C", + "name": "NPX_REGION_3_END_ADDRESS", + "description": "NPX region 3 end address", + "offset_int": "0x004C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00050-0005F", + "description": "Block 00050-0005F" + }, + "registers": [ + { + "id": "field050", + "name": "BOOT_CONFIGURATION", + "description": "Boot configuration", + "offset_int": "0x0050", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field050-bit0", + "name": "ENABLE_ISP_OR_NOT", + "description": "Enable ISP", + "values": [ + { + "name": "ENABLED", + "value": 1, + "description": "Boot config pin enabled" + }, + { + "name": "DISABLED", + "value": 0, + "description": "Boot config pin disabled" + } + ] + }, + { + "width": 2, + "id": "field050-bits1-2", + "name": "BOOT_SPEED", + "description": "Boot speed", + "values": [ + { + "name": "NORMAL_BOOT_32_MHZ", + "value": 0, + "description": "Normal Boot (32MHz)" + }, + { + "name": "FAST_BOOT_96_MHZ", + "value": 2, + "description": "Fast Boot (96 MHz)" + }, + { + "name": "NORM_BOOT_DFLT1", + "value": 1, + "description": "Normal Boot (default)" + }, + { + "name": "NORM_BOOT_DFLT2", + "value": 3, + "description": "Normal Boot (default)" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "Reserved00051", + "name": "Reserved 0x00051", + "description": "This field is reserved for internal use", + "offset_int": "0x0051", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00060-0006F", + "description": "Block 00060-0006F" + }, + "registers": [ + { + "id": "field060", + "name": "SECURE_BOOT_FAILURE_OPTIONS", + "description": "Secure Boot Failure Options", + "offset_int": "0x0060", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field060-bit0", + "name": "SECURE_BOOT_FAILURE_MODE", + "description": "Secure Boot failure mode", + "values": [ + { + "name": "INFINITE_SLEEP", + "value": 0, + "description": "Infinite sleep" + }, + { + "name": "SERIAL_DOWNLOAD", + "value": 1, + "description": "Serial download" + } + ] + }, + { + "width": 1, + "id": "field060-bit1", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN", + "description": "Secure Boot failure alert pin", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot failure alert pin is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot failure alert pin is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field061", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN_SELECTION", + "description": "Secure Boot Failure Alert Pin Selection", + "offset_int": "0x0061", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field061-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field061-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00062", + "name": "Reserved 0x00062", + "description": "This field is reserved for internal use", + "offset_int": "0x0062", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00070-0007F", + "description": "Block 00070-0007F" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00080-0008F", + "description": "Block 00080-0008F" + }, + "registers": [ + { + "id": "field080", + "name": "BOOT_IMAGE_BASE_ADDRESS3", + "description": "Boot Image Base Address 3", + "offset_int": "0x0080", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00090-0009F", + "description": "Block 00090-0009F" + }, + "registers": [ + { + "id": "field090", + "name": "BOOT_IMAGE_BASE_ADDRESS2", + "description": "Boot Image Base Address 2", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000A0-000AF", + "description": "Block 000A0-000AF" + }, + "registers": [ + { + "id": "field0A0", + "name": "BOOT_IMAGE_BASE_ADDRESS1", + "description": "Boot Image Base Address 1", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000B0-000BF", + "description": "Block 000B0-000BF" + }, + "registers": [ + { + "id": "field0B0", + "name": "BOOT_IMAGE_BASE_ADDRESS0", + "description": "Boot Image Base Address 0", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000C0-000CF", + "description": "Block 000C0-000CF" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000D0-000DF", + "description": "Block 000D0-000DF" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000E0-000EF", + "description": "Block 000E0-000EF" + }, + "registers": [ + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000F0-000FF", + "description": "Block 000F0-000FF" + }, + "registers": [ + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00100-0010F", + "description": "Block 00100-0010F" + }, + "registers": [ + { + "id": "field100", + "name": "PERIPHERALS_ENABLE", + "description": "Peripherals Enable", + "offset_int": "0x0100", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field100-bit0", + "name": "LPUART1_PERIPHERAL_FOR_ISP", + "description": "LPUART1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPUART1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPUART1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit1", + "name": "LPI2C1_PERIPHERAL_FOR_ISP", + "description": "LPI2C1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPI2C1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPI2C1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit2", + "name": "LPSPI1_PERIPHERAL_FOR_ISP", + "description": "LPSPI1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPSPI1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPSPI1 enabled" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "Reserved00101", + "name": "Reserved 0x00101", + "description": "This field is reserved for internal use", + "offset_int": "0x0101", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "field104", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Peripheral Detection Timeout", + "offset_int": "0x0104", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "Reserved00106", + "name": "Reserved 0x00106", + "description": "This field is reserved for internal use", + "offset_int": "0x0106", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field108", + "name": "I2C_SLAVE_ADDRESS", + "description": "I2C Slave Address", + "offset_int": "0x0108", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "Reserved00109", + "name": "Reserved 0x00109", + "description": "This field is reserved for internal use", + "offset_int": "0x0109", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00110-0011F", + "description": "Block 00110-0011F" + }, + "registers": [ + { + "id": "field110", + "name": "ELE_LOADABLE_FW_ENTRY_ADDRESS", + "description": "ELE loadable firmware resides address", + "offset_int": "0x0110", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00120-0012F", + "description": "Block 00120-0012F" + }, + "registers": [ + { + "id": "field120", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION", + "description": "Secure Hash based image verification feature", + "offset_int": "0x0120", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "bitfields": [ + { + "width": 32, + "id": "field120-bits0-31", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION_CONFIG", + "description": "Secure Hash based image verification feature", + "values": [ + { + "name": "DISABLED", + "value": 4294967295, + "description": "Disabled (ECDSA based verification will be used)." + }, + { + "name": "ENABLED", + "value": 1213415752, + "description": "Enabled ('HASH')." + } + ] + } + ] + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z5/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z5/database.yaml new file mode 100644 index 0000000..b05f2d0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z5/database.yaml @@ -0,0 +1,36 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw45b41z8 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x80000" + external: false + flash-logical-window_ns: + start_int: "0x1000000" + size_int: "0x80000" + external: false + mirror_of: internal-flash_ns + internal-flash_s: + start_int: "0x10000000" + size_int: "0x80000" + external: false + mirror_of: internal-flash_ns + flash-logical-window_s: + start_int: "0x11000000" + size_int: "0x80000" + external: false + mirror_of: internal-flash_ns + system-tcm: + start_int: "0x20000000" + size_int: "0x1C000" + external: false + code-tcm: + start_int: "0x4000000" + size_int: "0x4000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/database.yaml new file mode 100644 index 0000000..acc4955 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/database.yaml @@ -0,0 +1,211 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + a1: + features: + pfr: + romcfg: + reg_spec: ifr_romcfg_a1.json + a2: + features: + pfr: + romcfg: + reg_spec: ifr_romcfg_a2.json + +latest: a2 + +# General MCU information +info: + purpose: Wireless Connectivity MCUs + spsdk_predecessor_name: kw45xx + # Web page of MCU representative + web: https://www.nxp.com/products/wireless/bluetooth-low-energy/32-bit-bluetooth-5-3-long-range-mcus-with-can-fd-and-lin-bus-options-arm-cortex-m33-core:KW45 + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x100000" + external: false + flash-logical-window_ns: + start_int: "0x1000000" + size_int: "0x100000" + external: false + mirror_of: internal-flash_ns + internal-flash_s: + start_int: "0x10000000" + size_int: "0x100000" + external: false + mirror_of: internal-flash_ns + flash-logical-window_s: + start_int: "0x11000000" + size_int: "0x100000" + external: false + mirror_of: internal-flash_ns + system-tcm: + start_int: "0x20000000" + size_int: "0x1C000" + external: false + code-tcm: + start_int: "0x4000000" + size_int: "0x4000" + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "can", "spi", "i2c"] + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x3000_4000 + size: 0x1000 + + # ======== Fuses description section ======== + fuses: + tool: blhost_legacy + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert21] + rot_type: "cert_block_21" + + # ======== Blhost section ======== + blhost: + sub_features: [overridden_properties] + overridden_properties: + 10: "verify-erase" + 20: "boot-status" + 21: "loadable-fw-version" + 22: "fuse-program-voltage" + + # ======== DAT section ======== + dat: + sub_features: ["famode_cert"] + socc: 5 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + dat_is_using_sha256_always: True + famode_cert: [famode, famode_nxp] # List of Fault analysis Mode certificates (names of MBI classes) + famode_cfg_defaults: # Dictionary of default values of standard MBI members for FAmode image + outputImageExecutionTarget: xip + inputImageFile: generated + outputImageExecutionAddress: 0 + firmwareVersion: 0 + enableTrustZone: false + trustZonePresetFile: null + manifestDigestHashAlgorithm: sha256 + outputImageSubtype: main + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinImageSubType + - Mbi_ExportMixinAppTrustZone + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinImageSubType + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestDigest + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + famode: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifest + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + famode_nxp: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifest + - Mbi_MixinImageSubType + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + nxp_signed_xip: + image_type: SIGNED_XIP_NXP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestDigest + - Mbi_MixinImageSubType + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + nxp_signed: nxp_signed_xip + + # ======== PFR section ======== + pfr: + sub_features: [romcfg, cmactable] + romcfg: + address: 0x200_0000 + reg_spec: ifr_romcfg_a0.json + cmactable: + address: 0x0200_4000 + reg_spec: ifr_cmactable_a0.json + # ======== Secure binary v3.1 section ======== + sb31: + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - loadHashLocking + - fillMemory + - checkFwVersion + + # ======== TrustZone section ======== + tz: + reg_spec: tz.json + + # ======== EL2GO TP section ======== + el2go_tp: + el2go_name: KW + prov_method: fw_data_split + use_additional_data: true + fw_read_address: 0x3001_0000 + ignored_otp_ranges: [31, 32] + validation_method: max_so_size=1024 + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/fuses.json new file mode 100644 index 0000000..6e572e4 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/fuses.json @@ -0,0 +1,1015 @@ +{ + "cpu": "KW45B41Z8", + "groups": [ + { + "group": { + "name": "Config", + "description": "Miscellaneous security configuration" + }, + "registers": [ + { + "id": "fuse10", + "name": "LIFECYCLE", + "description": "Lifecycle state.", + "index_int": "0x000A", + "default_value_int": "0x0007", + "reg_width": 8, + "bitfields": [ + { + "width": 8, + "id": "fuse10-bits-0-7", + "name": "LIFECYCLE", + "description": "Lifecycle state.", + "values": [ + { + "name": "BLANK", + "value": 0, + "description": "Blank" + }, + { + "name": "OEM_OPEN", + "value": 7, + "description": "OEM Open" + }, + { + "name": "OEM_SEC_CLOSED", + "value": 15, + "description": "OEM Secure World Closed." + }, + { + "name": "OEM_CLOSED", + "value": 31, + "description": "OEM Closed" + }, + { + "name": "OEM_LOCKED", + "value": 159, + "description": "OEM Locked" + }, + { + "name": "OEM_RETURN", + "value": 63, + "description": "OEM Return" + } + ] + } + ] + }, + { + "id": "fuse11", + "name": "DBG_EN_LOCK", + "description": "Debug Enable Lock.", + "index_int": "0x000B", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse11-bit-0", + "name": "DBG_EN_LOCK", + "description": "Debug Enable Lock.", + "values": [ + { + "name": "Open", + "value": 0, + "description": "The debug access control registers remain open when jumping to customer code." + }, + { + "name": "Locked", + "value": 1, + "description": "The debug access control registers are write-locked before jumping to customer code." + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse12", + "name": "DBG_AUTH_DIS", + "description": "Debug Authentication Disabled.", + "index_int": "0x000C", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse12-bit-0", + "name": "DBG_AUTH_DIS", + "description": "Debug Authentication Disabled.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Debug Authentication enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Debug Authentication disabled" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse13", + "name": "TZM_EN", + "description": "Trust Zone Mode Enable.", + "index_int": "0x000D", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse13-bit-0", + "name": "TZM_EN", + "description": "Trust Zone Mode Enable.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "TZ-M is disabled by default." + }, + { + "name": "Enabled", + "value": 1, + "description": "TZ-M is enabled" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse17", + "name": "SERIAL_DIS", + "description": "Serial Download Disabled.", + "index_int": "0x0011", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse17-bit-0", + "name": "SERIAL_DIS", + "description": "Serial Download Disabled.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "ISP path is enabled." + }, + { + "name": "Disabled", + "value": 1, + "description": "ISP path is disabled." + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse18", + "name": "WAKEUP_DIS", + "description": "Wakeup Disabled.", + "index_int": "0x0012", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse18-bit-0", + "name": "WAKEUP_DIS", + "description": "Wakeup Disabled.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Boot-ROM low power wakeup is enabled." + }, + { + "name": "Disabled", + "value": 1, + "description": "Boot-ROM low power wakeup is disabled." + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse19", + "name": "CUST_PROD_OEMFW_AUTH_PUK_REVOKE", + "description": "Key revocation indicators of CUST_PROD_OEMFW_AUTH_PUK.", + "index_int": "0x0013", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse19-bit-0", + "name": "REVOKE_ROTK_1", + "description": "Revokes Root of Trust Key 1.", + "values": [ + { + "name": "KEEP", + "value": 0, + "description": "Keep the RoTK 1." + }, + { + "name": "REVOKE", + "value": 1, + "description": "Revoke the RoTK 1." + } + ] + }, + { + "width": 1, + "id": "fuse19-bit-1", + "name": "REVOKE_ROTK_2", + "description": "Revokes Root of Trust Key 2.", + "values": [ + { + "name": "KEEP", + "value": 0, + "description": "Keep the RoTK 2." + }, + { + "name": "REVOKE", + "value": 1, + "description": "Revoke the RoTK 2." + } + ] + }, + { + "width": 1, + "id": "fuse19-bit-2", + "name": "REVOKE_ROTK_3", + "description": "Revokes Root of Trust Key 3.", + "values": [ + { + "name": "KEEP", + "value": 0, + "description": "Keep the RoTK 3." + }, + { + "name": "REVOKE", + "value": 1, + "description": "Revoke the RoTK 3." + } + ] + }, + { + "width": 1, + "id": "fuse19-bit-3", + "name": "REVOKE_ROTK_4", + "description": "Revokes Root of Trust Key 4.", + "values": [ + { + "name": "KEEP", + "value": 0, + "description": "Keep the RoTK 4." + }, + { + "name": "REVOKE", + "value": 1, + "description": "Revoke the RoTK 4." + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse21", + "name": "DBG_AUTH_VU", + "description": "These Debug Authentication Vendor Usage fuses are used by customers to restrict debug certificates. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0015", + "reg_width": 16 + }, + { + "id": "fuse22", + "name": "IMG_KEY_REVOKE", + "description": "These fuses are used to revoke image signing keys separately from root keys. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0016", + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Keys", + "description": "Authentication and encryption keys" + }, + "registers": [ + { + "id": "fuse31", + "name": "CUST_PROD_OEMFW_AUTH_PUK", + "description": "RoTKTH (customer trusted root key) typically used for CM33 main flash image authentication.", + "index_int": "0x001F", + "individual_write_lock": "implicit", + "reg_width": 256 + }, + { + "id": "fuse32", + "name": "CUST_PROD_OEMFW_ENC_SK", + "description": "256-bit encryption key used to protect confidentiality of OEM firmware. Typically required for firmware updates using sb3 (SB3KDK).", + "index_int": "0x0020", + "access": "WO", + "individual_write_lock": "implicit", + "reg_width": 256 + }, + { + "id": "fuse33", + "name": "OEM_Enablement_Token", + "description": "RoTKTH (root key hash) typically used for radio firmware authentication. (if valid token is intended to be used by programming SECURE_PHANTOM_CONFIG fuse)", + "index_int": "0x0021", + "individual_write_lock": "implicit", + "reg_width": 256 + } + ] + }, + { + "group": { + "name": "DCFG_CC_SOCU", + "description": "Debug authentication configuration" + }, + "registers": [ + { + "id": "fuse34", + "name": "DCFG_CC_SOCU_L1", + "description": "Debug authentication configuration for level 1 customer.\nCombinations of PIN and DFLT bits and resulting restriction level:\n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product.\n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate.\n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected.\n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "index_int": "0x0022", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 1, + "id": "fuse34-bit-0", + "name": "PIN_NIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined non-secure domain of CM33.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-1", + "name": "PIN_DBGEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CM33.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-2", + "name": "PIN_SPNIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined secure domain of CM33.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-3", + "name": "PIN_SPIDEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CM33.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-4", + "name": "PIN_NBU_DBGEN", + "description": "Controls debugging of NBU (radio, CM3) core.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-5", + "name": "PIN_FA_CMD_EN", + "description": "Controls whether DM-AP command, Set FA Mode (command code: 0x06), can be issued through after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-6", + "name": "PIN_ISP_CMD_EN", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-7", + "name": "PIN_ME_CMD_EN", + "description": "Controls whether DM-AP command, Bulk Erase (command code: 0x02), can be issued through after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-8", + "name": "DFLT_NIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined non-secure domain of CM33.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-9", + "name": "DFLT_DBGEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CM33.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-10", + "name": "DFLT_SPNIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined secure domain of CM33.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-11", + "name": "DFLT_SPIDEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CM33.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-12", + "name": "DFLT_NBU_DBGEN", + "description": "Controls debugging of NBU (radio, CM3).", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-13", + "name": "DFLT_FA_CMD_EN", + "description": "Controls whether DM-AP command, Set FA Mode (command code: 0x06), can be issued through after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-14", + "name": "DFLT_ISP_CMD_EN", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-15", + "name": "DFLT_ME_CMD_EN", + "description": "Controls whether DM-AP command, Bulk Erase (command code: 0x02), can be issued through after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-16", + "name": "UUID_CHECK", + "description": "UUID matching required flag.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "UUID matching not required." + }, + { + "name": "Enabled", + "value": 1, + "description": "UUID matching required" + } + ] + }, + { + "width": 15 + } + ] + }, + { + "id": "fuse35", + "name": "DCFG_CC_SOCU_L2", + "description": "Debug authentication configuration for level 2 customer.\nCombinations of PIN and DFLT bits and resulting restriction level:\n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product.\n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate.\n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected.\n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "index_int": "0x0023", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 1, + "id": "fuse35-bit-0", + "name": "PIN_NIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined non-secure domain of CM33.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-1", + "name": "PIN_DBGEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CM33.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-2", + "name": "PIN_SPNIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined secure domain of CM33.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-3", + "name": "PIN_SPIDEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CM33.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-4", + "name": "PIN_NBU_DBGEN", + "description": "Controls debugging of NBU (radio, CM3) core.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-5", + "name": "PIN_FA_CMD_EN", + "description": "Controls whether DM-AP command, Set FA Mode (command code: 0x06), can be issued through after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-6", + "name": "PIN_ISP_CMD_EN", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-7", + "name": "PIN_ME_CMD_EN", + "description": "Controls whether DM-AP command, Bulk Erase (command code: 0x02), can be issued through after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-8", + "name": "DFLT_NIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined non-secure domain of CM33.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-9", + "name": "DFLT_DBGEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CM33.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-10", + "name": "DFLT_SPNIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined secure domain of CM33.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-11", + "name": "DFLT_SPIDEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CM33.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-12", + "name": "DFLT_NBU_DBGEN", + "description": "Controls debugging of NBU (radio, CM3).", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-13", + "name": "DFLT_FA_CMD_EN", + "description": "Controls whether DM-AP command, Set FA Mode (command code: 0x06), can be issued through after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-14", + "name": "DFLT_ISP_CMD_EN", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-15", + "name": "DFLT_ME_CMD_EN", + "description": "Controls whether DM-AP command, Bulk Erase (command code: 0x02), can be issued through after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-16", + "name": "UUID_CHECK", + "description": "UUID matching required flag.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "UUID matching not required." + }, + { + "name": "Enabled", + "value": 1, + "description": "UUID matching required" + } + ] + }, + { + "width": 15 + } + ] + } + ] + }, + { + "group": { + "name": "Versions", + "description": "Version counters for various software components in SoC" + }, + "registers": [ + { + "id": "fuse36", + "name": "SOC_VER_CNT", + "description": "Version counter for various software components in SoC. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0024", + "reg_width": 512 + }, + { + "id": "fuse37", + "name": "CM33_S_VER_CNT", + "description": "Monotonic counter indicating the minimum secure OEM CM33 firmware version. The number of set bits equals the version number. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0025", + "reg_width": 64 + }, + { + "id": "fuse38", + "name": "CM33_NS_VER_CNT", + "description": "Monotonic counter indicating the minimum non-secure OEM CM33 firmware version. The number of set bits equals the version number. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0026", + "reg_width": 256 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_cmactable_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_cmactable_a0.json new file mode 100644 index 0000000..ea2c352 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_cmactable_a0.json @@ -0,0 +1,188 @@ +{ + "cpu": "KW45B41Z8", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "Hash update needed", + "description": "Hash update needed", + "offset_int": "0", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128, + "bitfields": [ + { + "width": 32, + "id": "field000-bits-0-31", + "name": "Hash update needed", + "description": "Hash update needed", + "values": [ + { + "name": "NO HASH UPDATE NEEDED", + "value": 0, + "description": "No hash update needed" + }, + { + "name": "HASH UPDATE NEEDED", + "value": 4294967295, + "description": "Hash update needed" + } + ] + }, + { + "width": 32 + }, + { + "width": 32 + }, + { + "width": 32 + } + ] + }, + { + "id": "field016", + "name": "CMAC_APP", + "description": "16 byte CMAC for application image. Hash of main flash primary boot image data at 0x0 OR Hash of Image data at ABASE (if FLW is enabled)", + "offset_int": "0x10", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128 + }, + { + "id": "field032", + "name": "Hash update needed 1", + "description": "Hash update needed 1", + "offset_int": "0x20", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128, + "bitfields": [ + { + "width": 32, + "id": "field032-bits-0-31", + "name": "Hash update needed 1", + "description": "Hash update needed 1", + "values": [ + { + "name": "NO HASH UPDATE NEEDED", + "value": 0, + "description": "No hash update needed" + }, + { + "name": "HASH UPDATE NEEDED", + "value": 4294967295, + "description": "Hash update needed" + } + ] + }, + { + "width": 32 + }, + { + "width": 32 + }, + { + "width": 32 + } + ] + }, + { + "id": "field048", + "name": "CMAC_FALLBACK", + "description": "16 byte CMAC for fallback image. Hash of fallback image data (if “Image 1 Base Address” field in IFR0 page0 is not 0xFFFFFFFF)", + "offset_int": "0x30", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128 + }, + { + "id": "field064", + "name": "Hash update needed 2", + "description": "Hash update needed", + "offset_int": "0x40", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128, + "bitfields": [ + { + "width": 32, + "id": "field064-bits-0-31", + "name": "Hash update needed", + "description": "Hash update needed", + "values": [ + { + "name": "NO HASH UPDATE NEEDED", + "value": 0, + "description": "No hash update needed" + }, + { + "name": "HASH UPDATE NEEDED", + "value": 4294967295, + "description": "Hash update needed" + } + ] + }, + { + "width": 32 + }, + { + "width": 32 + }, + { + "width": 32 + } + ] + }, + { + "id": "field0080", + "name": "CMAC_NBU", + "description": "Hash of radio (NBU) flash image data", + "offset_int": "0x50", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128 + }, + { + "id": "Reserved0096", + "name": "Reserved0096", + "description": "This field is reserved for internal use", + "offset_int": "0x60", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "none", + "is_reserved": true, + "reg_width": 128, + "bitfields": [ + { + "width": 32 + }, + { + "width": 32 + }, + { + "width": 32 + }, + { + "width": 32 + } + ] + }, + { + "id": "Reserved00112", + "name": "Reserved00112", + "description": "This field is reserved for internal use", + "offset_int": "0x70", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "none", + "is_reserved": true, + "reg_width": 128 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a0.json new file mode 100644 index 0000000..3a02368 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a0.json @@ -0,0 +1,1382 @@ +{ + "cpu": "KW45B41Z8", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "FLW_Configuration", + "description": "FLW Configuration", + "offset_int": "0", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field000-bit0", + "name": "RESTORE_FLW_FLAG", + "description": "FLW Configuration", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal, use specified mapping" + }, + { + "name": "UNINITIALIZED", + "value": 1, + "description": "Dual Image Boot is uninitialized" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00001", + "name": "Reserved 0x00001", + "description": "This field is reserved for internal use", + "offset_int": "0x0001", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00004", + "name": "Reserved 0x00004", + "description": "This field is reserved for internal use", + "offset_int": "0x0004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "FLW_REGION_ABASE", + "description": "FLW region, the starting address of the alternative boot image", + "offset_int": "0x0008", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field00C", + "name": "FLW_REGION_BCNT", + "description": "FLW region, the size of the alternative boot image in 32 KB blocks", + "offset_int": "0x000C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00010-0001F", + "description": "Block 00010-0001F" + }, + "registers": [ + { + "id": "field010", + "name": "CONFIGURE_NPX_FOR_NORMAL_BOOT", + "description": "NPX configuration", + "offset_int": "0x0010", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "USE_PRINCE", + "description": "Configure NPX to use PRINCE", + "values": [ + { + "name": "CONFIGURE_NPX", + "value": 0, + "description": "Configure NPX" + }, + { + "name": "NOT_CONFIGURE_NPX", + "value": 1, + "description": "Not configure NPX" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "GLOBAL_LOCK", + "description": "Global lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SYSTEM_LOCK", + "description": "System lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "System lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "System lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "GLOBAL_DECRYPTION", + "description": "Global decryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global decryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global decryption disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "GLOBAL_ENCRYPTION", + "description": "Global encryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global encryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global encryption disable" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "STICKY", + "description": "NPX configuration", + "offset_int": "0x0011", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field011-bit0", + "name": "CONFIGURE_NPX_REQUIRED", + "description": "Configure NPX required", + "values": [ + { + "name": "REQUIRED", + "value": 0, + "description": "NPX config. required; ROM follows normal boot path" + }, + { + "name": "NOT_REQUIRED", + "value": 1, + "description": "Not required, ROM follows Low-power wakeup path" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00012", + "name": "Reserved 0x00012", + "description": "This field is reserved for internal use", + "offset_int": "0x0012", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "NPX_REGIONS_VALID", + "description": "NPX regions valid", + "offset_int": "0x0018", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field01C", + "name": "NPX_REGIONS_COUNT", + "description": "NPX regions count", + "offset_int": "0x001C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00020-0002F", + "description": "Block 00020-0002F" + }, + "registers": [ + { + "id": "field020", + "name": "NPX_REGION_0_VALID", + "description": "NPX region 0 valid", + "offset_int": "0x0020", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field024", + "name": "NPX_REGION_0_START_ADDRESS", + "description": "NPX region 0 start address", + "offset_int": "0x0024", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field028", + "name": "NPX_REGION_0_END_ADDRESS", + "description": "NPX region 0 end address", + "offset_int": "0x0028", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field02C", + "name": "NPX_REGION_1_VALID", + "description": "NPX region 1 valid", + "offset_int": "0x002C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00030-0003F", + "description": "Block 00030-0003F" + }, + "registers": [ + { + "id": "field030", + "name": "NPX_REGION_1_START_ADDRESS", + "description": "NPX region 1 start address", + "offset_int": "0x0030", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field034", + "name": "NPX_REGION_1_END_ADDRESS", + "description": "NPX region 1 end address", + "offset_int": "0x0034", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field038", + "name": "NPX_REGION_2_VALID", + "description": "NPX region 2 valid", + "offset_int": "0x0038", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field03C", + "name": "NPX_REGION_2_START_ADDRESS", + "description": "NPX region 2 start address", + "offset_int": "0x003C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00040-0004F", + "description": "Block 00040-0004F" + }, + "registers": [ + { + "id": "field040", + "name": "NPX_REGION_2_END_ADDRESS", + "description": "NPX region 2 end address", + "offset_int": "0x0040", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field044", + "name": "NPX_REGION_3_VALID", + "description": "NPX region 3 valid", + "offset_int": "0x0044", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field048", + "name": "NPX_REGION_3_START_ADDRESS", + "description": "NPX region 3 start address", + "offset_int": "0x0048", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field04C", + "name": "NPX_REGION_3_END_ADDRESS", + "description": "NPX region 3 end address", + "offset_int": "0x004C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00050-0005F", + "description": "Block 00050-0005F" + }, + "registers": [ + { + "id": "field050", + "name": "BOOT_CONFIGURATION", + "description": "Boot configuration", + "offset_int": "0x0050", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field050-bit0", + "name": "ENABLE_ISP_OR_NOT", + "description": "Enable ISP", + "values": [ + { + "name": "BOOT_CFG_PIN_ENABLED", + "value": 1, + "description": "Boot config pin enabled" + }, + { + "name": "BOOT_CFG_PIN_DIS", + "value": 0, + "description": "Boot config pin disabled" + } + ] + }, + { + "width": 2, + "id": "field050-bits1-2", + "name": "BOOT_SPEED", + "description": "Boot speed", + "values": [ + { + "name": "NORMAL_BOOT_32_MHZ", + "value": 0, + "description": "Normal Boot (32MHz)" + }, + { + "name": "FAST_BOOT_96_MHZ", + "value": 2, + "description": "Fast Boot (96 MHz)" + }, + { + "name": "NORM_BOOT_DFLT1", + "value": 1, + "description": "Normal Boot (default)" + }, + { + "name": "NORM_BOOT_DFLT2", + "value": 3, + "description": "Normal Boot (default)" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "Reserved00051", + "name": "Reserved 0x00051", + "description": "This field is reserved for internal use", + "offset_int": "0x0051", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00060-0006F", + "description": "Block 00060-0006F" + }, + "registers": [ + { + "id": "field060", + "name": "SECURE_BOOT_OPTIONS", + "description": "Secure Boot options", + "offset_int": "0x0060", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field060-bit0", + "name": "SECURE_BOOT_MODE", + "description": "Secure Boot failure mode", + "values": [ + { + "name": "INFINITE_SLEEP", + "value": 0, + "description": "Infinite sleep" + }, + { + "name": "SERIAL_DOWNLOAD", + "value": 1, + "description": "Serial download" + } + ] + }, + { + "width": 1, + "id": "field060-bit1", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN", + "description": "Secure Boot failure alert pin", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot failure alert pin is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot failure alert pin is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field061", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN_SELECTION", + "description": "Secure Boot Failure Alert Pin Selection", + "offset_int": "0x0061", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field061-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field061-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00062", + "name": "Reserved 0x00062", + "description": "This field is reserved for internal use", + "offset_int": "0x0062", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00070-0007F", + "description": "Block 00070-0007F" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00080-0008F", + "description": "Block 00080-0008F" + }, + "registers": [ + { + "id": "field080", + "name": "BOOT_IMAGE_BASE_ADDRESS0", + "description": "Boot Image Base Address 0", + "offset_int": "0x0080", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field084", + "name": "BOOT_IMAGE_BASE_ADDRESS1", + "description": "Boot Image Base Address 1", + "offset_int": "0x0084", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field088", + "name": "BOOT_IMAGE_BASE_ADDRESS2", + "description": "Boot Image Base Address 2", + "offset_int": "0x0088", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field08C", + "name": "BOOT_IMAGE_BASE_ADDRESS3", + "description": "Boot Image Base Address 3", + "offset_int": "0x008C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00090-0009F", + "description": "Block 00090-0009F" + }, + "registers": [ + { + "id": "field090", + "name": "BOOT_IMAGE_BASE_ADDRESS4", + "description": "Boot Image Base Address 4", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field094", + "name": "BOOT_IMAGE_BASE_ADDRESS5", + "description": "Boot Image Base Address 5", + "offset_int": "0x0094", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field098", + "name": "BOOT_IMAGE_BASE_ADDRESS6", + "description": "Boot Image Base Address 6", + "offset_int": "0x0098", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field09C", + "name": "BOOT_IMAGE_BASE_ADDRESS7", + "description": "Boot Image Base Address 7", + "offset_int": "0x009C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 000A0-000AF", + "description": "Block 000A0-000AF" + }, + "registers": [ + { + "id": "field0A0", + "name": "BOOT_IMAGE_BASE_ADDRESS8", + "description": "Boot Image Base Address 8", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0A4", + "name": "BOOT_IMAGE_BASE_ADDRESS9", + "description": "Boot Image Base Address 9", + "offset_int": "0x00A4", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0A8", + "name": "BOOT_IMAGE_BASE_ADDRESS10", + "description": "Boot Image Base Address 10", + "offset_int": "0x00A8", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0AC", + "name": "BOOT_IMAGE_BASE_ADDRESS11", + "description": "Boot Image Base Address 11", + "offset_int": "0x00AC", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 000B0-000BF", + "description": "Block 000B0-000BF" + }, + "registers": [ + { + "id": "field0B0", + "name": "BOOT_IMAGE_BASE_ADDRESS12", + "description": "Boot Image Base Address 12", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0B4", + "name": "BOOT_IMAGE_BASE_ADDRESS13", + "description": "Boot Image Base Address 13", + "offset_int": "0x00B4", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0B8", + "name": "BOOT_IMAGE_BASE_ADDRESS14", + "description": "Boot Image Base Address 14", + "offset_int": "0x00B8", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field0BC", + "name": "BOOT_IMAGE_BASE_ADDRESS15", + "description": "Boot Image Base Address 15", + "offset_int": "0x00BC", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 000C0-000CF", + "description": "Block 000C0-000CF" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000D0-000DF", + "description": "Block 000D0-000DF" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000E0-000EF", + "description": "Block 000E0-000EF" + }, + "registers": [ + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000F0-000FF", + "description": "Block 000F0-000FF" + }, + "registers": [ + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00100-0010F", + "description": "Block 00100-0010F" + }, + "registers": [ + { + "id": "field100", + "name": "PERIPHERALS_ENABLE", + "description": "Peripherals Enable", + "offset_int": "0x0100", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field100-bit0", + "name": "LPUART1_PERIPHERAL_FOR_ISP", + "description": "LPUART1 peripheral for ISP", + "values": [ + { + "name": "LPUART1_DISABLED", + "value": 0, + "description": "LPUART1 disabled" + }, + { + "name": "LUPART1_ENABLED", + "value": 1, + "description": "LUPART1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit1", + "name": "LPI2C1_PERIPHERAL_FOR_ISP", + "description": "LPI2C1 peripheral for ISP", + "values": [ + { + "name": "LPI2C1_DISABLED", + "value": 0, + "description": "LPI2C1 disabled" + }, + { + "name": "LPI2C1_ENABLED", + "value": 1, + "description": "LPI2C1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit2", + "name": "LPSPI1_PERIPHERAL_FOR_ISP", + "description": "LPSPI1 peripheral for ISP", + "values": [ + { + "name": "LPSPI1_DISABLED", + "value": 0, + "description": "LPSPI1 disabled" + }, + { + "name": "LPSPI1_ENABLED", + "value": 1, + "description": "LPSPI1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit3", + "name": "CAN_PERIPHERAL_FOR_ISP", + "description": "CAN peripheral for ISP", + "values": [ + { + "name": "CAN_DISABLED", + "value": 0, + "description": "CAN disabled" + }, + { + "name": "CAN_ENABLED", + "value": 1, + "description": "CAN enabled" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00101", + "name": "Reserved 0x00101", + "description": "This field is reserved for internal use", + "offset_int": "0x0101", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "field104", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Peripheral Detection Timeout", + "offset_int": "0x0104", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "Reserved00106", + "name": "Reserved 0x00106", + "description": "This field is reserved for internal use", + "offset_int": "0x0106", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field108", + "name": "I2C_SLAVE_ADDRESS", + "description": "I2C Slave Address", + "offset_int": "0x0108", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "field109", + "name": "CAN_CONFIG_1", + "description": "CAN config 1", + "offset_int": "0x0109", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "field10A", + "name": "CAN_CONFIG_2", + "description": "CAN config 2", + "offset_int": "0x010A", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "field10C", + "name": "CANTxID", + "description": "Field.", + "offset_int": "0x010C", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "field10E", + "name": "CANRxID", + "description": "Field.", + "offset_int": "0x010E", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Block 00110-0011F", + "description": "Block 00110-0011F" + }, + "registers": [ + { + "id": "field110", + "name": "SSS_LOADABLE_FW_ENTRY_ADDRESS", + "description": "SSS_Loadable_FW_Entry_Address", + "offset_int": "0x0110", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a1.json new file mode 100644 index 0000000..da295f1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a1.json @@ -0,0 +1,1457 @@ +{ + "cpu": "KW45B41Z8", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "FLW_Configuration", + "description": "FLW Configuration", + "offset_int": "0", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field000-bit0", + "name": "RESTORE_FLW_FLAG", + "description": "FLW Configuration", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal, use specified mapping" + }, + { + "name": "UNINITIALIZED", + "value": 1, + "description": "Dual Image Boot is uninitialized" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00001", + "name": "Reserved 0x00001", + "description": "This field is reserved for internal use", + "offset_int": "0x0001", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00004", + "name": "Reserved 0x00004", + "description": "This field is reserved for internal use", + "offset_int": "0x0004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "FLW_REGION_ABASE", + "description": "FLW region, the starting address of the alternative boot image", + "offset_int": "0x0008", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field00C", + "name": "FLW_REGION_BCNT", + "description": "FLW region, the size of the alternative boot image in 32 KB blocks", + "offset_int": "0x000C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00010-0001F", + "description": "Block 00010-0001F" + }, + "registers": [ + { + "id": "field010", + "name": "CONFIGURE_NPX_FOR_NORMAL_BOOT", + "description": "NPX configuration", + "offset_int": "0x0010", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "USE_PRINCE", + "description": "Configure NPX to use PRINCE", + "values": [ + { + "name": "CONFIGURE_NPX", + "value": 0, + "description": "Configure NPX" + }, + { + "name": "NOT_CONFIGURE_NPX", + "value": 1, + "description": "Not configure NPX" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "GLOBAL_LOCK", + "description": "Global lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SYSTEM_LOCK", + "description": "System lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "System lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "System lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "GLOBAL_DECRYPTION", + "description": "Global decryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global decryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global decryption disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "GLOBAL_ENCRYPTION", + "description": "Global encryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global encryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global encryption disable" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "STICKY", + "description": "NPX configuration", + "offset_int": "0x0011", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field011-bit0", + "name": "CONFIGURE_NPX_REQUIRED", + "description": "Configure NPX required", + "values": [ + { + "name": "REQUIRED", + "value": 0, + "description": "NPX config. required; ROM follows normal boot path" + }, + { + "name": "NOT_REQUIRED", + "value": 1, + "description": "Not required, ROM follows Low-power wakeup path" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00012", + "name": "Reserved 0x00012", + "description": "This field is reserved for internal use", + "offset_int": "0x0012", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "NPX_REGIONS_VALID", + "description": "NPX regions valid", + "offset_int": "0x0018", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field01C", + "name": "NPX_REGIONS_COUNT", + "description": "NPX regions count", + "offset_int": "0x001C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00020-0002F", + "description": "Block 00020-0002F" + }, + "registers": [ + { + "id": "field020", + "name": "NPX_REGION_0_VALID", + "description": "NPX region 0 valid", + "offset_int": "0x0020", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field024", + "name": "NPX_REGION_0_START_ADDRESS", + "description": "NPX region 0 start address", + "offset_int": "0x0024", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field028", + "name": "NPX_REGION_0_END_ADDRESS", + "description": "NPX region 0 end address", + "offset_int": "0x0028", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field02C", + "name": "NPX_REGION_1_VALID", + "description": "NPX region 1 valid", + "offset_int": "0x002C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00030-0003F", + "description": "Block 00030-0003F" + }, + "registers": [ + { + "id": "field030", + "name": "NPX_REGION_1_START_ADDRESS", + "description": "NPX region 1 start address", + "offset_int": "0x0030", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field034", + "name": "NPX_REGION_1_END_ADDRESS", + "description": "NPX region 1 end address", + "offset_int": "0x0034", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field038", + "name": "NPX_REGION_2_VALID", + "description": "NPX region 2 valid", + "offset_int": "0x0038", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field03C", + "name": "NPX_REGION_2_START_ADDRESS", + "description": "NPX region 2 start address", + "offset_int": "0x003C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00040-0004F", + "description": "Block 00040-0004F" + }, + "registers": [ + { + "id": "field040", + "name": "NPX_REGION_2_END_ADDRESS", + "description": "NPX region 2 end address", + "offset_int": "0x0040", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field044", + "name": "NPX_REGION_3_VALID", + "description": "NPX region 3 valid", + "offset_int": "0x0044", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field048", + "name": "NPX_REGION_3_START_ADDRESS", + "description": "NPX region 3 start address", + "offset_int": "0x0048", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field04C", + "name": "NPX_REGION_3_END_ADDRESS", + "description": "NPX region 3 end address", + "offset_int": "0x004C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00050-0005F", + "description": "Block 00050-0005F" + }, + "registers": [ + { + "id": "field050", + "name": "BOOT_CONFIGURATION", + "description": "Boot configuration", + "offset_int": "0x0050", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field050-bit0", + "name": "ENABLE_ISP_OR_NOT", + "description": "Enable ISP", + "values": [ + { + "name": "ENABLED", + "value": 1, + "description": "Boot config pin enabled" + }, + { + "name": "DISABLED", + "value": 0, + "description": "Boot config pin disabled" + } + ] + }, + { + "width": 2, + "id": "field050-bits1-2", + "name": "BOOT_SPEED", + "description": "Boot speed", + "values": [ + { + "name": "NORMAL_BOOT_32_MHZ", + "value": 0, + "description": "Normal Boot (32MHz)" + }, + { + "name": "FAST_BOOT_96_MHZ", + "value": 2, + "description": "Fast Boot (96 MHz)" + }, + { + "name": "NORM_BOOT_DFLT1", + "value": 1, + "description": "Normal Boot (default)" + }, + { + "name": "NORM_BOOT_DFLT2", + "value": 3, + "description": "Normal Boot (default)" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "Reserved00051", + "name": "Reserved 0x00051", + "description": "This field is reserved for internal use", + "offset_int": "0x0051", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00060-0006F", + "description": "Block 00060-0006F" + }, + "registers": [ + { + "id": "field060", + "name": "SECURE_BOOT_OPTIONS", + "description": "Secure Boot options", + "offset_int": "0x0060", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field060-bit0", + "name": "SECURE_BOOT_MODE", + "description": "Secure Boot failure mode", + "values": [ + { + "name": "INFINITE_SLEEP", + "value": 0, + "description": "Infinite sleep" + }, + { + "name": "SERIAL_DOWNLOAD", + "value": 1, + "description": "Serial download" + } + ] + }, + { + "width": 1, + "id": "field060-bit1", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN", + "description": "Secure Boot failure alert pin", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot failure alert pin is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot failure alert pin is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field061", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN_SELECTION", + "description": "Secure Boot Failure Alert Pin Selection", + "offset_int": "0x0061", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field061-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field061-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00062", + "name": "Reserved 0x00062", + "description": "This field is reserved for internal use", + "offset_int": "0x0062", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00070-0007F", + "description": "Block 00070-0007F" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00080-0008F", + "description": "Block 00080-0008F" + }, + "registers": [ + { + "id": "field080", + "name": "BOOT_IMAGE_BASE_ADDRESS3", + "description": "Boot Image Base Address 3", + "offset_int": "0x0080", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00090-0009F", + "description": "Block 00090-0009F" + }, + "registers": [ + { + "id": "field090", + "name": "BOOT_IMAGE_BASE_ADDRESS2", + "description": "Boot Image Base Address 2", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000A0-000AF", + "description": "Block 000A0-000AF" + }, + "registers": [ + { + "id": "field0A0", + "name": "BOOT_IMAGE_BASE_ADDRESS1", + "description": "Boot Image Base Address 1", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000B0-000BF", + "description": "Block 000B0-000BF" + }, + "registers": [ + { + "id": "field0B0", + "name": "BOOT_IMAGE_BASE_ADDRESS0", + "description": "Boot Image Base Address 0", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000C0-000CF", + "description": "Block 000C0-000CF" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000D0-000DF", + "description": "Block 000D0-000DF" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000E0-000EF", + "description": "Block 000E0-000EF" + }, + "registers": [ + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000F0-000FF", + "description": "Block 000F0-000FF" + }, + "registers": [ + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00100-0010F", + "description": "Block 00100-0010F" + }, + "registers": [ + { + "id": "field100", + "name": "PERIPHERALS_ENABLE", + "description": "Peripherals Enable", + "offset_int": "0x0100", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field100-bit0", + "name": "LPUART1_PERIPHERAL_FOR_ISP", + "description": "LPUART1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPUART1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPUART1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit1", + "name": "LPI2C1_PERIPHERAL_FOR_ISP", + "description": "LPI2C1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPI2C1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPI2C1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit2", + "name": "LPSPI1_PERIPHERAL_FOR_ISP", + "description": "LPSPI1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPSPI1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPSPI1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit3", + "name": "CAN_PERIPHERAL_FOR_ISP", + "description": "CAN peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "CAN disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "CAN enabled" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00101", + "name": "Reserved 0x00101", + "description": "This field is reserved for internal use", + "offset_int": "0x0101", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "field104", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Peripheral Detection Timeout", + "offset_int": "0x0104", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "Reserved00106", + "name": "Reserved 0x00106", + "description": "This field is reserved for internal use", + "offset_int": "0x0106", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field108", + "name": "I2C_SLAVE_ADDRESS", + "description": "I2C Slave Address", + "offset_int": "0x0108", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "field109", + "name": "CAN_CONFIG_1", + "description": "CAN config 1", + "offset_int": "0x0109", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "field10A", + "name": "CAN_CONFIG_2", + "description": "CAN config 2", + "offset_int": "0x010A", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "field10C", + "name": "CANTxID", + "description": "TxID field.", + "offset_int": "0x010C", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "field10E", + "name": "CANRxID", + "description": "RxID field.", + "offset_int": "0x010E", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Block 00110-0011F", + "description": "Block 00110-0011F" + }, + "registers": [ + { + "id": "field110", + "name": "SSS_LOADABLE_FW_ENTRY_ADDRESS", + "description": "SSS_Loadable_FW_Entry_Address", + "offset_int": "0x0110", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00120-0012F", + "description": "Block 00120-0012F" + }, + "registers": [ + { + "id": "field120", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION", + "description": "Secure Hash based image verification feature", + "offset_int": "0x0120", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "bitfields": [ + { + "width": 32, + "id": "field120-bits0-31", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION_CONFIG", + "description": "Secure Hash based image verification feature", + "values": [ + { + "name": "DISABLED", + "value": 4294967295, + "description": "Disabled (ECDSA based verification will be used)." + }, + { + "name": "ENABLED", + "value": 1213415752, + "description": "Enabled ('HASH')." + } + ] + } + ] + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a2.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a2.json new file mode 100644 index 0000000..f34093b --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/ifr_romcfg_a2.json @@ -0,0 +1,1457 @@ +{ + "cpu": "KW45B41Z8", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "FLW_Configuration", + "description": "FLW Configuration", + "offset_int": "0", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field000-bit0", + "name": "RESTORE_FLW_FLAG", + "description": "FLW Configuration", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal, use specified mapping" + }, + { + "name": "UNINITIALIZED", + "value": 1, + "description": "Dual Image Boot is uninitialized" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00001", + "name": "Reserved 0x00001", + "description": "This field is reserved for internal use", + "offset_int": "0x0001", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00004", + "name": "Reserved 0x00004", + "description": "This field is reserved for internal use", + "offset_int": "0x0004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "FLW_REGION_ABASE", + "description": "FLW region, the starting address of the alternative boot image", + "offset_int": "0x0008", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field00C", + "name": "FLW_REGION_BCNT", + "description": "FLW region, the size of the alternative boot image in 32 KB blocks", + "offset_int": "0x000C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00010-0001F", + "description": "Block 00010-0001F" + }, + "registers": [ + { + "id": "field010", + "name": "CONFIGURE_NPX_FOR_NORMAL_BOOT", + "description": "NPX configuration", + "offset_int": "0x0010", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "USE_PRINCE", + "description": "Configure NPX to use PRINCE", + "values": [ + { + "name": "CONFIGURE_NPX", + "value": 0, + "description": "Configure NPX" + }, + { + "name": "NOT_CONFIGURE_NPX", + "value": 1, + "description": "Not configure NPX" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "GLOBAL_LOCK", + "description": "Global lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SYSTEM_LOCK", + "description": "System lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "System lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "System lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "GLOBAL_DECRYPTION", + "description": "Global decryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global decryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global decryption disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "GLOBAL_ENCRYPTION", + "description": "Global encryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global encryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global encryption disable" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "STICKY", + "description": "NPX configuration", + "offset_int": "0x0011", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field011-bit0", + "name": "CONFIGURE_NPX_REQUIRED", + "description": "Configure NPX required", + "values": [ + { + "name": "REQUIRED", + "value": 0, + "description": "NPX config. required; ROM follows normal boot path" + }, + { + "name": "NOT_REQUIRED", + "value": 1, + "description": "Not required, ROM follows Low-power wakeup path" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00012", + "name": "Reserved 0x00012", + "description": "This field is reserved for internal use", + "offset_int": "0x0012", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "NPX_REGIONS_VALID", + "description": "NPX regions valid", + "offset_int": "0x0018", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field01C", + "name": "NPX_REGIONS_COUNT", + "description": "NPX regions count", + "offset_int": "0x001C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00020-0002F", + "description": "Block 00020-0002F" + }, + "registers": [ + { + "id": "field020", + "name": "NPX_REGION_0_VALID", + "description": "NPX region 0 valid", + "offset_int": "0x0020", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field024", + "name": "NPX_REGION_0_START_ADDRESS", + "description": "NPX region 0 start address", + "offset_int": "0x0024", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field028", + "name": "NPX_REGION_0_END_ADDRESS", + "description": "NPX region 0 end address", + "offset_int": "0x0028", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field02C", + "name": "NPX_REGION_1_VALID", + "description": "NPX region 1 valid", + "offset_int": "0x002C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00030-0003F", + "description": "Block 00030-0003F" + }, + "registers": [ + { + "id": "field030", + "name": "NPX_REGION_1_START_ADDRESS", + "description": "NPX region 1 start address", + "offset_int": "0x0030", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field034", + "name": "NPX_REGION_1_END_ADDRESS", + "description": "NPX region 1 end address", + "offset_int": "0x0034", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field038", + "name": "NPX_REGION_2_VALID", + "description": "NPX region 2 valid", + "offset_int": "0x0038", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field03C", + "name": "NPX_REGION_2_START_ADDRESS", + "description": "NPX region 2 start address", + "offset_int": "0x003C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00040-0004F", + "description": "Block 00040-0004F" + }, + "registers": [ + { + "id": "field040", + "name": "NPX_REGION_2_END_ADDRESS", + "description": "NPX region 2 end address", + "offset_int": "0x0040", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field044", + "name": "NPX_REGION_3_VALID", + "description": "NPX region 3 valid", + "offset_int": "0x0044", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field048", + "name": "NPX_REGION_3_START_ADDRESS", + "description": "NPX region 3 start address", + "offset_int": "0x0048", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field04C", + "name": "NPX_REGION_3_END_ADDRESS", + "description": "NPX region 3 end address", + "offset_int": "0x004C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00050-0005F", + "description": "Block 00050-0005F" + }, + "registers": [ + { + "id": "field050", + "name": "BOOT_CONFIGURATION", + "description": "Boot configuration", + "offset_int": "0x0050", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field050-bit0", + "name": "ENABLE_ISP_OR_NOT", + "description": "Enable ISP", + "values": [ + { + "name": "ENABLED", + "value": 1, + "description": "Boot config pin enabled" + }, + { + "name": "DISABLED", + "value": 0, + "description": "Boot config pin disabled" + } + ] + }, + { + "width": 2, + "id": "field050-bits1-2", + "name": "BOOT_SPEED", + "description": "Boot speed", + "values": [ + { + "name": "NORMAL_BOOT_32_MHZ", + "value": 0, + "description": "Normal Boot (32MHz)" + }, + { + "name": "FAST_BOOT_96_MHZ", + "value": 2, + "description": "Fast Boot (96 MHz)" + }, + { + "name": "NORM_BOOT_DFLT1", + "value": 1, + "description": "Normal Boot (default)" + }, + { + "name": "NORM_BOOT_DFLT2", + "value": 3, + "description": "Normal Boot (default)" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "Reserved00051", + "name": "Reserved 0x00051", + "description": "This field is reserved for internal use", + "offset_int": "0x0051", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00060-0006F", + "description": "Block 00060-0006F" + }, + "registers": [ + { + "id": "field060", + "name": "SECURE_BOOT_FAILURE_OPTIONS", + "description": "Secure Boot Failure Options", + "offset_int": "0x0060", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field060-bit0", + "name": "SECURE_BOOT_FAILURE_MODE", + "description": "Secure Boot failure mode", + "values": [ + { + "name": "INFINITE_SLEEP", + "value": 0, + "description": "Infinite sleep" + }, + { + "name": "SERIAL_DOWNLOAD", + "value": 1, + "description": "Serial download" + } + ] + }, + { + "width": 1, + "id": "field060-bit1", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN", + "description": "Secure Boot failure alert pin", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot failure alert pin is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot failure alert pin is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field061", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN_SELECTION", + "description": "Secure Boot Failure Alert Pin Selection", + "offset_int": "0x0061", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field061-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field061-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00062", + "name": "Reserved 0x00062", + "description": "This field is reserved for internal use", + "offset_int": "0x0062", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00070-0007F", + "description": "Block 00070-0007F" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00080-0008F", + "description": "Block 00080-0008F" + }, + "registers": [ + { + "id": "field080", + "name": "BOOT_IMAGE_BASE_ADDRESS3", + "description": "Boot Image Base Address 3", + "offset_int": "0x0080", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00090-0009F", + "description": "Block 00090-0009F" + }, + "registers": [ + { + "id": "field090", + "name": "BOOT_IMAGE_BASE_ADDRESS2", + "description": "Boot Image Base Address 2", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000A0-000AF", + "description": "Block 000A0-000AF" + }, + "registers": [ + { + "id": "field0A0", + "name": "BOOT_IMAGE_BASE_ADDRESS1", + "description": "Boot Image Base Address 1", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000B0-000BF", + "description": "Block 000B0-000BF" + }, + "registers": [ + { + "id": "field0B0", + "name": "BOOT_IMAGE_BASE_ADDRESS0", + "description": "Boot Image Base Address 0", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000C0-000CF", + "description": "Block 000C0-000CF" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000D0-000DF", + "description": "Block 000D0-000DF" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000E0-000EF", + "description": "Block 000E0-000EF" + }, + "registers": [ + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000F0-000FF", + "description": "Block 000F0-000FF" + }, + "registers": [ + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00100-0010F", + "description": "Block 00100-0010F" + }, + "registers": [ + { + "id": "field100", + "name": "PERIPHERALS_ENABLE", + "description": "Peripherals Enable", + "offset_int": "0x0100", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field100-bit0", + "name": "LPUART1_PERIPHERAL_FOR_ISP", + "description": "LPUART1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPUART1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPUART1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit1", + "name": "LPI2C1_PERIPHERAL_FOR_ISP", + "description": "LPI2C1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPI2C1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPI2C1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit2", + "name": "LPSPI1_PERIPHERAL_FOR_ISP", + "description": "LPSPI1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPSPI1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPSPI1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit3", + "name": "CAN_PERIPHERAL_FOR_ISP", + "description": "CAN peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "CAN disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "CAN enabled" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00101", + "name": "Reserved 0x00101", + "description": "This field is reserved for internal use", + "offset_int": "0x0101", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "field104", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Peripheral Detection Timeout", + "offset_int": "0x0104", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "Reserved00106", + "name": "Reserved 0x00106", + "description": "This field is reserved for internal use", + "offset_int": "0x0106", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field108", + "name": "I2C_SLAVE_ADDRESS", + "description": "I2C Slave Address", + "offset_int": "0x0108", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "field109", + "name": "CAN_CONFIG_1", + "description": "CAN config 1", + "offset_int": "0x0109", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "field10A", + "name": "CAN_CONFIG_2", + "description": "CAN config 2", + "offset_int": "0x010A", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "field10C", + "name": "CANTxID", + "description": "TxID field.", + "offset_int": "0x010C", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "field10E", + "name": "CANRxID", + "description": "RxID field.", + "offset_int": "0x010E", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Block 00110-0011F", + "description": "Block 00110-0011F" + }, + "registers": [ + { + "id": "field110", + "name": "ELE_LOADABLE_FW_ENTRY_ADDRESS", + "description": "ELE loadable firmware resides address", + "offset_int": "0x0110", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00120-0012F", + "description": "Block 00120-0012F" + }, + "registers": [ + { + "id": "field120", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION", + "description": "Secure Hash based image verification feature", + "offset_int": "0x0120", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "bitfields": [ + { + "width": 32, + "id": "field120-bits0-31", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION_CONFIG", + "description": "Secure Hash based image verification feature", + "values": [ + { + "name": "DISABLED", + "value": 4294967295, + "description": "Disabled (ECDSA based verification will be used)." + }, + { + "name": "ENABLED", + "value": 1213415752, + "description": "Enabled ('HASH')." + } + ] + } + ] + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/tz.json new file mode 100644 index 0000000..ec2d2da --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45b41z8/tz.json @@ -0,0 +1,2213 @@ +{ + "cpu": "kw45b41z8", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Start of block (tzm_magic)", + "description": "TrustZone register - Start of block (tzm_magic)", + "default_value_int": "0x4d2d5a54" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "TZM info which data are initialized (tzm_control)", + "description": "TrustZone register - TZM info which data are initialized (tzm_control)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "Miscellaneous CM33 settings (cm33_misc_ctrl)", + "description": "TrustZone register - Miscellaneous CM33 settings (cm33_misc_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "CM33 Non-secure Access Control Register (cm33_nsacr)", + "description": "TrustZone register - CM33 Non-secure Access Control Register (cm33_nsacr)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "CM33 Coprocessor Power Control Register (cm33_cppwr)", + "description": "TrustZone register - CM33 Coprocessor Power Control Register (cm33_cppwr)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "CM33 Coprocessor Access Control Register (cm33_cpacr)", + "description": "TrustZone register - CM33 Coprocessor Access Control Register (cm33_cpacr)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Control Register (cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register(cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register(cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register(cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register(cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register(cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register(cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register(cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register(cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register(cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register(cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register(cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register(cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register(cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register(cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register(cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register(cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Control Register (cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register (cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "TRDC Control Register (cr)", + "description": "TrustZone register - TRDC Control Register (cr)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "TRDC IDAU Control Register (idau_cr)", + "description": "TrustZone register - TRDC IDAU Control Register (idau_cr)", + "default_value_int": "0x8" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "Master 0 Domain Assignment Register (mda_w0_DOM0_dfmt0)", + "description": "TrustZone register - Master 0 Domain Assignment Register (mda_w0_DOM0_dfmt0)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "Master 1 Domain Assignment Register (mda_w0_DOM1_dfmt1)", + "description": "TrustZone register - Master 1 Domain Assignment Register (mda_w0_DOM1_dfmt1)", + "default_value_int": "0x20000000" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "Master 2 Domain Assignment Register (mda_w0_DOM2_dfmt1)", + "description": "TrustZone register - Master 2 Domain Assignment Register (mda_w0_DOM2_dfmt1)", + "default_value_int": "0x20000000" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "Master 3 Domain Assignment Register (mda_w0_DOM3_dfmt1)", + "description": "TrustZone register - Master 3 Domain Assignment Register (mda_w0_DOM3_dfmt1)", + "default_value_int": "0x20000000" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 0 (mbc0_memn_glbac0)", + "description": "TrustZone register - MBC 0 Global Access Control Register 0 (mbc0_memn_glbac0)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 1 (mbc0_memn_glbac1)", + "description": "TrustZone register - MBC 0 Global Access Control Register 1 (mbc0_memn_glbac1)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 2 (mbc0_memn_glbac2)", + "description": "TrustZone register - MBC 0 Global Access Control Register 2 (mbc0_memn_glbac2)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 3 (mbc0_memn_glbac3)", + "description": "TrustZone register - MBC 0 Global Access Control Register 3 (mbc0_memn_glbac3)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 4 (mbc0_memn_glbac4)", + "description": "TrustZone register - MBC 0 Global Access Control Register 4 (mbc0_memn_glbac4)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 5 (mbc0_memn_glbac5)", + "description": "TrustZone register - MBC 0 Global Access Control Register 5 (mbc0_memn_glbac5)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 6 (mbc0_memn_glbac6)", + "description": "TrustZone register - MBC 0 Global Access Control Register 6 (mbc0_memn_glbac6)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 7 (mbc0_memn_glbac7)", + "description": "TrustZone register - MBC 0 Global Access Control Register 7 (mbc0_memn_glbac7)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 0 (mbc0_DOM0_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 0 (mbc0_DOM0_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 1 (mbc0_DOM0_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 1 (mbc0_DOM0_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 2 (mbc0_DOM0_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 2 (mbc0_DOM0_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 3 (mbc0_DOM0_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 3 (mbc0_DOM0_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 1 Configuration Word Register 0 (mbc0_DOM0_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 1 Configuration Word Register 0 (mbc0_DOM0_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 2 Configuration Word Register 0 (mbc0_DOM0_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 2 Configuration Word Register 0 (mbc0_DOM0_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 3 Configuration Word Register 0 (mbc0_DOM0_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 3 Configuration Word Register 0 (mbc0_DOM0_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 3 Configuration Word Register 1 (mbc0_DOM0_mem3_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 3 Configuration Word Register 1 (mbc0_DOM0_mem3_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 0 (mbc0_DOM1_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 0 (mbc0_DOM1_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 1 (mbc0_DOM1_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 1 (mbc0_DOM1_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 2 (mbc0_DOM1_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 2 (mbc0_DOM1_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 3 (mbc0_DOM1_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 3 (mbc0_DOM1_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 1 Configuration Word Register 0 (mbc0_DOM1_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 1 Configuration Word Register 0 (mbc0_DOM1_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 2 Configuration Word Register 0 (mbc0_DOM1_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 2 Configuration Word Register 0 (mbc0_DOM1_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 3 Configuration Word Register 0 (mbc0_DOM1_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 3 Configuration Word Register 0 (mbc0_DOM1_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 3 Configuration Word Register 1 (mbc0_DOM1_mem3_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 3 Configuration Word Register 1 (mbc0_DOM1_mem3_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 0 (mbc0_DOM2_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 0 (mbc0_DOM2_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 1 (mbc0_DOM2_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 1 (mbc0_DOM2_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 2 (mbc0_DOM2_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 2 (mbc0_DOM2_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 3 (mbc0_DOM2_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 3 (mbc0_DOM2_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 1 Configuration Word Register 0 (mbc0_DOM2_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 1 Configuration Word Register 0 (mbc0_DOM2_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 2 Configuration Word Register 0 (mbc0_DOM2_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 2 Configuration Word Register 0 (mbc0_DOM2_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 3 Configuration Word Register 0 (mbc0_DOM2_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 3 Configuration Word Register 0 (mbc0_DOM2_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 3 Configuration Word Register 1 (mbc0_DOM2_mem3_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 3 Configuration Word Register 1 (mbc0_DOM2_mem3_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 0 (mbc1_memn_glbac0)", + "description": "TrustZone register - MBC 1 Global Access Control Register 0 (mbc1_memn_glbac0)", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 1 (mbc1_memn_glbac1)", + "description": "TrustZone register - MBC 1 Global Access Control Register 1 (mbc1_memn_glbac1)", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 2 (mbc1_memn_glbac2)", + "description": "TrustZone register - MBC 1 Global Access Control Register 2 (mbc1_memn_glbac2)", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 3 (mbc1_memn_glbac3)", + "description": "TrustZone register - MBC 1 Global Access Control Register 3 (mbc1_memn_glbac3)", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 4 (mbc1_memn_glbac4)", + "description": "TrustZone register - MBC 1 Global Access Control Register 4 (mbc1_memn_glbac4)", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 5 (mbc1_memn_glbac5)", + "description": "TrustZone register - MBC 1 Global Access Control Register 5 (mbc1_memn_glbac5)", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 6 (mbc1_memn_glbac6)", + "description": "TrustZone register - MBC 1 Global Access Control Register 6 (mbc1_memn_glbac6)", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 7 (mbc1_memn_glbac7)", + "description": "TrustZone register - MBC 1 Global Access Control Register 7 (mbc1_memn_glbac7)", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "MBC 1 Domain 0 Slave 0 Configuration Word Register 0 (mbc1_DOM0_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 0 Slave 0 Configuration Word Register 0 (mbc1_DOM0_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "MBC 1 Domain 0 Slave 1 Configuration Word Register 0 (mbc1_DOM0_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 0 Slave 1 Configuration Word Register 0 (mbc1_DOM0_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "MBC 1 Domain 0 Slave 2 Configuration Word Register 0 (mbc1_DOM0_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 0 Slave 2 Configuration Word Register 0 (mbc1_DOM0_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "MBC 1 Domain 0 Slave 3 Configuration Word Register 0 (mbc1_DOM0_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 0 Slave 3 Configuration Word Register 0 (mbc1_DOM0_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "MBC 1 Domain 1 Slave 0 Configuration Word Register 0 (mbc1_DOM1_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 1 Slave 0 Configuration Word Register 0 (mbc1_DOM1_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "MBC 1 Domain 1 Slave 1 Configuration Word Register 0 (mbc1_DOM1_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 1 Slave 1 Configuration Word Register 0 (mbc1_DOM1_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "MBC 1 Domain 1 Slave 2 Configuration Word Register 0 (mbc1_DOM1_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 1 Slave 2 Configuration Word Register 0 (mbc1_DOM1_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "MBC 1 Domain 1 Slave 3 Configuration Word Register 0 (mbc1_DOM1_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 1 Slave 3 Configuration Word Register 0 (mbc1_DOM1_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "MBC 1 Domain 2 Slave 0 Configuration Word Register 0 (mbc1_DOM2_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 2 Slave 0 Configuration Word Register 0 (mbc1_DOM2_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "MBC 1 Domain 2 Slave 1 Configuration Word Register 0 (mbc1_DOM2_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 2 Slave 1 Configuration Word Register 0 (mbc1_DOM2_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "MBC 1 Domain 2 Slave 2 Configuration Word Register 0 (mbc1_DOM2_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 2 Slave 2 Configuration Word Register 0 (mbc1_DOM2_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "MBC 1 Domain 2 Slave 3 Configuration Word Register 0 (mbc1_DOM2_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 2 Slave 3 Configuration Word Register 0 (mbc1_DOM2_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 0 (mbc2_memn_glbac0)", + "description": "TrustZone register - MBC 2 Global Access Control Register 0 (mbc2_memn_glbac0)", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 1 (mbc2_memn_glbac1)", + "description": "TrustZone register - MBC 2 Global Access Control Register 1 (mbc2_memn_glbac1)", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 2 (mbc2_memn_glbac2)", + "description": "TrustZone register - MBC 2 Global Access Control Register 2 (mbc2_memn_glbac2)", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 3 (mbc2_memn_glbac3)", + "description": "TrustZone register - MBC 2 Global Access Control Register 3 (mbc2_memn_glbac3)", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 4 (mbc2_memn_glbac4)", + "description": "TrustZone register - MBC 2 Global Access Control Register 4 (mbc2_memn_glbac4)", + "default_value_int": "0x0" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 5 (mbc2_memn_glbac5)", + "description": "TrustZone register - MBC 2 Global Access Control Register 5 (mbc2_memn_glbac5)", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 6 (mbc2_memn_glbac6)", + "description": "TrustZone register - MBC 2 Global Access Control Register 6 (mbc2_memn_glbac6)", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 7 (mbc2_memn_glbac7)", + "description": "TrustZone register - MBC 2 Global Access Control Register 7 (mbc2_memn_glbac7)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 0 (mbc2_DOM0_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 0 (mbc2_DOM0_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 1 (mbc2_DOM0_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 1 (mbc2_DOM0_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 2 (mbc2_DOM0_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 2 (mbc2_DOM0_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 3 (mbc2_DOM0_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 3 (mbc2_DOM0_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 4 (mbc2_DOM0_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 4 (mbc2_DOM0_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 5 (mbc2_DOM0_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 5 (mbc2_DOM0_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 6 (mbc2_DOM0_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 6 (mbc2_DOM0_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 7 (mbc2_DOM0_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 7 (mbc2_DOM0_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 8 (mbc2_DOM0_mem0_blk_cfg_w8)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 8 (mbc2_DOM0_mem0_blk_cfg_w8)", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 9 (mbc2_DOM0_mem0_blk_cfg_w9)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 9 (mbc2_DOM0_mem0_blk_cfg_w9)", + "default_value_int": "0x0" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 1 Configuration Word Register 0 (mbc2_DOM0_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 1 Configuration Word Register 0 (mbc2_DOM0_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 2 Configuration Word Register 0 (mbc2_DOM0_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 2 Configuration Word Register 0 (mbc2_DOM0_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 2 Configuration Word Register 1 (mbc2_DOM0_mem2_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 2 Configuration Word Register 1 (mbc2_DOM0_mem2_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 0 (mbc2_DOM1_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 0 (mbc2_DOM1_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 1 (mbc2_DOM1_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 1 (mbc2_DOM1_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 2 (mbc2_DOM1_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 2 (mbc2_DOM1_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 3 (mbc2_DOM1_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 3 (mbc2_DOM1_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 4 (mbc2_DOM1_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 4 (mbc2_DOM1_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 5 (mbc2_DOM1_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 5 (mbc2_DOM1_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 6 (mbc2_DOM1_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 6 (mbc2_DOM1_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 7 (mbc2_DOM1_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 7 (mbc2_DOM1_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 8 (mbc2_DOM1_mem0_blk_cfg_w8)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 8 (mbc2_DOM1_mem0_blk_cfg_w8)", + "default_value_int": "0x0" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 9 (mbc2_DOM1_mem0_blk_cfg_w9)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 9 (mbc2_DOM1_mem0_blk_cfg_w9)", + "default_value_int": "0x0" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 1 Configuration Word Register 0 (mbc2_DOM1_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 1 Configuration Word Register 0 (mbc2_DOM1_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 2 Configuration Word Register 0 (mbc2_DOM1_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 2 Configuration Word Register 0 (mbc2_DOM1_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 2 Configuration Word Register 1 (mbc2_DOM1_mem2_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 2 Configuration Word Register 1 (mbc2_DOM1_mem2_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 0 (mbc2_DOM2_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 0 (mbc2_DOM2_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 1 (mbc2_DOM2_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 1 (mbc2_DOM2_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 2 (mbc2_DOM2_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 2 (mbc2_DOM2_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 3 (mbc2_DOM2_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 3 (mbc2_DOM2_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 4 (mbc2_DOM2_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 4 (mbc2_DOM2_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 5 (mbc2_DOM2_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 5 (mbc2_DOM2_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 6 (mbc2_DOM2_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 6 (mbc2_DOM2_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 7 (mbc2_DOM2_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 7 (mbc2_DOM2_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 8 (mbc2_DOM2_mem0_blk_cfg_w8)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 8 (mbc2_DOM2_mem0_blk_cfg_w8)", + "default_value_int": "0x0" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 9 (mbc2_DOM2_mem0_blk_cfg_w9)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 9 (mbc2_DOM2_mem0_blk_cfg_w9)", + "default_value_int": "0x0" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 1 Configuration Word Register 0 (mbc2_DOM2_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 1 Configuration Word Register 0 (mbc2_DOM2_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 2 Configuration Word Register 0 (mbc2_DOM2_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 2 Configuration Word Register 0 (mbc2_DOM2_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 2 Configuration Word Register 1 (mbc2_DOM2_mem2_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 2 Configuration Word Register 1 (mbc2_DOM2_mem2_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 0 (mrc0_memn_glbac0)", + "description": "TrustZone register - MRC 0 Global Access Control Register 0 (mrc0_memn_glbac0)", + "default_value_int": "0x0" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 1 (mrc0_memn_glbac1)", + "description": "TrustZone register - MRC 0 Global Access Control Register 1 (mrc0_memn_glbac1)", + "default_value_int": "0x0" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 2 (mrc0_memn_glbac2)", + "description": "TrustZone register - MRC 0 Global Access Control Register 2 (mrc0_memn_glbac2)", + "default_value_int": "0x0" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 3 (mrc0_memn_glbac3)", + "description": "TrustZone register - MRC 0 Global Access Control Register 3 (mrc0_memn_glbac3)", + "default_value_int": "0x0" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 4 (mrc0_memn_glbac4)", + "description": "TrustZone register - MRC 0 Global Access Control Register 4 (mrc0_memn_glbac4)", + "default_value_int": "0x0" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 5 (mrc0_memn_glbac5)", + "description": "TrustZone register - MRC 0 Global Access Control Register 5 (mrc0_memn_glbac5)", + "default_value_int": "0x0" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 6 (mrc0_memn_glbac6)", + "description": "TrustZone register - MRC 0 Global Access Control Register 6 (mrc0_memn_glbac6)", + "default_value_int": "0x0" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 7 (mrc0_memn_glbac7)", + "description": "TrustZone register - MRC 0 Global Access Control Register 7 (mrc0_memn_glbac7)", + "default_value_int": "0x0" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 0 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd0_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 0 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd0_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 0 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd0_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 0 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd0_w1)", + "default_value_int": "0x0" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 1 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd1_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 1 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd1_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 1 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd1_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 1 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd1_w1)", + "default_value_int": "0x0" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 2 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd2_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 2 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd2_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 2 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd2_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 2 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd2_w1)", + "default_value_int": "0x0" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 3 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd3_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 3 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd3_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 3 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd3_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 3 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd3_w1)", + "default_value_int": "0x0" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 4 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd4_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 4 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd4_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 4 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd4_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 4 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd4_w1)", + "default_value_int": "0x0" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 5 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd5_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 5 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd5_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 5 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd5_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 5 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd5_w1)", + "default_value_int": "0x0" + }, + { + "id": "field2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 6 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd6_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 6 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd6_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 6 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd6_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 6 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd6_w1)", + "default_value_int": "0x0" + }, + { + "id": "field300", + "offset_int": "0x300", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 7 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd7_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 7 Memory Region Descriptor Register 0 (mrc0_DOM0_rgd7_w0)", + "default_value_int": "0x0" + }, + { + "id": "field304", + "offset_int": "0x304", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 7 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd7_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 7 Memory Region Descriptor Register 1 (mrc0_DOM0_rgd7_w1)", + "default_value_int": "0x0" + }, + { + "id": "field308", + "offset_int": "0x308", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 0 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd0_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 0 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd0_w0)", + "default_value_int": "0x0" + }, + { + "id": "field30C", + "offset_int": "0x30c", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 0 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd0_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 0 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd0_w1)", + "default_value_int": "0x0" + }, + { + "id": "field310", + "offset_int": "0x310", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 1 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd1_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 1 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd1_w0)", + "default_value_int": "0x0" + }, + { + "id": "field314", + "offset_int": "0x314", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 1 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd1_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 1 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd1_w1)", + "default_value_int": "0x0" + }, + { + "id": "field318", + "offset_int": "0x318", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 2 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd2_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 2 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd2_w0)", + "default_value_int": "0x0" + }, + { + "id": "field31C", + "offset_int": "0x31c", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 2 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd2_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 2 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd2_w1)", + "default_value_int": "0x0" + }, + { + "id": "field320", + "offset_int": "0x320", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 3 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd3_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 3 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd3_w0)", + "default_value_int": "0x0" + }, + { + "id": "field324", + "offset_int": "0x324", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 3 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd3_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 3 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd3_w1)", + "default_value_int": "0x0" + }, + { + "id": "field328", + "offset_int": "0x328", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 4 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd4_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 4 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd4_w0)", + "default_value_int": "0x0" + }, + { + "id": "field32C", + "offset_int": "0x32c", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 4 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd4_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 4 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd4_w1)", + "default_value_int": "0x0" + }, + { + "id": "field330", + "offset_int": "0x330", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 5 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd5_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 5 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd5_w0)", + "default_value_int": "0x0" + }, + { + "id": "field334", + "offset_int": "0x334", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 5 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd5_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 5 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd5_w1)", + "default_value_int": "0x0" + }, + { + "id": "field338", + "offset_int": "0x338", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 6 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd6_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 6 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd6_w0)", + "default_value_int": "0x0" + }, + { + "id": "field33C", + "offset_int": "0x33c", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 6 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd6_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 6 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd6_w1)", + "default_value_int": "0x0" + }, + { + "id": "field340", + "offset_int": "0x340", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 7 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd7_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 7 Memory Region Descriptor Register 0 (mrc0_DOM1_rgd7_w0)", + "default_value_int": "0x0" + }, + { + "id": "field344", + "offset_int": "0x344", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 7 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd7_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 7 Memory Region Descriptor Register 1 (mrc0_DOM1_rgd7_w1)", + "default_value_int": "0x0" + }, + { + "id": "field348", + "offset_int": "0x348", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 0 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd0_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 0 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd0_w0)", + "default_value_int": "0x0" + }, + { + "id": "field34C", + "offset_int": "0x34c", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 0 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd0_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 0 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd0_w1)", + "default_value_int": "0x0" + }, + { + "id": "field350", + "offset_int": "0x350", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 1 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd1_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 1 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd1_w0)", + "default_value_int": "0x0" + }, + { + "id": "field354", + "offset_int": "0x354", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 1 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd1_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 1 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd1_w1)", + "default_value_int": "0x0" + }, + { + "id": "field358", + "offset_int": "0x358", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 2 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd2_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 2 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd2_w0)", + "default_value_int": "0x0" + }, + { + "id": "field35C", + "offset_int": "0x35c", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 2 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd2_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 2 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd2_w1)", + "default_value_int": "0x0" + }, + { + "id": "field360", + "offset_int": "0x360", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 3 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd3_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 3 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd3_w0)", + "default_value_int": "0x0" + }, + { + "id": "field364", + "offset_int": "0x364", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 3 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd3_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 3 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd3_w1)", + "default_value_int": "0x0" + }, + { + "id": "field368", + "offset_int": "0x368", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 4 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd4_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 4 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd4_w0)", + "default_value_int": "0x0" + }, + { + "id": "field36C", + "offset_int": "0x36c", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 4 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd4_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 4 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd4_w1)", + "default_value_int": "0x0" + }, + { + "id": "field370", + "offset_int": "0x370", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 5 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd5_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 5 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd5_w0)", + "default_value_int": "0x0" + }, + { + "id": "field374", + "offset_int": "0x374", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 5 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd5_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 5 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd5_w1)", + "default_value_int": "0x0" + }, + { + "id": "field378", + "offset_int": "0x378", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 6 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd6_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 6 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd6_w0)", + "default_value_int": "0x0" + }, + { + "id": "field37C", + "offset_int": "0x37c", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 6 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd6_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 6 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd6_w1)", + "default_value_int": "0x0" + }, + { + "id": "field380", + "offset_int": "0x380", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 7 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd7_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 7 Memory Region Descriptor Register 0 (mrc0_DOM2_rgd7_w0)", + "default_value_int": "0x0" + }, + { + "id": "field384", + "offset_int": "0x384", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 7 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd7_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 7 Memory Region Descriptor Register 1 (mrc0_DOM2_rgd7_w1)", + "default_value_int": "0x0" + }, + { + "id": "field388", + "offset_int": "0x388", + "reg_width": 32, + "name": "GPIO A Lock Register (gpioa_lock)", + "description": "TrustZone register - GPIO A Lock Register (gpioa_lock)", + "default_value_int": "0x0" + }, + { + "id": "field38C", + "offset_int": "0x38c", + "reg_width": 32, + "name": "GPIO A Pin Control Non-Secure Register (gpioa_pcns)", + "description": "TrustZone register - GPIO A Pin Control Non-Secure Register (gpioa_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field390", + "offset_int": "0x390", + "reg_width": 32, + "name": "GPIO A Interrupt Control Non-Secure Register (gpioa_icns)", + "description": "TrustZone register - GPIO A Interrupt Control Non-Secure Register (gpioa_icns)", + "default_value_int": "0x0" + }, + { + "id": "field394", + "offset_int": "0x394", + "reg_width": 32, + "name": "GPIO A Pin Control Non-Privilege Register (gpioa_pcnp)", + "description": "TrustZone register - GPIO A Pin Control Non-Privilege Register (gpioa_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field398", + "offset_int": "0x398", + "reg_width": 32, + "name": "GPIO A Interrupt Control Non-Privilege Register (gpioa_icnp)", + "description": "TrustZone register - GPIO A Interrupt Control Non-Privilege Register (gpioa_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field39C", + "offset_int": "0x39c", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 0 (gpioa_icr0)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 0 (gpioa_icr0)", + "default_value_int": "0x0" + }, + { + "id": "field3A0", + "offset_int": "0x3a0", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 1 (gpioa_icr1)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 1 (gpioa_icr1)", + "default_value_int": "0x0" + }, + { + "id": "field3A4", + "offset_int": "0x3a4", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 4 (gpioa_icr4)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 4 (gpioa_icr4)", + "default_value_int": "0x0" + }, + { + "id": "field3A8", + "offset_int": "0x3a8", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 16 (gpioa_icr16)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 16 (gpioa_icr16)", + "default_value_int": "0x0" + }, + { + "id": "field3AC", + "offset_int": "0x3ac", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 17 (gpioa_icr17)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 17 (gpioa_icr17)", + "default_value_int": "0x0" + }, + { + "id": "field3B0", + "offset_int": "0x3b0", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 18 (gpioa_icr18)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 18 (gpioa_icr18)", + "default_value_int": "0x0" + }, + { + "id": "field3B4", + "offset_int": "0x3b4", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 19 (gpioa_icr19)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 19 (gpioa_icr19)", + "default_value_int": "0x0" + }, + { + "id": "field3B8", + "offset_int": "0x3b8", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 20 (gpioa_icr20)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 20 (gpioa_icr20)", + "default_value_int": "0x0" + }, + { + "id": "field3BC", + "offset_int": "0x3bc", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 21 (gpioa_icr21)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 21 (gpioa_icr21)", + "default_value_int": "0x0" + }, + { + "id": "field3C0", + "offset_int": "0x3c0", + "reg_width": 32, + "name": "GPIO B Lock Register (gpiob_lock)", + "description": "TrustZone register - GPIO B Lock Register (gpiob_lock)", + "default_value_int": "0x0" + }, + { + "id": "field3C4", + "offset_int": "0x3c4", + "reg_width": 32, + "name": "GPIO B Pin Control Non-Secure Register (gpiob_pcns)", + "description": "TrustZone register - GPIO B Pin Control Non-Secure Register (gpiob_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field3C8", + "offset_int": "0x3c8", + "reg_width": 32, + "name": "GPIO B Interrupt Control Non-Secure Register (gpiob_icns)", + "description": "TrustZone register - GPIO B Interrupt Control Non-Secure Register (gpiob_icns)", + "default_value_int": "0x0" + }, + { + "id": "field3CC", + "offset_int": "0x3cc", + "reg_width": 32, + "name": "GPIO B Pin Control Non-Privilege Register (gpiob_pcnp)", + "description": "TrustZone register - GPIO B Pin Control Non-Privilege Register (gpiob_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field3D0", + "offset_int": "0x3d0", + "reg_width": 32, + "name": "GPIO B Interrupt Control Non-Privilege Register (gpiob_icnp)", + "description": "TrustZone register - GPIO B Interrupt Control Non-Privilege Register (gpiob_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field3D4", + "offset_int": "0x3d4", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 0 (gpiob_icr0)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 0 (gpiob_icr0)", + "default_value_int": "0x0" + }, + { + "id": "field3D8", + "offset_int": "0x3d8", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 1 (gpiob_icr1)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 1 (gpiob_icr1)", + "default_value_int": "0x0" + }, + { + "id": "field3DC", + "offset_int": "0x3dc", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 2 (gpiob_icr2)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 2 (gpiob_icr2)", + "default_value_int": "0x0" + }, + { + "id": "field3E0", + "offset_int": "0x3e0", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 3 (gpiob_icr3)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 3 (gpiob_icr3)", + "default_value_int": "0x0" + }, + { + "id": "field3E4", + "offset_int": "0x3e4", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 4 (gpiob_icr4)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 4 (gpiob_icr4)", + "default_value_int": "0x0" + }, + { + "id": "field3E8", + "offset_int": "0x3e8", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 5 (gpiob_icr5)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 5 (gpiob_icr5)", + "default_value_int": "0x0" + }, + { + "id": "field3EC", + "offset_int": "0x3ec", + "reg_width": 32, + "name": "GPIO C Lock Register (gpioc_lock)", + "description": "TrustZone register - GPIO C Lock Register (gpioc_lock)", + "default_value_int": "0x0" + }, + { + "id": "field3F0", + "offset_int": "0x3f0", + "reg_width": 32, + "name": "GPIO C Pin Control Non-Secure Register (gpioc_pcns)", + "description": "TrustZone register - GPIO C Pin Control Non-Secure Register (gpioc_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field3F4", + "offset_int": "0x3f4", + "reg_width": 32, + "name": "GPIO C Interrupt Control Non-Secure Register (gpioc_icns)", + "description": "TrustZone register - GPIO C Interrupt Control Non-Secure Register (gpioc_icns)", + "default_value_int": "0x0" + }, + { + "id": "field3F8", + "offset_int": "0x3f8", + "reg_width": 32, + "name": "GPIO C Pin Control Non-Privilege Register (gpioc_pcnp)", + "description": "TrustZone register - GPIO C Pin Control Non-Privilege Register (gpioc_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field3FC", + "offset_int": "0x3fc", + "reg_width": 32, + "name": "GPIO C Interrupt Control Non-Privilege Register (gpioc_icnp)", + "description": "TrustZone register - GPIO C Interrupt Control Non-Privilege Register (gpioc_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field400", + "offset_int": "0x400", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 0 (gpioc_icr0)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 0 (gpioc_icr0)", + "default_value_int": "0x0" + }, + { + "id": "field404", + "offset_int": "0x404", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 1 (gpioc_icr1)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 1 (gpioc_icr1)", + "default_value_int": "0x0" + }, + { + "id": "field408", + "offset_int": "0x408", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 2 (gpioc_icr2)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 2 (gpioc_icr2)", + "default_value_int": "0x0" + }, + { + "id": "field40C", + "offset_int": "0x40c", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 3 (gpioc_icr3)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 3 (gpioc_icr3)", + "default_value_int": "0x0" + }, + { + "id": "field410", + "offset_int": "0x410", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 4 (gpioc_icr4)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 4 (gpioc_icr4)", + "default_value_int": "0x0" + }, + { + "id": "field414", + "offset_int": "0x414", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 5 (gpioc_icr5)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 5 (gpioc_icr5)", + "default_value_int": "0x0" + }, + { + "id": "field418", + "offset_int": "0x418", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 6 (gpioc_icr6)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 6 (gpioc_icr6)", + "default_value_int": "0x0" + }, + { + "id": "field41C", + "offset_int": "0x41c", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 7 (gpioc_icr7)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 7 (gpioc_icr7)", + "default_value_int": "0x0" + }, + { + "id": "field420", + "offset_int": "0x420", + "reg_width": 32, + "name": "GPIO D Lock Register (gpiod_lock)", + "description": "TrustZone register - GPIO D Lock Register (gpiod_lock)", + "default_value_int": "0x0" + }, + { + "id": "field424", + "offset_int": "0x424", + "reg_width": 32, + "name": "GPIO D Pin Control Non-Secure Register (gpiod_pcns)", + "description": "TrustZone register - GPIO D Pin Control Non-Secure Register (gpiod_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field428", + "offset_int": "0x428", + "reg_width": 32, + "name": "GPIO D Interrupt Control Non-Secure Register (gpiod_icns)", + "description": "TrustZone register - GPIO D Interrupt Control Non-Secure Register (gpiod_icns)", + "default_value_int": "0x0" + }, + { + "id": "field42C", + "offset_int": "0x42c", + "reg_width": 32, + "name": "GPIO D Pin Control Non-Privilege Register (gpiod_pcnp)", + "description": "TrustZone register - GPIO D Pin Control Non-Privilege Register (gpiod_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field430", + "offset_int": "0x430", + "reg_width": 32, + "name": "GPIO D Interrupt Control Non-Privilege Register (gpiod_icnp)", + "description": "TrustZone register - GPIO D Interrupt Control Non-Privilege Register (gpiod_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field434", + "offset_int": "0x434", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 0 (gpiod_icr0)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 0 (gpiod_icr0)", + "default_value_int": "0x0" + }, + { + "id": "field438", + "offset_int": "0x438", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 1 (gpiod_icr1)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 1 (gpiod_icr1)", + "default_value_int": "0x0" + }, + { + "id": "field43C", + "offset_int": "0x43c", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 2 (gpiod_icr2)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 2 (gpiod_icr2)", + "default_value_int": "0x0" + }, + { + "id": "field440", + "offset_int": "0x440", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 3 (gpiod_icr3)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 3 (gpiod_icr3)", + "default_value_int": "0x0" + }, + { + "id": "field444", + "offset_int": "0x444", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 4 (gpiod_icr4)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 4 (gpiod_icr4)", + "default_value_int": "0x0" + }, + { + "id": "field448", + "offset_int": "0x448", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 5 (gpiod_icr5)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 5 (gpiod_icr5)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41052/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41052/database.yaml new file mode 100644 index 0000000..3c84964 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41052/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw45b41z8 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41053/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41053/database.yaml new file mode 100644 index 0000000..3c84964 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41053/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw45b41z8 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41082/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41082/database.yaml new file mode 100644 index 0000000..3c84964 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41082/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw45b41z8 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41083/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41083/database.yaml new file mode 100644 index 0000000..3c84964 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw45z41083/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw45b41z8 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z83/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z83/database.yaml new file mode 100644 index 0000000..fcac4a3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z83/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x10_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x2_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z96/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z96/database.yaml new file mode 100644 index 0000000..d924f20 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z96/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x10_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z97/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z97/database.yaml new file mode 100644 index 0000000..d924f20 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42z97/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x10_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb2/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb2/database.yaml new file mode 100644 index 0000000..fe6110d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb2/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb3/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb3/database.yaml new file mode 100644 index 0000000..fe6110d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb3/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb6/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb6/database.yaml new file mode 100644 index 0000000..fe6110d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb6/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/database.yaml new file mode 100644 index 0000000..d789e85 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/database.yaml @@ -0,0 +1,197 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + + a1: + features: + pfr: + romcfg: + reg_spec: ifr_romcfg_a1.json + cmactable: + reg_spec: ifr_cmactable_a1.json + a2: + features: + pfr: + romcfg: + reg_spec: ifr_romcfg_a1.json + cmactable: + reg_spec: ifr_cmactable_a1.json + a2.1: + features: + pfr: + romcfg: + reg_spec: ifr_romcfg_a2.1.json + cmactable: + reg_spec: ifr_cmactable_a1.json + +latest: a2.1 + +# General MCU information +info: + purpose: Wireless Connectivity MCUs + spsdk_predecessor_name: kw47xx + # Web page of MCU representative + web: https://www.nxp.com + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "can", "spi", "i2c"] + +features: + # ======== Fuses description section ======== + fuses: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x3000_4000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert21] + rot_type: "cert_block_21" + + # ======== Blhost section ======== + blhost: + sub_features: [overridden_properties, property_warnings] + overridden_properties: + 10: "verify-erase" + 34: "fuse-program-voltage" + property_warnings: + 34: # 0x22 in hexadecimal + value: 0 + message: "WARNING: Setting property Fuse Program Voltage (0x22) to 0 on KW47 will cause a device reset!" + + # ======== DAT section ======== + dat: + sub_features: ["famode_cert"] + socc: 9 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + dat_is_using_sha256_always: True + famode_cert: [signed_xip, nxp_signed_xip] # List of Fault analysis Mode certificates (names of MBI classes) + famode_cfg_defaults: # Dictionary of default values of standard MBI members for FAmode image + outputImageExecutionTarget: xip + inputImageFile: generated + outputImageExecutionAddress: 0 + firmwareVersion: 0 + enableTrustZone: false + trustZonePresetFile: null + manifestDigestHashAlgorithm: sha256 + outputImageSubtype: main + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinImageSubType + - Mbi_ExportMixinAppTrustZone + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinImageSubType + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestDigest + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + nxp_signed_xip: + image_type: SIGNED_XIP_NXP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestDigest + - Mbi_MixinImageSubType + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + nbu_signed_xip: + image_type: NBU_SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinImageSubType + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestDigest + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + nxp_signed: nxp_signed_xip + nbu_signed: nbu_signed_xip + + # ======== PFR section ======== + pfr: + sub_features: [romcfg, cmactable] + romcfg: + address: 0x200_0000 + reg_spec: ifr_romcfg_a0.json + cmactable: + address: 0x0200_4000 + reg_spec: ifr_cmactable_a0.json + + # ======== Secure binary v3.1 section ======== + sb31: + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - loadHashLocking + - fillMemory + - checkFwVersion + + # ======== TrustZone section ======== + tz: + reg_spec: tz.json + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 + + # ======== EL2GO TP section ======== + el2go_tp: + el2go_name: KW + prov_method: fw_data_split + use_additional_data: true + fw_read_address: 0x3001_0000 + ignored_otp_ranges: [31, 32] + validation_method: max_so_size=1024 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/fuses.json new file mode 100644 index 0000000..eb3a2d6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/fuses.json @@ -0,0 +1,1434 @@ +{ + "cpu": "KW47B42ZB7", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Write/Read/Override Protection" + }, + "registers": [ + { + "id": "fuse5", + "name": "CUST_PROD_OEMFW_AUTH_PUK_LOCK", + "description": "Locks CUST_PROD_OEMFW_AUTH_PUK[255:0]. When blown, the operation with fuses is limited according the burnt value (xx1 - fuse writing disabled;x1x - fuse overriding disabled; 1xx - fuse reading disabled).", + "index_int": "0x0005", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse5-bit-0", + "name": "WRITE_PROTECTION", + "description": "Write protection for CUST_PROD_OEMFW_AUTH_PUK[255:0]. When write protection is blown, it protects the fuses against writing to it.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable write protection lock." + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable write protection lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 5 + } + ] + }, + { + "id": "fuse6", + "name": "CUST_PROD_OEMFW_ENC_SK_LOCK", + "description": "Locks CUST_PROD_OEMFW_ENC_SK[255:0]. When blown, the operation with fuses is limited according the burnt value (xx1 - fuse writing disabled;x1x - fuse overriding disabled; 1xx - fuse reading disabled).", + "index_int": "0x0006", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse6-bit-0", + "name": "WRITE_PROTECTION", + "description": "Write protection for CUST_PROD_OEMFW_ENC_SK[255:0]. When write protection is blown, it protects the fuses against writing to it.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable write protection lock." + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable write protection lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 5 + } + ] + }, + { + "id": "fuse8", + "name": "DCFG_CC_SOCU_L1_LOCK", + "description": "Locks DCFG_CC_SOCU_L1. When blown, the operation with fuses is limited according the burnt value (xx1 - fuse writing disabled;x1x - fuse overriding disabled; 1xx - fuse reading disabled).", + "index_int": "0x0008", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse8-bit-0", + "name": "WRITE_PROTECTION", + "description": "Write protection for DCFG_CC_SOCU_L1. When write protection is blown, it protects the fuses against writing to it.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable write protection lock." + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable write protection lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 5 + } + ] + }, + { + "id": "fuse9", + "name": "DCFG_CC_SOCU_L2_LOCK", + "description": "Locks DCFG_CC_SOCU_L2. When blown, the operation with fuses is limited according the burnt value (xx1 - fuse writing disabled;x1x - fuse overriding disabled; 1xx - fuse reading disabled).", + "index_int": "0x0009", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse9-bit-0", + "name": "WRITE_PROTECTION", + "description": "Write protection for DCFG_CC_SOCU_L2. When write protection is blown, it protects the fuses against writing to it.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable write protection lock." + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable write protection lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 5 + } + ] + } + ] + }, + { + "group": { + "name": "Config", + "description": "Miscellaneous security configuration" + }, + "registers": [ + { + "id": "fuse10", + "name": "LIFECYCLE", + "description": "Lifecycle state.", + "index_int": "0x000A", + "default_value_int": "0x0007", + "reg_width": 8, + "bitfields": [ + { + "width": 8, + "id": "fuse10-bits-0-7", + "name": "LIFECYCLE", + "description": "Lifecycle state.", + "values": [ + { + "name": "BLANK", + "value": 0, + "description": "Blank" + }, + { + "name": "OEM_OPEN", + "value": 7, + "description": "OEM Open" + }, + { + "name": "OEM_SEC_CLOSED", + "value": 15, + "description": "OEM Secure World Closed." + }, + { + "name": "OEM_CLOSED", + "value": 31, + "description": "OEM Closed" + }, + { + "name": "OEM_LOCKED", + "value": 159, + "description": "OEM Locked" + }, + { + "name": "OEM_RETURN", + "value": 63, + "description": "OEM Return" + } + ] + } + ] + }, + { + "id": "fuse11", + "name": "DBG_EN_LOCK", + "description": "Debug Enable Lock. To increase the flexibility of the debug controller, an option to enable the debug ports via OEM software can be done by default setting of \u2018DBG_EN_LOCK\u2019 at 0. The SMSCM[DBGEN] and SMSCM[DBGEN_B] registers will not be write-locked, meaning SW can allow specified debug ports to be opened without the challenge-response scheme. It is the responsibility of the OEM\u2019s application to handle these registers carefully. Since this relies solely on OEM\u2019s SW protections it reduces the overall security of the system. If this feature is not required, it is strongly recommended to burn the \u2018DBG_EN_LOCK\u2019 to 1 which disables this feature. For production lifecycles (OEM-Closed and OEM-Locked), this feature is only available in OEM-Closed. In OEM-Locked, the debug access registers are write-locked regardless of the DBG_EN_LOCK fuse value.", + "index_int": "0x000B", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse11-bit-0", + "name": "DBG_EN_LOCK", + "description": "Debug Enable Lock.", + "values": [ + { + "name": "Open", + "value": 0, + "description": "The debug access control registers remain open when jumping to customer code." + }, + { + "name": "Locked", + "value": 1, + "description": "The debug access control registers are write-locked before jumping to customer code." + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse12", + "name": "DBG_AUTH_DIS", + "description": "Debug Authentication Disabled.", + "index_int": "0x000C", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse12-bit-0", + "name": "DBG_AUTH_DIS", + "description": "Debug Authentication Disabled.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Debug Authentication enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Debug Authentication disabled" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse13", + "name": "TZM_EN", + "description": "Trust Zone Mode Enable.", + "index_int": "0x000D", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse13-bit-0", + "name": "TZM_EN", + "description": "Trust Zone Mode Enable.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "TZ-M is disabled by default." + }, + { + "name": "Enabled", + "value": 1, + "description": "TZ-M is enabled" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse17", + "name": "SERIAL_DIS", + "description": "Serial Download Disabled.", + "index_int": "0x0011", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse17-bit-0", + "name": "SERIAL_DIS", + "description": "Serial Download Disabled.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "ISP path is enabled." + }, + { + "name": "Disabled", + "value": 1, + "description": "ISP path is disabled." + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse18", + "name": "WAKEUP_DIS", + "description": "Wakeup Disabled.", + "index_int": "0x0012", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse18-bit-0", + "name": "WAKEUP_DIS", + "description": "Wakeup Disabled.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Boot-ROM low power wakeup is enabled." + }, + { + "name": "Disabled", + "value": 1, + "description": "Boot-ROM low power wakeup is disabled." + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse19", + "name": "CUST_PROD_OEMFW_AUTH_PUK_REVOKE", + "description": "Key revocation indicators of CUST_PROD_OEMFW_AUTH_PUK.", + "index_int": "0x0013", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse19-bit-0", + "name": "REVOKE_ROTK_1", + "description": "Revokes Root of Trust Key 1.", + "values": [ + { + "name": "KEEP", + "value": 0, + "description": "Keep the RoTK 1." + }, + { + "name": "REVOKE", + "value": 1, + "description": "Revoke the RoTK 1." + } + ] + }, + { + "width": 1, + "id": "fuse19-bit-1", + "name": "REVOKE_ROTK_2", + "description": "Revokes Root of Trust Key 2.", + "values": [ + { + "name": "KEEP", + "value": 0, + "description": "Keep the RoTK 2." + }, + { + "name": "REVOKE", + "value": 1, + "description": "Revoke the RoTK 2." + } + ] + }, + { + "width": 1, + "id": "fuse19-bit-2", + "name": "REVOKE_ROTK_3", + "description": "Revokes Root of Trust Key 3.", + "values": [ + { + "name": "KEEP", + "value": 0, + "description": "Keep the RoTK 3." + }, + { + "name": "REVOKE", + "value": 1, + "description": "Revoke the RoTK 3." + } + ] + }, + { + "width": 1, + "id": "fuse19-bit-3", + "name": "REVOKE_ROTK_4", + "description": "Revokes Root of Trust Key 4.", + "values": [ + { + "name": "KEEP", + "value": 0, + "description": "Keep the RoTK 4." + }, + { + "name": "REVOKE", + "value": 1, + "description": "Revoke the RoTK 4." + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse21", + "name": "DBG_AUTH_VU", + "description": "These Debug Authentication Vendor Usage fuses are used by customers to restrict debug certificates. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0015", + "reg_width": 16 + }, + { + "id": "fuse22", + "name": "IMG_KEY_REVOKE", + "description": "These fuses are used to revoke image signing keys separately from root keys. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0016", + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Keys", + "description": "Authentication and encryption keys" + }, + "registers": [ + { + "id": "fuse31", + "name": "CUST_PROD_OEMFW_AUTH_PUK", + "description": "The RoTKTH for P-256 keys will be 256 bits in length, write as-is. The RoTKTH for P-384 keys will be 384 bits in length, users can truncate the value prior to writing the fuse or write it as is and will be truncated automatically.", + "index_int": "0x001F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0001" + }, + "reg_width": 256 + }, + { + "id": "fuse32", + "name": "CUST_PROD_OEMFW_ENC_SK", + "description": "256-bit encryption key used to protect confidentiality of OEM firmware. Typically required for firmware updates using sb3 (SB3KDK).", + "index_int": "0x0020", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0001" + }, + "reg_width": 256 + } + ] + }, + { + "group": { + "name": "DCFG_CC_SOCU", + "description": "Debug authentication configuration" + }, + "registers": [ + { + "id": "fuse34", + "name": "DCFG_CC_SOCU_L1", + "description": "Debug authentication configuration for level 1 customer.\nCombinations of PIN and DFLT bits and resulting restriction level:\n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product.\n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate.\n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected.\n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "index_int": "0x0022", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0001" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse34-bit-0", + "name": "PIN_NIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0 (AP0).", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-1", + "name": "PIN_DBGEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0 (AP0).", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-2", + "name": "PIN_SPNIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0 (AP0).", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-3", + "name": "PIN_SPIDEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0 (AP0).", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-4", + "name": "PIN_NBU_DBGEN", + "description": "Controls debugging of NBU (radio) core.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-5", + "name": "PIN_DSP_DBGEN", + "description": "Controls debugging of DSP core.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-6", + "name": "PIN_ISP_CMD_EN", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-7", + "name": "PIN_FA_CMD_EN", + "description": "Controls whether DM-AP Set FA Mode command (command code: 0x06) can be issued after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-8", + "name": "PIN_ME_CMD_EN", + "description": "Controls whether DM-AP Mass Erase command (command code: 0x03) can be issued after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-9", + "name": "DFLT_NIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0 (AP0).", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-10", + "name": "DFLT_DBGEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0 (AP0).", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-11", + "name": "DFLT_SPNIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0 (AP0).", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-12", + "name": "DFLT_SPIDEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0 (AP0).", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-13", + "name": "DFLT_NBU_DBGEN", + "description": "Controls debugging of NBU (radio) core.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-14", + "name": "DFLT_DSP_DBGEN", + "description": "Controls debugging of DSP core.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-15", + "name": "DFLT_ISP_CMD_EN", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-16", + "name": "DFLT_FA_CMD_EN", + "description": "Controls whether DM-AP Set FA Mode command (command code: 0x06) can be issued after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-17", + "name": "DFLT_ME_CMD_EN", + "description": "Controls whether DM-AP Mass Erase command (command code: 0x03) can be issued after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-18", + "name": "UUID_CHECK", + "description": "Controls whether to enforce UUID check during Debug Credential (DC) validation. If this bit is set, then the device will only accept a Debug Credential (DC) certificate containing a UUID attribute that is an exact match to the device's UUID.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "UUID matching not required." + }, + { + "name": "Enabled", + "value": 1, + "description": "UUID matching required" + } + ] + }, + { + "width": 2, + "id": "fuse34-bits-19-20", + "name": "FORCE_P256", + "description": "Valid only for DCFG_SOCU_L1. Must be set to value 10b, when RoTK is based on P-256. All other values (00b, 01b, 11b) indicate P-384. See Protocol Version (DCFG_VER).", + "values": [ + { + "name": "P-384", + "value": 0, + "description": "RoTK is based on P-384." + }, + { + "name": "P-384_0", + "value": 1, + "description": "RoTK is based on P-384." + }, + { + "name": "P-256", + "value": 2, + "description": "RoTK is based on P-256." + }, + { + "name": "P-384_1", + "value": 3, + "description": "RoTK is based on P-384." + } + ] + }, + { + "width": 11 + } + ] + }, + { + "id": "fuse35", + "name": "DCFG_CC_SOCU_L2", + "description": "Debug authentication configuration for level 2 customer.\nCombinations of PIN and DFLT bits and resulting restriction level:\n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product.\n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate.\n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected.\n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "index_int": "0x0023", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0001" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse35-bit-0", + "name": "PIN_NIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0 (AP0).", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-1", + "name": "PIN_DBGEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0 (AP0).", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-2", + "name": "PIN_SPNIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0 (AP0).", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-3", + "name": "PIN_SPIDEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0 (AP0).", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-4", + "name": "PIN_NBU_DBGEN", + "description": "Controls debugging of NBU (radio) core.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-5", + "name": "PIN_DSP_DBGEN", + "description": "Controls debugging of DSP core.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-6", + "name": "PIN_ISP_CMD_EN", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-7", + "name": "PIN_FA_CMD_EN", + "description": "Controls whether DM-AP Set FA Mode command (command code: 0x06) can be issued after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-8", + "name": "PIN_ME_CMD_EN", + "description": "Controls whether DM-AP Mass Erase command (command code: 0x03) can be issued after authentication.", + "values": [ + { + "name": "DAP", + "value": 0, + "description": "Use debug authentication. DFLT bit must be zero." + }, + { + "name": "DFLT", + "value": 1, + "description": "Behaviour is defined by DFLT bit." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-9", + "name": "DFLT_NIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0 (AP0).", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-10", + "name": "DFLT_DBGEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0 (AP0).", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-11", + "name": "DFLT_SPNIDEN", + "description": "Controls non-invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0 (AP0).", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-12", + "name": "DFLT_SPIDEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0 (AP0).", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-13", + "name": "DFLT_NBU_DBGEN", + "description": "Controls debugging of NBU (radio) core.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-14", + "name": "DFLT_DSP_DBGEN", + "description": "Controls debugging of DSP core.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-15", + "name": "DFLT_ISP_CMD_EN", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-16", + "name": "DFLT_FA_CMD_EN", + "description": "Controls whether DM-AP Set FA Mode command (command code: 0x06) can be issued after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-17", + "name": "DFLT_ME_CMD_EN", + "description": "Controls whether DM-AP Mass Erase command (command code: 0x03) can be issued after authentication.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed;\nPIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up." + }, + { + "name": "Enabled", + "value": 1, + "description": "PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled;\nPIN=0,DFLT=1: Illegal." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-18", + "name": "UUID_CHECK", + "description": "Controls whether to enforce UUID check during Debug Credential (DC) validation. If this bit is set, then the device will only accept a Debug Credential (DC) certificate containing a UUID attribute that is an exact match to the device's UUID.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "UUID matching not required." + }, + { + "name": "Enabled", + "value": 1, + "description": "UUID matching required" + } + ] + }, + { + "width": 13 + } + ] + } + ] + }, + { + "group": { + "name": "Versions", + "description": "Version counters for various software components in SoC" + }, + "registers": [ + { + "id": "fuse37", + "name": "CM33_S_VER_CNT", + "description": "Monotonic counter indicating the minimum secure OEM CM33 firmware version. The number of set bits equals the version number. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0025", + "reg_width": 64 + }, + { + "id": "fuse38", + "name": "CM33_NS_VER_CNT", + "description": "Monotonic counter indicating the minimum non-secure OEM CM33 firmware version. The number of set bits equals the version number. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0026", + "reg_width": 256 + }, + { + "id": "fuse39", + "name": "RADIO_VER_CNT", + "description": "Monotonic counter indicating the minimal radio firmware version. The number of set bits equals the version number. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0027", + "reg_width": 128 + }, + { + "id": "fuse40", + "name": "SNT_VER_CNT", + "description": "Monotonic counter indicating the minimum ELE loadable firmware version. The number of set bits equals the version number. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0028" + }, + { + "id": "fuse41", + "name": "CM33_BOOTLOADER_VER_CNT", + "description": "Monotonic counter indicating the minimal CM33 bootloader version. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0029", + "reg_width": 16 + }, + { + "id": "fuse42", + "name": "CM33_S_VER_CNT_VIRTUAL", + "description": "Virtual counter indicating the secure OEM CM33 firmware version. The integer value of this field indicates the number of set bits in CM33_S_VER_CNT and that number equals the version number. Allowed values increment in form of 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, ..., etc.", + "index_int": "0x002A", + "calculated": { + "method": "virtual_counter", + "src_register_id": "fuse37" + }, + "reg_width": 8 + }, + { + "id": "fuse43", + "name": "CM33_NS_VER_CNT_VIRTUAL", + "description": "Virtual counter indicating the non-secure OEM CM33 firmware version. The integer value of this field indicates the number of set bits in CM33_NS_VER_CNT and that number equals the version number. Allowed values increment in form of 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, ..., etc.", + "index_int": "0x002B", + "calculated": { + "method": "virtual_counter", + "src_register_id": "fuse38" + }, + "reg_width": 16 + }, + { + "id": "fuse44", + "name": "RADIO_VER_CNT_VIRTUAL", + "description": "Virtual counter indicating the radio firmware version. The integer value of this field indicates the number of set bits in RADIO_VER_CNT and that number equals the version number. Allowed values increment in form of 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, ..., etc.", + "index_int": "0x002C", + "calculated": { + "method": "virtual_counter", + "src_register_id": "fuse39" + }, + "reg_width": 8 + }, + { + "id": "fuse45", + "name": "SNT_VER_CNT_VIRTUAL", + "description": "Virtual counter indicating the ELE loadable firmware version. The integer value of this field indicates the number of set bits in SNT_VER_CNT and that number equals the version number. Allowed values increment in form of 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, ..., etc.", + "index_int": "0x002D", + "calculated": { + "method": "virtual_counter", + "src_register_id": "fuse40" + }, + "reg_width": 8 + }, + { + "id": "fuse46", + "name": "CM33_BOOTLOADER_VER_CNT_VIRTUAL", + "description": "Virtual counter indicating the minimal version of the CM33 bootloader. Integer value equivalent to number of set fuse bits Allowed values increment in form of 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, ..., etc.", + "index_int": "0x002E", + "calculated": { + "method": "virtual_counter", + "src_register_id": "fuse41" + }, + "reg_width": 8 + } + ] + }, + { + "group": { + "name": "SEC_BOOT_EN", + "description": "Secure boot enable" + }, + "registers": [ + { + "id": "fuse51", + "name": "NBU_SEC_BOOT_EN", + "description": "NBU secure boot enable fuse. NBU image must be authenticated successfully to boot if this fuse is set. See the Security Reference Manual for the value of this fuse reflected in bit 12 of SMSCM_LIFECYCLE register.", + "index_int": "0x0033", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "fuse51-bit-0", + "name": "NBU_SEC_BOOT_EN", + "description": "NBU secure boot enable fuse. NBU image must be authenticated successfully to boot if this fuse is set.\nSee the Security Reference Manual for the value of this fuse reflected in bit 12 of SMSCM_LIFECYCLE register.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "NBU image doesn't need to be authenticated (default)" + }, + { + "name": "Enabled", + "value": 1, + "description": "NBU image must be authenticated to boot" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse53", + "name": "OEM_SEC_BOOT_EN", + "description": "Main core secure boot enable boot enable fuse, boot image must be authenticated successfully to boot if this fuse field is set to 0xA. See the Security Reference Manual for the value of this fuse reflected in bits 24-27 of SMSCM_LIFECYCLE register.", + "index_int": "0x0035", + "reg_width": 8, + "bitfields": [ + { + "width": 4, + "id": "fuse53-bits-0-3", + "name": "OEM_SEC_BOOT_EN", + "description": "Main core secure boot enable boot enable fuse, boot image must be authenticated successfully to boot if this fuse field is set to 0xA. See the Security Reference Manual for the value of this fuse reflected in bits 24-27 of SMSCM_LIFECYCLE register.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Boot image doesn't need to be authenticated to boot (default)" + }, + { + "name": "Enabled", + "value": 10, + "description": "Boot image must be authenticated to boot" + } + ] + }, + { + "width": 4 + } + ] + } + ] + }, + { + "group": { + "name": "SECURE_STORAGE_CNT", + "description": "Secure storage counter" + }, + "registers": [ + { + "id": "fuse56", + "name": "SECURE_STORAGE_VER_CNT", + "description": "Secure Storage Verification Counter. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc.", + "index_int": "0x0038", + "reg_width": 96 + }, + { + "id": "fuse57", + "name": "SECURE_STORAGE_VER_CNT_VIRTUAL", + "description": "Virtual Secure Storage Verification Counter. Allowed values increment in form of 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, ..., etc. Fuse is not accessible via ISP mode and can be read and written from application by fuse read and fuse write ELE API.", + "index_int": "0x0039", + "access": "none", + "reg_width": 8 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_cmactable_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_cmactable_a0.json new file mode 100644 index 0000000..ea2c352 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_cmactable_a0.json @@ -0,0 +1,188 @@ +{ + "cpu": "KW45B41Z8", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "Hash update needed", + "description": "Hash update needed", + "offset_int": "0", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128, + "bitfields": [ + { + "width": 32, + "id": "field000-bits-0-31", + "name": "Hash update needed", + "description": "Hash update needed", + "values": [ + { + "name": "NO HASH UPDATE NEEDED", + "value": 0, + "description": "No hash update needed" + }, + { + "name": "HASH UPDATE NEEDED", + "value": 4294967295, + "description": "Hash update needed" + } + ] + }, + { + "width": 32 + }, + { + "width": 32 + }, + { + "width": 32 + } + ] + }, + { + "id": "field016", + "name": "CMAC_APP", + "description": "16 byte CMAC for application image. Hash of main flash primary boot image data at 0x0 OR Hash of Image data at ABASE (if FLW is enabled)", + "offset_int": "0x10", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128 + }, + { + "id": "field032", + "name": "Hash update needed 1", + "description": "Hash update needed 1", + "offset_int": "0x20", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128, + "bitfields": [ + { + "width": 32, + "id": "field032-bits-0-31", + "name": "Hash update needed 1", + "description": "Hash update needed 1", + "values": [ + { + "name": "NO HASH UPDATE NEEDED", + "value": 0, + "description": "No hash update needed" + }, + { + "name": "HASH UPDATE NEEDED", + "value": 4294967295, + "description": "Hash update needed" + } + ] + }, + { + "width": 32 + }, + { + "width": 32 + }, + { + "width": 32 + } + ] + }, + { + "id": "field048", + "name": "CMAC_FALLBACK", + "description": "16 byte CMAC for fallback image. Hash of fallback image data (if “Image 1 Base Address” field in IFR0 page0 is not 0xFFFFFFFF)", + "offset_int": "0x30", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128 + }, + { + "id": "field064", + "name": "Hash update needed 2", + "description": "Hash update needed", + "offset_int": "0x40", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128, + "bitfields": [ + { + "width": 32, + "id": "field064-bits-0-31", + "name": "Hash update needed", + "description": "Hash update needed", + "values": [ + { + "name": "NO HASH UPDATE NEEDED", + "value": 0, + "description": "No hash update needed" + }, + { + "name": "HASH UPDATE NEEDED", + "value": 4294967295, + "description": "Hash update needed" + } + ] + }, + { + "width": 32 + }, + { + "width": 32 + }, + { + "width": 32 + } + ] + }, + { + "id": "field0080", + "name": "CMAC_NBU", + "description": "Hash of radio (NBU) flash image data", + "offset_int": "0x50", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 128 + }, + { + "id": "Reserved0096", + "name": "Reserved0096", + "description": "This field is reserved for internal use", + "offset_int": "0x60", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "none", + "is_reserved": true, + "reg_width": 128, + "bitfields": [ + { + "width": 32 + }, + { + "width": 32 + }, + { + "width": 32 + }, + { + "width": 32 + } + ] + }, + { + "id": "Reserved00112", + "name": "Reserved00112", + "description": "This field is reserved for internal use", + "offset_int": "0x70", + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "none", + "is_reserved": true, + "reg_width": 128 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a0.json new file mode 100644 index 0000000..901ad0c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a0.json @@ -0,0 +1,1462 @@ +{ + "cpu": "KW47B42ZB7", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "FLW_Configuration", + "description": "FLW Configuration", + "offset_int": "0", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field000-bit0", + "name": "RESTORE_FLW_FLAG", + "description": "FLW Configuration", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal, use specified mapping" + }, + { + "name": "UNINITIALIZED", + "value": 1, + "description": "Dual Image Boot is uninitialized" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00001", + "name": "Reserved 0x00001", + "description": "This field is reserved for internal use", + "offset_int": "0x0001", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00004", + "name": "Reserved 0x00004", + "description": "This field is reserved for internal use", + "offset_int": "0x0004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "FLW_REGION_ABASE", + "description": "FLW region, the starting address of the alternative boot image", + "offset_int": "0x0008", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field00C", + "name": "FLW_REGION_BCNT", + "description": "FLW region, the size of the alternative boot image in 32 KB blocks", + "offset_int": "0x000C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00010-0001F", + "description": "Block 00010-0001F" + }, + "registers": [ + { + "id": "field010", + "name": "CONFIGURE_NPX_FOR_NORMAL_BOOT", + "description": "NPX configuration", + "offset_int": "0x0010", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "USE_PRINCE", + "description": "Configure NPX to use PRINCE", + "values": [ + { + "name": "CONFIGURE_NPX", + "value": 0, + "description": "Configure NPX" + }, + { + "name": "NOT_CONFIGURE_NPX", + "value": 1, + "description": "Not configure NPX" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "GLOBAL_LOCK", + "description": "Global lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SYSTEM_LOCK", + "description": "System lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "System lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "System lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "GLOBAL_DECRYPTION", + "description": "Global decryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global decryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global decryption disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "GLOBAL_ENCRYPTION", + "description": "Global encryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global encryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global encryption disable" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "STICKY", + "description": "NPX configuration", + "offset_int": "0x0011", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field011-bit0", + "name": "CONFIGURE_NPX_REQUIRED", + "description": "Configure NPX required", + "values": [ + { + "name": "REQUIRED", + "value": 0, + "description": "NPX config. required; ROM follows normal boot path" + }, + { + "name": "NOT_REQUIRED", + "value": 1, + "description": "Not required, ROM follows Low-power wakeup path" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00012", + "name": "Reserved 0x00012", + "description": "This field is reserved for internal use", + "offset_int": "0x0012", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "NPX_REGIONS_VALID", + "description": "NPX regions valid", + "offset_int": "0x0018", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field01C", + "name": "NPX_REGIONS_COUNT", + "description": "NPX regions count", + "offset_int": "0x001C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00020-0002F", + "description": "Block 00020-0002F" + }, + "registers": [ + { + "id": "field020", + "name": "NPX_REGION_0_VALID", + "description": "NPX region 0 valid", + "offset_int": "0x0020", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field024", + "name": "NPX_REGION_0_START_ADDRESS", + "description": "NPX region 0 start address", + "offset_int": "0x0024", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field028", + "name": "NPX_REGION_0_END_ADDRESS", + "description": "NPX region 0 end address", + "offset_int": "0x0028", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field02C", + "name": "NPX_REGION_1_VALID", + "description": "NPX region 1 valid", + "offset_int": "0x002C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00030-0003F", + "description": "Block 00030-0003F" + }, + "registers": [ + { + "id": "field030", + "name": "NPX_REGION_1_START_ADDRESS", + "description": "NPX region 1 start address", + "offset_int": "0x0030", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field034", + "name": "NPX_REGION_1_END_ADDRESS", + "description": "NPX region 1 end address", + "offset_int": "0x0034", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field038", + "name": "NPX_REGION_2_VALID", + "description": "NPX region 2 valid", + "offset_int": "0x0038", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field03C", + "name": "NPX_REGION_2_START_ADDRESS", + "description": "NPX region 2 start address", + "offset_int": "0x003C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00040-0004F", + "description": "Block 00040-0004F" + }, + "registers": [ + { + "id": "field040", + "name": "NPX_REGION_2_END_ADDRESS", + "description": "NPX region 2 end address", + "offset_int": "0x0040", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field044", + "name": "NPX_REGION_3_VALID", + "description": "NPX region 3 valid", + "offset_int": "0x0044", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field048", + "name": "NPX_REGION_3_START_ADDRESS", + "description": "NPX region 3 start address", + "offset_int": "0x0048", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field04C", + "name": "NPX_REGION_3_END_ADDRESS", + "description": "NPX region 3 end address", + "offset_int": "0x004C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00050-0005F", + "description": "Block 00050-0005F" + }, + "registers": [ + { + "id": "field050", + "name": "BOOT_CONFIGURATION", + "description": "Boot configuration", + "offset_int": "0x0050", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field050-bit0", + "name": "ENABLE_ISP_OR_NOT", + "description": "Enable ISP", + "values": [ + { + "name": "ENABLED", + "value": 1, + "description": "Boot config pin enabled" + }, + { + "name": "DISABLED", + "value": 0, + "description": "Boot config pin disabled" + } + ] + }, + { + "width": 2, + "id": "field050-bits1-2", + "name": "BOOT_SPEED", + "description": "Boot speed", + "values": [ + { + "name": "NORMAL_BOOT_32_MHZ", + "value": 0, + "description": "Normal Boot (32MHz)" + }, + { + "name": "FAST_BOOT_96_MHZ", + "value": 2, + "description": "Fast Boot (96 MHz)" + }, + { + "name": "NORM_BOOT_DFLT1", + "value": 1, + "description": "Normal Boot (default)" + }, + { + "name": "NORM_BOOT_DFLT2", + "value": 3, + "description": "Normal Boot (default)" + } + ] + }, + { + "width": 1, + "id": "field050-bit3", + "name": "BOOT_LOW_POWER", + "description": "Boot low power", + "values": [ + { + "name": "POWER_CFG0", + "value": 0, + "description": "Normal Boot: Core LDO = 1.0 V, DCDC = 1.25 V; Fast Boot: Core LDO = 1.1 V DCDC = 1.35 V" + }, + { + "name": "POWER_CFG1", + "value": 1, + "description": "Normal Boot: Core LDO = 1.0 V, DCDC = 1.25 V; Fast Boot: Core LDO = 1.1 V DCDC = 1.8 V" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00051", + "name": "Reserved 0x00051", + "description": "This field is reserved for internal use", + "offset_int": "0x0051", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00060-0006F", + "description": "Block 00060-0006F" + }, + "registers": [ + { + "id": "field060", + "name": "SECURE_BOOT_OPTIONS", + "description": "Secure Boot options", + "offset_int": "0x0060", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "field060-bit1", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN", + "description": "Secure Boot failure alert pin", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot failure alert pin is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot failure alert pin is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field061", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN_SELECTION", + "description": "Secure Boot Failure Alert Pin Selection", + "offset_int": "0x0061", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field061-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field061-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00062", + "name": "Reserved 0x00062", + "description": "This field is reserved for internal use", + "offset_int": "0x0062", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00070-0007F", + "description": "Block 00070-0007F" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00080-0008F", + "description": "Block 00080-0008F" + }, + "registers": [ + { + "id": "field080", + "name": "BOOT_IMAGE_BASE_ADDRESS3", + "description": "Boot Image Base Address 3", + "offset_int": "0x0080", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00090-0009F", + "description": "Block 00090-0009F" + }, + "registers": [ + { + "id": "field090", + "name": "BOOT_IMAGE_BASE_ADDRESS2", + "description": "Boot Image Base Address 2", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000A0-000AF", + "description": "Block 000A0-000AF" + }, + "registers": [ + { + "id": "field0A0", + "name": "BOOT_IMAGE_BASE_ADDRESS1", + "description": "Boot Image Base Address 1", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000B0-000BF", + "description": "Block 000B0-000BF" + }, + "registers": [ + { + "id": "field0B0", + "name": "BOOT_IMAGE_BASE_ADDRESS0", + "description": "Boot Image Base Address 0", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000C0-000CF", + "description": "Block 000C0-000CF" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000D0-000DF", + "description": "Block 000D0-000DF" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000E0-000EF", + "description": "Block 000E0-000EF" + }, + "registers": [ + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000F0-000FF", + "description": "Block 000F0-000FF" + }, + "registers": [ + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00100-0010F", + "description": "Block 00100-0010F" + }, + "registers": [ + { + "id": "field100", + "name": "PERIPHERALS_ENABLE", + "description": "Peripherals Enable", + "offset_int": "0x0100", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field100-bit0", + "name": "LPUART1_PERIPHERAL_FOR_ISP", + "description": "LPUART1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPUART1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPUART1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit1", + "name": "LPI2C1_PERIPHERAL_FOR_ISP", + "description": "LPI2C1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPI2C1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPI2C1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit2", + "name": "LPSPI1_PERIPHERAL_FOR_ISP", + "description": "LPSPI1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPSPI1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPSPI1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit3", + "name": "CAN_PERIPHERAL_FOR_ISP", + "description": "CAN peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "CAN0 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "CAN0enabled" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00101", + "name": "Reserved 0x00101", + "description": "This field is reserved for internal use", + "offset_int": "0x0101", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "field104", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Peripheral Detection Timeout", + "offset_int": "0x0104", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "Reserved00106", + "name": "Reserved 0x00106", + "description": "This field is reserved for internal use", + "offset_int": "0x0106", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field108", + "name": "I2C_SLAVE_ADDRESS", + "description": "I2C Slave Address", + "offset_int": "0x0108", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "Reserved00109", + "name": "Reserved 0x00109", + "description": "This field is reserved for internal use", + "offset_int": "0x0109", + "is_reserved": true, + "default_value_int": "0xFF", + "individual_write_lock": "none", + "reg_width": 8 + }, + { + "id": "Reserved0010A", + "name": "Reserved 0x0010A", + "description": "This field is reserved for internal use", + "offset_int": "0x010A", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field10C", + "name": "CANTxID", + "description": "Field.", + "offset_int": "0x010C", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "field10E", + "name": "CANRxID", + "description": "Field.", + "offset_int": "0x010E", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Block 00110-0011F", + "description": "Block 00110-0011F" + }, + "registers": [ + { + "id": "field110", + "name": "ELE_LOADABLE_FW_ENTRY_ADDRESS", + "description": "ELE_Loadable_FW_Entry_Address", + "offset_int": "0x0110", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00120-0012F", + "description": "Block 00120-0012F" + }, + "registers": [ + { + "id": "field120", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION", + "description": "Secure Hash based image verification feature", + "offset_int": "0x0120", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "bitfields": [ + { + "width": 32, + "id": "field120-bits0-31", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION_CONFIG", + "description": "Secure Hash based image verification feature", + "values": [ + { + "name": "DISABLED", + "value": 4294967295, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1213415752, + "description": "Enabled" + } + ] + } + ] + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a1.json new file mode 100644 index 0000000..ce2ba8b --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a1.json @@ -0,0 +1,1727 @@ +{ + "cpu": "KW47B42ZB7", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "FLW_Configuration", + "description": "FLW Configuration", + "offset_int": "0", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field000-bit0", + "name": "RESTORE_FLW_FLAG", + "description": "FLW Configuration", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal, use specified mapping" + }, + { + "name": "UNINITIALIZED", + "value": 1, + "description": "Dual Image Boot is uninitialized" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00001", + "name": "Reserved 0x00001", + "description": "This field is reserved for internal use", + "offset_int": "0x0001", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00004", + "name": "Reserved 0x00004", + "description": "This field is reserved for internal use", + "offset_int": "0x0004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "FLW_REGION_ABASE", + "description": "FLW region, the starting address of the alternative boot image", + "offset_int": "0x0008", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field00C", + "name": "FLW_REGION_BCNT", + "description": "FLW region, the size of the alternative boot image in 32 KB blocks", + "offset_int": "0x000C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00010-0001F", + "description": "Block 00010-0001F" + }, + "registers": [ + { + "id": "field010", + "name": "CONFIGURE_NPX_FOR_NORMAL_BOOT", + "description": "NPX configuration", + "offset_int": "0x0010", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "USE_PRINCE", + "description": "Configure NPX to use PRINCE", + "values": [ + { + "name": "CONFIGURE_NPX", + "value": 0, + "description": "Configure NPX" + }, + { + "name": "NOT_CONFIGURE_NPX", + "value": 1, + "description": "Not configure NPX" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "GLOBAL_LOCK", + "description": "Global lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SYSTEM_LOCK", + "description": "System lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "System lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "System lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "GLOBAL_DECRYPTION", + "description": "Global decryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global decryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global decryption disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "GLOBAL_ENCRYPTION", + "description": "Global encryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global encryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global encryption disable" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "STICKY", + "description": "NPX configuration", + "offset_int": "0x0011", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field011-bit0", + "name": "CONFIGURE_NPX_REQUIRED", + "description": "Configure NPX required", + "values": [ + { + "name": "REQUIRED", + "value": 0, + "description": "NPX config. required; ROM follows normal boot path" + }, + { + "name": "NOT_REQUIRED", + "value": 1, + "description": "Not required, ROM follows Low-power wakeup path" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00012", + "name": "Reserved 0x00012", + "description": "This field is reserved for internal use", + "offset_int": "0x0012", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "NPX_REGIONS_VALID", + "description": "NPX regions valid", + "offset_int": "0x0018", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field01C", + "name": "NPX_REGIONS_COUNT", + "description": "NPX regions count", + "offset_int": "0x001C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00020-0002F", + "description": "Block 00020-0002F" + }, + "registers": [ + { + "id": "field020", + "name": "NPX_REGION_0_VALID", + "description": "NPX region 0 valid", + "offset_int": "0x0020", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field024", + "name": "NPX_REGION_0_START_ADDRESS", + "description": "NPX region 0 start address", + "offset_int": "0x0024", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field028", + "name": "NPX_REGION_0_END_ADDRESS", + "description": "NPX region 0 end address", + "offset_int": "0x0028", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field02C", + "name": "NPX_REGION_1_VALID", + "description": "NPX region 1 valid", + "offset_int": "0x002C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00030-0003F", + "description": "Block 00030-0003F" + }, + "registers": [ + { + "id": "field030", + "name": "NPX_REGION_1_START_ADDRESS", + "description": "NPX region 1 start address", + "offset_int": "0x0030", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field034", + "name": "NPX_REGION_1_END_ADDRESS", + "description": "NPX region 1 end address", + "offset_int": "0x0034", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field038", + "name": "NPX_REGION_2_VALID", + "description": "NPX region 2 valid", + "offset_int": "0x0038", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field03C", + "name": "NPX_REGION_2_START_ADDRESS", + "description": "NPX region 2 start address", + "offset_int": "0x003C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00040-0004F", + "description": "Block 00040-0004F" + }, + "registers": [ + { + "id": "field040", + "name": "NPX_REGION_2_END_ADDRESS", + "description": "NPX region 2 end address", + "offset_int": "0x0040", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field044", + "name": "NPX_REGION_3_VALID", + "description": "NPX region 3 valid", + "offset_int": "0x0044", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field048", + "name": "NPX_REGION_3_START_ADDRESS", + "description": "NPX region 3 start address", + "offset_int": "0x0048", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field04C", + "name": "NPX_REGION_3_END_ADDRESS", + "description": "NPX region 3 end address", + "offset_int": "0x004C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00050-0005F", + "description": "Block 00050-0005F" + }, + "registers": [ + { + "id": "field050", + "name": "BOOT_CONFIGURATION", + "description": "Boot configuration", + "offset_int": "0x0050", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field050-bit0", + "name": "ENABLE_ISP_OR_NOT", + "description": "Enable ISP", + "values": [ + { + "name": "ENABLED", + "value": 1, + "description": "Boot config pin enabled" + }, + { + "name": "DISABLED", + "value": 0, + "description": "Boot config pin disabled" + } + ] + }, + { + "width": 2, + "id": "field050-bits1-2", + "name": "BOOT_SPEED", + "description": "Boot speed", + "values": [ + { + "name": "NORMAL_BOOT_48_MHZ", + "value": 0, + "description": "Normal Boot (48MHz)" + }, + { + "name": "FAST_BOOT_96_MHZ", + "value": 2, + "description": "Fast Boot (96 MHz)" + }, + { + "name": "NORM_BOOT_DFLT1", + "value": 1, + "description": "Normal Boot (default)" + }, + { + "name": "NORM_BOOT_DFLT2", + "value": 3, + "description": "Normal Boot (default)" + } + ] + }, + { + "width": 1, + "id": "field050-bit3", + "name": "BOOT_LOW_POWER", + "description": "Boot low power", + "values": [ + { + "name": "LOWER", + "value": 0, + "description": "Normal Boot: Core LDO = 1.0 V, DCDC = 1.25 V; Fast Boot: Core LDO = 1.1 V DCDC = 1.35 V" + }, + { + "name": "NORMAL", + "value": 1, + "description": "Normal Boot: Core LDO = 1.0 V, DCDC = 1.25 V; Fast Boot: Core LDO = 1.1 V DCDC = 1.8 V" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00051", + "name": "Reserved 0x00051", + "description": "This field is reserved for internal use", + "offset_int": "0x0051", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00060-0006F", + "description": "Block 00060-0006F" + }, + "registers": [ + { + "id": "field060", + "name": "SECURE_BOOT_OPTIONS", + "description": "Secure Boot options", + "offset_int": "0x0060", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "field060-bit1", + "name": "SECURE_BOOT_OPTION", + "description": "Secure Boot option", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot option is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot option is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field061", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN", + "description": "Secure Boot Failure Alert Pin", + "offset_int": "0x0061", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field061-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field061-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00062", + "name": "Reserved 0x00062", + "description": "This field is reserved for internal use", + "offset_int": "0x0062", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00070-0007F", + "description": "Reserved 00070-0007F" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00080-0008F", + "description": "Block 00080-0008F" + }, + "registers": [ + { + "id": "field080", + "name": "BOOT_IMAGE_BASE_ADDRESS3", + "description": "Boot Image Base Address 3", + "offset_int": "0x0080", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00090-0009F", + "description": "Block 00090-0009F" + }, + "registers": [ + { + "id": "field090", + "name": "BOOT_IMAGE_BASE_ADDRESS2", + "description": "Boot Image Base Address 2", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000A0-000AF", + "description": "Block 000A0-000AF" + }, + "registers": [ + { + "id": "field0A0", + "name": "BOOT_IMAGE_BASE_ADDRESS1", + "description": "Boot Image Base Address 1", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000B0-000BF", + "description": "Block 000B0-000BF" + }, + "registers": [ + { + "id": "field0B0", + "name": "BOOT_IMAGE_BASE_ADDRESS0", + "description": "Boot Image Base Address 0", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000C0-000CF", + "description": "Reserved 000C0-000CF" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000D0-000DF", + "description": "Reserved 000D0-000DF" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000E0-000EF", + "description": "Reserved 000E0-000EF" + }, + "registers": [ + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000F0-000FF", + "description": "Reserved 000F0-000FF" + }, + "registers": [ + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00100-0010F", + "description": "Block 00100-0010F" + }, + "registers": [ + { + "id": "field100", + "name": "PERIPHERALS_ENABLE", + "description": "Peripherals Enable", + "offset_int": "0x0100", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field100-bit0", + "name": "LPUART1_PERIPHERAL_FOR_ISP", + "description": "LPUART1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPUART1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPUART1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit1", + "name": "LPI2C1_PERIPHERAL_FOR_ISP", + "description": "LPI2C1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPI2C1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPI2C1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit2", + "name": "LPSPI1_PERIPHERAL_FOR_ISP", + "description": "LPSPI1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPSPI1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPSPI1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit3", + "name": "CAN_PERIPHERAL_FOR_ISP", + "description": "CAN peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "CAN0 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "CAN0 enabled" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00101", + "name": "Reserved 0x00101", + "description": "This field is reserved for internal use", + "offset_int": "0x0101", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "field104", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Peripheral Detection Timeout in milliseconds for active peripheral detection", + "offset_int": "0x0104", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "Reserved00106", + "name": "Reserved 0x00106", + "description": "This field is reserved for internal use", + "offset_int": "0x0106", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field108", + "name": "I2C_SLAVE_ADDRESS", + "description": "I2C Slave Address", + "offset_int": "0x0108", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "Reserved00109", + "name": "Reserved 0x00109", + "description": "This field is reserved for internal use", + "offset_int": "0x0109", + "is_reserved": true, + "default_value_int": "0xFF", + "individual_write_lock": "none", + "reg_width": 8 + }, + { + "id": "Reserved0010A", + "name": "Reserved 0x0010A", + "description": "This field is reserved for internal use", + "offset_int": "0x010A", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field10C", + "name": "CANTxID", + "description": "TxID field.", + "offset_int": "0x010C", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "field10E", + "name": "CANRxID", + "description": "RxID field.", + "offset_int": "0x010E", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Block 00110-0011F", + "description": "Block 00110-0011F" + }, + "registers": [ + { + "id": "field110", + "name": "ELE_LOADABLE_FW_ENTRY_ADDRESS", + "description": "ELE loadable FW resides address", + "offset_int": "0x0110", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00120-0012F", + "description": "Block 00120-0012F" + }, + "registers": [ + { + "id": "field120", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION", + "description": "Secure Hash based image verification feature (for faster subsequent boot)", + "offset_int": "0x0120", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "bitfields": [ + { + "width": 32, + "id": "field120-bits0-31", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION_CONFIG", + "description": "Secure Hash based image verification feature", + "values": [ + { + "name": "DISABLED", + "value": 4294967295, + "description": "Disabled (ECDSA based verification will be used)." + }, + { + "name": "ENABLED", + "value": 1213415752, + "description": "Enabled ('HASH')." + } + ] + } + ] + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00140-0014F", + "description": "Block 00140-0014F" + }, + "registers": [ + { + "id": "field140", + "name": "GO_ISP_MODE_OPTIONS", + "description": "If enter ISP mode, the log will be recorded on the corresponding pin when this bit and GoIspModeFailAlertPin are enable.", + "offset_int": "0x0140", + "default_value_int": "0xFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "field140-bit1", + "name": "SECURE_BOOT_OPTION", + "description": "Secure Boot option", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot option is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot option is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field141", + "name": "GO_ISP_MODE_FAIL_ALERT_PIN", + "description": "Go ISP mode fail alert pin", + "offset_int": "0x0141", + "default_value_int": "0xFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field141-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field141-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00142", + "name": "Reserved 0x00142", + "description": "This field is reserved for internal use", + "offset_int": "0x00142", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 112 + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a2.1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a2.1.json new file mode 100644 index 0000000..d310c18 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/ifr_romcfg_a2.1.json @@ -0,0 +1,1771 @@ +{ + "cpu": "KW47B42ZB7", + "groups": [ + { + "group": { + "name": "Block 00000-0000F", + "description": "Block 00000-0000F" + }, + "registers": [ + { + "id": "field000", + "name": "FLW_Configuration", + "description": "FLW Configuration", + "offset_int": "0", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field000-bit0", + "name": "RESTORE_FLW_FLAG", + "description": "FLW Configuration", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal, use specified mapping" + }, + { + "name": "UNINITIALIZED", + "value": 1, + "description": "Dual Image Boot is uninitialized" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00001", + "name": "Reserved 0x00001", + "description": "This field is reserved for internal use", + "offset_int": "0x0001", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00004", + "name": "Reserved 0x00004", + "description": "This field is reserved for internal use", + "offset_int": "0x0004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "FLW_REGION_ABASE", + "description": "FLW region, the starting address of the alternative boot image", + "offset_int": "0x0008", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field00C", + "name": "FLW_REGION_BCNT", + "description": "FLW region, the size of the alternative boot image in 32 KB blocks", + "offset_int": "0x000C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00010-0001F", + "description": "Block 00010-0001F" + }, + "registers": [ + { + "id": "field010", + "name": "CONFIGURE_NPX_FOR_NORMAL_BOOT", + "description": "NPX configuration", + "offset_int": "0x0010", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "USE_PRINCE", + "description": "Configure NPX to use PRINCE", + "values": [ + { + "name": "CONFIGURE_NPX", + "value": 0, + "description": "Configure NPX" + }, + { + "name": "NOT_CONFIGURE_NPX", + "value": 1, + "description": "Not configure NPX" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "GLOBAL_LOCK", + "description": "Global lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SYSTEM_LOCK", + "description": "System lock", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "System lock enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "System lock disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "GLOBAL_DECRYPTION", + "description": "Global decryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global decryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global decryption disable" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "GLOBAL_ENCRYPTION", + "description": "Global encryption", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Global encryption enable" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Global encryption disable" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "STICKY", + "description": "NPX configuration", + "offset_int": "0x0011", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field011-bit0", + "name": "CONFIGURE_NPX_REQUIRED", + "description": "Configure NPX required", + "values": [ + { + "name": "REQUIRED", + "value": 0, + "description": "NPX config. required; ROM follows normal boot path" + }, + { + "name": "NOT_REQUIRED", + "value": 1, + "description": "Not required, ROM follows Low-power wakeup path" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00012", + "name": "Reserved 0x00012", + "description": "This field is reserved for internal use", + "offset_int": "0x0012", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "NPX_REGIONS_VALID", + "description": "NPX regions valid", + "offset_int": "0x0018", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field01C", + "name": "NPX_REGIONS_COUNT", + "description": "NPX regions count", + "offset_int": "0x001C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00020-0002F", + "description": "Block 00020-0002F" + }, + "registers": [ + { + "id": "field020", + "name": "NPX_REGION_0_VALID", + "description": "NPX region 0 valid", + "offset_int": "0x0020", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field024", + "name": "NPX_REGION_0_START_ADDRESS", + "description": "NPX region 0 start address", + "offset_int": "0x0024", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field028", + "name": "NPX_REGION_0_END_ADDRESS", + "description": "NPX region 0 end address", + "offset_int": "0x0028", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field02C", + "name": "NPX_REGION_1_VALID", + "description": "NPX region 1 valid", + "offset_int": "0x002C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00030-0003F", + "description": "Block 00030-0003F" + }, + "registers": [ + { + "id": "field030", + "name": "NPX_REGION_1_START_ADDRESS", + "description": "NPX region 1 start address", + "offset_int": "0x0030", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field034", + "name": "NPX_REGION_1_END_ADDRESS", + "description": "NPX region 1 end address", + "offset_int": "0x0034", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field038", + "name": "NPX_REGION_2_VALID", + "description": "NPX region 2 valid", + "offset_int": "0x0038", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field03C", + "name": "NPX_REGION_2_START_ADDRESS", + "description": "NPX region 2 start address", + "offset_int": "0x003C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00040-0004F", + "description": "Block 00040-0004F" + }, + "registers": [ + { + "id": "field040", + "name": "NPX_REGION_2_END_ADDRESS", + "description": "NPX region 2 end address", + "offset_int": "0x0040", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field044", + "name": "NPX_REGION_3_VALID", + "description": "NPX region 3 valid", + "offset_int": "0x0044", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field048", + "name": "NPX_REGION_3_START_ADDRESS", + "description": "NPX region 3 start address", + "offset_int": "0x0048", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "field04C", + "name": "NPX_REGION_3_END_ADDRESS", + "description": "NPX region 3 end address", + "offset_int": "0x004C", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + } + ] + }, + { + "group": { + "name": "Block 00050-0005F", + "description": "Block 00050-0005F" + }, + "registers": [ + { + "id": "field050", + "name": "BOOT_CONFIGURATION", + "description": "Boot configuration", + "offset_int": "0x0050", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field050-bit0", + "name": "ENABLE_ISP_OR_NOT", + "description": "Enable ISP", + "values": [ + { + "name": "ENABLED", + "value": 1, + "description": "Boot config pin enabled" + }, + { + "name": "DISABLED", + "value": 0, + "description": "Boot config pin disabled" + } + ] + }, + { + "width": 2, + "id": "field050-bits1-2", + "name": "BOOT_SPEED", + "description": "Boot speed", + "values": [ + { + "name": "NORMAL_BOOT_48_MHZ", + "value": 0, + "description": "Normal Boot (48MHz)" + }, + { + "name": "FAST_BOOT_96_MHZ", + "value": 2, + "description": "Fast Boot (96 MHz)" + }, + { + "name": "NORM_BOOT_DFLT1", + "value": 1, + "description": "Normal Boot (default)" + }, + { + "name": "NORM_BOOT_DFLT2", + "value": 3, + "description": "Normal Boot (default)" + } + ] + }, + { + "width": 1, + "id": "field050-bit3", + "name": "BOOT_LOW_POWER", + "description": "Boot low power", + "values": [ + { + "name": "LOWER", + "value": 0, + "description": "Normal Boot: Core LDO = 1.0 V, DCDC = 1.25 V; Fast Boot: Core LDO = 1.1 V DCDC = 1.35 V" + }, + { + "name": "NORMAL", + "value": 1, + "description": "Normal Boot: Core LDO = 1.0 V, DCDC = 1.25 V; Fast Boot: Core LDO = 1.1 V DCDC = 1.8 V" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00051", + "name": "Reserved 0x00051", + "description": "This field is reserved for internal use", + "offset_int": "0x0051", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00060-0006F", + "description": "Block 00060-0006F" + }, + "registers": [ + { + "id": "field060", + "name": "SECURE_BOOT_OPTIONS", + "description": "Secure Boot options", + "offset_int": "0x0060", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "field060-bit1", + "name": "SECURE_BOOT_OPTION", + "description": "Secure Boot option", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot option is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot option is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field061", + "name": "SECURE_BOOT_FAILURE_ALERT_PIN", + "description": "Secure Boot Failure Alert Pin", + "offset_int": "0x0061", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field061-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field061-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00062", + "name": "Reserved 0x00062", + "description": "This field is reserved for internal use", + "offset_int": "0x0062", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00070-0007F", + "description": "Reserved 00070-0007F" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00080-0008F", + "description": "Block 00080-0008F" + }, + "registers": [ + { + "id": "field080", + "name": "BOOT_IMAGE_BASE_ADDRESS3", + "description": "Boot Image Base Address 3", + "offset_int": "0x0080", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00090-0009F", + "description": "Block 00090-0009F" + }, + "registers": [ + { + "id": "field090", + "name": "BOOT_IMAGE_BASE_ADDRESS2", + "description": "Boot Image Base Address 2", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000A0-000AF", + "description": "Block 000A0-000AF" + }, + "registers": [ + { + "id": "field0A0", + "name": "BOOT_IMAGE_BASE_ADDRESS1", + "description": "Boot Image Base Address 1", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 000B0-000BF", + "description": "Block 000B0-000BF" + }, + "registers": [ + { + "id": "field0B0", + "name": "BOOT_IMAGE_BASE_ADDRESS0", + "description": "Boot Image Base Address 0", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000C0-000CF", + "description": "Reserved 000C0-000CF" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000D0-000DF", + "description": "Reserved 000D0-000DF" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000E0-000EF", + "description": "Reserved 000E0-000EF" + }, + "registers": [ + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000F0-000FF", + "description": "Reserved 000F0-000FF" + }, + "registers": [ + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00100-0010F", + "description": "Block 00100-0010F" + }, + "registers": [ + { + "id": "field100", + "name": "PERIPHERALS_ENABLE", + "description": "Peripherals Enable", + "offset_int": "0x0100", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field100-bit0", + "name": "LPUART1_PERIPHERAL_FOR_ISP", + "description": "LPUART1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPUART1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPUART1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit1", + "name": "LPI2C1_PERIPHERAL_FOR_ISP", + "description": "LPI2C1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPI2C1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPI2C1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit2", + "name": "LPSPI1_PERIPHERAL_FOR_ISP", + "description": "LPSPI1 peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "LPSPI1 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "LPSPI1 enabled" + } + ] + }, + { + "width": 1, + "id": "field100-bit3", + "name": "CAN_PERIPHERAL_FOR_ISP", + "description": "CAN peripheral for ISP", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "CAN0 disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "CAN0 enabled" + } + ] + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00101", + "name": "Reserved 0x00101", + "description": "This field is reserved for internal use", + "offset_int": "0x0101", + "is_reserved": true, + "default_value_int": "0x00FFFFFF", + "individual_write_lock": "none", + "reg_width": 24 + }, + { + "id": "field104", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Peripheral Detection Timeout in milliseconds for active peripheral detection", + "offset_int": "0x0104", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "Reserved00106", + "name": "Reserved 0x00106", + "description": "This field is reserved for internal use", + "offset_int": "0x0106", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field108", + "name": "I2C_SLAVE_ADDRESS", + "description": "I2C Slave Address", + "offset_int": "0x0108", + "default_value_int": "0x00FF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8 + }, + { + "id": "Reserved00109", + "name": "Reserved 0x00109", + "description": "This field is reserved for internal use", + "offset_int": "0x0109", + "is_reserved": true, + "default_value_int": "0xFF", + "individual_write_lock": "none", + "reg_width": 8 + }, + { + "id": "Reserved0010A", + "name": "Reserved 0x0010A", + "description": "This field is reserved for internal use", + "offset_int": "0x010A", + "is_reserved": true, + "default_value_int": "0xFFFF", + "individual_write_lock": "none", + "reg_width": 16 + }, + { + "id": "field10C", + "name": "CANTxID", + "description": "TxID field.", + "offset_int": "0x010C", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + }, + { + "id": "field10E", + "name": "CANRxID", + "description": "RxID field.", + "offset_int": "0x010E", + "default_value_int": "0xFFFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Block 00110-0011F", + "description": "Block 00110-0011F" + }, + "registers": [ + { + "id": "field110", + "name": "ELE_LOADABLE_FW_ENTRY_ADDRESS", + "description": "ELE loadable FW resides address", + "offset_int": "0x0110", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00120-0012F", + "description": "Block 00120-0012F" + }, + "registers": [ + { + "id": "field120", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION", + "description": "Secure Hash based image verification feature (for faster subsequent boot)", + "offset_int": "0x0120", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit_16bytes", + "bitfields": [ + { + "width": 32, + "id": "field120-bits0-31", + "name": "SECURE_HASH_BASED_IMAGE_VERIFICATION_CONFIG", + "description": "Secure Hash based image verification feature", + "values": [ + { + "name": "DISABLED", + "value": 4294967295, + "description": "Disabled (ECDSA based verification will be used)." + }, + { + "name": "ENABLED", + "value": 1213415752, + "description": "Enabled ('HASH')." + } + ] + } + ] + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00130-0013F", + "description": "Block 00130-0013F" + }, + "registers": [ + { + "id": "Reserved00130", + "name": "Reserved 0x00130", + "description": "This field is reserved for internal use", + "offset_int": "0x0130", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00134", + "name": "Reserved 0x00134", + "description": "This field is reserved for internal use", + "offset_int": "0x0134", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved00138", + "name": "Reserved 0x00138", + "description": "This field is reserved for internal use", + "offset_int": "0x0138", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + }, + { + "id": "Reserved0013C", + "name": "Reserved 0x0013C", + "description": "This field is reserved for internal use", + "offset_int": "0x013C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Block 00140-0014F", + "description": "Block 00140-0014F" + }, + "registers": [ + { + "id": "field140", + "name": "GO_ISP_MODE_OPTIONS", + "description": "If enter ISP mode, the log will be recorded on the corresponding pin when this bit and GoIspModeFailAlertPin are enable.", + "offset_int": "0x0140", + "default_value_int": "0xFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "field140-bit1", + "name": "SECURE_BOOT_OPTION", + "description": "Secure Boot option", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Secure Boot option is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Secure Boot option is disabled" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field141", + "name": "GO_ISP_MODE_FAIL_ALERT_PIN", + "description": "Go ISP mode fail alert pin", + "offset_int": "0x0141", + "default_value_int": "0xFF", + "individual_write_lock": "implicit_16bytes", + "reg_width": 8, + "bitfields": [ + { + "width": 5, + "id": "field141-bits0-4", + "name": "PIN_SELECTION", + "description": "Pin selection", + "values": [ + { + "name": "PIN_0", + "value": 0, + "description": "Pin 0" + }, + { + "name": "PIN_1", + "value": 1, + "description": "Pin 1" + }, + { + "name": "PIN_2", + "value": 2, + "description": "Pin 2" + }, + { + "name": "PIN_3", + "value": 3, + "description": "Pin 3" + }, + { + "name": "PIN_4", + "value": 4, + "description": "Pin 4" + }, + { + "name": "PIN_5", + "value": 5, + "description": "Pin 5" + }, + { + "name": "PIN_6", + "value": 6, + "description": "Pin 6" + }, + { + "name": "PIN_7", + "value": 7, + "description": "Pin 7" + }, + { + "name": "PIN_8", + "value": 8, + "description": "Pin 8" + }, + { + "name": "PIN_9", + "value": 9, + "description": "Pin 9" + }, + { + "name": "PIN_10", + "value": 10, + "description": "Pin 10" + }, + { + "name": "PIN_11", + "value": 11, + "description": "Pin 11" + }, + { + "name": "PIN_12", + "value": 12, + "description": "Pin 12" + }, + { + "name": "PIN_13", + "value": 13, + "description": "Pin 13" + }, + { + "name": "PIN_14", + "value": 14, + "description": "Pin 14" + }, + { + "name": "PIN_15", + "value": 15, + "description": "Pin 15" + }, + { + "name": "PIN_16", + "value": 16, + "description": "Pin 16" + }, + { + "name": "PIN_17", + "value": 17, + "description": "Pin 17" + }, + { + "name": "PIN_18", + "value": 18, + "description": "Pin 18" + }, + { + "name": "PIN_19", + "value": 19, + "description": "Pin 19" + }, + { + "name": "PIN_20", + "value": 20, + "description": "Pin 20" + }, + { + "name": "PIN_21", + "value": 21, + "description": "Pin 21" + }, + { + "name": "PIN_22", + "value": 22, + "description": "Pin 22" + }, + { + "name": "PIN_23", + "value": 23, + "description": "Pin 23" + }, + { + "name": "PIN_24", + "value": 24, + "description": "Pin 24" + }, + { + "name": "PIN_25", + "value": 25, + "description": "Pin 25" + }, + { + "name": "PIN_26", + "value": 26, + "description": "Pin 26" + }, + { + "name": "PIN_27", + "value": 27, + "description": "Pin 27" + }, + { + "name": "PIN_28", + "value": 28, + "description": "Pin 28" + }, + { + "name": "PIN_29", + "value": 29, + "description": "Pin 29" + }, + { + "name": "PIN_30", + "value": 30, + "description": "Pin 30" + }, + { + "name": "PIN_31", + "value": 31, + "description": "Pin 31" + } + ] + }, + { + "width": 3, + "id": "field141-bits5-7", + "name": "PORT_SELECTION", + "description": "Port Selection", + "values": [ + { + "name": "PORTA", + "value": 0, + "description": "Port A" + }, + { + "name": "PORTB", + "value": 1, + "description": "Port B" + }, + { + "name": "PORTC", + "value": 2, + "description": "Port C" + }, + { + "name": "PORTD", + "value": 3, + "description": "Port D" + }, + { + "name": "PORTE", + "value": 4, + "description": "Port E" + } + ] + } + ] + }, + { + "id": "Reserved00142", + "name": "Reserved 0x00142", + "description": "This field is reserved for internal use", + "offset_int": "0x00142", + "is_reserved": true, + "default_value_int": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "individual_write_lock": "none", + "reg_width": 112 + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/tz.json new file mode 100644 index 0000000..9736f65 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47b42zb7/tz.json @@ -0,0 +1,2725 @@ +{ + "cpu": "kw47b42zb7", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Start of block (tzm_magic)", + "description": "TrustZone register - Start of block (tzm_magic)", + "default_value_int": "0x4d2d5a54" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "TZM info which data are initialized (tzm_control)", + "description": "TrustZone register - TZM info which data are initialized (tzm_control)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "Miscellaneous CM33 settings (cm33_misc_ctrl)", + "description": "TrustZone register - Miscellaneous CM33 settings (cm33_misc_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "CM33 Non-secure Access Control Register (cm33_nsacr)", + "description": "TrustZone register - CM33 Non-secure Access Control Register (cm33_nsacr)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "CM33 Coprocessor Power Control Register (cm33_cppwr)", + "description": "TrustZone register - CM33 Coprocessor Power Control Register (cm33_cppwr)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "CM33 Coprocessor Access Control Register (cm33_cpacr)", + "description": "TrustZone register - CM33 Coprocessor Access Control Register (cm33_cpacr)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Control Register (cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register(cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register(cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register(cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register(cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register(cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register(cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register(cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register(cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register(cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register(cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register(cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register(cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register(cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register(cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register(cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register(cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Control Register (cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register (cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "TRDC Control Register (cr)", + "description": "TrustZone register - TRDC Control Register (cr)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "TRDC IDAU Control Register (idau_cr)", + "description": "TrustZone register - TRDC IDAU Control Register (idau_cr)", + "default_value_int": "0x8" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "Master 0 Domain Assignment Register (mda_w0_0_dfmt0)", + "description": "TrustZone register - Master 0 Domain Assignment Register (mda_w0_0_dfmt0)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "Master 1 Domain Assignment Register (mda_w0_1_dfmt1)", + "description": "TrustZone register - Master 1 Domain Assignment Register (mda_w0_1_dfmt1)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "Master 2 Domain Assignment Register (mda_w0_2_dfmt1)", + "description": "TrustZone register - Master 2 Domain Assignment Register (mda_w0_2_dfmt1)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "Master 3 Domain Assignment Register (mda_w0_3_dfmt1)", + "description": "TrustZone register - Master 3 Domain Assignment Register (mda_w0_3_dfmt1)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "Master 4 Domain Assignment Register (mda_w0_4_dfmt1)", + "description": "TrustZone register - Master 4 Domain Assignment Register (mda_w0_4_dfmt1)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 0 (mbc0_memn_glbac0)", + "description": "TrustZone register - MBC 0 Global Access Control Register 0 (mbc0_memn_glbac0)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 1 (mbc0_memn_glbac1)", + "description": "TrustZone register - MBC 0 Global Access Control Register 1 (mbc0_memn_glbac1)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 2 (mbc0_memn_glbac2)", + "description": "TrustZone register - MBC 0 Global Access Control Register 2 (mbc0_memn_glbac2)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 3 (mbc0_memn_glbac3)", + "description": "TrustZone register - MBC 0 Global Access Control Register 3 (mbc0_memn_glbac3)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 4 (mbc0_memn_glbac4)", + "description": "TrustZone register - MBC 0 Global Access Control Register 4 (mbc0_memn_glbac4)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 5 (mbc0_memn_glbac5)", + "description": "TrustZone register - MBC 0 Global Access Control Register 5 (mbc0_memn_glbac5)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 6 (mbc0_memn_glbac6)", + "description": "TrustZone register - MBC 0 Global Access Control Register 6 (mbc0_memn_glbac6)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "MBC 0 Global Access Control Register 7 (mbc0_memn_glbac7)", + "description": "TrustZone register - MBC 0 Global Access Control Register 7 (mbc0_memn_glbac7)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 0 (mbc0_0_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 0 (mbc0_0_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 1 (mbc0_0_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 1 (mbc0_0_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 2 (mbc0_0_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 2 (mbc0_0_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 3 (mbc0_0_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 3 (mbc0_0_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 4 (mbc0_0_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 4 (mbc0_0_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 5 (mbc0_0_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 5 (mbc0_0_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 6 (mbc0_0_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 6 (mbc0_0_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 0 Configuration Word Register 7 (mbc0_0_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 0 Configuration Word Register 7 (mbc0_0_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 1 Configuration Word Register 0 (mbc0_0_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 1 Configuration Word Register 0 (mbc0_0_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 2 Configuration Word Register 0 (mbc0_0_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 2 Configuration Word Register 0 (mbc0_0_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 3 Configuration Word Register 0 (mbc0_0_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 3 Configuration Word Register 0 (mbc0_0_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "MBC 0 Domain 0 Slave 3 Configuration Word Register 1 (mbc0_0_mem3_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 0 Slave 3 Configuration Word Register 1 (mbc0_0_mem3_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 0 (mbc0_1_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 0 (mbc0_1_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 1 (mbc0_1_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 1 (mbc0_1_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 2 (mbc0_1_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 2 (mbc0_1_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 3 (mbc0_1_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 3 (mbc0_1_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 4 (mbc0_1_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 4 (mbc0_1_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 5 (mbc0_1_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 5 (mbc0_1_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 6 (mbc0_1_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 6 (mbc0_1_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 0 Configuration Word Register 7 (mbc0_1_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 0 Configuration Word Register 7 (mbc0_1_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 1 Configuration Word Register 0 (mbc0_1_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 1 Configuration Word Register 0 (mbc0_1_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 2 Configuration Word Register 0 (mbc0_1_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 2 Configuration Word Register 0 (mbc0_1_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 3 Configuration Word Register 0 (mbc0_1_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 3 Configuration Word Register 0 (mbc0_1_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "MBC 0 Domain 1 Slave 3 Configuration Word Register 1 (mbc0_1_mem3_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 1 Slave 3 Configuration Word Register 1 (mbc0_1_mem3_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 0 (mbc0_2_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 0 (mbc0_2_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 1 (mbc0_2_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 1 (mbc0_2_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 2 (mbc0_2_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 2 (mbc0_2_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 3 (mbc0_2_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 3 (mbc0_2_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 4 (mbc0_2_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 4 (mbc0_2_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 5 (mbc0_2_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 5 (mbc0_2_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 6 (mbc0_2_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 6 (mbc0_2_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 0 Configuration Word Register 7 (mbc0_2_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 0 Configuration Word Register 7 (mbc0_2_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 1 Configuration Word Register 0 (mbc0_2_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 1 Configuration Word Register 0 (mbc0_2_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 2 Configuration Word Register 0 (mbc0_2_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 2 Configuration Word Register 0 (mbc0_2_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 3 Configuration Word Register 0 (mbc0_2_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 3 Configuration Word Register 0 (mbc0_2_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "MBC 0 Domain 2 Slave 3 Configuration Word Register 1 (mbc0_2_mem3_blk_cfg_w1)", + "description": "TrustZone register - MBC 0 Domain 2 Slave 3 Configuration Word Register 1 (mbc0_2_mem3_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 0 (mbc1_memn_glbac0)", + "description": "TrustZone register - MBC 1 Global Access Control Register 0 (mbc1_memn_glbac0)", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 1 (mbc1_memn_glbac1)", + "description": "TrustZone register - MBC 1 Global Access Control Register 1 (mbc1_memn_glbac1)", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 2 (mbc1_memn_glbac2)", + "description": "TrustZone register - MBC 1 Global Access Control Register 2 (mbc1_memn_glbac2)", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 3 (mbc1_memn_glbac3)", + "description": "TrustZone register - MBC 1 Global Access Control Register 3 (mbc1_memn_glbac3)", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 4 (mbc1_memn_glbac4)", + "description": "TrustZone register - MBC 1 Global Access Control Register 4 (mbc1_memn_glbac4)", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 5 (mbc1_memn_glbac5)", + "description": "TrustZone register - MBC 1 Global Access Control Register 5 (mbc1_memn_glbac5)", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 6 (mbc1_memn_glbac6)", + "description": "TrustZone register - MBC 1 Global Access Control Register 6 (mbc1_memn_glbac6)", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "MBC 1 Global Access Control Register 7 (mbc1_memn_glbac7)", + "description": "TrustZone register - MBC 1 Global Access Control Register 7 (mbc1_memn_glbac7)", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "MBC 1 Domain 0 Slave 0 Configuration Word Register 0 (mbc1_0_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 0 Slave 0 Configuration Word Register 0 (mbc1_0_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "MBC 1 Domain 0 Slave 1 Configuration Word Register 0 (mbc1_0_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 0 Slave 1 Configuration Word Register 0 (mbc1_0_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "MBC 1 Domain 0 Slave 1 Configuration Word Register 1 (mbc1_0_mem1_blk_cfg_w1)", + "description": "TrustZone register - MBC 1 Domain 0 Slave 1 Configuration Word Register 1 (mbc1_0_mem1_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "MBC 1 Domain 0 Slave 2 Configuration Word Register 0 (mbc1_0_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 0 Slave 2 Configuration Word Register 0 (mbc1_0_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "MBC 1 Domain 0 Slave 2 Configuration Word Register 1 (mbc1_0_mem2_blk_cfg_w1)", + "description": "TrustZone register - MBC 1 Domain 0 Slave 2 Configuration Word Register 1 (mbc1_0_mem2_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "MBC 1 Domain 0 Slave 3 Configuration Word Register 0 (mbc1_0_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 0 Slave 3 Configuration Word Register 0 (mbc1_0_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "MBC 1 Domain 1 Slave 0 Configuration Word Register 0 (mbc1_1_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 1 Slave 0 Configuration Word Register 0 (mbc1_1_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "MBC 1 Domain 1 Slave 1 Configuration Word Register 0 (mbc1_1_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 1 Slave 1 Configuration Word Register 0 (mbc1_1_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "MBC 1 Domain 1 Slave 1 Configuration Word Register 1 (mbc1_1_mem1_blk_cfg_w1)", + "description": "TrustZone register - MBC 1 Domain 1 Slave 1 Configuration Word Register 1 (mbc1_1_mem1_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "MBC 1 Domain 1 Slave 2 Configuration Word Register 0 (mbc1_1_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 1 Slave 2 Configuration Word Register 0 (mbc1_1_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "MBC 1 Domain 1 Slave 2 Configuration Word Register 1 (mbc1_1_mem2_blk_cfg_w1)", + "description": "TrustZone register - MBC 1 Domain 1 Slave 2 Configuration Word Register 1 (mbc1_1_mem2_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "MBC 1 Domain 1 Slave 3 Configuration Word Register 0 (mbc1_1_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 1 Slave 3 Configuration Word Register 0 (mbc1_1_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "MBC 1 Domain 2 Slave 0 Configuration Word Register 0 (mbc1_2_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 2 Slave 0 Configuration Word Register 0 (mbc1_2_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "MBC 1 Domain 2 Slave 1 Configuration Word Register 0 (mbc1_2_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 2 Slave 1 Configuration Word Register 0 (mbc1_2_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "MBC 1 Domain 2 Slave 1 Configuration Word Register 1 (mbc1_2_mem1_blk_cfg_w1)", + "description": "TrustZone register - MBC 1 Domain 2 Slave 1 Configuration Word Register 1 (mbc1_2_mem1_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "MBC 1 Domain 2 Slave 2 Configuration Word Register 0 (mbc1_2_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 2 Slave 2 Configuration Word Register 0 (mbc1_2_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "MBC 1 Domain 2 Slave 2 Configuration Word Register 1 (mbc1_2_mem2_blk_cfg_w1)", + "description": "TrustZone register - MBC 1 Domain 2 Slave 2 Configuration Word Register 1 (mbc1_2_mem2_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "MBC 1 Domain 2 Slave 3 Configuration Word Register 0 (mbc1_2_mem3_blk_cfg_w0)", + "description": "TrustZone register - MBC 1 Domain 2 Slave 3 Configuration Word Register 0 (mbc1_2_mem3_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 0 (mbc2_memn_glbac0)", + "description": "TrustZone register - MBC 2 Global Access Control Register 0 (mbc2_memn_glbac0)", + "default_value_int": "0x0" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 1 (mbc2_memn_glbac1)", + "description": "TrustZone register - MBC 2 Global Access Control Register 1 (mbc2_memn_glbac1)", + "default_value_int": "0x0" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 2 (mbc2_memn_glbac2)", + "description": "TrustZone register - MBC 2 Global Access Control Register 2 (mbc2_memn_glbac2)", + "default_value_int": "0x0" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 3 (mbc2_memn_glbac3)", + "description": "TrustZone register - MBC 2 Global Access Control Register 3 (mbc2_memn_glbac3)", + "default_value_int": "0x0" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 4 (mbc2_memn_glbac4)", + "description": "TrustZone register - MBC 2 Global Access Control Register 4 (mbc2_memn_glbac4)", + "default_value_int": "0x0" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 5 (mbc2_memn_glbac5)", + "description": "TrustZone register - MBC 2 Global Access Control Register 5 (mbc2_memn_glbac5)", + "default_value_int": "0x0" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 6 (mbc2_memn_glbac6)", + "description": "TrustZone register - MBC 2 Global Access Control Register 6 (mbc2_memn_glbac6)", + "default_value_int": "0x0" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "MBC 2 Global Access Control Register 7 (mbc2_memn_glbac7)", + "description": "TrustZone register - MBC 2 Global Access Control Register 7 (mbc2_memn_glbac7)", + "default_value_int": "0x0" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 0 (mbc2_0_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 0 (mbc2_0_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 1 (mbc2_0_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 1 (mbc2_0_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 2 (mbc2_0_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 2 (mbc2_0_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 3 (mbc2_0_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 3 (mbc2_0_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 4 (mbc2_0_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 4 (mbc2_0_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 5 (mbc2_0_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 5 (mbc2_0_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 6 (mbc2_0_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 6 (mbc2_0_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 7 (mbc2_0_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 7 (mbc2_0_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 8 (mbc2_0_mem0_blk_cfg_w8)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 8 (mbc2_0_mem0_blk_cfg_w8)", + "default_value_int": "0x0" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 9 (mbc2_0_mem0_blk_cfg_w9)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 9 (mbc2_0_mem0_blk_cfg_w9)", + "default_value_int": "0x0" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 0 Configuration Word Register 10 (mbc2_0_mem0_blk_cfg_w10)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 0 Configuration Word Register 10 (mbc2_0_mem0_blk_cfg_w10)", + "default_value_int": "0x0" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 1 Configuration Word Register 0 (mbc2_0_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 1 Configuration Word Register 0 (mbc2_0_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 2 Configuration Word Register 0 (mbc2_0_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 2 Configuration Word Register 0 (mbc2_0_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "MBC 2 Domain 0 Slave 2 Configuration Word Register 1 (mbc2_0_mem2_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 0 Slave 2 Configuration Word Register 1 (mbc2_0_mem2_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 0 (mbc2_1_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 0 (mbc2_1_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 1 (mbc2_1_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 1 (mbc2_1_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 2 (mbc2_1_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 2 (mbc2_1_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 3 (mbc2_1_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 3 (mbc2_1_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 4 (mbc2_1_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 4 (mbc2_1_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 5 (mbc2_1_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 5 (mbc2_1_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 6 (mbc2_1_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 6 (mbc2_1_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 7 (mbc2_1_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 7 (mbc2_1_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 8 (mbc2_1_mem0_blk_cfg_w8)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 8 (mbc2_1_mem0_blk_cfg_w8)", + "default_value_int": "0x0" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 9 (mbc2_1_mem0_blk_cfg_w9)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 9 (mbc2_1_mem0_blk_cfg_w9)", + "default_value_int": "0x0" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 10 (mbc2_1_mem0_blk_cfg_w10)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 10 (mbc2_1_mem0_blk_cfg_w10)", + "default_value_int": "0x0" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 1 Configuration Word Register 0 (mbc2_1_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 1 Configuration Word Register 0 (mbc2_1_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 2 Configuration Word Register 0 (mbc2_1_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 2 Configuration Word Register 0 (mbc2_1_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 2 Configuration Word Register 1 (mbc2_1_mem2_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 2 Configuration Word Register 1 (mbc2_1_mem2_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 0 (mbc2_2_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 0 (mbc2_2_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 1 (mbc2_2_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 1 (mbc2_2_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 2 (mbc2_2_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 2 (mbc2_2_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 3 (mbc2_2_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 3 (mbc2_2_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 4 (mbc2_2_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 4 (mbc2_2_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 5 (mbc2_2_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 5 (mbc2_2_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 6 (mbc2_2_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 6 (mbc2_2_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 7 (mbc2_2_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 7 (mbc2_2_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 8 (mbc2_2_mem0_blk_cfg_w8)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 8 (mbc2_2_mem0_blk_cfg_w8)", + "default_value_int": "0x0" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 9 (mbc2_2_mem0_blk_cfg_w9)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 9 (mbc2_2_mem0_blk_cfg_w9)", + "default_value_int": "0x0" + }, + { + "id": "field2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 0 Configuration Word Register 10 (mbc2_2_mem0_blk_cfg_w10)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 0 Configuration Word Register 10 (mbc2_2_mem0_blk_cfg_w10)", + "default_value_int": "0x0" + }, + { + "id": "field2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 1 Configuration Word Register 0 (mbc2_2_mem1_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 1 Configuration Word Register 0 (mbc2_2_mem1_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 2 Configuration Word Register 0 (mbc2_2_mem2_blk_cfg_w0)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 2 Configuration Word Register 0 (mbc2_2_mem2_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field300", + "offset_int": "0x300", + "reg_width": 32, + "name": "MBC 2 Domain 1 Slave 2 Configuration Word Register 1 (mbc2_2_mem2_blk_cfg_w1)", + "description": "TrustZone register - MBC 2 Domain 1 Slave 2 Configuration Word Register 1 (mbc2_2_mem2_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field304", + "offset_int": "0x304", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 0 (mrc0_memn_glbac0)", + "description": "TrustZone register - MRC 0 Global Access Control Register 0 (mrc0_memn_glbac0)", + "default_value_int": "0x0" + }, + { + "id": "field308", + "offset_int": "0x308", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 1 (mrc0_memn_glbac1)", + "description": "TrustZone register - MRC 0 Global Access Control Register 1 (mrc0_memn_glbac1)", + "default_value_int": "0x0" + }, + { + "id": "field30C", + "offset_int": "0x30c", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 2 (mrc0_memn_glbac2)", + "description": "TrustZone register - MRC 0 Global Access Control Register 2 (mrc0_memn_glbac2)", + "default_value_int": "0x0" + }, + { + "id": "field310", + "offset_int": "0x310", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 3 (mrc0_memn_glbac3)", + "description": "TrustZone register - MRC 0 Global Access Control Register 3 (mrc0_memn_glbac3)", + "default_value_int": "0x0" + }, + { + "id": "field314", + "offset_int": "0x314", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 4 (mrc0_memn_glbac4)", + "description": "TrustZone register - MRC 0 Global Access Control Register 4 (mrc0_memn_glbac4)", + "default_value_int": "0x0" + }, + { + "id": "field318", + "offset_int": "0x318", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 5 (mrc0_memn_glbac5)", + "description": "TrustZone register - MRC 0 Global Access Control Register 5 (mrc0_memn_glbac5)", + "default_value_int": "0x0" + }, + { + "id": "field31C", + "offset_int": "0x31c", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 6 (mrc0_memn_glbac6)", + "description": "TrustZone register - MRC 0 Global Access Control Register 6 (mrc0_memn_glbac6)", + "default_value_int": "0x0" + }, + { + "id": "field320", + "offset_int": "0x320", + "reg_width": 32, + "name": "MRC 0 Global Access Control Register 7 (mrc0_memn_glbac7)", + "description": "TrustZone register - MRC 0 Global Access Control Register 7 (mrc0_memn_glbac7)", + "default_value_int": "0x0" + }, + { + "id": "field324", + "offset_int": "0x324", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 0 Memory Region Descriptor Register 0 (mrc0_0_rgd0_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 0 Memory Region Descriptor Register 0 (mrc0_0_rgd0_w0)", + "default_value_int": "0x0" + }, + { + "id": "field328", + "offset_int": "0x328", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 0 Memory Region Descriptor Register 1 (mrc0_0_rgd0_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 0 Memory Region Descriptor Register 1 (mrc0_0_rgd0_w1)", + "default_value_int": "0x0" + }, + { + "id": "field32C", + "offset_int": "0x32c", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 1 Memory Region Descriptor Register 0 (mrc0_0_rgd1_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 1 Memory Region Descriptor Register 0 (mrc0_0_rgd1_w0)", + "default_value_int": "0x0" + }, + { + "id": "field330", + "offset_int": "0x330", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 1 Memory Region Descriptor Register 1 (mrc0_0_rgd1_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 1 Memory Region Descriptor Register 1 (mrc0_0_rgd1_w1)", + "default_value_int": "0x0" + }, + { + "id": "field334", + "offset_int": "0x334", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 2 Memory Region Descriptor Register 0 (mrc0_0_rgd2_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 2 Memory Region Descriptor Register 0 (mrc0_0_rgd2_w0)", + "default_value_int": "0x0" + }, + { + "id": "field338", + "offset_int": "0x338", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 2 Memory Region Descriptor Register 1 (mrc0_0_rgd2_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 2 Memory Region Descriptor Register 1 (mrc0_0_rgd2_w1)", + "default_value_int": "0x0" + }, + { + "id": "field33C", + "offset_int": "0x33c", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 3 Memory Region Descriptor Register 0 (mrc0_0_rgd3_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 3 Memory Region Descriptor Register 0 (mrc0_0_rgd3_w0)", + "default_value_int": "0x0" + }, + { + "id": "field340", + "offset_int": "0x340", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 3 Memory Region Descriptor Register 1 (mrc0_0_rgd3_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 3 Memory Region Descriptor Register 1 (mrc0_0_rgd3_w1)", + "default_value_int": "0x0" + }, + { + "id": "field344", + "offset_int": "0x344", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 4 Memory Region Descriptor Register 0 (mrc0_0_rgd4_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 4 Memory Region Descriptor Register 0 (mrc0_0_rgd4_w0)", + "default_value_int": "0x0" + }, + { + "id": "field348", + "offset_int": "0x348", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 4 Memory Region Descriptor Register 1 (mrc0_0_rgd4_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 4 Memory Region Descriptor Register 1 (mrc0_0_rgd4_w1)", + "default_value_int": "0x0" + }, + { + "id": "field34C", + "offset_int": "0x34c", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 5 Memory Region Descriptor Register 0 (mrc0_0_rgd5_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 5 Memory Region Descriptor Register 0 (mrc0_0_rgd5_w0)", + "default_value_int": "0x0" + }, + { + "id": "field350", + "offset_int": "0x350", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 5 Memory Region Descriptor Register 1 (mrc0_0_rgd5_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 5 Memory Region Descriptor Register 1 (mrc0_0_rgd5_w1)", + "default_value_int": "0x0" + }, + { + "id": "field354", + "offset_int": "0x354", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 6 Memory Region Descriptor Register 0 (mrc0_0_rgd6_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 6 Memory Region Descriptor Register 0 (mrc0_0_rgd6_w0)", + "default_value_int": "0x0" + }, + { + "id": "field358", + "offset_int": "0x358", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 6 Memory Region Descriptor Register 1 (mrc0_0_rgd6_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 6 Memory Region Descriptor Register 1 (mrc0_0_rgd6_w1)", + "default_value_int": "0x0" + }, + { + "id": "field35C", + "offset_int": "0x35c", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 7 Memory Region Descriptor Register 0 (mrc0_0_rgd7_w0)", + "description": "TrustZone register - MRC 0 Domain 0 Region 7 Memory Region Descriptor Register 0 (mrc0_0_rgd7_w0)", + "default_value_int": "0x0" + }, + { + "id": "field360", + "offset_int": "0x360", + "reg_width": 32, + "name": "MRC 0 Domain 0 Region 7 Memory Region Descriptor Register 1 (mrc0_0_rgd7_w1)", + "description": "TrustZone register - MRC 0 Domain 0 Region 7 Memory Region Descriptor Register 1 (mrc0_0_rgd7_w1)", + "default_value_int": "0x0" + }, + { + "id": "field364", + "offset_int": "0x364", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 0 Memory Region Descriptor Register 0 (mrc0_1_rgd0_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 0 Memory Region Descriptor Register 0 (mrc0_1_rgd0_w0)", + "default_value_int": "0x0" + }, + { + "id": "field368", + "offset_int": "0x368", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 0 Memory Region Descriptor Register 1 (mrc0_1_rgd0_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 0 Memory Region Descriptor Register 1 (mrc0_1_rgd0_w1)", + "default_value_int": "0x0" + }, + { + "id": "field36C", + "offset_int": "0x36c", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 1 Memory Region Descriptor Register 0 (mrc0_1_rgd1_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 1 Memory Region Descriptor Register 0 (mrc0_1_rgd1_w0)", + "default_value_int": "0x0" + }, + { + "id": "field370", + "offset_int": "0x370", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 1 Memory Region Descriptor Register 1 (mrc0_1_rgd1_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 1 Memory Region Descriptor Register 1 (mrc0_1_rgd1_w1)", + "default_value_int": "0x0" + }, + { + "id": "field374", + "offset_int": "0x374", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 2 Memory Region Descriptor Register 0 (mrc0_1_rgd2_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 2 Memory Region Descriptor Register 0 (mrc0_1_rgd2_w0)", + "default_value_int": "0x0" + }, + { + "id": "field378", + "offset_int": "0x378", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 2 Memory Region Descriptor Register 1 (mrc0_1_rgd2_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 2 Memory Region Descriptor Register 1 (mrc0_1_rgd2_w1)", + "default_value_int": "0x0" + }, + { + "id": "field37C", + "offset_int": "0x37c", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 3 Memory Region Descriptor Register 0 (mrc0_1_rgd3_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 3 Memory Region Descriptor Register 0 (mrc0_1_rgd3_w0)", + "default_value_int": "0x0" + }, + { + "id": "field380", + "offset_int": "0x380", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 3 Memory Region Descriptor Register 1 (mrc0_1_rgd3_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 3 Memory Region Descriptor Register 1 (mrc0_1_rgd3_w1)", + "default_value_int": "0x0" + }, + { + "id": "field384", + "offset_int": "0x384", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 4 Memory Region Descriptor Register 0 (mrc0_1_rgd4_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 4 Memory Region Descriptor Register 0 (mrc0_1_rgd4_w0)", + "default_value_int": "0x0" + }, + { + "id": "field388", + "offset_int": "0x388", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 4 Memory Region Descriptor Register 1 (mrc0_1_rgd4_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 4 Memory Region Descriptor Register 1 (mrc0_1_rgd4_w1)", + "default_value_int": "0x0" + }, + { + "id": "field38C", + "offset_int": "0x38c", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 5 Memory Region Descriptor Register 0 (mrc0_1_rgd5_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 5 Memory Region Descriptor Register 0 (mrc0_1_rgd5_w0)", + "default_value_int": "0x0" + }, + { + "id": "field390", + "offset_int": "0x390", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 5 Memory Region Descriptor Register 1 (mrc0_1_rgd5_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 5 Memory Region Descriptor Register 1 (mrc0_1_rgd5_w1)", + "default_value_int": "0x0" + }, + { + "id": "field394", + "offset_int": "0x394", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 6 Memory Region Descriptor Register 0 (mrc0_1_rgd6_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 6 Memory Region Descriptor Register 0 (mrc0_1_rgd6_w0)", + "default_value_int": "0x0" + }, + { + "id": "field398", + "offset_int": "0x398", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 6 Memory Region Descriptor Register 1 (mrc0_1_rgd6_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 6 Memory Region Descriptor Register 1 (mrc0_1_rgd6_w1)", + "default_value_int": "0x0" + }, + { + "id": "field39C", + "offset_int": "0x39c", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 7 Memory Region Descriptor Register 0 (mrc0_1_rgd7_w0)", + "description": "TrustZone register - MRC 0 Domain 1 Region 7 Memory Region Descriptor Register 0 (mrc0_1_rgd7_w0)", + "default_value_int": "0x0" + }, + { + "id": "field3A0", + "offset_int": "0x3a0", + "reg_width": 32, + "name": "MRC 0 Domain 1 Region 7 Memory Region Descriptor Register 1 (mrc0_1_rgd7_w1)", + "description": "TrustZone register - MRC 0 Domain 1 Region 7 Memory Region Descriptor Register 1 (mrc0_1_rgd7_w1)", + "default_value_int": "0x0" + }, + { + "id": "field3A4", + "offset_int": "0x3a4", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 0 Memory Region Descriptor Register 0 (mrc0_2_rgd0_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 0 Memory Region Descriptor Register 0 (mrc0_2_rgd0_w0)", + "default_value_int": "0x0" + }, + { + "id": "field3A8", + "offset_int": "0x3a8", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 0 Memory Region Descriptor Register 1 (mrc0_2_rgd0_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 0 Memory Region Descriptor Register 1 (mrc0_2_rgd0_w1)", + "default_value_int": "0x0" + }, + { + "id": "field3AC", + "offset_int": "0x3ac", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 1 Memory Region Descriptor Register 0 (mrc0_2_rgd1_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 1 Memory Region Descriptor Register 0 (mrc0_2_rgd1_w0)", + "default_value_int": "0x0" + }, + { + "id": "field3B0", + "offset_int": "0x3b0", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 1 Memory Region Descriptor Register 1 (mrc0_2_rgd1_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 1 Memory Region Descriptor Register 1 (mrc0_2_rgd1_w1)", + "default_value_int": "0x0" + }, + { + "id": "field3B4", + "offset_int": "0x3b4", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 2 Memory Region Descriptor Register 0 (mrc0_2_rgd2_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 2 Memory Region Descriptor Register 0 (mrc0_2_rgd2_w0)", + "default_value_int": "0x0" + }, + { + "id": "field3B8", + "offset_int": "0x3b8", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 2 Memory Region Descriptor Register 1 (mrc0_2_rgd2_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 2 Memory Region Descriptor Register 1 (mrc0_2_rgd2_w1)", + "default_value_int": "0x0" + }, + { + "id": "field3BC", + "offset_int": "0x3bc", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 3 Memory Region Descriptor Register 0 (mrc0_2_rgd3_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 3 Memory Region Descriptor Register 0 (mrc0_2_rgd3_w0)", + "default_value_int": "0x0" + }, + { + "id": "field3C0", + "offset_int": "0x3c0", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 3 Memory Region Descriptor Register 1 (mrc0_2_rgd3_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 3 Memory Region Descriptor Register 1 (mrc0_2_rgd3_w1)", + "default_value_int": "0x0" + }, + { + "id": "field3C4", + "offset_int": "0x3c4", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 4 Memory Region Descriptor Register 0 (mrc0_2_rgd4_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 4 Memory Region Descriptor Register 0 (mrc0_2_rgd4_w0)", + "default_value_int": "0x0" + }, + { + "id": "field3C8", + "offset_int": "0x3c8", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 4 Memory Region Descriptor Register 1 (mrc0_2_rgd4_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 4 Memory Region Descriptor Register 1 (mrc0_2_rgd4_w1)", + "default_value_int": "0x0" + }, + { + "id": "field3CC", + "offset_int": "0x3cc", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 5 Memory Region Descriptor Register 0 (mrc0_2_rgd5_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 5 Memory Region Descriptor Register 0 (mrc0_2_rgd5_w0)", + "default_value_int": "0x0" + }, + { + "id": "field3D0", + "offset_int": "0x3d0", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 5 Memory Region Descriptor Register 1 (mrc0_2_rgd5_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 5 Memory Region Descriptor Register 1 (mrc0_2_rgd5_w1)", + "default_value_int": "0x0" + }, + { + "id": "field3D4", + "offset_int": "0x3d4", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 6 Memory Region Descriptor Register 0 (mrc0_2_rgd6_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 6 Memory Region Descriptor Register 0 (mrc0_2_rgd6_w0)", + "default_value_int": "0x0" + }, + { + "id": "field3D8", + "offset_int": "0x3d8", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 6 Memory Region Descriptor Register 1 (mrc0_2_rgd6_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 6 Memory Region Descriptor Register 1 (mrc0_2_rgd6_w1)", + "default_value_int": "0x0" + }, + { + "id": "field3DC", + "offset_int": "0x3dc", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 7 Memory Region Descriptor Register 0 (mrc0_2_rgd7_w0)", + "description": "TrustZone register - MRC 0 Domain 2 Region 7 Memory Region Descriptor Register 0 (mrc0_2_rgd7_w0)", + "default_value_int": "0x0" + }, + { + "id": "field3E0", + "offset_int": "0x3e0", + "reg_width": 32, + "name": "MRC 0 Domain 2 Region 7 Memory Region Descriptor Register 1 (mrc0_2_rgd7_w1)", + "description": "TrustZone register - MRC 0 Domain 2 Region 7 Memory Region Descriptor Register 1 (mrc0_2_rgd7_w1)", + "default_value_int": "0x0" + }, + { + "id": "field3E4", + "offset_int": "0x3e4", + "reg_width": 32, + "name": "GPIO A Lock Register (gpioa_lock)", + "description": "TrustZone register - GPIO A Lock Register (gpioa_lock)", + "default_value_int": "0x0" + }, + { + "id": "field3E8", + "offset_int": "0x3e8", + "reg_width": 32, + "name": "GPIO A Pin Control Non-Secure Register (gpioa_pcns)", + "description": "TrustZone register - GPIO A Pin Control Non-Secure Register (gpioa_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field3EC", + "offset_int": "0x3ec", + "reg_width": 32, + "name": "GPIO A Interrupt Control Non-Secure Register (gpioa_icns)", + "description": "TrustZone register - GPIO A Interrupt Control Non-Secure Register (gpioa_icns)", + "default_value_int": "0x0" + }, + { + "id": "field3F0", + "offset_int": "0x3f0", + "reg_width": 32, + "name": "GPIO A Pin Control Non-Privilege Register (gpioa_pcnp)", + "description": "TrustZone register - GPIO A Pin Control Non-Privilege Register (gpioa_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field3F4", + "offset_int": "0x3f4", + "reg_width": 32, + "name": "GPIO A Interrupt Control Non-Privilege Register (gpioa_icnp)", + "description": "TrustZone register - GPIO A Interrupt Control Non-Privilege Register (gpioa_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field3F8", + "offset_int": "0x3f8", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 0 (gpioa_icr0)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 0 (gpioa_icr0)", + "default_value_int": "0x0" + }, + { + "id": "field3FC", + "offset_int": "0x3fc", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 1 (gpioa_icr1)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 1 (gpioa_icr1)", + "default_value_int": "0x0" + }, + { + "id": "field400", + "offset_int": "0x400", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 2 (gpioa_icr2)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 2 (gpioa_icr2)", + "default_value_int": "0x0" + }, + { + "id": "field404", + "offset_int": "0x404", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 3 (gpioa_icr3)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 3 (gpioa_icr3)", + "default_value_int": "0x0" + }, + { + "id": "field408", + "offset_int": "0x408", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 4 (gpioa_icr4)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 4 (gpioa_icr4)", + "default_value_int": "0x0" + }, + { + "id": "field40C", + "offset_int": "0x40c", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 5 (gpioa_icr5)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 5 (gpioa_icr5)", + "default_value_int": "0x0" + }, + { + "id": "field410", + "offset_int": "0x410", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 6 (gpioa_icr6)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 6 (gpioa_icr6)", + "default_value_int": "0x0" + }, + { + "id": "field414", + "offset_int": "0x414", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 7 (gpioa_icr7)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 7 (gpioa_icr7)", + "default_value_int": "0x0" + }, + { + "id": "field418", + "offset_int": "0x418", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 8 (gpioa_icr8)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 8 (gpioa_icr8)", + "default_value_int": "0x0" + }, + { + "id": "field41C", + "offset_int": "0x41c", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 9 (gpioa_icr9)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 9 (gpioa_icr9)", + "default_value_int": "0x0" + }, + { + "id": "field420", + "offset_int": "0x420", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 10 (gpioa_icr10)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 10 (gpioa_icr10)", + "default_value_int": "0x0" + }, + { + "id": "field424", + "offset_int": "0x424", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 11 (gpioa_icr11)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 11 (gpioa_icr11)", + "default_value_int": "0x0" + }, + { + "id": "field428", + "offset_int": "0x428", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 16 (gpioa_icr16)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 16 (gpioa_icr16)", + "default_value_int": "0x0" + }, + { + "id": "field42C", + "offset_int": "0x42c", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 17 (gpioa_icr17)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 17 (gpioa_icr17)", + "default_value_int": "0x0" + }, + { + "id": "field430", + "offset_int": "0x430", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 18 (gpioa_icr18)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 18 (gpioa_icr18)", + "default_value_int": "0x0" + }, + { + "id": "field434", + "offset_int": "0x434", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 19 (gpioa_icr19)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 19 (gpioa_icr19)", + "default_value_int": "0x0" + }, + { + "id": "field438", + "offset_int": "0x438", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 20 (gpioa_icr20)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 20 (gpioa_icr20)", + "default_value_int": "0x0" + }, + { + "id": "field43C", + "offset_int": "0x43c", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 21 (gpioa_icr21)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 21 (gpioa_icr21)", + "default_value_int": "0x0" + }, + { + "id": "field440", + "offset_int": "0x440", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 22 (gpioa_icr22)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 22 (gpioa_icr22)", + "default_value_int": "0x0" + }, + { + "id": "field444", + "offset_int": "0x444", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 23 (gpioa_icr23)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 23 (gpioa_icr23)", + "default_value_int": "0x0" + }, + { + "id": "field448", + "offset_int": "0x448", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 24 (gpioa_icr24)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 24 (gpioa_icr24)", + "default_value_int": "0x0" + }, + { + "id": "field44C", + "offset_int": "0x44c", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 25 (gpioa_icr25)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 25 (gpioa_icr25)", + "default_value_int": "0x0" + }, + { + "id": "field450", + "offset_int": "0x450", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 26 (gpioa_icr26)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 26 (gpioa_icr26)", + "default_value_int": "0x0" + }, + { + "id": "field454", + "offset_int": "0x454", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 27 (gpioa_icr27)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 27 (gpioa_icr27)", + "default_value_int": "0x0" + }, + { + "id": "field458", + "offset_int": "0x458", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 30 (gpioa_icr30)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 30 (gpioa_icr30)", + "default_value_int": "0x0" + }, + { + "id": "field45C", + "offset_int": "0x45c", + "reg_width": 32, + "name": "GPIO A Interrupt Control Pin 31 (gpioa_icr31)", + "description": "TrustZone register - GPIO A Interrupt Control Pin 31 (gpioa_icr31)", + "default_value_int": "0x0" + }, + { + "id": "field460", + "offset_int": "0x460", + "reg_width": 32, + "name": "GPIO B Lock Register (gpiob_lock)", + "description": "TrustZone register - GPIO B Lock Register (gpiob_lock)", + "default_value_int": "0x0" + }, + { + "id": "field464", + "offset_int": "0x464", + "reg_width": 32, + "name": "GPIO B Pin Control Non-Secure Register (gpiob_pcns)", + "description": "TrustZone register - GPIO B Pin Control Non-Secure Register (gpiob_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field468", + "offset_int": "0x468", + "reg_width": 32, + "name": "GPIO B Interrupt Control Non-Secure Register (gpiob_icns)", + "description": "TrustZone register - GPIO B Interrupt Control Non-Secure Register (gpiob_icns)", + "default_value_int": "0x0" + }, + { + "id": "field46C", + "offset_int": "0x46c", + "reg_width": 32, + "name": "GPIO B Pin Control Non-Privilege Register (gpiob_pcnp)", + "description": "TrustZone register - GPIO B Pin Control Non-Privilege Register (gpiob_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field470", + "offset_int": "0x470", + "reg_width": 32, + "name": "GPIO B Interrupt Control Non-Privilege Register (gpiob_icnp)", + "description": "TrustZone register - GPIO B Interrupt Control Non-Privilege Register (gpiob_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field474", + "offset_int": "0x474", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 0 (gpiob_icr0)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 0 (gpiob_icr0)", + "default_value_int": "0x0" + }, + { + "id": "field478", + "offset_int": "0x478", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 1 (gpiob_icr1)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 1 (gpiob_icr1)", + "default_value_int": "0x0" + }, + { + "id": "field47C", + "offset_int": "0x47c", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 2 (gpiob_icr2)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 2 (gpiob_icr2)", + "default_value_int": "0x0" + }, + { + "id": "field480", + "offset_int": "0x480", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 3 (gpiob_icr3)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 3 (gpiob_icr3)", + "default_value_int": "0x0" + }, + { + "id": "field484", + "offset_int": "0x484", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 4 (gpiob_icr4)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 4 (gpiob_icr4)", + "default_value_int": "0x0" + }, + { + "id": "field488", + "offset_int": "0x488", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 5 (gpiob_icr5)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 5 (gpiob_icr5)", + "default_value_int": "0x0" + }, + { + "id": "field48C", + "offset_int": "0x48c", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 6 (gpiob_icr6)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 6 (gpiob_icr6)", + "default_value_int": "0x0" + }, + { + "id": "field490", + "offset_int": "0x490", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 7 (gpiob_icr7)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 7 (gpiob_icr7)", + "default_value_int": "0x0" + }, + { + "id": "field494", + "offset_int": "0x494", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 8 (gpiob_icr8)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 8 (gpiob_icr8)", + "default_value_int": "0x0" + }, + { + "id": "field498", + "offset_int": "0x498", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 9 (gpiob_icr9)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 9 (gpiob_icr9)", + "default_value_int": "0x0" + }, + { + "id": "field49C", + "offset_int": "0x49c", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 10 (gpiob_icr10)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 10 (gpiob_icr10)", + "default_value_int": "0x0" + }, + { + "id": "field4A0", + "offset_int": "0x4a0", + "reg_width": 32, + "name": "GPIO B Interrupt Control Pin 11 (gpiob_icr11)", + "description": "TrustZone register - GPIO B Interrupt Control Pin 11 (gpiob_icr11)", + "default_value_int": "0x0" + }, + { + "id": "field4A4", + "offset_int": "0x4a4", + "reg_width": 32, + "name": "GPIO C Lock Register (gpioc_lock)", + "description": "TrustZone register - GPIO C Lock Register (gpioc_lock)", + "default_value_int": "0x0" + }, + { + "id": "field4A8", + "offset_int": "0x4a8", + "reg_width": 32, + "name": "GPIO C Pin Control Non-Secure Register (gpioc_pcns)", + "description": "TrustZone register - GPIO C Pin Control Non-Secure Register (gpioc_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field4AC", + "offset_int": "0x4ac", + "reg_width": 32, + "name": "GPIO C Interrupt Control Non-Secure Register (gpioc_icns)", + "description": "TrustZone register - GPIO C Interrupt Control Non-Secure Register (gpioc_icns)", + "default_value_int": "0x0" + }, + { + "id": "field4B0", + "offset_int": "0x4b0", + "reg_width": 32, + "name": "GPIO C Pin Control Non-Privilege Register (gpioc_pcnp)", + "description": "TrustZone register - GPIO C Pin Control Non-Privilege Register (gpioc_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field4B4", + "offset_int": "0x4b4", + "reg_width": 32, + "name": "GPIO C Interrupt Control Non-Privilege Register (gpioc_icnp)", + "description": "TrustZone register - GPIO C Interrupt Control Non-Privilege Register (gpioc_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field4B8", + "offset_int": "0x4b8", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 0 (gpioc_icr0)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 0 (gpioc_icr0)", + "default_value_int": "0x0" + }, + { + "id": "field4BC", + "offset_int": "0x4bc", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 1 (gpioc_icr1)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 1 (gpioc_icr1)", + "default_value_int": "0x0" + }, + { + "id": "field4C0", + "offset_int": "0x4c0", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 2 (gpioc_icr2)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 2 (gpioc_icr2)", + "default_value_int": "0x0" + }, + { + "id": "field4C4", + "offset_int": "0x4c4", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 3 (gpioc_icr3)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 3 (gpioc_icr3)", + "default_value_int": "0x0" + }, + { + "id": "field4C8", + "offset_int": "0x4c8", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 4 (gpioc_icr4)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 4 (gpioc_icr4)", + "default_value_int": "0x0" + }, + { + "id": "field4CC", + "offset_int": "0x4cc", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 5 (gpioc_icr5)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 5 (gpioc_icr5)", + "default_value_int": "0x0" + }, + { + "id": "field4D0", + "offset_int": "0x4d0", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 6 (gpioc_icr6)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 6 (gpioc_icr6)", + "default_value_int": "0x0" + }, + { + "id": "field4D4", + "offset_int": "0x4d4", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 7 (gpioc_icr7)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 7 (gpioc_icr7)", + "default_value_int": "0x0" + }, + { + "id": "field4D8", + "offset_int": "0x4d8", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 8 (gpioc_icr8)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 8 (gpioc_icr8)", + "default_value_int": "0x0" + }, + { + "id": "field4DC", + "offset_int": "0x4dc", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 9 (gpioc_icr9)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 9 (gpioc_icr9)", + "default_value_int": "0x0" + }, + { + "id": "field4E0", + "offset_int": "0x4e0", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 10 (gpioc_icr10)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 10 (gpioc_icr10)", + "default_value_int": "0x0" + }, + { + "id": "field4E4", + "offset_int": "0x4e4", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 11 (gpioc_icr11)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 11 (gpioc_icr11)", + "default_value_int": "0x0" + }, + { + "id": "field4E8", + "offset_int": "0x4e8", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 12 (gpioc_icr12)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 12 (gpioc_icr12)", + "default_value_int": "0x0" + }, + { + "id": "field4EC", + "offset_int": "0x4ec", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 13 (gpioc_icr13)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 13 (gpioc_icr13)", + "default_value_int": "0x0" + }, + { + "id": "field4F0", + "offset_int": "0x4f0", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 14 (gpioc_icr14)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 14 (gpioc_icr14)", + "default_value_int": "0x0" + }, + { + "id": "field4F4", + "offset_int": "0x4f4", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 15 (gpioc_icr15)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 15 (gpioc_icr15)", + "default_value_int": "0x0" + }, + { + "id": "field4F8", + "offset_int": "0x4f8", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 16 (gpioc_icr16)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 16 (gpioc_icr16)", + "default_value_int": "0x0" + }, + { + "id": "field4FC", + "offset_int": "0x4fc", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 17 (gpioc_icr17)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 17 (gpioc_icr17)", + "default_value_int": "0x0" + }, + { + "id": "field500", + "offset_int": "0x500", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 18 (gpioc_icr18)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 18 (gpioc_icr18)", + "default_value_int": "0x0" + }, + { + "id": "field504", + "offset_int": "0x504", + "reg_width": 32, + "name": "GPIO C Interrupt Control Pin 19 (gpioc_icr19)", + "description": "TrustZone register - GPIO C Interrupt Control Pin 19 (gpioc_icr19)", + "default_value_int": "0x0" + }, + { + "id": "field508", + "offset_int": "0x508", + "reg_width": 32, + "name": "GPIO D Lock Register (gpiod_lock)", + "description": "TrustZone register - GPIO D Lock Register (gpiod_lock)", + "default_value_int": "0x0" + }, + { + "id": "field50C", + "offset_int": "0x50c", + "reg_width": 32, + "name": "GPIO D Pin Control Non-Secure Register (gpiod_pcns)", + "description": "TrustZone register - GPIO D Pin Control Non-Secure Register (gpiod_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field510", + "offset_int": "0x510", + "reg_width": 32, + "name": "GPIO D Interrupt Control Non-Secure Register (gpiod_icns)", + "description": "TrustZone register - GPIO D Interrupt Control Non-Secure Register (gpiod_icns)", + "default_value_int": "0x0" + }, + { + "id": "field514", + "offset_int": "0x514", + "reg_width": 32, + "name": "GPIO D Pin Control Non-Privilege Register (gpiod_pcnp)", + "description": "TrustZone register - GPIO D Pin Control Non-Privilege Register (gpiod_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field518", + "offset_int": "0x518", + "reg_width": 32, + "name": "GPIO D Interrupt Control Non-Privilege Register (gpiod_icnp)", + "description": "TrustZone register - GPIO D Interrupt Control Non-Privilege Register (gpiod_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field51C", + "offset_int": "0x51c", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 0 (gpiod_icr0)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 0 (gpiod_icr0)", + "default_value_int": "0x0" + }, + { + "id": "field520", + "offset_int": "0x520", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 1 (gpiod_icr1)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 1 (gpiod_icr1)", + "default_value_int": "0x0" + }, + { + "id": "field524", + "offset_int": "0x524", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 2 (gpiod_icr2)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 2 (gpiod_icr2)", + "default_value_int": "0x0" + }, + { + "id": "field528", + "offset_int": "0x528", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 3 (gpiod_icr3)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 3 (gpiod_icr3)", + "default_value_int": "0x0" + }, + { + "id": "field52C", + "offset_int": "0x52c", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 4 (gpiod_icr4)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 4 (gpiod_icr4)", + "default_value_int": "0x0" + }, + { + "id": "field530", + "offset_int": "0x530", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 5 (gpiod_icr5)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 5 (gpiod_icr5)", + "default_value_int": "0x0" + }, + { + "id": "field534", + "offset_int": "0x534", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 6 (gpiod_icr6)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 6 (gpiod_icr6)", + "default_value_int": "0x0" + }, + { + "id": "field538", + "offset_int": "0x538", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 7 (gpiod_icr7)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 7 (gpiod_icr7)", + "default_value_int": "0x0" + }, + { + "id": "field53C", + "offset_int": "0x53c", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 8 (gpiod_icr8)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 8 (gpiod_icr8)", + "default_value_int": "0x0" + }, + { + "id": "field540", + "offset_int": "0x540", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 9 (gpiod_icr9)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 9 (gpiod_icr9)", + "default_value_int": "0x0" + }, + { + "id": "field544", + "offset_int": "0x544", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 10 (gpiod_icr10)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 10 (gpiod_icr10)", + "default_value_int": "0x0" + }, + { + "id": "field548", + "offset_int": "0x548", + "reg_width": 32, + "name": "GPIO D Interrupt Control Pin 11 (gpiod_icr11)", + "description": "TrustZone register - GPIO D Interrupt Control Pin 11 (gpiod_icr11)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z42082/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z42082/database.yaml new file mode 100644 index 0000000..d924f20 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z42082/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x10_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z42092/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z42092/database.yaml new file mode 100644 index 0000000..d924f20 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z42092/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x10_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z420b2/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z420b2/database.yaml new file mode 100644 index 0000000..fe6110d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z420b2/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z420b3/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z420b3/database.yaml new file mode 100644 index 0000000..fe6110d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/kw47z420b3/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5502/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5502/database.yaml new file mode 100644 index 0000000..7a2ae93 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5502/database.yaml @@ -0,0 +1,26 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc5506 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x10000" + external: false + sram: + start_int: "0x20000000" + size_int: "0x4000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + usb-ram: + start_int: "0x20010000" + size_int: "0x4000" + external: false + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5504/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5504/database.yaml new file mode 100644 index 0000000..d386dee --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5504/database.yaml @@ -0,0 +1,26 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc5506 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20000" + external: false + sram: + start_int: "0x20000000" + size_int: "0xC000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + usb-ram: + start_int: "0x20010000" + size_int: "0x4000" + external: false + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/database.yaml new file mode 100644 index 0000000..186af2d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/database.yaml @@ -0,0 +1,103 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + purpose: LPC5500 Series + spsdk_predecessor_name: lpc550x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-cortex-m33/lpc550x-s0x-baseline-arm-cortex-m33-based-microcontroller-family:LPC550x + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x3D000" + external: false + sram: + start_int: "0x20000000" + size_int: "0x10000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + usb-ram: + start_int: "0x20010000" + size_int: "0x4000" + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinLoadAddress + - Mbi_ExportMixinApp + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + images: + xip: + plain: plain_xip + crc: crc_xip + load_to_ram: + crc: crc_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0x3_DE00 + size: 512 + reg_spec: pfr_cfpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + cmpa: # CMPA description + address: 0x3_E400 + size: 512 + reg_spec: pfr_cmpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + + # ======== Memory configuration ======== + memcfg: + peripherals: + spi_nor: + instances: [3] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + recovery_spi: + segments: + sb21: 0x00 + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/pfr_cfpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/pfr_cfpa.json new file mode 100644 index 0000000..15cad8f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/pfr_cfpa.json @@ -0,0 +1,1129 @@ +{ + "cpu": "lpc5506", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "Header", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field004", + "name": "VERSION", + "description": "Version", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00008", + "name": "Reserved 0x00008", + "description": "This field is reserved for internal use", + "offset_int": "0x0008", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure firmware version (Monotonic counter)", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00010", + "name": "Reserved 0x00010", + "description": "This field is reserved for internal use", + "offset_int": "0x0010", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0001C", + "name": "Reserved 0x0001C", + "description": "This field is reserved for internal use", + "offset_int": "0x001C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00020", + "name": "Reserved 0x00020", + "description": "This field is reserved for internal use", + "offset_int": "0x0020", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00024", + "name": "Reserved 0x00024", + "description": "This field is reserved for internal use", + "offset_int": "0x0024", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field028", + "name": "ENABLE_FA_MODE", + "description": "Enable FA mode. SET_FA_MODE Command should write 0xC33CA55A to this word to indicate boot ROM to enter FA mode.", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00040-000FC", + "description": "Reserved 00040-000FC" + }, + "registers": [ + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00060", + "name": "Reserved 0x00060", + "description": "This field is reserved for internal use", + "offset_int": "0x0060", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/pfr_cmpa.json new file mode 100644 index 0000000..8751fcc --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5506/pfr_cmpa.json @@ -0,0 +1,1517 @@ +{ + "cpu": "lpc5506", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode:", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "DISABLE", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Core clock:", + "values": [ + { + "name": "SYSTEM_SPEED_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "FRO_48MHZ", + "value": 2, + "description": "48MHz FRO" + } + ] + }, + { + "width": 15 + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "GPIO port and pin number to use for indicating failure reason. The toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_FLASH_CFG", + "description": "SPI Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI flash recovery boot is enabled, if non-zero value is written to this field." + }, + { + "width": 27 + } + ] + }, + { + "id": "Reserved00008", + "name": "Reserved 0x00008", + "description": "This field is reserved for internal use", + "offset_int": "0x0008", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0000C", + "name": "Reserved 0x0000C", + "description": "This field is reserved for internal use", + "offset_int": "0x000C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field010-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field010-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field014-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0001C", + "name": "Reserved 0x0001C", + "description": "This field is reserved for internal use", + "offset_int": "0x001C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00020", + "name": "Reserved 0x00020", + "description": "This field is reserved for internal use", + "offset_int": "0x0020", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00024", + "name": "Reserved 0x00024", + "description": "This field is reserved for internal use", + "offset_int": "0x0024", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00028", + "name": "Reserved 0x00028", + "description": "This field is reserved for internal use", + "offset_int": "0x0028", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "XTAL_32KHZ_CAPABANK_TRIM", + "description": "Xtal 32kHz capabank trimming.", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field030-bit0", + "name": "TRIM_VALID", + "description": "XTAL 32kHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field030-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + }, + { + "id": "field034", + "name": "XTAL_16MHZ_CAPABANK_TRIM", + "description": "Xtal 16MHz capabank trimming.", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field034-bit0", + "name": "TRIM_VALID", + "description": "XTAL 16MHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field034-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + }, + { + "id": "field038", + "name": "FLASH_REMAP_SIZE", + "description": "This 32-bit register contains the size of the image to remap, in bytes. The 12 LSBs are ignored, so the size granularity is 4KB.", + "offset_int": "0x0038", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "FLASH_REMAP_OFFSET", + "description": "This 32-bit register contains the offset by which the image is to be remapped. The 12 LSBs are ignored, so the remap granularity is 4KB.", + "offset_int": "0x003C", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00040-000FC", + "description": "Reserved 00040-000FC" + }, + "registers": [ + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00060", + "name": "Reserved 0x00060", + "description": "This field is reserved for internal use", + "offset_int": "0x0060", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5512/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5512/database.yaml new file mode 100644 index 0000000..0887893 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5512/database.yaml @@ -0,0 +1,26 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc5516 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x10000" + external: false + sram: + start_int: "0x20000000" + size_int: "0x4000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + usb-ram: + start_int: "0x20010000" + size_int: "0x4000" + external: false + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5514/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5514/database.yaml new file mode 100644 index 0000000..b33a1e0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5514/database.yaml @@ -0,0 +1,26 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc5516 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20000" + external: false + sram: + start_int: "0x20000000" + size_int: "0xC000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + usb-ram: + start_int: "0x20010000" + size_int: "0x4000" + external: false + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5516/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5516/database.yaml new file mode 100644 index 0000000..77f8b52 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5516/database.yaml @@ -0,0 +1,18 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc5506 + +# General MCU information +info: + spsdk_predecessor_name: lpc551x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-cortex-m33/lpc551x-s1x-baseline-arm-cortex-m33-based-microcontroller-family:LPC551X-S1X + isp: + rom: + protocol: mboot + interfaces: ["usb","uart", "spi", "i2c"] + usb: + - vid: 0x1FC9 + pid: 0x0022 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5516/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5516/pfr_cmpa.json new file mode 100644 index 0000000..4fac9be --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5516/pfr_cmpa.json @@ -0,0 +1,1544 @@ +{ + "cpu": "LPC5516", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode:", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "USB_HID_ISP", + "value": 1, + "description": "USB_HID_ISP" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "DISABLE", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Core clock:", + "values": [ + { + "name": "SYSTEM_SPEED_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "FRO_48MHZ", + "value": 2, + "description": "48MHz FRO" + } + ] + }, + { + "width": 2, + "id": "field000-bits9-10", + "name": "USB_SPEED", + "description": "Defines which USB module is used for ISP:", + "values": [ + { + "name": "USB_SPEED_0", + "value": 0, + "description": "Defined by NMPA.USBCFG.USB_SPEED" + }, + { + "name": "USB_FS", + "value": 1, + "description": "USB FS module used for ISP" + }, + { + "name": "USB_HS", + "value": 2, + "description": "USB HS module used for ISP" + }, + { + "name": "USB_SPEED_1", + "value": 3, + "description": "Defined by NMPA.USBCFG.USB_SPEED" + } + ] + }, + { + "width": 13 + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "GPIO port and pin number to use for indicating failure reason. The toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_FLASH_CFG", + "description": "SPI Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI flash recovery boot is enabled, if non-zero value is written to this field." + }, + { + "width": 27 + } + ] + }, + { + "id": "field008", + "name": "USB_ID", + "description": "USB Identifiers", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "USB_VENDOR_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "USB_PRODUCT_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field00C", + "name": "SDIO_CFG", + "description": "SDIO Configuration", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field010-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field014-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0001C", + "name": "Reserved 0x0001C", + "description": "This field is reserved for internal use", + "offset_int": "0x001C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00020", + "name": "Reserved 0x00020", + "description": "This field is reserved for internal use", + "offset_int": "0x0020", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00024", + "name": "Reserved 0x00024", + "description": "This field is reserved for internal use", + "offset_int": "0x0024", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00028", + "name": "Reserved 0x00028", + "description": "This field is reserved for internal use", + "offset_int": "0x0028", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "XTAL_32KHZ_CAPABANK_TRIM", + "description": "Xtal 32kHz capabank trimming.", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field030-bit0", + "name": "TRIM_VALID", + "description": "XTAL 32kHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field030-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + }, + { + "id": "field034", + "name": "XTAL_16MHZ_CAPABANK_TRIM", + "description": "Xtal 16MHz capabank trimming.", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field034-bit0", + "name": "TRIM_VALID", + "description": "XTAL 16MHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field034-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + }, + { + "id": "field038", + "name": "FLASH_REMAP_SIZE", + "description": "This 32-bit register contains the size of the image to remap, in bytes. The 12 LSBs are ignored, so the size granularity is 4KB.", + "offset_int": "0x0038", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "FLASH_REMAP_OFFSET", + "description": "This 32-bit register contains the offset by which the image is to be remapped. The 12 LSBs are ignored, so the remap granularity is 4KB.", + "offset_int": "0x003C", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00040-000FC", + "description": "Reserved 00040-000FC" + }, + "registers": [ + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00060", + "name": "Reserved 0x00060", + "description": "This field is reserved for internal use", + "offset_int": "0x0060", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/database.yaml new file mode 100644 index 0000000..432c7ab --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/database.yaml @@ -0,0 +1,110 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + 1a: {} + 1b: {} +latest: 1b + +# General MCU information +info: + purpose: LPC5500 Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-cortex-m33/lpc552x-s2x-mainstream-arm-cortex-m33-based-microcontroller-family:LPC552x-S2x + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x80000" + external: false + sram: + start_int: "0x20000000" + size_int: "0x30000" + external: false + sram4: + start_int: "0x20040000" + size_int: "0x4000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x8000" + external: false + usb-ram: + start_int: "0x40100000" + size_int: "0x4000" + external: false + isp: + rom: + interfaces: ["usb","uart", "spi", "i2c"] + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0021 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinLoadAddress + - Mbi_ExportMixinApp + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + images: + xip: + plain: plain_xip + crc: crc_xip + load_to_ram: + crc: crc_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0x9_DE00 + size: 512 + reg_spec: pfr_cfpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + cmpa: # CMPA description + address: 0x9_E400 + size: 512 + reg_spec: pfr_cmpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + + # ======== Memory configuration ======== + memcfg: + peripherals: + spi_nor: + instances: [3] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + recovery_spi: + segments: + sb21: 0x00 + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/pfr_cfpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/pfr_cfpa.json new file mode 100644 index 0000000..2241ce0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/pfr_cfpa.json @@ -0,0 +1,1129 @@ +{ + "cpu": "lpc5526", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "Header", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field004", + "name": "VERSION", + "description": "Version", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00008", + "name": "Reserved 0x00008", + "description": "This field is reserved for internal use", + "offset_int": "0x0008", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure firmware version (Monotonic counter)", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00010", + "name": "Reserved 0x00010", + "description": "This field is reserved for internal use", + "offset_int": "0x0010", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0001C", + "name": "Reserved 0x0001C", + "description": "This field is reserved for internal use", + "offset_int": "0x001C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00020", + "name": "Reserved 0x00020", + "description": "This field is reserved for internal use", + "offset_int": "0x0020", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00024", + "name": "Reserved 0x00024", + "description": "This field is reserved for internal use", + "offset_int": "0x0024", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field028", + "name": "ENABLE_FA_MODE", + "description": "Enable FA mode. SET_FA_MODE Command should write 0xC33CA55A to this word to indicate boot ROM to enter FA mode.", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00040-000FC", + "description": "Reserved 00040-000FC" + }, + "registers": [ + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00060", + "name": "Reserved 0x00060", + "description": "This field is reserved for internal use", + "offset_int": "0x0060", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/pfr_cmpa.json new file mode 100644 index 0000000..8861340 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5526/pfr_cmpa.json @@ -0,0 +1,1471 @@ +{ + "cpu": "lpc5526", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode:", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "USB_HID_ISP", + "value": 1, + "description": "USB_HID_ISP" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "DISABLE", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Core clock:", + "values": [ + { + "name": "SYSTEM_SPEED_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "FRO_96MHZ", + "value": 1, + "description": "96MHz FRO" + }, + { + "name": "FRO_48MHZ", + "value": 2, + "description": "48MHz FRO" + } + ] + }, + { + "width": 2, + "id": "field000-bits9-10", + "name": "USB_SPEED", + "description": "Defines which USB module is used for ISP:", + "values": [ + { + "name": "USB_SPEED_0", + "value": 0, + "description": "Defined by NMPA.USBCFG.USB_SPEED" + }, + { + "name": "USB_FS", + "value": 1, + "description": "USB FS module used for ISP" + }, + { + "name": "USB_HS", + "value": 2, + "description": "USB HS module used for ISP" + }, + { + "name": "USB_SPEED_1", + "value": 3, + "description": "Defined by NMPA.USBCFG.USB_SPEED" + } + ] + }, + { + "width": 13 + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "GPIO port and pin number to use for indicating failure reason. The toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_FLASH_CFG", + "description": "SPI Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI flash recovery boot is enabled, if non-zero value is written to this field." + }, + { + "width": 27 + } + ] + }, + { + "id": "field008", + "name": "USB_ID", + "description": "USB Identifiers", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "USB_VENDOR_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "USB_PRODUCT_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field00C", + "name": "SDIO_CFG", + "description": "SDIO Configuration", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field010-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field014-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0001C", + "name": "Reserved 0x0001C", + "description": "This field is reserved for internal use", + "offset_int": "0x001C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00020", + "name": "Reserved 0x00020", + "description": "This field is reserved for internal use", + "offset_int": "0x0020", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00024", + "name": "Reserved 0x00024", + "description": "This field is reserved for internal use", + "offset_int": "0x0024", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00028", + "name": "Reserved 0x00028", + "description": "This field is reserved for internal use", + "offset_int": "0x0028", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00040-000FC", + "description": "Reserved 00040-000FC" + }, + "registers": [ + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00060", + "name": "Reserved 0x00060", + "description": "This field is reserved for internal use", + "offset_int": "0x0060", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5528/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5528/database.yaml new file mode 100644 index 0000000..7083c43 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5528/database.yaml @@ -0,0 +1,27 @@ +# Copyright 2023-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc5526 + +# General MCU information +info: + spsdk_predecessor_name: lpc552x + # Web page of MCU representative + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x40000" + external: false + sram: + start_int: "0x20000000" + size_int: "0x18000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x8000" + external: false + usb-ram: + start_int: "0x40100000" + size_int: "0x4000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/database.yaml new file mode 100644 index 0000000..065c4ca --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/database.yaml @@ -0,0 +1,144 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + 0a: + features: + pfr: + cfpa: + reg_spec: pfr_cfpa_0a.json + cmpa: + reg_spec: pfr_cmpa_0a.json + 1a: + features: + pfr: + cfpa: + reg_spec: pfr_cfpa_1a.json + cmpa: + reg_spec: pfr_cmpa_1a.json +latest: 1a + +# General MCU information +info: + purpose: LPC5500 Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-arm-cortex-m33/lpc553x-s3x-advanced-analog-armcortex-m33-based-mcu-family:LPC553x + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20000" + external: false + flexspi_ns: + start_int: "0x8000000" + size_int: "0x8000000" + external: true + sram: + start_int: "0x20000000" + size_int: "0x18000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + isp: + rom: + protocol: mboot + interfaces: ["usb", "uart", "spi", "i2c"] + usb: + - vid: 0x1FC9 + pid: 0x0025 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: {} + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinImageVersion + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinLoadAddress + - Mbi_ExportMixinApp + plain_ram: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinImageVersion + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_ExportMixinApp + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinImageVersion + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinImageVersion + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + + images: + xip: + plain: plain_xip + crc: crc_xip + load_to_ram: + plain: plain_ram + crc: crc_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0x3_DC00 + seal_start: field1EC # CFPA_CRC32 + seal_count: 1 + cmpa: # CMPA description + address: 0x3_E200 + cert_block_version: 21 + seal_start: field1FC # CMPA_CRC32 + seal_count: 1 + rules: + - ../../common/pfrc_rules.yaml + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 + flexspi_nor: + segments: + fcb: 0x0400 + image_version_ap: 0x0600 + mbi: 0x1000 + remap_align: 0x40000 # 256 KB + image_pattern: ones + recovery_spi_sb31: + segments: + sb31: 0x00 + recovery_spi_mbi: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/fcb_flexspi_nor.json new file mode 100644 index 0000000..5b6470e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/fcb_flexspi_nor.json @@ -0,0 +1,25587 @@ +{ + "cpu": "LPC5534", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL ", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix ", + "default_value_int": "0x56020000" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3 ", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet ", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc. ", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command ", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration ", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details ", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details ", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal ", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details ", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH ", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1 ", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2 ", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1 ", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2 ", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command ", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands ", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0" + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31 ", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy ", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command ", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same ", + "default_value_int": "0x0" + }, + { + "id": "field1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " Data order (D0, D1, D2, D3) is swapped (D1,D0, D3, D2) ", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3 ", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command ", + "default_value_int": "0x0" + }, + { + "id": "field1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false ", + "default_value_int": "0x0" + }, + { + "id": "field1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution ", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size ", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "flashStateCtx", + "description": " Flash State Context ", + "default_value_int": "0x0" + }, + { + "id": "Reserved1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "Reserved2_0", + "deprecated_names": ["reserve2_0"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "Reserved2_1", + "deprecated_names": ["reserve2_1"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "Reserved2_2", + "deprecated_names": ["reserve2_2"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "Reserved2_3", + "deprecated_names": ["reserve2_3"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "Reserved2_4", + "deprecated_names": ["reserve2_4"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "Reserved2_5", + "deprecated_names": ["reserve2_5"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "Reserved2_6", + "deprecated_names": ["reserve2_6"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "Reserved2_7", + "deprecated_names": ["reserve2_7"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "Reserved2_8", + "deprecated_names": ["reserve2_8"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "Reserved2_9", + "deprecated_names": ["reserve2_9"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/fuses.json new file mode 100644 index 0000000..caf49db --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/fuses.json @@ -0,0 +1,172 @@ +{ + "cpu": "lpc5534", + "groups": [ + { + "group": { + "name": "LC_STATE", + "description": "Device life cycle state, only the lowest 8 bits are valid." + }, + "registers": [ + { + "id": "fuse0", + "name": "LC_STATE", + "description": "Device life cycle state. \nThis field is used to determine Code Read Protection (CRP) level.", + "index_int": "0", + "default_value_int": "0x0003", + "bitfields": [ + { + "width": 8, + "id": "fuse0-bits-0-7", + "name": "LC_STATE", + "description": "Device life cycle state LC_STATE[7:0].", + "values": [ + { + "name": "CRP_LEVEL0", + "value": 3, + "description": "CRP_LEVEL0 (LC_STATE = 0x03)" + }, + { + "name": "CRP_LEVEL1", + "value": 7, + "description": "CRP_LEVEL1 (LC_STATE = 0x07)" + }, + { + "name": "CRP_LEVEL2_3", + "value": 15, + "description": "CRP_LEVEL2 (LC_STATE = 0x0F), CRP_LEVEL3 (LC_STATE = 0x0F) and CMPA.ISP_mode = Disable." + }, + { + "name": "FIELD_RETURN", + "value": 31, + "description": "Field Return OEM (LC_STATE = 0x1F)" + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "Failure analysis NXP (LC_STATE = 0x7F)" + }, + { + "name": "CRP_LEVEL4", + "value": 207, + "description": "CRP_LEVEL4 (LC_STATE = 0xCF) and CMPA.ISP_mode = Disable." + } + ] + }, + { + "width": 24 + } + ] + } + ] + }, + { + "group": { + "name": "CMPA_CRC", + "description": "CMPA CRC check value." + }, + "registers": [ + { + "id": "fuse1", + "name": "CMPA_CRC", + "description": "CRC32 of CMPA fields. \n- Used by non-secure part during boot.", + "index_int": "0x0001" + } + ] + }, + { + "group": { + "name": "MFG_DATA", + "description": "Customer Manufacturing-time programmed words." + }, + "registers": [ + { + "id": "fuse2", + "name": "MFG_DATA0", + "description": "CMPA MFG data value word 0.", + "index_int": "0x0002" + }, + { + "id": "fuse3", + "name": "MFG_DATA1", + "description": "CMPA MFG data value word 1.", + "index_int": "0x0003" + }, + { + "id": "fuse4", + "name": "MFG_DATA2", + "description": "CMPA MFG data value word 2.", + "index_int": "0x0004" + }, + { + "id": "fuse5", + "name": "MFG_DATA3", + "description": "CMPA MFG data value word 3.", + "index_int": "0x0005" + } + ] + }, + { + "group": { + "name": "Reserved 0x6", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved6", + "name": "Reserved 0x6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0006", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "CUSTOMER_WORDS", + "description": "Customer words area." + }, + "registers": [ + { + "id": "fuse7", + "name": "CUSTOMER_WORD0", + "description": "Customer use word 0.", + "index_int": "0x0007" + }, + { + "id": "fuse8", + "name": "CUSTOMER_WORD1", + "description": "Customer use word 1, only the lowest 8 bits are valid.", + "index_int": "0x0008", + "bitfields": [ + { + "width": 8, + "id": "fuse8-bits-0-7", + "name": "CUSTOMER_WORD1", + "description": "Customer use word 1." + }, + { + "width": 24 + } + ] + }, + { + "id": "fuse9", + "name": "CUSTOMER_WORD2", + "description": "Customer use word 2, only the lowest 8 bits are valid.", + "index_int": "0x0009", + "bitfields": [ + { + "width": 8, + "id": "fuse9-bits-0-7", + "name": "CUSTOMER_WORD2", + "description": "Customer use word 2." + }, + { + "width": 24 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cfpa_0a.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cfpa_0a.json new file mode 100644 index 0000000..d0f1707 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cfpa_0a.json @@ -0,0 +1,1367 @@ +{ + "cpu": "LPC5534", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "Header", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field004", + "name": "CFPA_PAGE_VERSION", + "description": "CFPA Page Version", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "FW_Version", + "description": "Firmware Version (Monotonic counter)", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "MCTR_NXP_CTR0", + "description": "Monotonic counter 0", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "MFLAG_CUST_0", + "description": "Customer defined Monotonic flags", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field014", + "name": "MCTR_NXP_CTR1", + "description": "Monotonic counter 1", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "MCTR_NXP_CTR2", + "description": "Monotonic counter 2", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field01C", + "name": "MCTR_NXP_CTR3", + "description": "Monotonic counter 3", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field020", + "name": "MCTR_NXP_CTR4", + "description": "Monotonic counter 4", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field024", + "name": "MCTR_NXP_CTR5", + "description": "Monotonic counter 5", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field028", + "name": "MCTR_NXP_CTR6", + "description": "Monotonic counter 6", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "MCTR_NXP_CTR7", + "description": "Monotonic counter 7", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "MCTR_CUST_CTR0", + "description": "Customer defined Monotonic counter 0.", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field034", + "name": "MCTR_CUST_CTR1", + "description": "Customer defined Monotonic counter 1.", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field038", + "name": "MCTR_CUST_CTR2", + "description": "Customer defined Monotonic counter 2.", + "offset_int": "0x0038", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "MCTR_CUST_CTR3", + "description": "Customer defined Monotonic counter 3.", + "offset_int": "0x003C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field040", + "name": "MCTR_CUST_CTR4", + "description": "Customer defined Monotonic counter 4.", + "offset_int": "0x0040", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field044", + "name": "MCTR_CUST_CTR5", + "description": "Customer defined Monotonic counter 5.", + "offset_int": "0x0044", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field048", + "name": "MCTR_CUST_CTR6", + "description": "Customer defined Monotonic counter 6.", + "offset_int": "0x0048", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field04C", + "name": "MCTR_CUST_CTR7", + "description": "Customer defined Monotonic counter 7.", + "offset_int": "0x004C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field050", + "name": "MFLAG_CUST_1", + "description": "Customer defined Monotonic flags", + "offset_int": "0x0050", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned", + "offset_int": "0x0058", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field058-bit0", + "name": "NIDEN", + "description": "Non-secure Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "field058-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 16, + "id": "field058-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value of Bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field05C", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter", + "offset_int": "0x005C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field05C-bit0", + "name": "NIDEN", + "description": "Non-secure Non-invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "field05C-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 7 + }, + { + "width": 16, + "id": "field05C-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field060", + "name": "ENABLE_FA_MODE", + "description": "Enable FA Mode. SET_FA_MODE Command should write 0xC33CA55A to this word to indicate boot ROM to enter FA mode.", + "offset_int": "0x0060", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "CMPA_PROG_IN_PROGRESS", + "description": "CMPA Page Programming On Going. Set this field to 0x5CC55AA5 in the active CFPA page each time CMPA page programming is going on. It shall always be set to 0x00000000 in the CFPA scratch area.", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00068-001E8", + "description": "Reserved 00068-001E8" + }, + "registers": [ + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00100", + "name": "Reserved 0x00100", + "description": "This field is reserved for internal use", + "offset_int": "0x0100", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00104", + "name": "Reserved 0x00104", + "description": "This field is reserved for internal use", + "offset_int": "0x0104", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00108", + "name": "Reserved 0x00108", + "description": "This field is reserved for internal use", + "offset_int": "0x0108", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00110", + "name": "Reserved 0x00110", + "description": "This field is reserved for internal use", + "offset_int": "0x0110", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00120", + "name": "Reserved 0x00120", + "description": "This field is reserved for internal use", + "offset_int": "0x0120", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00130", + "name": "Reserved 0x00130", + "description": "This field is reserved for internal use", + "offset_int": "0x0130", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00134", + "name": "Reserved 0x00134", + "description": "This field is reserved for internal use", + "offset_int": "0x0134", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00138", + "name": "Reserved 0x00138", + "description": "This field is reserved for internal use", + "offset_int": "0x0138", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0013C", + "name": "Reserved 0x0013C", + "description": "This field is reserved for internal use", + "offset_int": "0x013C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00140", + "name": "Reserved 0x00140", + "description": "This field is reserved for internal use", + "offset_int": "0x0140", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00144", + "name": "Reserved 0x00144", + "description": "This field is reserved for internal use", + "offset_int": "0x0144", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00148", + "name": "Reserved 0x00148", + "description": "This field is reserved for internal use", + "offset_int": "0x0148", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0014C", + "name": "Reserved 0x0014C", + "description": "This field is reserved for internal use", + "offset_int": "0x014C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00150", + "name": "Reserved 0x00150", + "description": "This field is reserved for internal use", + "offset_int": "0x0150", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00154", + "name": "Reserved 0x00154", + "description": "This field is reserved for internal use", + "offset_int": "0x0154", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00158", + "name": "Reserved 0x00158", + "description": "This field is reserved for internal use", + "offset_int": "0x0158", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0015C", + "name": "Reserved 0x0015C", + "description": "This field is reserved for internal use", + "offset_int": "0x015C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00160", + "name": "Reserved 0x00160", + "description": "This field is reserved for internal use", + "offset_int": "0x0160", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00164", + "name": "Reserved 0x00164", + "description": "This field is reserved for internal use", + "offset_int": "0x0164", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00168", + "name": "Reserved 0x00168", + "description": "This field is reserved for internal use", + "offset_int": "0x0168", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0016C", + "name": "Reserved 0x0016C", + "description": "This field is reserved for internal use", + "offset_int": "0x016C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00170", + "name": "Reserved 0x00170", + "description": "This field is reserved for internal use", + "offset_int": "0x0170", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00174", + "name": "Reserved 0x00174", + "description": "This field is reserved for internal use", + "offset_int": "0x0174", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00178", + "name": "Reserved 0x00178", + "description": "This field is reserved for internal use", + "offset_int": "0x0178", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0017C", + "name": "Reserved 0x0017C", + "description": "This field is reserved for internal use", + "offset_int": "0x017C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00180", + "name": "Reserved 0x00180", + "description": "This field is reserved for internal use", + "offset_int": "0x0180", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00184", + "name": "Reserved 0x00184", + "description": "This field is reserved for internal use", + "offset_int": "0x0184", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00188", + "name": "Reserved 0x00188", + "description": "This field is reserved for internal use", + "offset_int": "0x0188", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0018C", + "name": "Reserved 0x0018C", + "description": "This field is reserved for internal use", + "offset_int": "0x018C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00190", + "name": "Reserved 0x00190", + "description": "This field is reserved for internal use", + "offset_int": "0x0190", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00194", + "name": "Reserved 0x00194", + "description": "This field is reserved for internal use", + "offset_int": "0x0194", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00198", + "name": "Reserved 0x00198", + "description": "This field is reserved for internal use", + "offset_int": "0x0198", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0019C", + "name": "Reserved 0x0019C", + "description": "This field is reserved for internal use", + "offset_int": "0x019C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001A0", + "name": "Reserved 0x001A0", + "description": "This field is reserved for internal use", + "offset_int": "0x01A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001A4", + "name": "Reserved 0x001A4", + "description": "This field is reserved for internal use", + "offset_int": "0x01A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001A8", + "name": "Reserved 0x001A8", + "description": "This field is reserved for internal use", + "offset_int": "0x01A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001AC", + "name": "Reserved 0x001AC", + "description": "This field is reserved for internal use", + "offset_int": "0x01AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "CRC32", + "description": "CRC32 fields" + }, + "registers": [ + { + "id": "field1EC", + "name": "CFPA_CRC32", + "description": "CFPA CRC32", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cfpa_1a.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cfpa_1a.json new file mode 100644 index 0000000..0f910d8 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cfpa_1a.json @@ -0,0 +1,1039 @@ +{ + "cpu": "lpc5534", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "Header", + "description": "Header", + "offset_int": "0", + "default_value_int": "0" + }, + { + "id": "field004", + "name": "CFPA_PAGE_Version", + "description": "CFPA Page Version. Write '0xFFFF_FFFF' to auto increment current CFPA page version value (by ROM).", + "offset_int": "0x0004", + "default_value_int": "0" + }, + { + "id": "field008", + "name": "NS_FW_Version", + "description": "Non-Secure Firmware Version (Monotonic counter)", + "offset_int": "0x0008", + "default_value_int": "0" + }, + { + "id": "field00C", + "name": "MCTR_NXP_CTR0", + "description": "Monotonic counter 0", + "offset_int": "0x000C", + "default_value_int": "0" + }, + { + "id": "field010", + "name": "MFLAG_CUST_0", + "description": "Customer defined Monotonic flags", + "offset_int": "0x0010", + "default_value_int": "0" + }, + { + "id": "field014", + "name": "MCTR_NXP_CTR1", + "description": "Monotonic counter 1", + "offset_int": "0x0014", + "default_value_int": "0" + }, + { + "id": "field018", + "name": "MCTR_NXP_CTR2", + "description": "Monotonic counter 2", + "offset_int": "0x0018", + "default_value_int": "0" + }, + { + "id": "field01C", + "name": "MCTR_NXP_CTR3", + "description": "Monotonic counter 3", + "offset_int": "0x001C", + "default_value_int": "0" + }, + { + "id": "field020", + "name": "MCTR_NXP_CTR4", + "description": "Monotonic counter 4", + "offset_int": "0x0020", + "default_value_int": "0" + }, + { + "id": "field024", + "name": "MCTR_NXP_CTR5", + "description": "Monotonic counter 5", + "offset_int": "0x0024", + "default_value_int": "0" + }, + { + "id": "field028", + "name": "MCTR_NXP_CTR6", + "description": "Monotonic counter 6", + "offset_int": "0x0028", + "default_value_int": "0" + }, + { + "id": "field02C", + "name": "MCTR_NXP_CTR7", + "description": "Monotonic counter 7", + "offset_int": "0x002C", + "default_value_int": "0" + }, + { + "id": "field030", + "name": "MCTR_CUST_CTR0", + "description": "Customer defined Monotonic counter 0.", + "offset_int": "0x0030", + "default_value_int": "0" + }, + { + "id": "field034", + "name": "MCTR_CUST_CTR1", + "description": "Customer defined Monotonic counter 1.", + "offset_int": "0x0034", + "default_value_int": "0" + }, + { + "id": "field038", + "name": "MCTR_CUST_CTR2", + "description": "Customer defined Monotonic counter 2.", + "offset_int": "0x0038", + "default_value_int": "0" + }, + { + "id": "field03C", + "name": "MCTR_CUST_CTR3", + "description": "Customer defined Monotonic counter 3.", + "offset_int": "0x003C", + "default_value_int": "0" + }, + { + "id": "field040", + "name": "MCTR_CUST_CTR4", + "description": "Customer defined Monotonic counter 4.", + "offset_int": "0x0040", + "default_value_int": "0" + }, + { + "id": "field044", + "name": "MCTR_CUST_CTR5", + "description": "Customer defined Monotonic counter 5.", + "offset_int": "0x0044", + "default_value_int": "0" + }, + { + "id": "field048", + "name": "MCTR_CUST_CTR6", + "description": "Customer defined Monotonic counter 6.", + "offset_int": "0x0048", + "default_value_int": "0" + }, + { + "id": "field04C", + "name": "MCTR_CUST_CTR7", + "description": "Customer defined Monotonic counter 7.", + "offset_int": "0x004C", + "default_value_int": "0" + }, + { + "id": "field050", + "name": "MFLAG_CUST_1", + "description": "Customer defined Monotonic flags", + "offset_int": "0x0050", + "default_value_int": "0" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field060", + "name": "ENABLE_FA_MODE", + "description": "Enable FA Mode. SET_FA_MODE Command should write 0xC33CA55A to this word to indicate boot ROM to enter FA mode.", + "offset_int": "0x0060", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "CMPA_PROG_IN_PROGRESS", + "description": "CMPA Page Programming On Going. Set this field to 0x5CC55AA5 in the active CFPA page each time CMPA page programming is going on. It shall always be set to 0x00000000 in the CFPA scratch area.", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00068-001E8", + "description": "Reserved 00068-001E8" + }, + "registers": [ + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00100", + "name": "Reserved 0x00100", + "description": "This field is reserved for internal use", + "offset_int": "0x0100", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00104", + "name": "Reserved 0x00104", + "description": "This field is reserved for internal use", + "offset_int": "0x0104", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00108", + "name": "Reserved 0x00108", + "description": "This field is reserved for internal use", + "offset_int": "0x0108", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00110", + "name": "Reserved 0x00110", + "description": "This field is reserved for internal use", + "offset_int": "0x0110", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00120", + "name": "Reserved 0x00120", + "description": "This field is reserved for internal use", + "offset_int": "0x0120", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00130", + "name": "Reserved 0x00130", + "description": "This field is reserved for internal use", + "offset_int": "0x0130", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00134", + "name": "Reserved 0x00134", + "description": "This field is reserved for internal use", + "offset_int": "0x0134", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00138", + "name": "Reserved 0x00138", + "description": "This field is reserved for internal use", + "offset_int": "0x0138", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0013C", + "name": "Reserved 0x0013C", + "description": "This field is reserved for internal use", + "offset_int": "0x013C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00140", + "name": "Reserved 0x00140", + "description": "This field is reserved for internal use", + "offset_int": "0x0140", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00144", + "name": "Reserved 0x00144", + "description": "This field is reserved for internal use", + "offset_int": "0x0144", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00148", + "name": "Reserved 0x00148", + "description": "This field is reserved for internal use", + "offset_int": "0x0148", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0014C", + "name": "Reserved 0x0014C", + "description": "This field is reserved for internal use", + "offset_int": "0x014C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00150", + "name": "Reserved 0x00150", + "description": "This field is reserved for internal use", + "offset_int": "0x0150", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00154", + "name": "Reserved 0x00154", + "description": "This field is reserved for internal use", + "offset_int": "0x0154", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00158", + "name": "Reserved 0x00158", + "description": "This field is reserved for internal use", + "offset_int": "0x0158", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0015C", + "name": "Reserved 0x0015C", + "description": "This field is reserved for internal use", + "offset_int": "0x015C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00160", + "name": "Reserved 0x00160", + "description": "This field is reserved for internal use", + "offset_int": "0x0160", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00164", + "name": "Reserved 0x00164", + "description": "This field is reserved for internal use", + "offset_int": "0x0164", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00168", + "name": "Reserved 0x00168", + "description": "This field is reserved for internal use", + "offset_int": "0x0168", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0016C", + "name": "Reserved 0x0016C", + "description": "This field is reserved for internal use", + "offset_int": "0x016C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00170", + "name": "Reserved 0x00170", + "description": "This field is reserved for internal use", + "offset_int": "0x0170", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00174", + "name": "Reserved 0x00174", + "description": "This field is reserved for internal use", + "offset_int": "0x0174", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00178", + "name": "Reserved 0x00178", + "description": "This field is reserved for internal use", + "offset_int": "0x0178", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0017C", + "name": "Reserved 0x0017C", + "description": "This field is reserved for internal use", + "offset_int": "0x017C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00180", + "name": "Reserved 0x00180", + "description": "This field is reserved for internal use", + "offset_int": "0x0180", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00184", + "name": "Reserved 0x00184", + "description": "This field is reserved for internal use", + "offset_int": "0x0184", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00188", + "name": "Reserved 0x00188", + "description": "This field is reserved for internal use", + "offset_int": "0x0188", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0018C", + "name": "Reserved 0x0018C", + "description": "This field is reserved for internal use", + "offset_int": "0x018C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00190", + "name": "Reserved 0x00190", + "description": "This field is reserved for internal use", + "offset_int": "0x0190", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00194", + "name": "Reserved 0x00194", + "description": "This field is reserved for internal use", + "offset_int": "0x0194", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00198", + "name": "Reserved 0x00198", + "description": "This field is reserved for internal use", + "offset_int": "0x0198", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0019C", + "name": "Reserved 0x0019C", + "description": "This field is reserved for internal use", + "offset_int": "0x019C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A0", + "name": "Reserved 0x001A0", + "description": "This field is reserved for internal use", + "offset_int": "0x01A0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A4", + "name": "Reserved 0x001A4", + "description": "This field is reserved for internal use", + "offset_int": "0x01A4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A8", + "name": "Reserved 0x001A8", + "description": "This field is reserved for internal use", + "offset_int": "0x01A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001AC", + "name": "Reserved 0x001AC", + "description": "This field is reserved for internal use", + "offset_int": "0x01AC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CRC32", + "description": "CRC32 fields" + }, + "registers": [ + { + "id": "field1EC", + "name": "CFPA_CRC32", + "description": "CFPA CRC32", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 001F0-001FC", + "description": "Reserved 001F0-001FC" + }, + "registers": [ + { + "id": "Reserved001F0", + "name": "Reserved 0x001F0", + "description": "This field is reserved for internal use", + "offset_int": "0x01F0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001F4", + "name": "Reserved 0x001F4", + "description": "This field is reserved for internal use", + "offset_int": "0x01F4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001F8", + "name": "Reserved 0x001F8", + "description": "This field is reserved for internal use", + "offset_int": "0x01F8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001FC", + "name": "Reserved 0x001FC", + "description": "This field is reserved for internal use", + "offset_int": "0x01FC", + "is_reserved": true, + "default_value_int": "0" + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cmpa_0a.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cmpa_0a.json new file mode 100644 index 0000000..9da4717 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cmpa_0a.json @@ -0,0 +1,2122 @@ +{ + "cpu": "LPC5534", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field000-bits0-2", + "name": "DEFAULT_BOOT_SOURCE", + "description": "Default Boot Source", + "values": [ + { + "name": "ISP_PIN", + "value": 0, + "description": "ISP pin source" + }, + { + "name": "FLEXSPI_FLASH", + "value": 1, + "description": "FlexSPI flash" + }, + { + "name": "SERIAL_ISP_BOOT", + "value": 2, + "description": "Serial ISP boot" + }, + { + "name": "INTERNAL_FLASH", + "value": 3, + "description": "Internal Flash" + }, + { + "name": "AUTO_BOOT", + "value": 4, + "description": "Auto boot similar to ISP" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "USB_HID_MSC", + "value": 1, + "description": "USB HID MSC" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "CAN_ISP", + "value": 5, + "description": "CAN ISP" + }, + { + "name": "DISBL_ISP_FALLTHRU", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Boot Speed Core Clock", + "values": [ + { + "name": "SYS_SPD_CODE", + "value": 0, + "description": "Defined by NMPA[SYSTEM_SPEED_CODE]" + }, + { + "name": "HHZ96_FRO", + "value": 1, + "description": "96MHz FRO" + }, + { + "name": "MHZ48_FRO", + "value": 2, + "description": "48MHz FRO" + } + ] + }, + { + "width": 12 + }, + { + "width": 1, + "id": "field000-bit21", + "name": "ASRT_FATAL", + "description": "ASRT_FATAL" + }, + { + "width": 1, + "id": "field000-bit22", + "name": "ASRT_RBF", + "description": "ASRT_RBF" + }, + { + "width": 1, + "id": "field000-bit23", + "name": "ASRT_ISPF", + "description": "ASRT_ISPF" + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "Boot Failure Pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_CAN_CFG", + "description": "SPI CAN Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field004-bits0-1", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI Recovery Boot Enable" + }, + { + "width": 3, + "id": "field004-bits2-4", + "name": "SPI_REC_IF", + "description": "SPI Recovery Interface", + "values": [ + { + "name": "HSPI", + "value": 0, + "description": "HSPI P1_3-MISO, P0_26-MOSI, P1_1-SSEL1, P1_2-SCK" + }, + { + "name": "FC0", + "value": 1, + "description": "FC0 P0_30-MISO, P0_24-MOSI, P0_31-SSEL0, P0_28-SCK" + }, + { + "name": "FC3", + "value": 2, + "description": "FC3 P0_2-MISO, P0_3-MOSI, P0_4-SSEL0, P0_6-SCK" + }, + { + "name": "FC1", + "value": 3, + "description": "FC1 P2_4-MISO, P2_3-MOSI, P2_5-SSEL0, P1_9-SCK" + } + ] + }, + { + "width": 11 + }, + { + "width": 4, + "id": "field004-bits16-19", + "name": "CAN_BAUD_RATE", + "description": "CAN Baud Rate", + "values": [ + { + "name": "AUTO_BAUD_DETECT", + "value": 0, + "description": "Auto baud detection (125K, 250K, 500K, 1M). Default." + }, + { + "name": "KBPS_10", + "value": 1, + "description": "10 kbp" + }, + { + "name": "KBPS_20", + "value": 2, + "description": "20 kbp" + }, + { + "name": "KBPS_50", + "value": 3, + "description": "50 kbps" + }, + { + "name": "KBPS_125", + "value": 4, + "description": "125 kbps" + }, + { + "name": "KBPS_250", + "value": 5, + "description": "250 kbps" + }, + { + "name": "KBPS_500", + "value": 6, + "description": "500 kbps" + }, + { + "name": "KBPS_800", + "value": 7, + "description": "800 kbps" + }, + { + "name": "KBPS_1000", + "value": 8, + "description": "1,000 kbps" + } + ] + }, + { + "width": 12 + } + ] + }, + { + "id": "field008", + "name": "USB_ID", + "description": "USB Identifiers", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "USB_VENDOR_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "USB_PRODUCT_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMEOUT", + "description": "Boot Timeout", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown Timeout" + }, + { + "width": 16, + "id": "field00C-bits16-31", + "name": "WDOG_TIMEOUT_SECS", + "description": "WDOG Timeout" + } + ] + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non-secure Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "field010-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 6 + }, + { + "width": 1, + "id": "field010-bit15", + "name": "UUID_CHECK", + "description": "UUID Check" + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure Non-invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "field014-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 7 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0001C", + "name": "Reserved 0x0001C", + "description": "This field is reserved for internal use", + "offset_int": "0x001C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00020", + "name": "Reserved 0x00020", + "description": "This field is reserved for internal use", + "offset_int": "0x0020", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00024", + "name": "Reserved 0x00024", + "description": "This field is reserved for internal use", + "offset_int": "0x0024", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00028", + "name": "Reserved 0x00028", + "description": "This field is reserved for internal use", + "offset_int": "0x0028", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "XTAL_32KHZ_CAPABANK_TRIM", + "description": "Xtal 32kHz Capabank Trimming", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field030-bit0", + "name": "TRIM_VALID", + "description": "Trim Valid", + "values": [ + { + "name": "NOT_VALID", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used." + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid." + } + ] + }, + { + "width": 10, + "id": "field030-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "XTAL LOAD CAP IEC PF X100" + }, + { + "width": 10, + "id": "field030-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN PARA CAP PF X100" + }, + { + "width": 10, + "id": "field030-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT PARA CAP PF X100" + }, + { + "width": 1 + } + ] + }, + { + "id": "field034", + "name": "XTAL_16MHZ_CAPABANK_TRIM", + "description": "Xtal 16MHz Capabank Trimming", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field034-bit0", + "name": "TRIM_VALID", + "description": "Trim Valid", + "values": [ + { + "name": "NOT_VALID", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used." + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid." + } + ] + }, + { + "width": 10, + "id": "field034-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "XTAL LOAD CAP IEC PF X100" + }, + { + "width": 10, + "id": "field034-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN PARA CAP PF X100" + }, + { + "width": 10, + "id": "field034-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT PARA CAP PF X100" + }, + { + "width": 1 + } + ] + }, + { + "id": "field038", + "name": "FLASH_REMAP_SIZE", + "description": "Flash Remap Size", + "offset_int": "0x0038", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "FLASH_REMAP_OFFSET", + "description": "Flash Remap Offset", + "offset_int": "0x003C", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00040-0007C", + "description": "Reserved 00040-0007C" + }, + "registers": [ + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00060", + "name": "Reserved 0x00060", + "description": "This field is reserved for internal use", + "offset_int": "0x0060", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field080", + "name": "FLEXSPI_BOOT_CFG0", + "description": "FlexSPI Boot Configuration 0", + "offset_int": "0x0080", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field080-bit0", + "name": "FLEXSPI_AUTO_PROBE_EN", + "description": "FLEXSPI_AUTO_PROBE_EN", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 3, + "id": "field080-bits1-3", + "name": "FLEXSPI_PROBE_TYPE", + "description": "FLEXSPI_PROBE_TYPE", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MACRONIX_OCTAL_FLASH", + "value": 1, + "description": "Macronix Octal FLASH" + }, + { + "name": "MICRON_OCTAL_FLASH", + "value": 2, + "description": "Micron Octal FLASH" + }, + { + "name": "ADESTO_OCTAL_FLASH", + "value": 3, + "description": "Adesto Octal FLASH" + } + ] + }, + { + "width": 3, + "id": "field080-bits4-6", + "name": "FLEXSPI_FLASH_TYPE", + "description": "FLEXSPI_FLASH_TYPE", + "values": [ + { + "name": "QSPI_ADDR_3B", + "value": 0, + "description": "QSPI_ADDR_3B" + }, + { + "name": "HYPER_1V8", + "value": 2, + "description": "HYPER_1V8" + }, + { + "name": "HYPER_3V3", + "value": 3, + "description": "HYPER_3V3" + }, + { + "name": "FlexSPI_DDR_MXIC", + "value": 4, + "description": "FlexSPI_DDR_MXIC" + }, + { + "name": "FlexSPI_DDR_MICRON", + "value": 5, + "description": "FlexSPI_DDR_MICRON" + } + ] + }, + { + "width": 4, + "id": "field080-bits7-10", + "name": "FLEXSPI_DUMMY_CYCLES", + "description": "FLEXSPI_DUMMY_CYCLES" + }, + { + "width": 3, + "id": "field080-bits11-13", + "name": "FLEXSPI_FREQUENCY", + "description": "FLEXSPI_FREQUENCY", + "values": [ + { + "name": "MHZ_50", + "value": 0, + "description": "50 Mhz" + }, + { + "name": "MHZ_60", + "value": 1, + "description": "60 Mhz" + }, + { + "name": "MHZ_80", + "value": 2, + "description": "80 Mhz" + }, + { + "name": "MHZ_100", + "value": 3, + "description": "100 Mhz" + }, + { + "name": "MHZ_120", + "value": 4, + "description": "120 Mhz" + }, + { + "name": "MHZ_133", + "value": 5, + "description": "133 Mhz" + }, + { + "name": "MHZ_166", + "value": 6, + "description": "166 Mhz" + }, + { + "name": "MHZ_200", + "value": 7, + "description": "200 Mhz" + } + ] + }, + { + "width": 1, + "id": "field080-bit14", + "name": "FLEXSPI_RESET_ENABLE", + "description": "FLEXSPI_RESET_ENABLE", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "No Reset(O/QSPI device reset pin is not connected or available.)" + }, + { + "name": "ENABLE_RESET", + "value": 1, + "description": "Enable Reset(O/QSPI device reset pin is connected to a GPIO (QSPI_RESET_PIN).)" + } + ] + }, + { + "width": 3, + "id": "field080-bits15-17", + "name": "FLEXSPI_RESET_GPIO_PORT", + "description": "FLEXSPI_RESET_ENABLE" + }, + { + "width": 5, + "id": "field080-bits18-22", + "name": "FLEXSPI_RESET_GPIO_PIN", + "description": "FLEXSPI_RESET_GPIO_PIN" + }, + { + "width": 2, + "id": "field080-bits23-24", + "name": "FLEXSPI_HOLD_TIME", + "description": "FLEXSPI_HOLD TIME", + "values": [ + { + "name": "WAIT_500_MICROSECS", + "value": 0, + "description": "Wait for 500 micro seconds" + }, + { + "name": "WAIT_1_MILISECS", + "value": 1, + "description": "Wait for 1 mili seconds" + }, + { + "name": "WAIT_3_MILISECS", + "value": 2, + "description": "Wait for 3 mili seconds" + }, + { + "name": "WAIT_10_MILISECS", + "value": 3, + "description": "Wait for 10 mili seconds" + } + ] + }, + { + "width": 4, + "id": "field080-bits25-28", + "name": "FLEXSPI_PWR_HOLD_TIME", + "description": "FLEXSPI_PWR_HOLD_TIME", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No delay" + }, + { + "name": "WAIT_100_MICROSECS", + "value": 1, + "description": "Waits additional 100 micro-seconds." + }, + { + "name": "WAIT_500_MICROSECS", + "value": 2, + "description": "Waits additional 500 micro-seconds." + }, + { + "name": "WAIT_1_MILISECS", + "value": 3, + "description": "Waits additional 1 mili-seconds." + }, + { + "name": "WAIT_10_MILISECS", + "value": 4, + "description": "Waits additional 10 mili-seconds." + }, + { + "name": "WAIT_20_MILISECS", + "value": 5, + "description": "Waits additional 20 mili-seconds." + }, + { + "name": "WAIT_40_MILISECS", + "value": 6, + "description": "Waits additional 40 mili-seconds." + }, + { + "name": "WAIT_60_MILISECS", + "value": 7, + "description": "Waits additional 60 mili-seconds." + }, + { + "name": "WAIT_80_MILISECS", + "value": 8, + "description": "Waits additional 80 mili-seconds." + }, + { + "name": "WAIT_100_MILISECS", + "value": 9, + "description": "Waits additional 100 mili-seconds." + }, + { + "name": "WAIT_120_MILISECS", + "value": 10, + "description": "Waits additional 120 mili-seconds." + }, + { + "name": "WAIT_140_MILISECS", + "value": 11, + "description": "Waits additional 140 mili-seconds." + }, + { + "name": "WAIT_160_MILISECS", + "value": 12, + "description": "Waits additional 160 mili-seconds." + }, + { + "name": "WAIT_180_MILISECS", + "value": 13, + "description": "Waits additional 180 mili-seconds." + }, + { + "name": "WAIT_200_MILISECS", + "value": 14, + "description": "Waits additional 200 mili-seconds." + }, + { + "name": "WAIT_220_MILISECS", + "value": 15, + "description": "Waits additional 220 mili-seconds." + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field084", + "name": "FLEXSPI_BOOT_CFG1", + "description": "FlexSPI Boot Configuration 1", + "offset_int": "0x0084", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 7, + "id": "field084-bits0-6", + "name": "FLEXSPI_DELAY_CELL_NUM", + "description": "FLEXSPI_DELAY_CELL_NUM" + }, + { + "width": 10, + "id": "field084-bits7-16", + "name": "FLEXSPI_IMAGE_OFFSET", + "description": "FLEXSPI_IMAGE_OFFSET" + }, + { + "width": 4, + "id": "field084-bits17-20", + "name": "FLEXSPI_REMAP_IMAGE_SIZE", + "description": "FLEXSPI_REMAP_IMAGE_SIZE", + "values": [ + { + "name": "SIZE", + "value": 0, + "description": "SIZE" + }, + { + "name": "SIZE_1MB", + "value": 1, + "description": "SIZE_1MB Size of remapped area is 1MByte." + }, + { + "name": "SIZE_2MB", + "value": 2, + "description": "SIZE_2MB Size of remapped area is 2MByte." + }, + { + "name": "SIZE_3MB", + "value": 3, + "description": "SIZE_3MB Size of remapped area is 3MByte." + }, + { + "name": "SIZE_4MB", + "value": 4, + "description": "SIZE_4MB Size of remapped area is 4MByte." + }, + { + "name": "SIZE_5MB", + "value": 5, + "description": "SIZE_5MB Size of remapped area is 5MByte." + }, + { + "name": "SIZE_6MB", + "value": 6, + "description": "SIZE_6MB Size of remapped area is 6MByte." + }, + { + "name": "SIZE_7MB", + "value": 7, + "description": "SIZE_7MB Size of remapped area is 7MByte." + }, + { + "name": "SIZE_8MB", + "value": 8, + "description": "SIZE_8MB Size of remapped area is 8MByte." + }, + { + "name": "SIZE_9MB", + "value": 9, + "description": "SIZE_9MB Size of remapped area is 9MByte." + }, + { + "name": "SIZE_10MB", + "value": 10, + "description": "SIZE_10MB Size of remapped area is 10MByte." + }, + { + "name": "SIZE_11MB", + "value": 11, + "description": "SIZE_11MB Size of remapped area is 11MByte." + }, + { + "name": "SIZE_12MB", + "value": 12, + "description": "SIZE_12MB Size of remapped area is 12MByte." + }, + { + "name": "SIZE_256KB", + "value": 13, + "description": "SIZE_256KB Size of remapped area is 256KByte." + }, + { + "name": "SIZE_512KB", + "value": 14, + "description": "SIZE_512KB Size of remapped area is 512KByte." + }, + { + "name": "SIZE_768KB", + "value": 15, + "description": "SIZE_768KB Size of remapped area is 768KByte." + } + ] + }, + { + "width": 11 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00088-000AC", + "description": "Reserved 00088-000AC" + }, + "registers": [ + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field0B0", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port pins high", + "offset_int": "0x00B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port pins low", + "offset_int": "0x00B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port pins high", + "offset_int": "0x00B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port pins low", + "offset_int": "0x00BC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000C0-000FC", + "description": "Reserved 000C0-000FC" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E0", + "name": "CUSTOMER_DEFINED56", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "CUSTOMER_DEFINED57", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "CUSTOMER_DEFINED58", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "CUSTOMER_DEFINED59", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01EC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 001F0-001F8", + "description": "Reserved 001F0-001F8" + }, + "registers": [ + { + "id": "Reserved001F0", + "name": "Reserved 0x001F0", + "description": "This field is reserved for internal use", + "offset_int": "0x01F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001F4", + "name": "Reserved 0x001F4", + "description": "This field is reserved for internal use", + "offset_int": "0x01F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001F8", + "name": "Reserved 0x001F8", + "description": "This field is reserved for internal use", + "offset_int": "0x01F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "CRC32", + "description": "CRC32 fields" + }, + "registers": [ + { + "id": "field1FC", + "name": "CMPA_CRC32", + "description": "CMPA_CRC32[31:0]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cmpa_1a.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cmpa_1a.json new file mode 100644 index 0000000..9f287fc --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5534/pfr_cmpa_1a.json @@ -0,0 +1,2181 @@ +{ + "cpu": "lpc5534", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field000-bits0-2", + "name": "Default_Boot_Source", + "description": "Default Boot Source", + "values": [ + { + "name": "ISP_PIN", + "value": 0, + "description": "ISP pin source" + }, + { + "name": "FLEXSPI_FLASH", + "value": 1, + "description": "FlexSPI flash" + }, + { + "name": "SERIAL_ISP_BOOT", + "value": 2, + "description": "Serial ISP boot" + }, + { + "name": "INTERNAL_FLASH", + "value": 3, + "description": "Internal flash" + }, + { + "name": "AUTO_BOOT", + "value": 4, + "description": "Auto boot similar to ISP auto boot option" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "Default_ISP_mode", + "description": "Default ISP mode", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "USB_HID_MSC", + "value": 1, + "description": "USB HID MSC" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C slave ISP" + }, + { + "name": "CAN_ISP", + "value": 5, + "description": "CAN ISP" + }, + { + "name": "DISBL_ISP_FALLTHRU", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "Boot_Speed", + "description": "Boot Speed Core Clock", + "values": [ + { + "name": "SYS_SPD_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "MHZ48_FRO", + "value": 1, + "description": "48MHz FRO" + }, + { + "name": "MHZ96_FRO", + "value": 2, + "description": "96MHz FRO" + }, + { + "name": "MHZ150_FRO", + "value": 3, + "description": "150MHz PLL" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field000-bit21", + "name": "ASRT_FATAL", + "description": "Assert on fatal errors. When set ROM drives BOOT_FAIL_PIN high when fatal error condition occurs on three attempts to boot image before locking the part" + }, + { + "width": 1, + "id": "field000-bit22", + "name": "ASRT_RBF", + "description": "Assert on recovery boot. When this bit is set ROM drives the BOOT_FAIL_PIN high whenever no valid image is found in primary boot media and execution enters recovery boot mode from secondary boot media" + }, + { + "width": 1, + "id": "field000-bit23", + "name": "ASRT_ISPF", + "description": "Assert on ISP fall through. When this bit is set ROM drives BOOT_FAIL_PIN high whenever there is no valid image in boot media and execution falls through to ISP mode" + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "Boot_failure_pin", + "description": "GPIO port and pin number to use for indicating failure reason. The toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_CAN_CFG", + "description": "SPI CAN Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field004-bits0-1", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "REC_BOOT_EN SPI flash recovery boot is enabled, if non-zero value is written to this field" + }, + { + "width": 3, + "id": "field004-bits2-4", + "name": "SPI_REC_IF", + "description": "Recovery SPI interface", + "values": [ + { + "name": "HSPI", + "value": 0, + "description": "HSPI P1_3-MISO, P0_26-MOSI, P1_1-SSEL1, P1_2-SCK" + }, + { + "name": "FC0", + "value": 1, + "description": "FC0 P0_30-MISO, P0_24-MOSI, P0_31-SSEL0, P0_28-SCK" + }, + { + "name": "FC3", + "value": 2, + "description": "FC3 P0_2-MISO, P0_3-MOSI, P0_4-SSEL0, P0_6-SCK" + }, + { + "name": "FC1", + "value": 3, + "description": "FC1 P2_4-MISO, P2_3-MOSI, P2_5-SSEL0, P1_9-SCK" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "field004-bits16-19", + "name": "CAN_BAUD_RATE", + "description": "CAN baud rate. Baud rate configured during CAN ISP mode", + "values": [ + { + "name": "AUTO_BAUD_DETECT", + "value": 0, + "description": "Auto baud detection (125K, 250K, 500K, 1M)" + }, + { + "name": "KBPS_10", + "value": 1, + "description": "10 kbps" + }, + { + "name": "KBPS_20", + "value": 2, + "description": "20 kbps" + }, + { + "name": "KBPS_50", + "value": 3, + "description": "50 kbps" + }, + { + "name": "KBPS_125", + "value": 4, + "description": "125 kbps" + }, + { + "name": "KBPS_250", + "value": 5, + "description": "250 kbps" + }, + { + "name": "KBPS_500", + "value": 6, + "description": "500 kbps" + }, + { + "name": "KBPS_800", + "value": 7, + "description": "800 kbps" + }, + { + "name": "KBPS_1000", + "value": 8, + "description": "1,000 kbps" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field008", + "name": "USB_ID", + "description": "USB Identifiers", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "USB_Vendor_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "USB_Product_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMEOUT", + "description": "Boot Timeout", + "offset_int": "0x000C", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Power-down timeout: Timeout value in seconds. When a non-zero value is programmed in this field ROM uses it as idle timeout value to enter power-down state to conserve power" + }, + { + "width": 16, + "id": "field00C-bits16-31", + "name": "WDOG_TIMEOUT_SECS", + "description": "WDOG timeout: Timeout value in seconds. When a non-zero value is programmed in this field ROM configures the watch dog timer to reset the device on timeout before passing execution control to user code" + } + ] + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. Combinations of PIN and DFLT bits and resulting restriction level: - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through the debug authentication process by providing an appropriate Debug Credential (DC) certificate. - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. - PIN=1,DFLT=0: Restriction level 2. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0010", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP boot command enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. Combinations of PIN and DFLT bits and resulting restriction level: - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through the debug authentication process by providing an appropriate Debug Credential (DC) certificate. - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. - PIN=1,DFLT=0: Restriction level 2. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non Secure debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit8", + "name": "ME_CMD_EN", + "description": "Mass erase flash command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0001C", + "name": "Reserved 0x0001C", + "description": "This field is reserved for internal use", + "offset_int": "0x001C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00020", + "name": "Reserved 0x00020", + "description": "This field is reserved for internal use", + "offset_int": "0x0020", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00024", + "name": "Reserved 0x00024", + "description": "This field is reserved for internal use", + "offset_int": "0x0024", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00028", + "name": "Reserved 0x00028", + "description": "This field is reserved for internal use", + "offset_int": "0x0028", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field030", + "name": "XTAL_32KHZ_CAPABANK_TRIM", + "description": "Xtal 32kHz Capabank Trimming", + "offset_int": "0x0030", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field030-bit0", + "name": "TRIM_VALID", + "description": "Trim Valid", + "values": [ + { + "name": "NOT_VALID", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field030-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 10, + "id": "field030-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 10, + "id": "field030-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 1 + } + ] + }, + { + "id": "field034", + "name": "XTAL_16MHZ_CAPABANK_TRIM", + "description": "Xtal 16MHz Capabank Trimming", + "offset_int": "0x0034", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field034-bit0", + "name": "TRIM_VALID", + "description": "Trim Valid", + "values": [ + { + "name": "NOT_VALID", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field034-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 10, + "id": "field034-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 10, + "id": "field034-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 1 + } + ] + }, + { + "id": "field038", + "name": "FLASH_REMAP_SIZE", + "description": "Flash Remap Size", + "offset_int": "0x0038", + "default_value_int": "0" + }, + { + "id": "field03C", + "name": "FLASH_REMAP_OFFSET", + "description": "Flash Remap Offset", + "offset_int": "0x003C", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00040-0007C", + "description": "Reserved 00040-0007C" + }, + "registers": [ + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00060", + "name": "Reserved 0x00060", + "description": "This field is reserved for internal use", + "offset_int": "0x0060", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "FLEXSPI_BOOT_CFG", + "description": "FlexSPI boot cfg" + }, + "registers": [ + { + "id": "field080", + "name": "FLEXSPI_BOOT_CFG0", + "description": "FlexSPI Boot Configuration 0", + "offset_int": "0x0080", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field080-bit0", + "name": "FLEXSPI_AUTO_PROBE_EN", + "description": "Quad/Octal-SPI flash auto probe feature enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 3, + "id": "field080-bits1-3", + "name": "FLEXSPI_PROBE_TYPE", + "description": "Quad/Octal-SPI flash probe type", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MACRONIX_OCTAL_FLASH", + "value": 1, + "description": "Macronix Octal FLASH" + }, + { + "name": "MICRON_OCTAL_FLASH", + "value": 2, + "description": "Micron Octal FLASH" + }, + { + "name": "ADESTO_OCTAL_FLASH", + "value": 3, + "description": "Adesto Octal FLASH" + } + ] + }, + { + "width": 3, + "id": "field080-bits4-6", + "name": "FLEXSPI_FLASH_TYPE", + "description": "Define typical Serial NOR Flash types", + "values": [ + { + "name": "QSPI_ADDR_3B", + "value": 0, + "description": "QSPI ADDR 3B" + }, + { + "name": "HYPER_1V8", + "value": 2, + "description": "HYPER 1V8" + }, + { + "name": "HYPER_3V3", + "value": 3, + "description": "HYPER 3V3" + }, + { + "name": "FLEXSPI_DDR_MXIC", + "value": 4, + "description": "FlexSPI_DDR_MXIC" + }, + { + "name": "FLEXSPI_DDR_MICRON", + "value": 5, + "description": "FlexSPI_DDR_MICRON" + } + ] + }, + { + "width": 4, + "id": "field080-bits7-10", + "name": "FLEXSPI_DUMMY_CYCLES", + "description": "Quad/Octal-SPI dummy cycles for read command" + }, + { + "width": 3, + "id": "field080-bits11-13", + "name": "FLEXSPI_FREQUENCY", + "description": "Q/O-SPI flash interface frequency", + "values": [ + { + "name": "MHZ_50", + "value": 0, + "description": "50Mhz" + }, + { + "name": "MHZ_60", + "value": 1, + "description": "60Mhz" + }, + { + "name": "MHZ_80", + "value": 2, + "description": "80Mhz" + }, + { + "name": "MHZ_100", + "value": 3, + "description": "100Mhz" + }, + { + "name": "MHZ_120", + "value": 4, + "description": "120Mhz" + }, + { + "name": "MHZ_133", + "value": 5, + "description": "133Mhz" + }, + { + "name": "MHZ_166", + "value": 6, + "description": "166Mhz" + }, + { + "name": "MHZ_200", + "value": 7, + "description": "200Mhz" + } + ] + }, + { + "width": 1, + "id": "field080-bit14", + "name": "FLEXSPI_RESET_ENABLE", + "description": "Use QSPI_RESET_PIN to reset the flash device", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "NO_RESET(O/QSPI device reset pin is not connected or available.)" + }, + { + "name": "ENABLE_RESET", + "value": 1, + "description": "EN_RESET(O/QSPI device reset pin is connected to a GPIO (QSPI_RESET_PIN).)" + } + ] + }, + { + "width": 3, + "id": "field080-bits15-17", + "name": "FLEXSPI_RESET_GPIO_PORT", + "description": "GPIO port number to use for O/QSPI reset function" + }, + { + "width": 5, + "id": "field080-bits18-22", + "name": "FLEXSPI_RESET_GPIO_PIN", + "description": "GPIO pin number to use for O/QSPI reset function" + }, + { + "width": 2, + "id": "field080-bits23-24", + "name": "FLEXSPI_HOLD_TIME", + "description": "Wait time before access to Serial Flash", + "values": [ + { + "name": "WAIT_500_MICROSECS", + "value": 0, + "description": "Wait for 500 micro seconds" + }, + { + "name": "WAIT_1_MILISECS", + "value": 1, + "description": "Wait for 1 mili seconds" + }, + { + "name": "WAIT_3_MILISECS", + "value": 2, + "description": "Wait for 3 mili seconds" + }, + { + "name": "WAIT_10_MILISECS", + "value": 3, + "description": "Wait for 10 mili seconds" + } + ] + }, + { + "width": 4, + "id": "field080-bits25-28", + "name": "FLEXSPI_PWR_HOLD_TIME", + "description": "Delay after POR before accessing Quad/Octal-SPI flash devices in addition to delay defined by FLEXSPI_HOLD TIME field", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No delay" + }, + { + "name": "WAIT_100_MICROSECS", + "value": 1, + "description": "Waits additional 100 micro-seconds" + }, + { + "name": "WAIT_500_MICROSECS", + "value": 2, + "description": "Waits additional 500 micro-seconds" + }, + { + "name": "WAIT_1_MILISECS", + "value": 3, + "description": "Waits additional 1 mili-seconds" + }, + { + "name": "WAIT_10_MILISECS", + "value": 4, + "description": "Waits additional 10 mili-seconds" + }, + { + "name": "WAIT_20_MILISECS", + "value": 5, + "description": "Waits additional 20 mili-seconds" + }, + { + "name": "WAIT_40_MILISECS", + "value": 6, + "description": "Waits additional 40 mili-seconds" + }, + { + "name": "WAIT_60_MILISECS", + "value": 7, + "description": "Waits additional 60 mili-seconds" + }, + { + "name": "WAIT_80_MILISECS", + "value": 8, + "description": "Waits additional 80 mili-seconds" + }, + { + "name": "WAIT_100_MILISECS", + "value": 9, + "description": "Waits additional 100 mili-seconds" + }, + { + "name": "WAIT_120_MILISECS", + "value": 10, + "description": "Waits additional 120 mili-seconds" + }, + { + "name": "WAIT_140_MILISECS", + "value": 11, + "description": "Waits additional 140 mili-seconds" + }, + { + "name": "WAIT_160_MILISECS", + "value": 12, + "description": "Waits additional 160 mili-seconds" + }, + { + "name": "WAIT_180_MILISECS", + "value": 13, + "description": "Waits additional 180 mili-seconds" + }, + { + "name": "WAIT_200_MILISECS", + "value": 14, + "description": "Waits additional 200 mili-seconds" + }, + { + "name": "WAIT_220_MILISECS", + "value": 15, + "description": "Waits additional220 mili-seconds" + } + ] + }, + { + "width": 1, + "id": "field080-bit29", + "name": "PIN_SLEW_RATE", + "description": "Enable faster slew rate. When this bit is set ROM will configure FlexSPI pin with faster slew rate instead of standard slew rate", + "values": [ + { + "name": "STANDARD", + "value": 0, + "description": "Standard slew rate" + }, + { + "name": "FASTER", + "value": 1, + "description": "Faster slew rate" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field084", + "name": "FLEXSPI_BOOT_CFG1", + "description": "FlexSPI Boot Configuration 1", + "offset_int": "0x0084", + "default_value_int": "0", + "bitfields": [ + { + "width": 7, + "id": "field084-bits0-6", + "name": "FLEXSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for Flash read sampling via DQS (either internal loopback or external DQS)" + }, + { + "width": 10, + "id": "field084-bits7-16", + "name": "FLEXSPI_IMAGE_OFFSET", + "description": "Any offset in memory mapped Q/Octal-SPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. FlLEXSPI_IMAGE_OFFSET field specifies the offset location of second image. FLEXSPI_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped. If this field is left blank boot ROM assumes that application intends to not use redundant image boot feature. The physical flash offset is computed as below: physical offset = FLEXSPI_IMAGE_OFFSET" + }, + { + "width": 4, + "id": "field084-bits17-20", + "name": "FLEXSPI_REMAP_IMAGE_SIZE", + "description": "Any offset in memory mapped QSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. QSPI_IMAGE_OFFSET field specifies the offset location of second image. QSPI_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped. SIZE_OFFSET \"Size of the remapped area (aka second half) is same as first half. It is determined by FLEXSPI_IMAGE_OFFSET Field. Remap size = FLEXSPI_IMAGE_OFFSET", + "values": [ + { + "name": "SIZE", + "value": 0, + "description": "SIZE" + }, + { + "name": "SIZE_1MB", + "value": 1, + "description": "SIZE_1MB Size of remapped area is 1MByte" + }, + { + "name": "SIZE_2MB", + "value": 2, + "description": "SIZE_2MB Size of remapped area is 2MByte" + }, + { + "name": "SIZE_3MB", + "value": 3, + "description": "SIZE_3MB Size of remapped area is 3MByte" + }, + { + "name": "SIZE_4MB", + "value": 4, + "description": "SIZE_4MB Size of remapped area is 4MByte" + }, + { + "name": "SIZE_5MB", + "value": 5, + "description": "SIZE_5MB Size of remapped area is 5MByte" + }, + { + "name": "SIZE_6MB", + "value": 6, + "description": "SIZE_6MB Size of remapped area is 6MByte" + }, + { + "name": "SIZE_7MB", + "value": 7, + "description": "SIZE_7MB Size of remapped area is 7MByte" + }, + { + "name": "SIZE_8MB", + "value": 8, + "description": "SIZE_8MB Size of remapped area is 8MByte" + }, + { + "name": "SIZE_9MB", + "value": 9, + "description": "SIZE_9MB Size of remapped area is 9MByte" + }, + { + "name": "SIZE_10MB", + "value": 10, + "description": "SIZE_10MB Size of remapped area is 10MByte" + }, + { + "name": "SIZE_11MB", + "value": 11, + "description": "SIZE_11MB Size of remapped area is 11MByte" + }, + { + "name": "SIZE_12MB", + "value": 12, + "description": "SIZE_12MB Size of remapped area is 12MByte" + }, + { + "name": "SIZE_256KB", + "value": 13, + "description": "SIZE_256KB Size of remapped area is 256KByte" + }, + { + "name": "SIZE_512KB", + "value": 14, + "description": "SIZE_512KB Size of remapped area is 512KByte" + }, + { + "name": "SIZE_768KB", + "value": 15, + "description": "SIZE_768KB Size of remapped area is 768KByte" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00088-0008C", + "description": "Reserved 00088-000AC" + }, + "registers": [ + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field0B0", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port pins high", + "offset_int": "0x00B0", + "default_value_int": "0" + }, + { + "id": "field0B4", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port pins low", + "offset_int": "0x00B4", + "default_value_int": "0" + }, + { + "id": "field0B8", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port pins high", + "offset_int": "0x00B8", + "default_value_int": "0" + }, + { + "id": "field0BC", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port pins low", + "offset_int": "0x00BC", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000C0-000FC", + "description": "Reserved 000C0-000FC" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "Customer_Defined0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0" + }, + { + "id": "field104", + "name": "Customer_Defined1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0" + }, + { + "id": "field108", + "name": "Customer_Defined2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0" + }, + { + "id": "field10C", + "name": "Customer_Defined3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0" + }, + { + "id": "field110", + "name": "Customer_Defined4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0" + }, + { + "id": "field114", + "name": "Customer_Defined5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0" + }, + { + "id": "field118", + "name": "Customer_Defined6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0" + }, + { + "id": "field11C", + "name": "Customer_Defined7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0" + }, + { + "id": "field120", + "name": "Customer_Defined8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0" + }, + { + "id": "field124", + "name": "Customer_Defined9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0" + }, + { + "id": "field128", + "name": "Customer_Defined10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0" + }, + { + "id": "field12C", + "name": "Customer_Defined11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0" + }, + { + "id": "field130", + "name": "Customer_Defined12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0" + }, + { + "id": "field134", + "name": "Customer_Defined13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0" + }, + { + "id": "field138", + "name": "Customer_Defined14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0" + }, + { + "id": "field13C", + "name": "Customer_Defined15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0" + }, + { + "id": "field140", + "name": "Customer_Defined16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0" + }, + { + "id": "field144", + "name": "Customer_Defined17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0" + }, + { + "id": "field148", + "name": "Customer_Defined18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0" + }, + { + "id": "field14C", + "name": "Customer_Defined19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0" + }, + { + "id": "field150", + "name": "Customer_Defined20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0" + }, + { + "id": "field154", + "name": "Customer_Defined21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0" + }, + { + "id": "field158", + "name": "Customer_Defined22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0" + }, + { + "id": "field15C", + "name": "Customer_Defined23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0" + }, + { + "id": "field160", + "name": "Customer_Defined24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0" + }, + { + "id": "field164", + "name": "Customer_Defined25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0" + }, + { + "id": "field168", + "name": "Customer_Defined26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0" + }, + { + "id": "field16C", + "name": "Customer_Defined27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0" + }, + { + "id": "field170", + "name": "Customer_Defined28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0" + }, + { + "id": "field174", + "name": "Customer_Defined29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0" + }, + { + "id": "field178", + "name": "Customer_Defined30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0" + }, + { + "id": "field17C", + "name": "Customer_Defined31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0" + }, + { + "id": "field180", + "name": "Customer_Defined32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0" + }, + { + "id": "field184", + "name": "Customer_Defined33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0" + }, + { + "id": "field188", + "name": "Customer_Defined34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0" + }, + { + "id": "field18C", + "name": "Customer_Defined35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0" + }, + { + "id": "field190", + "name": "Customer_Defined36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0" + }, + { + "id": "field194", + "name": "Customer_Defined37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0" + }, + { + "id": "field198", + "name": "Customer_Defined38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0" + }, + { + "id": "field19C", + "name": "Customer_Defined39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0" + }, + { + "id": "field1A0", + "name": "Customer_Defined40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0" + }, + { + "id": "field1A4", + "name": "Customer_Defined41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0" + }, + { + "id": "field1A8", + "name": "Customer_Defined42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0" + }, + { + "id": "field1AC", + "name": "Customer_Defined43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0" + }, + { + "id": "field1B0", + "name": "Customer_Defined44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0" + }, + { + "id": "field1B4", + "name": "Customer_Defined45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0" + }, + { + "id": "field1B8", + "name": "Customer_Defined46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0" + }, + { + "id": "field1BC", + "name": "Customer_Defined47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0" + }, + { + "id": "field1C0", + "name": "Customer_Defined48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0" + }, + { + "id": "field1C4", + "name": "Customer_Defined49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0" + }, + { + "id": "field1C8", + "name": "Customer_Defined50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0" + }, + { + "id": "field1CC", + "name": "Customer_Defined51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0" + }, + { + "id": "field1D0", + "name": "Customer_Defined52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0" + }, + { + "id": "field1D4", + "name": "Customer_Defined53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0" + }, + { + "id": "field1D8", + "name": "Customer_Defined54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0" + }, + { + "id": "field1DC", + "name": "Customer_Defined55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0" + }, + { + "id": "field1E0", + "name": "Customer_Defined56", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E0", + "default_value_int": "0" + }, + { + "id": "field1E4", + "name": "Customer_Defined57", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E4", + "default_value_int": "0" + }, + { + "id": "field1E8", + "name": "Customer_Defined58", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E8", + "default_value_int": "0" + }, + { + "id": "field1EC", + "name": "Customer_Defined59", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01EC", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 001F0-001F8", + "description": "Reserved 001F0-001F8" + }, + "registers": [ + { + "id": "Reserved001F0", + "name": "Reserved 0x001F0", + "description": "This field is reserved for internal use", + "offset_int": "0x01F0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001F4", + "name": "Reserved 0x001F4", + "description": "This field is reserved for internal use", + "offset_int": "0x01F4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001F8", + "name": "Reserved 0x001F8", + "description": "This field is reserved for internal use", + "offset_int": "0x01F8", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CRC32", + "description": "CRC32 fields" + }, + "registers": [ + { + "id": "field1FC", + "name": "CMPA_CRC32", + "description": "CMPA_CRC32[31:0]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0" + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5536/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5536/database.yaml new file mode 100644 index 0000000..053d0b3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc5536/database.yaml @@ -0,0 +1,26 @@ +# Copyright 2023-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc5534 + +# General MCU information +info: + spsdk_predecessor_name: lpc553x + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x3DC00" + external: false + flexspi_ns: + start_int: "0x8000000" + size_int: "0x8000000" + external: true + sram: + start_int: "0x20000000" + size_int: "0x1C000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s04/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s04/database.yaml new file mode 100644 index 0000000..6993821 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s04/database.yaml @@ -0,0 +1,30 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc55s06 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x20000" + external: false + internal-flash_s: + start_int: "0x10000000" + size_int: "0x20000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0xC000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + usb-ram: + start_int: "0x20010000" + size_int: "0x4000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/database.yaml new file mode 100644 index 0000000..1c22f99 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/database.yaml @@ -0,0 +1,195 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a1: {} +latest: a1 + +# General MCU information +info: + purpose: LPC5500 Series + spsdk_predecessor_name: lpc55s0x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-cortex-m33/lpc550x-s0x-baseline-arm-cortex-m33-based-microcontroller-family:LPC550x + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x3D000" + external: false + internal-flash_s: + start_int: "0x10000000" + size_int: "0x3D000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x10000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + usb-ram: + start_int: "0x20010000" + size_int: "0x4000" + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_8000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert1] + rot_type: "cert_block_1" + + # ======== DAT section ======== + dat: + socc: 1 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_ram: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV1 + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinCertBlockV1 + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + crc: crc_ram + signed: signed_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0x3_DE00 + size: 512 + reg_spec: pfr_cfpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + computed_fields: + field01C: # VENDOR_USAGE + field01C-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field020: # DCFG_CC_SOCU_NS_PIN + field020-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field024: # DCFG_CC_SOCU_NS_DFLT + field024-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + cmpa: # CMPA description + address: 0x3_E400 + size: 512 + reg_spec: pfr_cmpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + grouped_registers: + - name: ROTKH + uid: cmpa_rotkh + width: 256 + config_as_hexstring: true + reversed: true + description: + ROTKH field is compounded by 8 32-bit fields and contains Root key + table hash + sub_regs: + - field050 + - field054 + - field058 + - field05C + - field060 + - field064 + - field068 + - field06C + + computed_fields: + field010: # DCFG_CC_SOCU_PIN + field010-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field014: # DCFG_CC_SOCU_DFLT + field014-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + + rules: + - ../../common/pfrc_rules.yaml + - pfrc_rules.yaml + + # ======== Secure binary v2.1 section ======== + sb21: + supported_commands: [erase, load, enable, fill, jump, version_check] + keyblobs: false + + # ======== TrustZone section ======== + tz: + reg_spec: tz.json + + # ======== Memory configuration ======== + memcfg: + peripherals: + spi_nor: + instances: [3] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + recovery_spi: + segments: + sb21: 0x00 + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfr_cfpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfr_cfpa.json new file mode 100644 index 0000000..e70eab3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfr_cfpa.json @@ -0,0 +1,1666 @@ +{ + "cpu": "lpc55s06", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "Header", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field004", + "name": "VERSION", + "description": "Version", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "S_FW_Version", + "description": "Secure firmware version (Monotonic counter)", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure firmware version (Monotonic counter)", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "IMAGE_KEY_REVOKE", + "description": "Image key revocation ID (Monotonic counter)", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "ROTKH_REVOKE", + "description": "Root of Trust Key Hash Revoke", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field018-bits0-1", + "name": "RoTK0_EN", + "description": "RoT Key 0 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits2-3", + "name": "RoTK1_EN", + "description": "RoT Key 1 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits4-5", + "name": "RoTK2_EN", + "description": "RoT Key 2 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits6-7", + "name": "RoTK3_EN", + "description": "RoT Key 3 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 24 + } + ] + }, + { + "id": "field01C", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field01C-bits0-15", + "name": "DBG_VENDOR_USAGE", + "description": "Debug Vendor Usage" + }, + { + "width": 16, + "id": "field01C-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field020", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field020-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field020-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field020-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field020-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field024", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field028", + "name": "ENABLE_FA_MODE", + "description": "Enable FA mode. SET_FA_MODE Command should write 0xC33CA55A to this word to indicate boot ROM to enter FA mode.", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "CMPA_PROG_IN_PROGRESS", + "description": "CMPA Page programming on going. This field shall be set to 0x5CC55AA5 in the active CFPA page each time CMPA page programming is going on. It shall always be set to 0x00000000 in the CFPA scratch area.", + "offset_int": "0x002C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 0", + "description": "PRINCE region 0" + }, + "registers": [ + { + "id": "field030", + "name": "PRINCE_REGION0_IV_CODE0", + "description": "Field.", + "offset_int": "0x0030", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field034", + "name": "PRINCE_REGION0_IV_CODE1", + "description": "Field.", + "offset_int": "0x0034", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field034-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field034-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field034-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field038", + "name": "PRINCE_REGION0_IV_BODY0", + "description": "Field.", + "offset_int": "0x0038", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "PRINCE_REGION0_IV_BODY1", + "description": "Field.", + "offset_int": "0x003C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field040", + "name": "PRINCE_REGION0_IV_BODY2", + "description": "Field.", + "offset_int": "0x0040", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field044", + "name": "PRINCE_REGION0_IV_BODY3", + "description": "Field.", + "offset_int": "0x0044", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field048", + "name": "PRINCE_REGION0_IV_BODY4", + "description": "Field.", + "offset_int": "0x0048", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field04C", + "name": "PRINCE_REGION0_IV_BODY5", + "description": "Field.", + "offset_int": "0x004C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field050", + "name": "PRINCE_REGION0_IV_BODY6", + "description": "Field.", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "PRINCE_REGION0_IV_BODY7", + "description": "Field.", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "PRINCE_REGION0_IV_BODY8", + "description": "Field.", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "PRINCE_REGION0_IV_BODY9", + "description": "Field.", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field060", + "name": "PRINCE_REGION0_IV_BODY10", + "description": "Field.", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "PRINCE_REGION0_IV_BODY11", + "description": "Field.", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 1", + "description": "PRINCE region 1" + }, + "registers": [ + { + "id": "field068", + "name": "PRINCE_REGION1_IV_CODE0", + "description": "Field.", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "PRINCE_REGION1_IV_CODE1", + "description": "Field.", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field06C-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field06C-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field06C-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field070", + "name": "PRINCE_REGION1_IV_BODY0", + "description": "Field.", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "PRINCE_REGION1_IV_BODY1", + "description": "Field.", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "PRINCE_REGION1_IV_BODY2", + "description": "Field.", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "PRINCE_REGION1_IV_BODY3", + "description": "Field.", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field080", + "name": "PRINCE_REGION1_IV_BODY4", + "description": "Field.", + "offset_int": "0x0080", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "PRINCE_REGION1_IV_BODY5", + "description": "Field.", + "offset_int": "0x0084", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "PRINCE_REGION1_IV_BODY6", + "description": "Field.", + "offset_int": "0x0088", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "PRINCE_REGION1_IV_BODY7", + "description": "Field.", + "offset_int": "0x008C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field090", + "name": "PRINCE_REGION1_IV_BODY8", + "description": "Field.", + "offset_int": "0x0090", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field094", + "name": "PRINCE_REGION1_IV_BODY9", + "description": "Field.", + "offset_int": "0x0094", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field098", + "name": "PRINCE_REGION1_IV_BODY10", + "description": "Field.", + "offset_int": "0x0098", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field09C", + "name": "PRINCE_REGION1_IV_BODY11", + "description": "Field.", + "offset_int": "0x009C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 2", + "description": "PRINCE region 2" + }, + "registers": [ + { + "id": "field0A0", + "name": "PRINCE_REGION2_IV_CODE0", + "description": "Field.", + "offset_int": "0x00A0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A4", + "name": "PRINCE_REGION2_IV_CODE1", + "description": "Field.", + "offset_int": "0x00A4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0A4-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field0A4-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field0A4-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field0A8", + "name": "PRINCE_REGION2_IV_BODY0", + "description": "Field.", + "offset_int": "0x00A8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0AC", + "name": "PRINCE_REGION2_IV_BODY1", + "description": "Field.", + "offset_int": "0x00AC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B0", + "name": "PRINCE_REGION2_IV_BODY2", + "description": "Field.", + "offset_int": "0x00B0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "PRINCE_REGION2_IV_BODY3", + "description": "Field.", + "offset_int": "0x00B4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "PRINCE_REGION2_IV_BODY4", + "description": "Field.", + "offset_int": "0x00B8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "PRINCE_REGION2_IV_BODY5", + "description": "Field.", + "offset_int": "0x00BC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C0", + "name": "PRINCE_REGION2_IV_BODY6", + "description": "Field.", + "offset_int": "0x00C0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C4", + "name": "PRINCE_REGION2_IV_BODY7", + "description": "Field.", + "offset_int": "0x00C4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C8", + "name": "PRINCE_REGION2_IV_BODY8", + "description": "Field.", + "offset_int": "0x00C8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0CC", + "name": "PRINCE_REGION2_IV_BODY9", + "description": "Field.", + "offset_int": "0x00CC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D0", + "name": "PRINCE_REGION2_IV_BODY10", + "description": "Field.", + "offset_int": "0x00D0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D4", + "name": "PRINCE_REGION2_IV_BODY11", + "description": "Field.", + "offset_int": "0x00D4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000D8-000FC", + "description": "Reserved 000D8-000FC" + }, + "registers": [ + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfr_cmpa.json new file mode 100644 index 0000000..dc0c4e6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfr_cmpa.json @@ -0,0 +1,2141 @@ +{ + "cpu": "lpc55s06", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode:", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "DISABLE", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Core clock:", + "values": [ + { + "name": "SYSTEM_SPEED_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "FRO_48MHZ", + "value": 2, + "description": "48MHz FRO" + } + ] + }, + { + "width": 15 + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "GPIO port and pin number to use for indicating failure reason. The toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_FLASH_CFG", + "description": "SPI Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI flash recovery boot is enabled, if non-zero value is written to this field." + }, + { + "width": 27 + } + ] + }, + { + "id": "Reserved00008", + "name": "Reserved 0x00008", + "description": "This field is reserved for internal use", + "offset_int": "0x0008", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "SDIO_CFG", + "description": "SDIO Configuration", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field010-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field018", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field018-bits16-31", + "name": "VENDOR_USAGE", + "description": "Upper 16 bits of vendor usage field defined in DAP. Lower 16-bits come from customer field area." + } + ] + }, + { + "id": "field01C", + "name": "SECURE_BOOT_CFG", + "description": "Secure boot configuration", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field01C-bits0-1", + "name": "RSA4K", + "description": "Select minimal key length. To enforce usage of RSA4096, setting 0b11 value is recommended to allow RSA4096 keys only.", + "values": [ + { + "name": "RSA2048", + "value": 0, + "description": "RSA2048 or higher can be used for image signing. Only RSA2048 can be used as debug keys." + }, + { + "name": "RSA4096_0", + "value": 1, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + }, + { + "name": "RSA4096_1", + "value": 2, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + }, + { + "name": "RSA4096_2", + "value": 3, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + } + ] + }, + { + "width": 2, + "id": "field01C-bits2-3", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits4-5", + "name": "DICE_CUST_CFG", + "description": "Include Customer factory area (including keys) in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits6-7", + "name": "SKIP_DICE", + "description": "Skip DICE computation", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable DICE" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable DICE" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable DICE" + } + ] + }, + { + "width": 2, + "id": "field01C-bits8-9", + "name": "TZM_IMAGE_TYPE", + "description": "TrustZone-M mode", + "values": [ + { + "name": "HEADER", + "value": 0, + "description": "TZ-M image mode is taken from application image header" + }, + { + "name": "DISABLED", + "value": 1, + "description": "TZ-M disabled image, boots to non-secure mode" + }, + { + "name": "ENABLED", + "value": 2, + "description": "TZ-M enabled image, boots to secure mode" + }, + { + "name": "PRESET", + "value": 3, + "description": "TZ-M enabled image with TZ-M preset, boot to secure mode TZ-M pre-configured by data from application image header" + } + ] + }, + { + "width": 2, + "id": "field01C-bits10-11", + "name": "BLOCK_SET_KEY", + "description": "Block PUF key code generation", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow PUF Key Code generation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable PUF Key Code generation" + } + ] + }, + { + "width": 2, + "id": "field01C-bits12-13", + "name": "BLOCK_ENROLL", + "description": "Block PUF enrollment", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow PUF enroll operation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable PUF enroll operation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable PUF enroll operation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable PUF enroll operation" + } + ] + }, + { + "width": 2, + "id": "field01C-bits14-15", + "name": "DICE_INC_SEC_EPOCH", + "description": "Include security EPOCH in DICE", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits16-17", + "name": "SKIP_BOOT_SEED", + "description": "Skip boot seed computation", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable BOOT_SEED" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable BOOT_SEED" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable BOOT_SEED" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable BOOT_SEED" + } + ] + }, + { + "width": 2, + "id": "field01C-bits18-19", + "name": "BOOT_SEED_INC_NXP_CFG", + "description": "Include NXP area in BOOT SEED computation", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits20-21", + "name": "BOOT_SEED_CUST_CFG", + "description": "Include CMPA area in BOOT SEED computation", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits22-23", + "name": "BOOT_SEED_INC_EPOCH", + "description": "Include security epoch area in BOOT_SEED computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 6 + }, + { + "width": 2, + "id": "field01C-bits30-31", + "name": "SEC_BOOT_EN", + "description": "Secure boot enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Plain image (internal flash with or without CRC)" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Boot signed images. (internal flash, RSA signed)" + } + ] + } + ] + }, + { + "id": "field020", + "name": "PRINCE_BASE_ADDR", + "description": "Prince Base Address", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4, + "id": "field020-bits0-3", + "name": "ADDR0_PRG", + "description": "Programmable portion of the base address of region 0" + }, + { + "width": 4, + "id": "field020-bits4-7", + "name": "ADDR1_PRG", + "description": "Programmable portion of the base address of region 1" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "ADDR2_PRG", + "description": "Programmable portion of the base address of region 2" + }, + { + "width": 6 + }, + { + "width": 2, + "id": "field020-bits18-19", + "name": "LOCK_REG0", + "description": "Lock PRINCE region0 settings", + "values": [ + { + "name": "UNLOCK", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCK_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCK_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCK_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field020-bits20-21", + "name": "LOCK_REG1", + "description": "Lock PRINCE region1 settings", + "values": [ + { + "name": "UNLOCK", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCK_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCK_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCK_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field020-bits24-25", + "name": "REG0_ERASE_CHECK_EN", + "description": "For PRINCE region0 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits26-27", + "name": "REG1_ERASE_CHECK_EN", + "description": "For PRINCE region1 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "REG2_ERASE_CHECK_EN", + "description": "For PRINCE region2 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "field024", + "name": "PRINCE_SR_0", + "description": "Region 0, sub-region enable", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field028", + "name": "PRINCE_SR_1", + "description": "Region 1, sub-region enable", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "PRINCE_SR_2", + "description": "Region 2, sub-region enable", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "XTAL_32KHZ_CAPABANK_TRIM", + "description": "Xtal 32kHz capabank trimming.", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field030-bit0", + "name": "TRIM_VALID", + "description": "XTAL 32kHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field030-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + }, + { + "id": "field034", + "name": "XTAL_16MHZ_CAPABANK_TRIM", + "description": "Xtal 16MHz capabank trimming.", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field034-bit0", + "name": "TRIM_VALID", + "description": "XTAL 16MHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field034-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + }, + { + "id": "field038", + "name": "FLASH_REMAP_SIZE", + "description": "This 32-bit register contains the size of the image to remap, in bytes. The 12 LSBs are ignored, so the size granularity is 4KB.", + "offset_int": "0x0038", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "FLASH_REMAP_OFFSET", + "description": "This 32-bit register contains the offset by which the image is to be remapped. The 12 LSBs are ignored, so the remap granularity is 4KB.", + "offset_int": "0x003C", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00040-0004C", + "description": "Reserved 00040-0004C" + }, + "registers": [ + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field050", + "name": "ROTKH0", + "description": "ROTKH0 for Root of Trust Keys Table hash[255:224]", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "ROTKH1", + "description": "ROTKH1 for Root of Trust Keys Table hash[223:192]", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "ROTKH2", + "description": "ROTKH2 for Root of Trust Keys Table hash[191:160]", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "ROTKH3", + "description": "ROTKH3 for Root of Trust Keys Table hash[159:128]", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field060", + "name": "ROTKH4", + "description": "ROTKH4 for Root of Trust Keys Table hash[127:96]", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "ROTKH5", + "description": "ROTKH5 for Root of Trust Keys Table hash[95:64]", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "ROTKH6", + "description": "ROTKH6 for Root of Trust Keys Table hash[63:32]", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "ROTKH7", + "description": "ROTKH7 for Root of Trust Keys Table hash[31:0]", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00070-000FC", + "description": "Reserved 00070-000FC" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfrc_rules.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfrc_rules.yaml new file mode 100644 index 0000000..60198c1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/pfrc_rules.yaml @@ -0,0 +1,19 @@ +# Copyright 2022-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +rules: + - req_id: "lpc55xx_4.1" + desc: + By default (blank device), the RoTKx_EN values are set to 0b00 which means + invalid. When secure boot is enabled (SEC_BOOT_EN != 0) there must be at + least one RoTKx_EN which is set to 0b01 (enabled) to allow device to boot + successfully. + msg: Secure boot is enabled. Make sure at least one Root of Trust Key Enable bit is set. + cond: CMPA.SECURE_BOOT_CFG.SEC_BOOT_EN != 0 and not (CFPA.ROTKH_REVOKE.RoTK3_EN == 1 or CFPA.ROTKH_REVOKE.RoTK2_EN == 1 or CFPA.ROTKH_REVOKE.RoTK1_EN == 1 or CFPA.ROTKH_REVOKE.RoTK0_EN == 1) + + - req_id: "lpc55xx_5.1" + desc: Inverse value (upper 16 bits) of VENDOR_USAGE must be always + valid. + msg: Inverse values are generated automatically based on configuration. + cond: CFPA.VENDOR_USAGE != 0 and (~(CFPA.VENDOR_USAGE>>int(16)) & 0xFFFF) != (CFPA.VENDOR_USAGE & 0xFFFF) diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/tz.json new file mode 100644 index 0000000..177e645 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s06/tz.json @@ -0,0 +1,837 @@ +{ + "cpu": "lpc55s06", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "MPU Control Register (cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "SAU Control Register (cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register (cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "description": "TrustZone register - FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "FLASH Memory Rule Register 0 (flash_mem_rule0)", + "description": "TrustZone register - FLASH Memory Rule Register 0 (flash_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "FLASH Memory Rule Register 1 (flash_mem_rule1)", + "description": "TrustZone register - FLASH Memory Rule Register 1 (flash_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "FLASH Memory Rule Register 2 (flash_mem_rule2)", + "description": "TrustZone register - FLASH Memory Rule Register 2 (flash_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "RAMX Slave Rule Register (ramx_slave_rule)", + "description": "TrustZone register - RAMX Slave Rule Register (ramx_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "RAMX Memory Rule Register 0 (ramx_mem_rule)", + "description": "TrustZone register - RAMX Memory Rule Register 0 (ramx_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "RAM0 Memory Rule Register 0 (ram0_mem_rule)", + "description": "TrustZone register - RAM0 Memory Rule Register 0 (ram0_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "RAM1 Memory Rule Register 0 (ram1_mem_rule)", + "description": "TrustZone register - RAM1 Memory Rule Register 0 (ram1_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "RAM2 Memory Rule Register 0 (ram2_mem_rule)", + "description": "TrustZone register - RAM2 Memory Rule Register 0 (ram2_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "RAM3 Slave Rule Register (ram3_slave_rule)", + "description": "TrustZone register - RAM3 Slave Rule Register (ram3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "RAM3 Memory Rule Register 0 (ram3_mem_rule)", + "description": "TrustZone register - RAM3 Memory Rule Register 0 (ram3_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "description": "TrustZone register - APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 1 (ahb_periph0_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 1 (ahb_periph0_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register 0 (ahb_periph1_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register 0 (ahb_periph1_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register 1 (ahb_periph1_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register 1 (ahb_periph1_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 1 (ahb_periph2_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 1 (ahb_periph2_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "AHB Peripherals 2 Memory Rule Register 0 (ahb_periph2_mem_rule)", + "description": "TrustZone register - AHB Peripherals 2 Memory Rule Register 0 (ahb_periph2_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "Secure GPIO Register 1 (sec_gp_reg1)", + "description": "TrustZone register - Secure GPIO Register 1 (sec_gp_reg1)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "Secure GPIO Register 2 (sec_gp_reg2)", + "description": "TrustZone register - Secure GPIO Register 2 (sec_gp_reg2)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "CM33 Lock Control Register (cm33_lock_reg)", + "description": "TrustZone register - CM33 Lock Control Register (cm33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "Miscellaneous TZM settings (misc_tzm_settings)", + "description": "TrustZone register - Miscellaneous TZM settings (misc_tzm_settings)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s14/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s14/database.yaml new file mode 100644 index 0000000..7b64dfe --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s14/database.yaml @@ -0,0 +1,31 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc55s16 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x20000" + external: false + internal-flash_s: + start_int: "0x10000000" + size_int: "0x20000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0xC000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + usb-ram: + start_int: "0x20010000" + size_int: "0x4000" + external: false + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/database.yaml new file mode 100644 index 0000000..86a4543 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/database.yaml @@ -0,0 +1,195 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a1: {} +latest: a1 + +# General MCU information +info: + purpose: LPC5500 Series + spsdk_predecessor_name: lpc55s1x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-cortex-m33/lpc551x-s1x-baseline-arm-cortex-m33-based-microcontroller-family:LPC551X-S1X + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x3D000" + external: false + internal-flash_s: + start_int: "0x10000000" + size_int: "0x3D000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x10000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + usb-ram: + start_int: "0x20010000" + size_int: "0x4000" + external: false + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0022 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_8000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert1] + rot_type: "cert_block_1" + + # ======== DAT section ======== + dat: + socc: 1 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_ram: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV1 + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinCertBlockV1 + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + crc: crc_ram + signed: signed_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0x3_DE00 + size: 512 + reg_spec: pfr_cfpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + computed_fields: + field01C: # VENDOR_USAGE + field01C-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field020: # DCFG_CC_SOCU_NS_PIN + field020-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field024: # DCFG_CC_SOCU_NS_DFLT + field024-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + cmpa: # CMPA description + address: 0x3_E400 + size: 512 + reg_spec: pfr_cmpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + grouped_registers: + - uid: cmpa_rotkh + name: ROTKH + width: 256 + config_as_hexstring: true + reversed: true + description: + ROTKH field is compounded by 8 32-bit fields and contains Root key + table hash + sub_regs: + - field050 + - field054 + - field058 + - field05C + - field060 + - field064 + - field068 + - field06C + computed_fields: + field010: # DCFG_CC_SOCU_PIN + field010-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field014: # DCFG_CC_SOCU_DFLT + field014-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + rules: + - ../../common/pfrc_rules.yaml + - pfrc_rules.yaml + + # ======== Secure binary v2.1 section ======== + sb21: + supported_commands: [erase, load, enable, fill, jump, version_check] + keyblobs: false + + # ======== TrustZone section ======== + tz: + reg_spec: tz.json + + # ======== Memory configuration ======== + memcfg: + peripherals: + spi_nor: + instances: [3] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + recovery_spi: + segments: + sb21: 0x00 + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfr_cfpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfr_cfpa.json new file mode 100644 index 0000000..529270c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfr_cfpa.json @@ -0,0 +1,1666 @@ +{ + "cpu": "lpc55s16", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "Header", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field004", + "name": "VERSION", + "description": "Version", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "S_FW_Version", + "description": "Secure firmware version (Monotonic counter)", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure firmware version (Monotonic counter)", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "IMAGE_KEY_REVOKE", + "description": "Image key revocation ID (Monotonic counter)", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "ROTKH_REVOKE", + "description": "Root of Trust Key Hash Revoke", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field018-bits0-1", + "name": "RoTK0_EN", + "description": "RoT Key 0 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits2-3", + "name": "RoTK1_EN", + "description": "RoT Key 1 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits4-5", + "name": "RoTK2_EN", + "description": "RoT Key 2 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits6-7", + "name": "RoTK3_EN", + "description": "RoT Key 3 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 24 + } + ] + }, + { + "id": "field01C", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field01C-bits0-15", + "name": "DBG_VENDOR_USAGE", + "description": "Debug Vendor Usage" + }, + { + "width": 16, + "id": "field01C-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field020", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field020-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field020-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field020-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field020-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field024", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field028", + "name": "ENABLE_FA_MODE", + "description": "Enable FA mode. SET_FA_MODE Command should write 0xC33CA55A to this word to indicate boot ROM to enter FA mode.", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "CMPA_PROG_IN_PROGRESS", + "description": "CMPA Page programming on going. This field shall be set to 0x5CC55AA5 in the active CFPA page each time CMPA page programming is going on. It shall always be set to 0x00000000 in the CFPA scratch area.", + "offset_int": "0x002C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 0", + "description": "PRINCE region 0" + }, + "registers": [ + { + "id": "field030", + "name": "PRINCE_REGION0_IV_CODE0", + "description": "Field.", + "offset_int": "0x0030", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field034", + "name": "PRINCE_REGION0_IV_CODE1", + "description": "Field.", + "offset_int": "0x0034", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field034-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field034-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field034-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field038", + "name": "PRINCE_REGION0_IV_BODY0", + "description": "Field.", + "offset_int": "0x0038", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "PRINCE_REGION0_IV_BODY1", + "description": "Field.", + "offset_int": "0x003C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field040", + "name": "PRINCE_REGION0_IV_BODY2", + "description": "Field.", + "offset_int": "0x0040", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field044", + "name": "PRINCE_REGION0_IV_BODY3", + "description": "Field.", + "offset_int": "0x0044", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field048", + "name": "PRINCE_REGION0_IV_BODY4", + "description": "Field.", + "offset_int": "0x0048", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field04C", + "name": "PRINCE_REGION0_IV_BODY5", + "description": "Field.", + "offset_int": "0x004C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field050", + "name": "PRINCE_REGION0_IV_BODY6", + "description": "Field.", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "PRINCE_REGION0_IV_BODY7", + "description": "Field.", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "PRINCE_REGION0_IV_BODY8", + "description": "Field.", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "PRINCE_REGION0_IV_BODY9", + "description": "Field.", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field060", + "name": "PRINCE_REGION0_IV_BODY10", + "description": "Field.", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "PRINCE_REGION0_IV_BODY11", + "description": "Field.", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 1", + "description": "PRINCE region 1" + }, + "registers": [ + { + "id": "field068", + "name": "PRINCE_REGION1_IV_CODE0", + "description": "Field.", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "PRINCE_REGION1_IV_CODE1", + "description": "Field.", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field06C-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field06C-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field06C-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field070", + "name": "PRINCE_REGION1_IV_BODY0", + "description": "Field.", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "PRINCE_REGION1_IV_BODY1", + "description": "Field.", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "PRINCE_REGION1_IV_BODY2", + "description": "Field.", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "PRINCE_REGION1_IV_BODY3", + "description": "Field.", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field080", + "name": "PRINCE_REGION1_IV_BODY4", + "description": "Field.", + "offset_int": "0x0080", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "PRINCE_REGION1_IV_BODY5", + "description": "Field.", + "offset_int": "0x0084", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "PRINCE_REGION1_IV_BODY6", + "description": "Field.", + "offset_int": "0x0088", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "PRINCE_REGION1_IV_BODY7", + "description": "Field.", + "offset_int": "0x008C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field090", + "name": "PRINCE_REGION1_IV_BODY8", + "description": "Field.", + "offset_int": "0x0090", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field094", + "name": "PRINCE_REGION1_IV_BODY9", + "description": "Field.", + "offset_int": "0x0094", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field098", + "name": "PRINCE_REGION1_IV_BODY10", + "description": "Field.", + "offset_int": "0x0098", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field09C", + "name": "PRINCE_REGION1_IV_BODY11", + "description": "Field.", + "offset_int": "0x009C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 2", + "description": "PRINCE region 2" + }, + "registers": [ + { + "id": "field0A0", + "name": "PRINCE_REGION2_IV_CODE0", + "description": "Field.", + "offset_int": "0x00A0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A4", + "name": "PRINCE_REGION2_IV_CODE1", + "description": "Field.", + "offset_int": "0x00A4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0A4-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field0A4-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field0A4-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field0A8", + "name": "PRINCE_REGION2_IV_BODY0", + "description": "Field.", + "offset_int": "0x00A8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0AC", + "name": "PRINCE_REGION2_IV_BODY1", + "description": "Field.", + "offset_int": "0x00AC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B0", + "name": "PRINCE_REGION2_IV_BODY2", + "description": "Field.", + "offset_int": "0x00B0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "PRINCE_REGION2_IV_BODY3", + "description": "Field.", + "offset_int": "0x00B4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "PRINCE_REGION2_IV_BODY4", + "description": "Field.", + "offset_int": "0x00B8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "PRINCE_REGION2_IV_BODY5", + "description": "Field.", + "offset_int": "0x00BC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C0", + "name": "PRINCE_REGION2_IV_BODY6", + "description": "Field.", + "offset_int": "0x00C0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C4", + "name": "PRINCE_REGION2_IV_BODY7", + "description": "Field.", + "offset_int": "0x00C4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C8", + "name": "PRINCE_REGION2_IV_BODY8", + "description": "Field.", + "offset_int": "0x00C8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0CC", + "name": "PRINCE_REGION2_IV_BODY9", + "description": "Field.", + "offset_int": "0x00CC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D0", + "name": "PRINCE_REGION2_IV_BODY10", + "description": "Field.", + "offset_int": "0x00D0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D4", + "name": "PRINCE_REGION2_IV_BODY11", + "description": "Field.", + "offset_int": "0x00D4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000D8-000FC", + "description": "Reserved 000D8-000FC" + }, + "registers": [ + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfr_cmpa.json new file mode 100644 index 0000000..2dcccc6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfr_cmpa.json @@ -0,0 +1,2187 @@ +{ + "cpu": "lpc55s16", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode:", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "USB_HID_ISP", + "value": 1, + "description": "USB_HID_ISP" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "DISABLE", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Core clock:", + "values": [ + { + "name": "SYSTEM_SPEED_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "FRO_48MHZ", + "value": 2, + "description": "48MHz FRO" + } + ] + }, + { + "width": 2, + "id": "field000-bits9-10", + "name": "USB_SPEED", + "description": "Defines which USB module is used for ISP:", + "values": [ + { + "name": "USB_SPEED_0", + "value": 0, + "description": "Defined by NMPA.USBCFG.USB_SPEED" + }, + { + "name": "USB_FS", + "value": 1, + "description": "USB FS module used for ISP" + }, + { + "name": "USB_HS", + "value": 2, + "description": "USB HS module used for ISP" + }, + { + "name": "USB_SPEED_1", + "value": 3, + "description": "Defined by NMPA.USBCFG.USB_SPEED" + } + ] + }, + { + "width": 13 + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "GPIO port and pin number to use for indicating failure reason. The toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_FLASH_CFG", + "description": "SPI Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI flash recovery boot is enabled, if non-zero value is written to this field." + }, + { + "width": 27 + } + ] + }, + { + "id": "field008", + "name": "USB_ID", + "description": "USB Identifiers", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "USB_VENDOR_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "USB_PRODUCT_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field00C", + "name": "SDIO_CFG", + "description": "SDIO Configuration", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field010-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field018", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field018-bits16-31", + "name": "VENDOR_USAGE", + "description": "Upper 16 bits of vendor usage field defined in DAP. Lower 16-bits come from customer field area." + } + ] + }, + { + "id": "field01C", + "name": "SECURE_BOOT_CFG", + "description": "Secure boot configuration", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field01C-bits0-1", + "name": "RSA4K", + "description": "Select minimal key length. To enforce usage of RSA4096, setting 0b11 value is recommended to allow RSA4096 keys only.", + "values": [ + { + "name": "RSA2048", + "value": 0, + "description": "RSA2048 or higher can be used for image signing. Only RSA2048 can be used as debug keys." + }, + { + "name": "RSA4096_0", + "value": 1, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + }, + { + "name": "RSA4096_1", + "value": 2, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + }, + { + "name": "RSA4096_2", + "value": 3, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + } + ] + }, + { + "width": 2, + "id": "field01C-bits2-3", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits4-5", + "name": "DICE_CUST_CFG", + "description": "Include Customer factory area (including keys) in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits6-7", + "name": "SKIP_DICE", + "description": "Skip DICE computation", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable DICE" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable DICE" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable DICE" + } + ] + }, + { + "width": 2, + "id": "field01C-bits8-9", + "name": "TZM_IMAGE_TYPE", + "description": "TrustZone-M mode", + "values": [ + { + "name": "HEADER", + "value": 0, + "description": "TZ-M image mode is taken from application image header" + }, + { + "name": "DISABLED", + "value": 1, + "description": "TZ-M disabled image, boots to non-secure mode" + }, + { + "name": "ENABLED", + "value": 2, + "description": "TZ-M enabled image, boots to secure mode" + }, + { + "name": "PRESET", + "value": 3, + "description": "TZ-M enabled image with TZ-M preset, boot to secure mode TZ-M pre-configured by data from application image header" + } + ] + }, + { + "width": 2, + "id": "field01C-bits10-11", + "name": "BLOCK_SET_KEY", + "description": "Block PUF key code generation", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow PUF Key Code generation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable PUF Key Code generation" + } + ] + }, + { + "width": 2, + "id": "field01C-bits12-13", + "name": "BLOCK_ENROLL", + "description": "Block PUF enrollment", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow PUF enroll operation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable PUF enroll operation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable PUF enroll operation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable PUF enroll operation" + } + ] + }, + { + "width": 2, + "id": "field01C-bits14-15", + "name": "DICE_INC_SEC_EPOCH", + "description": "Include security EPOCH in DICE", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits16-17", + "name": "SKIP_BOOT_SEED", + "description": "Skip boot seed computation", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable BOOT_SEED" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable BOOT_SEED" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable BOOT_SEED" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable BOOT_SEED" + } + ] + }, + { + "width": 2, + "id": "field01C-bits18-19", + "name": "BOOT_SEED_INC_NXP_CFG", + "description": "Include NXP area in BOOT SEED computation", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits20-21", + "name": "BOOT_SEED_CUST_CFG", + "description": "Include CMPA area in BOOT SEED computation", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits22-23", + "name": "BOOT_SEED_INC_EPOCH", + "description": "Include security epoch area in BOOT_SEED computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 6 + }, + { + "width": 2, + "id": "field01C-bits30-31", + "name": "SEC_BOOT_EN", + "description": "Secure boot enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Plain image (internal flash with or without CRC)" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Boot signed images. (internal flash, RSA signed)" + } + ] + } + ] + }, + { + "id": "field020", + "name": "PRINCE_BASE_ADDR", + "description": "Prince Base Address", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4, + "id": "field020-bits0-3", + "name": "ADDR0_PRG", + "description": "Programmable portion of the base address of region 0" + }, + { + "width": 4, + "id": "field020-bits4-7", + "name": "ADDR1_PRG", + "description": "Programmable portion of the base address of region 1" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "ADDR2_PRG", + "description": "Programmable portion of the base address of region 2" + }, + { + "width": 6 + }, + { + "width": 2, + "id": "field020-bits18-19", + "name": "LOCK_REG0", + "description": "Lock PRINCE region0 settings", + "values": [ + { + "name": "UNLOCK", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCK_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCK_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCK_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field020-bits20-21", + "name": "LOCK_REG1", + "description": "Lock PRINCE region1 settings", + "values": [ + { + "name": "UNLOCK", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCK_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCK_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCK_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field020-bits24-25", + "name": "REG0_ERASE_CHECK_EN", + "description": "For PRINCE region0 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits26-27", + "name": "REG1_ERASE_CHECK_EN", + "description": "For PRINCE region1 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "REG2_ERASE_CHECK_EN", + "description": "For PRINCE region2 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "field024", + "name": "PRINCE_SR_0", + "description": "Region 0, sub-region enable", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field028", + "name": "PRINCE_SR_1", + "description": "Region 1, sub-region enable", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "PRINCE_SR_2", + "description": "Region 2, sub-region enable", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "XTAL_32KHZ_CAPABANK_TRIM", + "description": "Xtal 32kHz capabank trimming.", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field030-bit0", + "name": "TRIM_VALID", + "description": "XTAL 32kHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field030-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + }, + { + "id": "field034", + "name": "XTAL_16MHZ_CAPABANK_TRIM", + "description": "Xtal 16MHz capabank trimming.", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field034-bit0", + "name": "TRIM_VALID", + "description": "XTAL 16MHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field034-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + }, + { + "id": "field038", + "name": "FLASH_REMAP_SIZE", + "description": "This 32-bit register contains the size of the image to remap, in bytes. The 12 LSBs are ignored, so the size granularity is 4KB.", + "offset_int": "0x0038", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "FLASH_REMAP_OFFSET", + "description": "This 32-bit register contains the offset by which the image is to be remapped. The 12 LSBs are ignored, so the remap granularity is 4KB.", + "offset_int": "0x003C", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00040-0004C", + "description": "Reserved 00040-0004C" + }, + "registers": [ + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field050", + "name": "ROTKH0", + "description": "ROTKH0 for Root of Trust Keys Table hash[255:224]", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "ROTKH1", + "description": "ROTKH1 for Root of Trust Keys Table hash[223:192]", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "ROTKH2", + "description": "ROTKH2 for Root of Trust Keys Table hash[191:160]", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "ROTKH3", + "description": "ROTKH3 for Root of Trust Keys Table hash[159:128]", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field060", + "name": "ROTKH4", + "description": "ROTKH4 for Root of Trust Keys Table hash[127:96]", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "ROTKH5", + "description": "ROTKH5 for Root of Trust Keys Table hash[95:64]", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "ROTKH6", + "description": "ROTKH6 for Root of Trust Keys Table hash[63:32]", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "ROTKH7", + "description": "ROTKH7 for Root of Trust Keys Table hash[31:0]", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00070-000FC", + "description": "Reserved 00070-000FC" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfrc_rules.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfrc_rules.yaml new file mode 100644 index 0000000..60198c1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/pfrc_rules.yaml @@ -0,0 +1,19 @@ +# Copyright 2022-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +rules: + - req_id: "lpc55xx_4.1" + desc: + By default (blank device), the RoTKx_EN values are set to 0b00 which means + invalid. When secure boot is enabled (SEC_BOOT_EN != 0) there must be at + least one RoTKx_EN which is set to 0b01 (enabled) to allow device to boot + successfully. + msg: Secure boot is enabled. Make sure at least one Root of Trust Key Enable bit is set. + cond: CMPA.SECURE_BOOT_CFG.SEC_BOOT_EN != 0 and not (CFPA.ROTKH_REVOKE.RoTK3_EN == 1 or CFPA.ROTKH_REVOKE.RoTK2_EN == 1 or CFPA.ROTKH_REVOKE.RoTK1_EN == 1 or CFPA.ROTKH_REVOKE.RoTK0_EN == 1) + + - req_id: "lpc55xx_5.1" + desc: Inverse value (upper 16 bits) of VENDOR_USAGE must be always + valid. + msg: Inverse values are generated automatically based on configuration. + cond: CFPA.VENDOR_USAGE != 0 and (~(CFPA.VENDOR_USAGE>>int(16)) & 0xFFFF) != (CFPA.VENDOR_USAGE & 0xFFFF) diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/tz.json new file mode 100644 index 0000000..9b77837 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s16/tz.json @@ -0,0 +1,837 @@ +{ + "cpu": "lpc55s16", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "MPU Control Register (cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "SAU Control Register (cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register (cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "description": "TrustZone register - FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "FLASH Memory Rule Register 0 (flash_mem_rule0)", + "description": "TrustZone register - FLASH Memory Rule Register 0 (flash_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "FLASH Memory Rule Register 1 (flash_mem_rule1)", + "description": "TrustZone register - FLASH Memory Rule Register 1 (flash_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "FLASH Memory Rule Register 2 (flash_mem_rule2)", + "description": "TrustZone register - FLASH Memory Rule Register 2 (flash_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "RAMX Slave Rule Register (ramx_slave_rule)", + "description": "TrustZone register - RAMX Slave Rule Register (ramx_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "RAMX Memory Rule Register 0 (ramx_mem_rule)", + "description": "TrustZone register - RAMX Memory Rule Register 0 (ramx_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "RAM0 Memory Rule Register 0 (ram0_mem_rule)", + "description": "TrustZone register - RAM0 Memory Rule Register 0 (ram0_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "RAM1 Memory Rule Register 0 (ram1_mem_rule)", + "description": "TrustZone register - RAM1 Memory Rule Register 0 (ram1_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "RAM2 Memory Rule Register 0 (ram2_mem_rule)", + "description": "TrustZone register - RAM2 Memory Rule Register 0 (ram2_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "USB_HS Slave Rule Register (usb_hs_slave_rule)", + "description": "TrustZone register - USB_HS Slave Rule Register (usb_hs_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "USB_HS Memory Rule Register 0 (usb_hs_mem_rule)", + "description": "TrustZone register - USB_HS Memory Rule Register 0 (usb_hs_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "description": "TrustZone register - APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 1 (ahb_periph0_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 1 (ahb_periph0_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register 0 (ahb_periph1_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register 0 (ahb_periph1_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register 1 (ahb_periph1_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register 1 (ahb_periph1_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 1 (ahb_periph2_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 1 (ahb_periph2_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "AHB Peripherals 2 Memory Rule Register 0 (ahb_periph2_mem_rule)", + "description": "TrustZone register - AHB Peripherals 2 Memory Rule Register 0 (ahb_periph2_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "Secure GPIO Register 1 (sec_gp_reg1)", + "description": "TrustZone register - Secure GPIO Register 1 (sec_gp_reg1)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "Secure GPIO Register 2 (sec_gp_reg2)", + "description": "TrustZone register - Secure GPIO Register 2 (sec_gp_reg2)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "CM33 Lock Control Register (cm33_lock_reg)", + "description": "TrustZone register - CM33 Lock Control Register (cm33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "Miscellaneous TZM settings (misc_tzm_settings)", + "description": "TrustZone register - Miscellaneous TZM settings (misc_tzm_settings)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/database.yaml new file mode 100644 index 0000000..d9274a2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/database.yaml @@ -0,0 +1,189 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + a1: {} +latest: a1 + +# General MCU information +info: + purpose: LPC5500 Series + spsdk_predecessor_name: lpc55s2x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-cortex-m33/lpc552x-s2x-mainstream-arm-cortex-m33-based-microcontroller-family:LPC552x-S2x + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x40000" + external: false + internal-flash_s: + start_int: "0x10000000" + size_int: "0x40000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x18000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x8000" + external: false + usb-ram: + start_int: "0x40100000" + size_int: "0x4000" + external: false + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0021 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_8000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert1] + rot_type: "cert_block_1" + + # ======== DAT section ======== + dat: + socc: 1 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_ram: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV1 + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV1 + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + crc: crc_ram + signed: signed_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0x9_DE00 + size: 512 + reg_spec: pfr_cfpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + computed_fields: + field01C: # VENDOR_USAGE + field01C-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field020: # DCFG_CC_SOCU_NS_PIN + field020-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field024: # DCFG_CC_SOCU_NS_DFLT + field024-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + cmpa: # CMPA description + address: 0x9_E400 + size: 512 + reg_spec: pfr_cmpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + grouped_registers: + - uid: cmpa_rotkh + name: ROTKH + width: 256 + config_as_hexstring: true + reversed: true + description: + ROTKH field is compounded by 8 32-bit fields and contains Root key + table hash + sub_regs: + - field050 + - field054 + - field058 + - field05C + - field060 + - field064 + - field068 + - field06C + computed_fields: + field010: # DCFG_CC_SOCU_PIN + field010-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field014: # DCFG_CC_SOCU_DFLT + field014-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + rules: + - ../../common/pfrc_rules.yaml + - pfrc_rules.yaml + + # ======== Secure binary v2.1 section ======== + sb21: + supported_commands: [erase, load, enable, fill, jump, version_check] + keyblobs: false + + # ======== Memory configuration ======== + memcfg: + peripherals: + spi_nor: + instances: [3] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + recovery_spi: + segments: + sb21: 0x00 + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfr_cfpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfr_cfpa.json new file mode 100644 index 0000000..2391530 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfr_cfpa.json @@ -0,0 +1,1600 @@ +{ + "cpu": "lpc55s26", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "Header", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field004", + "name": "VERSION", + "description": "Version", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "S_FW_Version", + "description": "Secure firmware version (Monotonic counter)", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure firmware version (Monotonic counter)", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "IMAGE_KEY_REVOKE", + "description": "Image key revocation ID (Monotonic counter)", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "ROTKH_REVOKE", + "description": "Root of Trust Key Hash Revoke", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field018-bits0-1", + "name": "RoTK0_EN", + "description": "RoT Key 0 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits2-3", + "name": "RoTK1_EN", + "description": "RoT Key 1 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits4-5", + "name": "RoTK2_EN", + "description": "RoT Key 2 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits6-7", + "name": "RoTK3_EN", + "description": "RoT Key 3 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 24 + } + ] + }, + { + "id": "field01C", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field01C-bits0-15", + "name": "DBG_VENDOR_USAGE", + "description": "Debug Vendor Usage" + }, + { + "width": 16, + "id": "field01C-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field020", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field020-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field020-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field020-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field020-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field020-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field024", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field024-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field028", + "name": "ENABLE_FA_MODE", + "description": "Enable FA mode. SET_FA_MODE Command should write 0xC33CA55A to this word to indicate boot ROM to enter FA mode.", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "CMPA_PROG_IN_PROGRESS", + "description": "CMPA Page programming on going. This field shall be set to 0x5CC55AA5 in the active CFPA page each time CMPA page programming is going on. It shall always be set to 0x00000000 in the CFPA scratch area.", + "offset_int": "0x002C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 0", + "description": "PRINCE region 0" + }, + "registers": [ + { + "id": "field030", + "name": "PRINCE_REGION0_IV_CODE0", + "description": "Field.", + "offset_int": "0x0030", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field034", + "name": "PRINCE_REGION0_IV_CODE1", + "description": "Field.", + "offset_int": "0x0034", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field034-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field034-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field034-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field038", + "name": "PRINCE_REGION0_IV_BODY0", + "description": "Field.", + "offset_int": "0x0038", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "PRINCE_REGION0_IV_BODY1", + "description": "Field.", + "offset_int": "0x003C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field040", + "name": "PRINCE_REGION0_IV_BODY2", + "description": "Field.", + "offset_int": "0x0040", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field044", + "name": "PRINCE_REGION0_IV_BODY3", + "description": "Field.", + "offset_int": "0x0044", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field048", + "name": "PRINCE_REGION0_IV_BODY4", + "description": "Field.", + "offset_int": "0x0048", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field04C", + "name": "PRINCE_REGION0_IV_BODY5", + "description": "Field.", + "offset_int": "0x004C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field050", + "name": "PRINCE_REGION0_IV_BODY6", + "description": "Field.", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "PRINCE_REGION0_IV_BODY7", + "description": "Field.", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "PRINCE_REGION0_IV_BODY8", + "description": "Field.", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "PRINCE_REGION0_IV_BODY9", + "description": "Field.", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field060", + "name": "PRINCE_REGION0_IV_BODY10", + "description": "Field.", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "PRINCE_REGION0_IV_BODY11", + "description": "Field.", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 1", + "description": "PRINCE region 1" + }, + "registers": [ + { + "id": "field068", + "name": "PRINCE_REGION1_IV_CODE0", + "description": "Field.", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "PRINCE_REGION1_IV_CODE1", + "description": "Field.", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field06C-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field06C-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field06C-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field070", + "name": "PRINCE_REGION1_IV_BODY0", + "description": "Field.", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "PRINCE_REGION1_IV_BODY1", + "description": "Field.", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "PRINCE_REGION1_IV_BODY2", + "description": "Field.", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "PRINCE_REGION1_IV_BODY3", + "description": "Field.", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field080", + "name": "PRINCE_REGION1_IV_BODY4", + "description": "Field.", + "offset_int": "0x0080", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "PRINCE_REGION1_IV_BODY5", + "description": "Field.", + "offset_int": "0x0084", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "PRINCE_REGION1_IV_BODY6", + "description": "Field.", + "offset_int": "0x0088", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "PRINCE_REGION1_IV_BODY7", + "description": "Field.", + "offset_int": "0x008C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field090", + "name": "PRINCE_REGION1_IV_BODY8", + "description": "Field.", + "offset_int": "0x0090", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field094", + "name": "PRINCE_REGION1_IV_BODY9", + "description": "Field.", + "offset_int": "0x0094", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field098", + "name": "PRINCE_REGION1_IV_BODY10", + "description": "Field.", + "offset_int": "0x0098", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field09C", + "name": "PRINCE_REGION1_IV_BODY11", + "description": "Field.", + "offset_int": "0x009C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 2", + "description": "PRINCE region 2" + }, + "registers": [ + { + "id": "field0A0", + "name": "PRINCE_REGION2_IV_CODE0", + "description": "Field.", + "offset_int": "0x00A0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A4", + "name": "PRINCE_REGION2_IV_CODE1", + "description": "Field.", + "offset_int": "0x00A4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0A4-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field0A4-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field0A4-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field0A8", + "name": "PRINCE_REGION2_IV_BODY0", + "description": "Field.", + "offset_int": "0x00A8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0AC", + "name": "PRINCE_REGION2_IV_BODY1", + "description": "Field.", + "offset_int": "0x00AC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B0", + "name": "PRINCE_REGION2_IV_BODY2", + "description": "Field.", + "offset_int": "0x00B0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "PRINCE_REGION2_IV_BODY3", + "description": "Field.", + "offset_int": "0x00B4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "PRINCE_REGION2_IV_BODY4", + "description": "Field.", + "offset_int": "0x00B8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "PRINCE_REGION2_IV_BODY5", + "description": "Field.", + "offset_int": "0x00BC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C0", + "name": "PRINCE_REGION2_IV_BODY6", + "description": "Field.", + "offset_int": "0x00C0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C4", + "name": "PRINCE_REGION2_IV_BODY7", + "description": "Field.", + "offset_int": "0x00C4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C8", + "name": "PRINCE_REGION2_IV_BODY8", + "description": "Field.", + "offset_int": "0x00C8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0CC", + "name": "PRINCE_REGION2_IV_BODY9", + "description": "Field.", + "offset_int": "0x00CC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D0", + "name": "PRINCE_REGION2_IV_BODY10", + "description": "Field.", + "offset_int": "0x00D0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D4", + "name": "PRINCE_REGION2_IV_BODY11", + "description": "Field.", + "offset_int": "0x00D4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000D8-000FC", + "description": "Reserved 000D8-000FC" + }, + "registers": [ + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfr_cmpa.json new file mode 100644 index 0000000..1048ed7 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfr_cmpa.json @@ -0,0 +1,1994 @@ +{ + "cpu": "lpc55s26", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode:", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "USB_HID_ISP", + "value": 1, + "description": "USB_HID_ISP" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "DISABLE", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Core clock:", + "values": [ + { + "name": "SYSTEM_SPEED_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "FRO_96MHZ", + "value": 1, + "description": "96MHz FRO" + }, + { + "name": "FRO_48MHZ", + "value": 2, + "description": "48MHz FRO" + } + ] + }, + { + "width": 2, + "id": "field000-bits9-10", + "name": "USB_SPEED", + "description": "Defines which USB module is used for ISP:", + "values": [ + { + "name": "USB_SPEED_0", + "value": 0, + "description": "Defined by NMPA.USBCFG.USB_SPEED" + }, + { + "name": "USB_FS", + "value": 1, + "description": "USB FS module used for ISP" + }, + { + "name": "USB_HS", + "value": 2, + "description": "USB HS module used for ISP" + }, + { + "name": "USB_SPEED_1", + "value": 3, + "description": "Defined by NMPA.USBCFG.USB_SPEED" + } + ] + }, + { + "width": 13 + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "GPIO port and pin number to use for indicating failure reason. The toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_FLASH_CFG", + "description": "SPI Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI flash recovery boot is enabled, if non-zero value is written to this field." + }, + { + "width": 27 + } + ] + }, + { + "id": "field008", + "name": "USB_ID", + "description": "USB Identifiers", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "USB_VENDOR_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "USB_PRODUCT_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field00C", + "name": "SDIO_CFG", + "description": "SDIO Configuration", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field010-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field010-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field014-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field018", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field018-bits16-31", + "name": "VENDOR_USAGE", + "description": "Upper 16 bits of vendor usage field defined in DAP. Lower 16-bits come from customer field area." + } + ] + }, + { + "id": "field01C", + "name": "SECURE_BOOT_CFG", + "description": "Secure boot configuration", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field01C-bits0-1", + "name": "RSA4K", + "description": "Select minimal key length. To enforce usage of RSA4096, setting 0b11 value is recommended to allow RSA4096 keys only.", + "values": [ + { + "name": "RSA2048", + "value": 0, + "description": "RSA2048 or higher can be used for image signing. Only RSA2048 can be used as debug keys." + }, + { + "name": "RSA4096_0", + "value": 1, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + }, + { + "name": "RSA4096_1", + "value": 2, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + }, + { + "name": "RSA4096_2", + "value": 3, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + } + ] + }, + { + "width": 2, + "id": "field01C-bits2-3", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits4-5", + "name": "DICE_CUST_CFG", + "description": "Include Customer factory area (including keys) in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits6-7", + "name": "SKIP_DICE", + "description": "Skip DICE computation", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable DICE" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable DICE" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable DICE" + } + ] + }, + { + "width": 2, + "id": "field01C-bits8-9", + "name": "TZM_IMAGE_TYPE", + "description": "TrustZone-M mode", + "values": [ + { + "name": "HEADER", + "value": 0, + "description": "TZ-M image mode is taken from application image header" + }, + { + "name": "DISABLED", + "value": 1, + "description": "TZ-M disabled image, boots to non-secure mode" + }, + { + "name": "ENABLED", + "value": 2, + "description": "TZ-M enabled image, boots to secure mode" + }, + { + "name": "PRESET", + "value": 3, + "description": "TZ-M enabled image with TZ-M preset, boot to secure mode TZ-M pre-configured by data from application image header" + } + ] + }, + { + "width": 2, + "id": "field01C-bits10-11", + "name": "BLOCK_SET_KEY", + "description": "Block PUF key code generation", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow PUF Key Code generation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable PUF Key Code generation" + } + ] + }, + { + "width": 2, + "id": "field01C-bits12-13", + "name": "BLOCK_ENROLL", + "description": "Block PUF enrollment", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow PUF enroll operation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable PUF enroll operation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable PUF enroll operation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable PUF enroll operation" + } + ] + }, + { + "width": 2, + "id": "field01C-bits14-15", + "name": "DICE_INC_SEC_EPOCH", + "description": "Include security EPOCH in DICE" + }, + { + "width": 14 + }, + { + "width": 2, + "id": "field01C-bits30-31", + "name": "SEC_BOOT_EN", + "description": "Secure boot enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Plain image (internal flash with or without CRC)" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Boot signed images. (internal flash, RSA signed)" + } + ] + } + ] + }, + { + "id": "field020", + "name": "PRINCE_BASE_ADDR", + "description": "Prince Base Address", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4, + "id": "field020-bits0-3", + "name": "ADDR0_PRG", + "description": "Programmable portion of the base address of region 0" + }, + { + "width": 4, + "id": "field020-bits4-7", + "name": "ADDR1_PRG", + "description": "Programmable portion of the base address of region 1" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "ADDR2_PRG", + "description": "Programmable portion of the base address of region 2" + }, + { + "width": 6 + }, + { + "width": 2, + "id": "field020-bits18-19", + "name": "LOCK_REG0", + "description": "Lock PRINCE region0 settings", + "values": [ + { + "name": "UNLOCK", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCK_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCK_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCK_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field020-bits20-21", + "name": "LOCK_REG1", + "description": "Lock PRINCE region1 settings", + "values": [ + { + "name": "UNLOCK", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCK_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCK_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCK_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field020-bits24-25", + "name": "REG0_ERASE_CHECK_EN", + "description": "For PRINCE region0 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits26-27", + "name": "REG1_ERASE_CHECK_EN", + "description": "For PRINCE region1 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "REG2_ERASE_CHECK_EN", + "description": "For PRINCE region2 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "field024", + "name": "PRINCE_SR_0", + "description": "Region 0, sub-region enable", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field028", + "name": "PRINCE_SR_1", + "description": "Region 1, sub-region enable", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "PRINCE_SR_2", + "description": "Region 2, sub-region enable", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "XTAL_32KHZ_CAPABANK_TRIM", + "description": "Xtal 32kHz capabank trimming.", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field030-bit0", + "name": "TRIM_VALID", + "description": "XTAL 32kHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field030-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + }, + { + "id": "field034", + "name": "XTAL_16MHZ_CAPABANK_TRIM", + "description": "Xtal 16MHz capabank trimming.", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field034-bit0", + "name": "TRIM_VALID", + "description": "XTAL 16MHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field034-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00038-0004C", + "description": "Reserved 00038-0004C" + }, + "registers": [ + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field050", + "name": "ROTKH0", + "description": "ROTKH0 for Root of Trust Keys Table hash[255:224]", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "ROTKH1", + "description": "ROTKH1 for Root of Trust Keys Table hash[223:192]", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "ROTKH2", + "description": "ROTKH2 for Root of Trust Keys Table hash[191:160]", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "ROTKH3", + "description": "ROTKH3 for Root of Trust Keys Table hash[159:128]", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field060", + "name": "ROTKH4", + "description": "ROTKH4 for Root of Trust Keys Table hash[127:96]", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "ROTKH5", + "description": "ROTKH5 for Root of Trust Keys Table hash[95:64]", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "ROTKH6", + "description": "ROTKH6 for Root of Trust Keys Table hash[63:32]", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "ROTKH7", + "description": "ROTKH7 for Root of Trust Keys Table hash[31:0]", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00070-000FC", + "description": "Reserved 00070-000FC" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfrc_rules.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfrc_rules.yaml new file mode 100644 index 0000000..60198c1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s26/pfrc_rules.yaml @@ -0,0 +1,19 @@ +# Copyright 2022-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +rules: + - req_id: "lpc55xx_4.1" + desc: + By default (blank device), the RoTKx_EN values are set to 0b00 which means + invalid. When secure boot is enabled (SEC_BOOT_EN != 0) there must be at + least one RoTKx_EN which is set to 0b01 (enabled) to allow device to boot + successfully. + msg: Secure boot is enabled. Make sure at least one Root of Trust Key Enable bit is set. + cond: CMPA.SECURE_BOOT_CFG.SEC_BOOT_EN != 0 and not (CFPA.ROTKH_REVOKE.RoTK3_EN == 1 or CFPA.ROTKH_REVOKE.RoTK2_EN == 1 or CFPA.ROTKH_REVOKE.RoTK1_EN == 1 or CFPA.ROTKH_REVOKE.RoTK0_EN == 1) + + - req_id: "lpc55xx_5.1" + desc: Inverse value (upper 16 bits) of VENDOR_USAGE must be always + valid. + msg: Inverse values are generated automatically based on configuration. + cond: CFPA.VENDOR_USAGE != 0 and (~(CFPA.VENDOR_USAGE>>int(16)) & 0xFFFF) != (CFPA.VENDOR_USAGE & 0xFFFF) diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s28/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s28/database.yaml new file mode 100644 index 0000000..c3fdc05 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s28/database.yaml @@ -0,0 +1,34 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc55s26 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x80000" + external: false + internal-flash_s: + start_int: "0x10000000" + size_int: "0x80000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x30000" + external: false + sram4: + start_int: "0x20040000" + size_int: "0x4000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x8000" + external: false + usb-ram: + start_int: "0x40100000" + size_int: "0x4000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/database.yaml new file mode 100644 index 0000000..341d817 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/database.yaml @@ -0,0 +1,345 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: + features: + pfr: + cfpa: + reg_spec: pfr_cfpa_a0.json + cmpa: + reg_spec: pfr_cmpa_a0.json + tz: + reg_spec: tz_a0.json + a1: + features: + pfr: + cfpa: + reg_spec: pfr_cfpa_a1.json + cmpa: + reg_spec: pfr_cmpa_a1.json + deprecated_reg_names: + field04C: + alt_names: [RoTK_USAGE] + bitfields: + field04C-bits0-2: [RoTK0_Usage] + field04C-bits3-5: [RoTK1_Usage] + field04C-bits6-8: [RoTK2_Usage] + field04C-bits9-11: [RoTK3_Usage] + + tz: + reg_spec: tz_a1.json + dice: + reg_spec: dice_had_a1.json +latest: a1 + +# General MCU information +info: + purpose: LPC5500 Series + spsdk_predecessor_name: lpc55s3x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-arm-cortex-m33/lpc553x-s3x-advanced-analog-armcortex-m33-based-mcu-family:LPC553x + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x3DC00" + external: false + flexspi_ns: + start_int: "0x8000000" + size_int: "0x8000000" + external: true + flexspi_s: + start_int: "0x18000000" + size_int: "0x8000000" + external: true + mirror_of: flexspi_ns + internal-flash_s: + start_int: "0x10000000" + size_int: "0x3DC00" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x1C000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x4000" + external: false + __comment: + Does not work as target `onchip RAM` memory, blhost reports 10200 + (0x27d8) Memory Range Invalid. + isp: + rom: + protocol: mboot + interfaces: ["uart", "usb", "can", "spi", "i2c"] + usb: + - vid: 0x1FC9 + pid: 0x0025 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_8000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert21] + rot_type: "cert_block_21" + + # ======== DAT section ======== + dat: + socc: 4 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinImageVersion + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + plain_ram: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinImageVersion + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinImageVersion + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinImageVersion + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinImageVersion + - Mbi_MixinIvt + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifest + - Mbi_MixinLoadAddress + - Mbi_MixinFwVersion + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + plain: plain_ram + crc: crc_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0x3_DC00 + size: 512 + seal_start: field1EC # CFPA_CRC32 + seal_count: 1 + computed_fields: + field054: # VENDOR_USAGE + field054-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field058: # DCFG_CC_SOCU_NS_PIN + field058-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field05C: # DCFG_CC_SOCU_NS_DFLT + field05C-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + + cmpa: # CMPA description + address: 0x3_E200 + size: 512 + seal_start: field1F0 # CMPA_CMAC0 + seal_count: 4 + grouped_registers: + - uid: cmpa_rotkh + name: ROTKH + width: 384 + config_as_hexstring: true + reversed: true + alternative_widths: [256] + description: + ROTKH field is compounded by 12 32-bit fields and contains Root key + table hash. For ECC P-256 keys RKTH is a 32-byte SHA-256 digest of four + SHA-256 digests computed over four OEM public keys (OEM has four + private-public key pairs in case one of its private keys becomes + compromised) or in case that ECC P-384 keys are used, RKTH is 48-byte + SHA-384 digest. + sub_regs: + - field050 + - field054 + - field058 + - field05C + - field060 + - field064 + - field068 + - field06C + - field070 + - field074 + - field078 + - field07C + computed_fields: + field010: # DCFG_CC_SOCU_PIN + field010-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field014: # DCFG_CC_SOCU_DFLT + field014-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + reg_spec_modification: + field090: + bitfields: + field090-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field094: + bitfields: + field094-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field098: + bitfields: + field098-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field09C: + bitfields: + field09C-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0A4: + bitfields: + field0A4-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0A8: + bitfields: + field0A8-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0AC: + bitfields: + field0AC-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + rules: + - ../../common/pfrc_rules.yaml + - pfrc_rules.yaml + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 + flexspi_nor: + segments: + fcb: 0x0400 + image_version_ap: 0x0600 + mbi: 0x1000 + remap_align: 0x40000 # 256 KB + image_pattern: ones + recovery_spi_sb31: + segments: + sb31: 0x00 + recovery_spi_mbi: + segments: + mbi: 0x00 + + # ======== Secure binary v3.1 section ======== + sb31: + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - copy + - loadHashLocking + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsmSB31] + key_blob_offset: 0x4 + key_blob_command_position: -1 + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - copy + - loadHashLocking + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + + # ======== TrustZone section ======== + tz: {} + + # ======== Memory configuration ======== + memcfg: + peripherals: + flexspi_nor: + instances: [0] + spi_nor: + instances: [0, 1, 3, 8] + + # ======== DICE configuration ======== + dice: + buffer_address: 0x3001_5000 + buffer_size: 0x1000 + csr_address: 0x2000_0000 + csr_length: 208 + rkth_length: 32 + rkth_truncated_length: 32 + response_length: 324 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/dice_had_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/dice_had_a1.json new file mode 100644 index 0000000..33e52d2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/dice_had_a1.json @@ -0,0 +1,522 @@ +{ + "cpu": "LPC55S36", + "groups": [ + { + "group": { + "name": "DICE HAD registers", + "description": "Registers used by DICE attestation." + }, + "registers": [ + { + "id": "field9D0", + "offset_int": "0x000", + "reg_width": 32, + "name": "ELS_AS_CFG0", + "description": "ELS AS configuration", + "default_value_int": "0xff00355", + "bitfields": [ + { + "id": "field9D0-bits0-7", + "width": 8, + "name": "CFG_LC_STATE", + "access": "RO", + "description": "LC state configuration bit." + }, + { + "id": "field9D0-bit8", + "width": 1, + "name": "CFG_BOD_VBAT_RESET_ENABLED", + "access": "RO", + "description": "When BOD VDDMAIN analog detector is turned on and BOD VDDMAIN reset is enabled, this bit indicates state 1." + }, + { + "id": "field9D0-bit9", + "width": 1, + "name": "CFG_BOD_CORE_RESET_ENABLED", + "access": "RO", + "description": "When BOD CORE analog detector is turned on and BOD CORE reset is enabled, this bit indicates state 1." + }, + { + "id": "field9D0-bit10", + "width": 1, + "name": "CFG_BOD_VBAT_IRQ_ENABLED", + "access": "RO", + "description": "When BOD VDDMAIN analog detector is turned on and BOD VDDMAIN IRQ is enabled, this bit indicates state 1." + }, + { + "width": 1 + }, + { + "id": "field9D0-bit12", + "width": 1, + "name": "CFG_WDT_ENABLED", + "access": "RO", + "description": "When WatchDog Timer is activated, this bit indicates state 1." + }, + { + "id": "field9D0-bit13", + "width": 1, + "name": "CFG_CWDT_ENABLED", + "access": "RO", + "description": "When Code WatchDog Timer is activated, this bit indicates state 1." + }, + { + "width": 1 + }, + { + "id": "field9D0-bit15", + "width": 1, + "name": "CFG_ELS_GDET_ENABLED", + "access": "RO", + "description": "When ELS GDET is enabled, this bit indicates state 1." + }, + { + "width": 1 + }, + { + "id": "field9D0-bit17", + "width": 1, + "name": "CFG_TAMPER_DET_ENABLED", + "access": "RO", + "description": "When tamper detector is enabled in RTC, this bit indicates state 1." + }, + { + "id": "field9D0-bit18", + "width": 1, + "name": "CFG_FLASH_IS_REMAPPED", + "access": "RO", + "description": "When FLASHREMAP_OFFSET register (0x4000_0448) is not equal to 0x0000_0000, this bit indicates state 1." + }, + { + "id": "field9D0-bit19", + "width": 1, + "name": "CFG_FLASH_IS_REMAPPED_DP", + "access": "RO", + "description": "When FLASHREMAP_OFFSET_DP register (0x4000_044C) is not equal to 0x0000_0000, this bit indicates state 1." + }, + { + "id": "field9D0-bits20-23", + "width": 4, + "name": "CFG_FLASH_BANK0_ENABLE", + "access": "RO", + "description": "The state of FLASHBANK_ENABLE0 register (0x4000_0450) reflects to this register as below." + }, + { + "id": "field9D0-bits24-27", + "width": 4, + "name": "CFG_FLASH_BANK1_ENABLE", + "access": "RO", + "description": "The state of FLASHBANK_ENABLE1 register (0x4000_0454) reflects to this register as below:" + }, + { + "id": "field9D0-bit28", + "width": 1, + "name": "CFG_QK_DISABLE_ENROLL", + "access": "RO", + "description": "When CONFIG[DIS_PUF_ENROLL] bit is set 1, this bit indicates state 1." + }, + { + "id": "field9D0-bit29", + "width": 1, + "name": "CFG_QK_DISABLE_WRAP", + "access": "RO", + "description": "When CONFIG[DIS_PUF_WRAP_KEY] bit is set 1, this bit indicates state 1." + }, + { + "width": 2 + } + ] + }, + { + "id": "field9D4", + "offset_int": "0x004", + "reg_width": 32, + "name": "ELS_AS_CFG1", + "description": "ELS AS configuration1", + "default_value_int": "0x22", + "bitfields": [ + { + "width": 1 + }, + { + "id": "field9D4-bit1", + "width": 1, + "name": "CFG_SEC_DIS_STRICT_MODE", + "access": "RO", + "description": "When \"CFG_SEC_ENA_SEC_CHK\" indicates state 0 or when \"DISABLE_STRICT_MODE\" bits in \"MISC_CTRL_REG\" and \"MISC_CTRL_DP_REG\" on AHB secure controller, both bits are equal to 01, this bit indicates state 1." + }, + { + "id": "field9D4-bit2", + "width": 1, + "name": "CFG_SEC_DIS_VIOL_ABORT", + "access": "RO", + "description": "When \"DISABLE_VIOLATION_ABORT\" bits in \"MISC_CTRL_REG\" and \"MISC_CTRL_DP_REG\" on AHB secure controller, both bits are not equal to 10, this bit indicates state 1." + }, + { + "id": "field9D4-bit3", + "width": 1, + "name": "CFG_SEC_ENA_NS_PRIV_CHK", + "access": "RO", + "description": "When \"ENABLE_NS_PRIV_CHECK\" bits in \"MISC_CTRL_REG\" and \"MISC_CTRL_DP_REG\" on AHB secure controller, both bits are not equal to 10, this bit indicates state 1." + }, + { + "id": "field9D4-bit4", + "width": 1, + "name": "CFG_SEC_ENA_S_PRIV_CHK", + "access": "RO", + "description": "When \"ENABLE_S_PRIV_CHECK\" bits in \"MISC_CTRL_REG\" and \"MISC_CTRL_DP_REG\" on AHB secure controller, both bits are not equal to 10, this bit indicates state 1." + }, + { + "id": "field9D4-bit5", + "width": 1, + "name": "CFG_SEC_ENA_SEC_CHK", + "access": "RO", + "description": "When \"ENABLE_SECURE_CHECKING\" bits in \"MISC_CTRL_REG\" and \"MISC_CTRL_DP_REG\" on AHB secure controller, both bits are not equal to 10, this bit indicates state 1." + }, + { + "id": "field9D4-bit6", + "width": 1, + "name": "CFG_SEC_IDAU_ALLNS", + "access": "RO", + "description": "When \"IDAU_ALL_NS\" bits in \"MISC_CTRL_REG\" and \"MISC_CTRL_DP_REG\" on AHB secure controller, both bits are equal to 01, this bit indicates state 1." + }, + { + "width": 1 + }, + { + "id": "field9D4-bit8", + "width": 1, + "name": "CFG_SEC_LOCK_NS_MPU", + "access": "RO", + "description": "When \"LOCK_NS_MPU\" bits in \"CPU0_LOCK_REG\" on AHB secure controller are not equal to 10, this bit indicates state 1." + }, + { + "id": "field9D4-bit9", + "width": 1, + "name": "CFG_SEC_LOCK_NS_VTOR", + "access": "RO", + "description": "When \"LOCK_NS_VTOR\" bits in \"CPU0_LOCK_REG\" on AHB secure controller are not equal to 10, this bit indicates state 1." + }, + { + "id": "field9D4-bit10", + "width": 1, + "name": "CFG_SEC_LOCK_S_MPU", + "access": "RO", + "description": "When \"LOCK_S_MPU\" bits in \"CPU0_LOCK_REG\" on AHB secure controller are not equal to 10, this bit indicates state 1." + }, + { + "id": "field9D4-bit11", + "width": 1, + "name": "CFG_SEC_LOCK_S_VTAIRCR", + "access": "RO", + "description": "When \"LOCK_S_VTAIRCR\" bits in \"CPU0_LOCK_REG\" on AHB secure controller are not equal to 10, this bit indicates state 1." + }, + { + "id": "field9D4-bit12", + "width": 1, + "name": "CFG_SEC_LOCK_SAU", + "access": "RO", + "description": "When \"LOCK_SAU\" bits in \"CPU0_LOCK_REG\" on AHB secure controller are not equal to 10, this bit indicates state 1." + }, + { + "width": 19 + } + ] + }, + { + "id": "field9D8", + "offset_int": "0x008", + "reg_width": 32, + "name": "ELS_AS_CFG2", + "description": "ELS configuration command enable bit.", + "default_value_int": "0xffffffff" + }, + { + "id": "field9E0", + "offset_int": "0x010", + "reg_width": 32, + "name": "ELS_AS_ST0", + "description": "ELS AS state register", + "default_value_int": "0xdc00", + "bitfields": [ + { + "id": "field9E0-bits0-3", + "width": 4, + "name": "ST_TEMPORAL_STATE", + "access": "RO", + "description": "\"TEMPORAL_STATE[3:0]\" on \"ELS_TEMPORAL_STATE\" register reflects this register." + }, + { + "id": "field9E0-bit4", + "width": 1, + "name": "ST_CPU0_DBGEN", + "access": "RO", + "description": "When CPU0 (CM33) \"dbgen\" input is state 1, this bit indicates state 1." + }, + { + "id": "field9E0-bit5", + "width": 1, + "name": "ST_CPU0_NIDEN", + "access": "RO", + "description": "When CPU0 (CM33) \"niden\" input is state 1, this bit indicates state 1." + }, + { + "id": "field9E0-bit6", + "width": 1, + "name": "ST_CPU0_SPIDEN", + "access": "RO", + "description": "When CPU0 (CM33) \"spiden\" input is state 1, this bit indicates state 1." + }, + { + "id": "field9E0-bit7", + "width": 1, + "name": "ST_CPU0_SPNIDEN", + "access": "RO", + "description": "When CPU0 (CM33) \"spniden\" input is state 1, this bit indicates state 1." + }, + { + "width": 2 + }, + { + "id": "field9E0-bit10", + "width": 1, + "name": "ST_DAP_ENABLE_CPU0", + "access": "RO", + "description": "When DAP to AP0 for CPU0 (CM33) debug access is allowed, this bit indicates state 1." + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "id": "field9E0-bit13", + "width": 1, + "name": "ST_ELS_DEBUG_EN", + "access": "RO", + "description": "When ELS uCode code fetch out of AHB for debug is enabled, this bit indicates state 1." + }, + { + "id": "field9E0-bit14", + "width": 1, + "name": "ST_ALLOW_TEST_ACCESS", + "access": "RO", + "description": "When JTAG TAP access is allowed, this bit indicates state 1." + }, + { + "id": "field9E0-bit15", + "width": 1, + "name": "ST_XO32K_FAILED", + "access": "RO", + "description": "When XO32K oscillation fail flag is state 1 in PMC register block, this bit indicates state 1." + }, + { + "width": 16 + } + ] + }, + { + "id": "field9E4", + "offset_int": "0x014", + "reg_width": 32, + "name": "ELS_AS_ST1", + "description": "ELS AS state1", + "default_value_int": "0x18f", + "bitfields": [ + { + "id": "field9E4-bits0-3", + "width": 4, + "name": "ST_QK_PUF_SCORE", + "access": "RO", + "description": "These register bits indicate the state of \"qk_puf_score[3:0]\" outputs from QK PUF block." + }, + { + "id": "field9E4-bit4", + "width": 1, + "name": "ST_QK_ZEROIZED", + "access": "RO", + "description": "This register bit indicates the state of \"qk_zeroized\" output from QK PUF block." + }, + { + "id": "field9E4-bit5", + "width": 1, + "name": "ST_MAIN_CLK_IS_EXT", + "access": "RO", + "description": "When MAIN_CLK is running from external clock source either XO32M, XO32K or GPIO CLKIN, this bit indicates state 1." + }, + { + "id": "field9E4-bits6-9", + "width": 4, + "name": "ST_DCDC_VOUT", + "access": "RO", + "description": "VOUT[3:0] setting on DCDC0 register in PMC block will reflect to this register." + }, + { + "id": "field9E4-bits10-11", + "width": 2, + "name": "ST_BOOT_MODE", + "access": "RO", + "description": "BOOTMODE[1:0] status on STATUS register in PMC block will reflect to this register." + }, + { + "id": "field9E4-bits12-15", + "width": 4, + "name": "ST_BOOT_RETRY_CNT", + "access": "RO", + "description": "\"BOOT_RETRY_CNT[3:0]\" on \"ELS_BOOT_RETRY_CNT\" register reflects this register." + }, + { + "width": 16 + } + ] + }, + { + "id": "field9E8", + "offset_int": "0x018", + "reg_width": 32, + "name": "ELS_AS_ST2", + "description": "\"BOOT_STATE[31:0]\" on \"ELS_BOOT_STATE\" register reflects this register.", + "default_value_int": "0x0" + }, + { + "id": "field9F0", + "offset_int": "0x020", + "reg_width": 32, + "name": "ELS_AS_FLAG0", + "description": "ELS AS flag0", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field9F0-bit0", + "width": 1, + "name": "FLAG_AP_ENABLE_CPU0", + "access": "RO", + "description": "This flag bit is set 1 when DAP enables AP0 for CPU0 (CM33) debug access. The register is cleared 0 by PMC reset event." + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "id": "field9F0-bit4", + "width": 1, + "name": "FLAG_BOD_VBAT_RESET_OCCURRED", + "access": "RO", + "description": "This flag bit is set 1 when BOD VDDMAIN reset is enabled and BOD VDDMAIN analog detector is tripped. This register is cleared 0 by AO domain POR." + }, + { + "id": "field9F0-bit5", + "width": 1, + "name": "FLAG_BOD_CORE_RESET_OCCURRED", + "access": "RO", + "description": "This flag bit is set 1 when BOD CORE reset is enabled and BOD CORE analog detector is tripped. This register is cleared 0 by AO domain POR." + }, + { + "id": "field9F0-bit6", + "width": 1, + "name": "FLAG_BOD_VBAT_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set 1 when BOD VDDMAIN IRQ is enabled and BOD VDDMAIN analog detector is tripped. This register is cleared 0 by PMC reset event." + }, + { + "id": "field9F0-bit7", + "width": 1, + "name": "FLAG_BOD_CORE_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set 1 when BOD CORE IRQ is enabled and BOD CORE analog detector is tripped. This register is cleared 0 by PMC reset event." + }, + { + "id": "field9F0-bit8", + "width": 1, + "name": "FLAG_WDT_RESET_OCCURRED", + "access": "RO", + "description": "This flag bit is set 1 when WatchDog Timer reset is enabled and reset event is triggered. This register is cleared 0 by AO domain POR." + }, + { + "id": "field9F0-bit9", + "width": 1, + "name": "FLAG_CWDT_RESET_OCCURRED", + "access": "RO", + "description": "This flag bit is set 1 when Code WatchDog Timer reset is enabled and reset event is triggered. This register is cleared 0 by AO domain POR." + }, + { + "id": "field9F0-bit10", + "width": 1, + "name": "FLAG_WDT_IRQ_OCCURRED", + "access": "RO", + "description": "This flag register is set 1 when WatchDog Timer IRQ is enabled and IRQ event is triggered. This register is cleared 0 by PMC reset event." + }, + { + "id": "field9F0-bit11", + "width": 1, + "name": "FLAG_CWDT_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set 1 when Code WatchDog Timer IRQ is enabled and IRQ event is triggered. This register is cleared 0 by PMC reset event." + }, + { + "id": "field9F0-bit12", + "width": 1, + "name": "FLAG_QK_ERROR", + "access": "RO", + "description": "This flag bit is set 1 when QK_ERROR is flagged from QK PUF block. This register is cleared 0 by PMC reset event." + }, + { + "id": "field9F0-bit13", + "width": 1, + "name": "FLAG_ELS_GLITCH_DETECTED", + "access": "RO", + "description": "This flag bit is set 1 when GDET error is flagged from ELS. This register is cleared 0 by PMC reset event." + }, + { + "width": 1 + }, + { + "id": "field9F0-bit15", + "width": 1, + "name": "FLAG_TAMPER_EVENT_DETECTED", + "access": "RO", + "description": "This flag bit is set 1 when tamper event is flagged from RTC. This register is cleared 0 by AO domain POR or by PMC reset event, if tamper detection event is cleared by software." + }, + { + "id": "field9F0-bit16", + "width": 1, + "name": "FLAG_FLASH_ECC_INVALID", + "access": "RO", + "description": "This flag bit is set 1 when FLASH controller indicates ECC error. This register is cleared 0 by PMC reset event." + }, + { + "id": "field9F0-bit17", + "width": 1, + "name": "FLAG_SEC_VIOL_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set 1 when security violation is indicated from FLASH sub-system or AHB bus matrix." + }, + { + "id": "field9F0-bit18", + "width": 1, + "name": "FLAG_CPU0_NS_C_ACC_OCCURRED", + "access": "RO", + "description": "This flag bit is set 1 when CPU0 (CM33) makes non-secure code transactions. This register is cleared 0 by PMC reset event." + }, + { + "id": "field9F0-bit19", + "width": 1, + "name": "FLAG_CPU0_NS_D_ACC_OCCURRED", + "access": "RO", + "description": "This flag register is set 1 when CPU0 (CM33) makes non-secure data transactions. This register is cleared 0 by PMC reset event." + }, + { + "width": 12 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/fcb_flexspi_nor.json new file mode 100644 index 0000000..6dd178d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/fcb_flexspi_nor.json @@ -0,0 +1,25617 @@ +{ + "cpu": "LPC55S36", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix", + "default_value_int": "0x56010400" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc.", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field078-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps" + }, + { + "id": "field078-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells" + } + ] + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field07A-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps" + }, + { + "id": "field07A-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells" + } + ] + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "dll0CrVal", + "description": " [0x1b0-0x1b3] Customizable DLL0CR setting", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "dll1CrVal", + "description": " [0x1b4-0x1b7] Customizable DLL1CR setting", + "default_value_int": "0x0" + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b8-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b8-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same", + "default_value_int": "0x0" + }, + { + "id": "field1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " Data order (D0, D1, D2, D3) is swapped (D1,D0, D3, D2)", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command", + "default_value_int": "0x0" + }, + { + "id": "field1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false", + "default_value_int": "0x0" + }, + { + "id": "field1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "flashStateCtx", + "description": " Flash State Context", + "default_value_int": "0x0" + }, + { + "id": "Reserved1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "Reserved2_0", + "deprecated_names": ["reserve2_0"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "Reserved2_1", + "deprecated_names": ["reserve2_1"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "Reserved2_2", + "deprecated_names": ["reserve2_2"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "Reserved2_3", + "deprecated_names": ["reserve2_3"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "Reserved2_4", + "deprecated_names": ["reserve2_4"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "Reserved2_5", + "deprecated_names": ["reserve2_5"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "Reserved2_6", + "deprecated_names": ["reserve2_6"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "Reserved2_7", + "deprecated_names": ["reserve2_7"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "Reserved2_8", + "deprecated_names": ["reserve2_8"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "Reserved2_9", + "deprecated_names": ["reserve2_9"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/fuses.json new file mode 100644 index 0000000..3415167 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/fuses.json @@ -0,0 +1,236 @@ +{ + "cpu": "LPC55S36", + "groups": [ + { + "group": { + "name": "LC_STATE", + "description": "Device life cycle state, only the lowest 8 bits are valid." + }, + "registers": [ + { + "id": "fuse0", + "name": "LC_STATE", + "description": "Device life cycle state. \nLife-cycle state provided to SYSCON block to distribute it to CSS and PUF ports to implement implicit security on the device.", + "index_int": "0", + "default_value_int": "0x0003", + "bitfields": [ + { + "width": 8, + "id": "fuse0-bits-0-7", + "name": "LC_STATE", + "description": "OTP life cycle state LC_STATE[7:0].", + "values": [ + { + "name": "BLANK", + "value": 0, + "description": "Blank = State of the device before doing any wafer or package testing." + }, + { + "name": "FAB", + "value": 1, + "description": "Fab = Initial state in NXP factory." + }, + { + "name": "DEVELOP", + "value": 3, + "description": "Develop = Initial customer development state after leaving NXP manufacturing." + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Develop2 = Optional customer development state. Used for development of NS world code." + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field = In-field application state for end-customer use." + }, + { + "name": "FIELD_RETURN", + "value": 31, + "description": "Field Return OEM = Field return state." + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "Failure analysis (FA) = NXP field return state (CQC)." + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "In-field Locked = Alternative in-field application state that prevents use of field return/failure analysis states. The rest of the behavior of the device is same as the In-field state." + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked = Bricked state to prevent device use." + } + ] + }, + { + "width": 24 + } + ] + } + ] + }, + { + "group": { + "name": "CMPA_CRC", + "description": "CMPA CRC check value." + }, + "registers": [ + { + "id": "fuse1", + "name": "CMPA_CRC", + "description": "CRC32 of CMPA fields. \n- For secure parts used during deep power-down wake before using the fields in CMPA area.", + "index_int": "0x0001" + } + ] + }, + { + "group": { + "name": "CMPA_CMAC", + "description": "CMAC of CMPA pages.\nUsed by secure parts during cold & warm boots.\nWake up from deep-power down mode CMPA_CRC is used." + }, + "registers": [ + { + "id": "fuse2", + "name": "CMPA_CMAC0", + "description": "CMPA CMA check value word 0.", + "index_int": "0x0002" + }, + { + "id": "fuse3", + "name": "CMPA_CMAC1", + "description": "CMPA CMA check value word 1.", + "index_int": "0x0003" + }, + { + "id": "fuse4", + "name": "CMPA_CMAC2", + "description": "CMPA CMA check value word 2.", + "index_int": "0x0004" + }, + { + "id": "fuse5", + "name": "CMPA_CMAC3", + "description": "CMPA CMA check value word 3.", + "index_int": "0x0005" + } + ] + }, + { + "group": { + "name": "SECBOOT_CFG", + "description": "Secure boot configure, only the lowest 8 bits are valid." + }, + "registers": [ + { + "id": "fuse6", + "name": "SECBOOT_CFG", + "description": "Secure boot configuration.", + "index_int": "0x0006", + "bitfields": [ + { + "width": 1, + "id": "fuse6-bit-0", + "name": "RoTK0_dis", + "description": "Revoke RoTK0 key." + }, + { + "width": 1, + "id": "fuse6-bit-1", + "name": "RoTK1_dis", + "description": "Revoke RoTK1 key." + }, + { + "width": 1, + "id": "fuse6-bit-2", + "name": "RoTK2_dis", + "description": "Revoke RoTK2 key." + }, + { + "width": 1, + "id": "fuse6-bit-3", + "name": "RoTK3_dis", + "description": "Revoke RoTK3 key." + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-5", + "name": "EN_CNSA", + "description": "Enforce CNSA suite for secure boot, FW update and debug authentication." + }, + { + "width": 1, + "id": "fuse6-bit-6", + "name": "EN_ECDSA", + "description": "Enforce ECDSA signature verify on every boot." + }, + { + "width": 1, + "id": "fuse6-bit-7", + "name": "EN_CMAC", + "description": "Enforce CMPA CMAC checking on low-power wake." + }, + { + "width": 24 + } + ] + } + ] + }, + { + "group": { + "name": "CUSTOMER_WORDS", + "description": "Customer words area." + }, + "registers": [ + { + "id": "fuse7", + "name": "CUSTOMER_WORD0", + "description": "Customer use word 0.", + "index_int": "0x0007" + }, + { + "id": "fuse8", + "name": "CUSTOMER_WORD1", + "description": "Customer use word 1, only the lowest 8 bits are valid.", + "index_int": "0x0008", + "bitfields": [ + { + "width": 8, + "id": "fuse8-bits-0-7", + "name": "CUSTOMER_WORD1", + "description": "Customer use word 1." + }, + { + "width": 24 + } + ] + }, + { + "id": "fuse9", + "name": "CUSTOMER_WORD2", + "description": "Customer use word 2, only the lowest 8 bits are valid.", + "index_int": "0x0009", + "bitfields": [ + { + "width": 8, + "id": "fuse9-bits-0-7", + "name": "CUSTOMER_WORD2", + "description": "Customer use word 2." + }, + { + "width": 24 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cfpa_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cfpa_a0.json new file mode 100644 index 0000000..0bfc4b2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cfpa_a0.json @@ -0,0 +1,1710 @@ +{ + "cpu": "LPC55S36", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "Header", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field004", + "name": "CFPA_PAGE_VERSION", + "description": "CFPA Page Version", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "Secure_FW_Version", + "description": "Secure Firmware Version (Monotonic counter)", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure Firmware Version (Monotonic counter)", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "IMAGE_KEY_REVOKE", + "description": "Image Key Revocation ID (Monotonic counter)", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field014", + "name": "MCTR_INT_IV_CTR0", + "description": "Erase count for internal Prince region 0 (Monotonic counter)", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "MCTR_INT_IV_CTR1", + "description": "Erase count for internal Prince region 1 (Monotonic counter)", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field01C", + "name": "MCTR_INT_IV_CTR2", + "description": "Erase count for internal Prince region 2 (Monotonic counter)", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field020", + "name": "IPED_IV_CTR0", + "description": "Erase count for external Prince region 0 (Monotonic counter)", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field024", + "name": "IPED_IV_CTR1", + "description": "Erase count for external Prince region 1 (Monotonic counter)", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field028", + "name": "IPED_IV_CTR2", + "description": "Erase count for external Prince region 2 (Monotonic counter)", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "IPED_IV_CTR3", + "description": "Erase count for external Prince region 3 (Monotonic counter)", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "MCTR_CUST_CTR0", + "description": "Customer defined Monotonic counter 0.", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field034", + "name": "MCTR_CUST_CTR1", + "description": "Customer defined Monotonic counter 1.", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field038", + "name": "MCTR_CUST_CTR2", + "description": "Customer defined Monotonic counter 2.", + "offset_int": "0x0038", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "MCTR_CUST_CTR3", + "description": "Customer defined Monotonic counter 3.", + "offset_int": "0x003C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field040", + "name": "MCTR_CUST_CTR4", + "description": "Customer defined Monotonic counter 4.", + "offset_int": "0x0040", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field044", + "name": "MCTR_CUST_CTR5", + "description": "Customer defined Monotonic counter 5.", + "offset_int": "0x0044", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field048", + "name": "MCTR_CUST_CTR6", + "description": "Customer defined Monotonic counter 6.", + "offset_int": "0x0048", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field04C", + "name": "MCTR_CUST_CTR7", + "description": "Customer defined Monotonic counter 7.", + "offset_int": "0x004C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field050", + "name": "ROTKH_REVOKE", + "description": "Root of Trust Key Hash Revoke", + "offset_int": "0x0050", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field050-bits0-1", + "name": "RoTK0_EN", + "description": "Root of Trust Key 0 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_0", + "value": 2, + "description": "Key Revoked" + }, + { + "name": "KEY_REVOKED_1", + "value": 3, + "description": "Key Revoked" + } + ] + }, + { + "width": 2, + "id": "field050-bits2-3", + "name": "RoTK1_EN", + "description": "Root of Trust Key 1 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_0", + "value": 2, + "description": "Key Revoked" + }, + { + "name": "KEY_REVOKED_1", + "value": 3, + "description": "Key Revoked" + } + ] + }, + { + "width": 2, + "id": "field050-bits4-5", + "name": "RoTK2_EN", + "description": "Root of Trust Key 2 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_0", + "value": 2, + "description": "Key Revoked" + }, + { + "name": "KEY_REVOKED_1", + "value": 3, + "description": "Key Revoked" + } + ] + }, + { + "width": 2, + "id": "field050-bits6-7", + "name": "RoTK3_EN", + "description": "Root of Trust Key 3 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_0", + "value": 2, + "description": "Key Revoked" + }, + { + "name": "KEY_REVOKED_1", + "value": 3, + "description": "Key Revoked" + } + ] + }, + { + "width": 8 + }, + { + "width": 2, + "id": "field050-bits16-17", + "name": "DICE_SKIP_CSR", + "description": "DICE Skip CSR", + "values": [ + { + "name": "GENERATE_CSR", + "value": 0, + "description": "Generate CSR" + }, + { + "name": "SKIP_CSR", + "value": 1, + "description": "Skip CSR" + } + ] + }, + { + "width": 14 + } + ] + }, + { + "id": "field054", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0054", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field054-bits0-15", + "name": "DBG_VENDOR_USAGE", + "description": "Debug Vendor Usage" + }, + { + "width": 16, + "id": "field054-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field058", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned", + "offset_int": "0x0058", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field058-bit0", + "name": "NIDEN", + "description": "Non-secure Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit2", + "name": "SPNIDEN", + "description": "Secure Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit3", + "name": "SPIDEN", + "description": "Secure Invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field058-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 6 + }, + { + "width": 1, + "id": "field058-bit15", + "name": "UUID_CHECK", + "description": "UUID Check", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field058-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value of Bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field05C", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter", + "offset_int": "0x005C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field05C-bit0", + "name": "NIDEN", + "description": "Non-secure Non-invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit2", + "name": "SPNIDEN", + "description": "Secure Non-invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit3", + "name": "SPIDEN", + "description": "Secure Invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field05C-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 7 + }, + { + "width": 16, + "id": "field05C-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field060", + "name": "ENABLE_FA_MODE", + "description": "Enable FA Mode. SET_FA_MODE Command should write 0xC33CA55A to this word to indicate boot ROM to enter FA mode.", + "offset_int": "0x0060", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "CMPA_PROG_IN_PROGRESS", + "description": "CMPA Page Programming On Going. Set this field to 0x5CC55AA5 in the active CFPA page each time CMPA page programming is going on. It shall always be set to 0x00000000 in the CFPA scratch area.", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "CMAC_UPD", + "description": "CMAC Update", + "offset_int": "0x0068", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field068-bits0-1", + "name": "IMG_UPD", + "description": "Image Updated", + "values": [ + { + "name": "NOTHING_CHANGED", + "value": 0, + "description": "Nothing changed" + }, + { + "name": "IMAGE0_CMAC_UPDATE", + "value": 1, + "description": "Update image 0 CMAC" + }, + { + "name": "IMAGE1_CMAC_UPDATE", + "value": 2, + "description": "Update image 1 CMAC" + }, + { + "name": "BOTH_IMG_CMAC_UPDATE", + "value": 3, + "description": "Update CMAC for both images" + } + ] + }, + { + "width": 3, + "id": "field068-bits2-4", + "name": "CMPA_UPD", + "description": "CMPA page updated through ROM API. Thus compute CMAC on sub-sequent boot. This field is checked only in OEM_OPEN (0x3) LC state.", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "UPDATE_IN_CMPA", + "value": 2, + "description": "Update CMAC field in CMPA page." + }, + { + "name": "TO_OEM_SECURE", + "value": 3, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to OEM_SECURE (0x7)." + }, + { + "name": "TO_OEM_CLOSED", + "value": 5, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to OEM_CLOSED (0xF)." + }, + { + "name": "TO_OEM_LOCKED", + "value": 6, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to OEM_LOCKED (0xCF)." + } + ] + }, + { + "width": 27 + } + ] + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field070", + "name": "IMG0_CMAC0", + "description": "Image 0 CMAC 0", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "IMG0_CMAC1", + "description": "Image 0 CMAC 1", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "IMG0_CMAC2", + "description": "Image 0 CMAC 2", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "IMG0_CMAC3", + "description": "Image 0 CMAC 3", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field080", + "name": "IMG1_CMAC0", + "description": "Image 1 CMAC 0", + "offset_int": "0x0080", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "IMG1_CMAC1", + "description": "Image 1 CMAC 1", + "offset_int": "0x0084", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "IMG1_CMAC2", + "description": "Image 1 CMAC 2", + "offset_int": "0x0088", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "IMG1_CMAC3", + "description": "Image 1 CMAC 3", + "offset_int": "0x008C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00090-001E8", + "description": "Reserved 00090-001E8" + }, + "registers": [ + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00100", + "name": "Reserved 0x00100", + "description": "This field is reserved for internal use", + "offset_int": "0x0100", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00104", + "name": "Reserved 0x00104", + "description": "This field is reserved for internal use", + "offset_int": "0x0104", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00108", + "name": "Reserved 0x00108", + "description": "This field is reserved for internal use", + "offset_int": "0x0108", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00110", + "name": "Reserved 0x00110", + "description": "This field is reserved for internal use", + "offset_int": "0x0110", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00120", + "name": "Reserved 0x00120", + "description": "This field is reserved for internal use", + "offset_int": "0x0120", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00130", + "name": "Reserved 0x00130", + "description": "This field is reserved for internal use", + "offset_int": "0x0130", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00134", + "name": "Reserved 0x00134", + "description": "This field is reserved for internal use", + "offset_int": "0x0134", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00138", + "name": "Reserved 0x00138", + "description": "This field is reserved for internal use", + "offset_int": "0x0138", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0013C", + "name": "Reserved 0x0013C", + "description": "This field is reserved for internal use", + "offset_int": "0x013C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00140", + "name": "Reserved 0x00140", + "description": "This field is reserved for internal use", + "offset_int": "0x0140", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00144", + "name": "Reserved 0x00144", + "description": "This field is reserved for internal use", + "offset_int": "0x0144", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00148", + "name": "Reserved 0x00148", + "description": "This field is reserved for internal use", + "offset_int": "0x0148", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0014C", + "name": "Reserved 0x0014C", + "description": "This field is reserved for internal use", + "offset_int": "0x014C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00150", + "name": "Reserved 0x00150", + "description": "This field is reserved for internal use", + "offset_int": "0x0150", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00154", + "name": "Reserved 0x00154", + "description": "This field is reserved for internal use", + "offset_int": "0x0154", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00158", + "name": "Reserved 0x00158", + "description": "This field is reserved for internal use", + "offset_int": "0x0158", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0015C", + "name": "Reserved 0x0015C", + "description": "This field is reserved for internal use", + "offset_int": "0x015C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00160", + "name": "Reserved 0x00160", + "description": "This field is reserved for internal use", + "offset_int": "0x0160", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00164", + "name": "Reserved 0x00164", + "description": "This field is reserved for internal use", + "offset_int": "0x0164", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00168", + "name": "Reserved 0x00168", + "description": "This field is reserved for internal use", + "offset_int": "0x0168", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0016C", + "name": "Reserved 0x0016C", + "description": "This field is reserved for internal use", + "offset_int": "0x016C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00170", + "name": "Reserved 0x00170", + "description": "This field is reserved for internal use", + "offset_int": "0x0170", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00174", + "name": "Reserved 0x00174", + "description": "This field is reserved for internal use", + "offset_int": "0x0174", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00178", + "name": "Reserved 0x00178", + "description": "This field is reserved for internal use", + "offset_int": "0x0178", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0017C", + "name": "Reserved 0x0017C", + "description": "This field is reserved for internal use", + "offset_int": "0x017C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00180", + "name": "Reserved 0x00180", + "description": "This field is reserved for internal use", + "offset_int": "0x0180", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00184", + "name": "Reserved 0x00184", + "description": "This field is reserved for internal use", + "offset_int": "0x0184", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00188", + "name": "Reserved 0x00188", + "description": "This field is reserved for internal use", + "offset_int": "0x0188", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0018C", + "name": "Reserved 0x0018C", + "description": "This field is reserved for internal use", + "offset_int": "0x018C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00190", + "name": "Reserved 0x00190", + "description": "This field is reserved for internal use", + "offset_int": "0x0190", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00194", + "name": "Reserved 0x00194", + "description": "This field is reserved for internal use", + "offset_int": "0x0194", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00198", + "name": "Reserved 0x00198", + "description": "This field is reserved for internal use", + "offset_int": "0x0198", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0019C", + "name": "Reserved 0x0019C", + "description": "This field is reserved for internal use", + "offset_int": "0x019C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001A0", + "name": "Reserved 0x001A0", + "description": "This field is reserved for internal use", + "offset_int": "0x01A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001A4", + "name": "Reserved 0x001A4", + "description": "This field is reserved for internal use", + "offset_int": "0x01A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001A8", + "name": "Reserved 0x001A8", + "description": "This field is reserved for internal use", + "offset_int": "0x01A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001AC", + "name": "Reserved 0x001AC", + "description": "This field is reserved for internal use", + "offset_int": "0x01AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "CRC32", + "description": "CRC32 fields" + }, + "registers": [ + { + "id": "field1EC", + "name": "CFPA_CRC32", + "description": "CFPA CRC32", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "CFPA0_CMAC0", + "description": "CFPA0 CMAC 0", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "CFPA0_CMAC1", + "description": "CFPA0 CMAC 1", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "CFPA0_CMAC2", + "description": "CFPA0 CMAC 2", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "CFPA0_CMAC3", + "description": "CFPA0 CMAC 3", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cfpa_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cfpa_a1.json new file mode 100644 index 0000000..583cf84 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cfpa_a1.json @@ -0,0 +1,1723 @@ +{ + "cpu": "lpc55s36", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "Header", + "description": "Header", + "offset_int": "0", + "default_value_int": "0" + }, + { + "id": "field004", + "name": "CFPA_PAGE_Version", + "description": "CFPA Page Version. Write '0xFFFF_FFFF' to auto increment current CFPA page version value (by ROM).", + "offset_int": "0x0004", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field008", + "name": "S_FW_Version", + "description": "Secure Firmware Version (Monotonic counter)", + "offset_int": "0x0008", + "default_value_int": "0" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure Firmware Version (Monotonic counter)", + "offset_int": "0x000C", + "default_value_int": "0" + }, + { + "id": "field010", + "name": "IMAGE_KEY_REVOKE", + "description": "Image Key Revocation ID (Monotonic counter)", + "offset_int": "0x0010", + "default_value_int": "0" + }, + { + "id": "field014", + "name": "MCTR_INT_IV_CTR0", + "description": "Erase count for internal Prince region 0 (Monotonic counter). Write '0' to reset the counter; write '0xFFFF_FFFF' to avoid any change.", + "offset_int": "0x0014", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field018", + "name": "MCTR_INT_IV_CTR1", + "description": "Erase count for internal Prince region 1 (Monotonic counter). Write '0' to reset the counter; write '0xFFFF_FFFF' to avoid any change.", + "offset_int": "0x0018", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field01C", + "name": "MCTR_INT_IV_CTR2", + "description": "Erase count for internal Prince region 2 (Monotonic counter). Write '0' to reset the counter; write '0xFFFF_FFFF' to avoid any change.", + "offset_int": "0x001C", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field020", + "name": "IPED_IV_CTR0", + "description": "Erase count for external Prince region 0 (Monotonic counter). Write '0' to reset the counter; write '0xFFFF_FFFF' to avoid any change.", + "offset_int": "0x0020", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field024", + "name": "IPED_IV_CTR1", + "description": "Erase count for external Prince region 1 (Monotonic counter). Write '0' to reset the counter; write '0xFFFF_FFFF' to avoid any change.", + "offset_int": "0x0024", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field028", + "name": "IPED_IV_CTR2", + "description": "Erase count for external Prince region 2 (Monotonic counter). Write '0' to reset the counter; write '0xFFFF_FFFF' to avoid any change.", + "offset_int": "0x0028", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field02C", + "name": "IPED_IV_CTR3", + "description": "Erase count for external Prince region 3 (Monotonic counter). Write '0' to reset the counter; write '0xFFFF_FFFF' to avoid any change.", + "offset_int": "0x002C", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field030", + "name": "MCTR_CUST_CTR0", + "description": "Customer defined Monotonic counter 0.", + "offset_int": "0x0030", + "default_value_int": "0" + }, + { + "id": "field034", + "name": "MCTR_CUST_CTR1", + "description": "Customer defined Monotonic counter 1.", + "offset_int": "0x0034", + "default_value_int": "0" + }, + { + "id": "field038", + "name": "MCTR_CUST_CTR2", + "description": "Customer defined Monotonic counter 2.", + "offset_int": "0x0038", + "default_value_int": "0" + }, + { + "id": "field03C", + "name": "MCTR_CUST_CTR3", + "description": "Customer defined Monotonic counter 3.", + "offset_int": "0x003C", + "default_value_int": "0" + }, + { + "id": "field040", + "name": "MCTR_CUST_CTR4", + "description": "Customer defined Monotonic counter 4.", + "offset_int": "0x0040", + "default_value_int": "0" + }, + { + "id": "field044", + "name": "MCTR_CUST_CTR5", + "description": "Customer defined Monotonic counter 5.", + "offset_int": "0x0044", + "default_value_int": "0" + }, + { + "id": "field048", + "name": "MCTR_CUST_CTR6", + "description": "Customer defined Monotonic counter 6.", + "offset_int": "0x0048", + "default_value_int": "0" + }, + { + "id": "field04C", + "name": "MCTR_CUST_CTR7", + "description": "Customer defined Monotonic counter 7.", + "offset_int": "0x004C", + "default_value_int": "0" + }, + { + "id": "field050", + "name": "ROTKH_REVOKE", + "description": "Root of Trust Key Hash Revoke", + "offset_int": "0x0050", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field050-bits0-1", + "name": "RoTK0_EN", + "description": "Root of Trust Key 0 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field050-bits2-3", + "name": "RoTK1_EN", + "description": "Root of Trust Key 1 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field050-bits4-5", + "name": "RoTK2_EN", + "description": "Root of Trust Key 2 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field050-bits6-7", + "name": "RoTK3_EN", + "description": "Root of Trust Key 3 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field050-bits16-17", + "name": "DICE_SKIP_CSR", + "description": "Skip DICE CSR generation", + "values": [ + { + "name": "GENERATE_CSR", + "value": 0, + "description": "Generate CSR" + }, + { + "name": "SKIP_CSR", + "value": 1, + "description": "Skip CSR" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field054", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0054", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field054-bits0-15", + "name": "DBG_VENDOR_USAGE", + "description": "Debug Vendor Usage - Implemented as a monotonic counter field. Whenever a new version of CFPA page is written this field can have the same value or a higher value. It is recommended to use this field to revoke DC certificates issued till that point" + }, + { + "width": 16, + "id": "field054-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field058", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. Combinations of PIN and DFLT bits and resulting restriction level: - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through the debug authentication process by providing an appropriate Debug Credential (DC) certificate. - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. - PIN=1,DFLT=0: Restriction level 2. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0058", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field058-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field058-bit6", + "name": "ISP_CMD_EN", + "description": "ISP boot command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field058-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field058-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field058-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value of Bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field05C", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. Combinations of PIN and DFLT bits and resulting restriction level: - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through the debug authentication process by providing an appropriate Debug Credential (DC) certificate. - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. - PIN=1,DFLT=0: Restriction level 2. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x005C", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field05C-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit1", + "name": "DBGEN", + "description": "Non Secure debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field05C-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field05C-bit8", + "name": "ME_CMD_EN", + "description": "Mass erase flash command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 16, + "id": "field05C-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field060", + "name": "ENABLE_FA_MODE", + "description": "Enable FA Mode. SET_FA_MODE Command should write 0xC33CA55A to this word to indicate boot ROM to enter FA mode.", + "offset_int": "0x0060", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "CMPA_PROG_IN_PROGRESS", + "description": "CMPA Page Programming On Going. Set this field to 0x5CC55AA5 in the active CFPA page each time CMPA page programming is going on. It shall always be set to 0x00000000 in the CFPA scratch area.", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field068", + "name": "CMAC_UPD", + "description": "CMAC Update", + "offset_int": "0x0068", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field068-bits0-1", + "name": "IMG_UPD", + "description": "Image updated", + "values": [ + { + "name": "NOTHING_CHANGED", + "value": 0, + "description": "Nothing changed" + }, + { + "name": "IMAGE0_CMAC_UPDATE", + "value": 1, + "description": "Update image 0 CMAC" + }, + { + "name": "IMAGE1_CMAC_UPDATE", + "value": 2, + "description": "Update image 1 CMAC" + }, + { + "name": "BOTH_IMG_CMAC_UPDATE", + "value": 3, + "description": "Update CMAC for both images" + } + ] + }, + { + "width": 3, + "id": "field068-bits2-4", + "name": "CMPA_UPD", + "description": "CMPA page updated through ROM API. Thus compute CMAC on sub-sequent boot. This field is checked only in OEM_OPEN (0x3) LC state", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "UPDATE_IN_CMPA", + "value": 2, + "description": "Update CMAC field in CMPA page" + }, + { + "name": "TO_OEM_SECURE", + "value": 3, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to OEM_SECURE (0x7)" + }, + { + "name": "TO_OEM_CLOSED", + "value": 5, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to OEM_CLOSED (0xF)" + }, + { + "name": "TO_OEM_LOCKED", + "value": 6, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to OEM_LOCKED (0xCF)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field070", + "name": "IMG0_CMAC0", + "description": "Image 0 CMAC 0", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field074", + "name": "IMG0_CMAC1", + "description": "Image 0 CMAC 1", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field078", + "name": "IMG0_CMAC2", + "description": "Image 0 CMAC 2", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field07C", + "name": "IMG0_CMAC3", + "description": "Image 0 CMAC 3", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field080", + "name": "IMG1_CMAC0", + "description": "Image 1 CMAC 0", + "offset_int": "0x0080", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "IMG1_CMAC1", + "description": "Image 1 CMAC 1", + "offset_int": "0x0084", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "IMG1_CMAC2", + "description": "Image 1 CMAC 2", + "offset_int": "0x0088", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "IMG1_CMAC3", + "description": "Image 1 CMAC 3", + "offset_int": "0x008C", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00090-001E8", + "description": "Reserved 00090-001E8" + }, + "registers": [ + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00100", + "name": "Reserved 0x00100", + "description": "This field is reserved for internal use", + "offset_int": "0x0100", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00104", + "name": "Reserved 0x00104", + "description": "This field is reserved for internal use", + "offset_int": "0x0104", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00108", + "name": "Reserved 0x00108", + "description": "This field is reserved for internal use", + "offset_int": "0x0108", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00110", + "name": "Reserved 0x00110", + "description": "This field is reserved for internal use", + "offset_int": "0x0110", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00120", + "name": "Reserved 0x00120", + "description": "This field is reserved for internal use", + "offset_int": "0x0120", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00130", + "name": "Reserved 0x00130", + "description": "This field is reserved for internal use", + "offset_int": "0x0130", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00134", + "name": "Reserved 0x00134", + "description": "This field is reserved for internal use", + "offset_int": "0x0134", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00138", + "name": "Reserved 0x00138", + "description": "This field is reserved for internal use", + "offset_int": "0x0138", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0013C", + "name": "Reserved 0x0013C", + "description": "This field is reserved for internal use", + "offset_int": "0x013C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00140", + "name": "Reserved 0x00140", + "description": "This field is reserved for internal use", + "offset_int": "0x0140", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00144", + "name": "Reserved 0x00144", + "description": "This field is reserved for internal use", + "offset_int": "0x0144", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00148", + "name": "Reserved 0x00148", + "description": "This field is reserved for internal use", + "offset_int": "0x0148", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0014C", + "name": "Reserved 0x0014C", + "description": "This field is reserved for internal use", + "offset_int": "0x014C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00150", + "name": "Reserved 0x00150", + "description": "This field is reserved for internal use", + "offset_int": "0x0150", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00154", + "name": "Reserved 0x00154", + "description": "This field is reserved for internal use", + "offset_int": "0x0154", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00158", + "name": "Reserved 0x00158", + "description": "This field is reserved for internal use", + "offset_int": "0x0158", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0015C", + "name": "Reserved 0x0015C", + "description": "This field is reserved for internal use", + "offset_int": "0x015C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00160", + "name": "Reserved 0x00160", + "description": "This field is reserved for internal use", + "offset_int": "0x0160", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00164", + "name": "Reserved 0x00164", + "description": "This field is reserved for internal use", + "offset_int": "0x0164", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00168", + "name": "Reserved 0x00168", + "description": "This field is reserved for internal use", + "offset_int": "0x0168", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0016C", + "name": "Reserved 0x0016C", + "description": "This field is reserved for internal use", + "offset_int": "0x016C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00170", + "name": "Reserved 0x00170", + "description": "This field is reserved for internal use", + "offset_int": "0x0170", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00174", + "name": "Reserved 0x00174", + "description": "This field is reserved for internal use", + "offset_int": "0x0174", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00178", + "name": "Reserved 0x00178", + "description": "This field is reserved for internal use", + "offset_int": "0x0178", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0017C", + "name": "Reserved 0x0017C", + "description": "This field is reserved for internal use", + "offset_int": "0x017C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00180", + "name": "Reserved 0x00180", + "description": "This field is reserved for internal use", + "offset_int": "0x0180", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00184", + "name": "Reserved 0x00184", + "description": "This field is reserved for internal use", + "offset_int": "0x0184", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00188", + "name": "Reserved 0x00188", + "description": "This field is reserved for internal use", + "offset_int": "0x0188", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0018C", + "name": "Reserved 0x0018C", + "description": "This field is reserved for internal use", + "offset_int": "0x018C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00190", + "name": "Reserved 0x00190", + "description": "This field is reserved for internal use", + "offset_int": "0x0190", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00194", + "name": "Reserved 0x00194", + "description": "This field is reserved for internal use", + "offset_int": "0x0194", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00198", + "name": "Reserved 0x00198", + "description": "This field is reserved for internal use", + "offset_int": "0x0198", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0019C", + "name": "Reserved 0x0019C", + "description": "This field is reserved for internal use", + "offset_int": "0x019C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A0", + "name": "Reserved 0x001A0", + "description": "This field is reserved for internal use", + "offset_int": "0x01A0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A4", + "name": "Reserved 0x001A4", + "description": "This field is reserved for internal use", + "offset_int": "0x01A4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A8", + "name": "Reserved 0x001A8", + "description": "This field is reserved for internal use", + "offset_int": "0x01A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001AC", + "name": "Reserved 0x001AC", + "description": "This field is reserved for internal use", + "offset_int": "0x01AC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CRC32", + "description": "CRC32 fields" + }, + "registers": [ + { + "id": "field1EC", + "name": "CFPA_CRC32", + "description": "CFPA CRC32", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F0", + "name": "CFPA0_CMAC0", + "description": "cfpa0 cmac", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F4", + "name": "CFPA0_CMAC1", + "description": "CFPA0 CMAC1", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F8", + "name": "CFPA0_CMAC2", + "description": "CFPA0 CMAC2", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1FC", + "name": "CFPA0_CMAC3", + "description": "CFPA0 CMAC3", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cmpa_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cmpa_a0.json new file mode 100644 index 0000000..4d84349 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cmpa_a0.json @@ -0,0 +1,3191 @@ +{ + "cpu": "LPC55S36", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field000-bits0-2", + "name": "DEFAULT_BOOT_SOURCE", + "description": "Default Boot Source", + "values": [ + { + "name": "ISP_PIN", + "value": 0, + "description": "ISP pin source" + }, + { + "name": "FLEXSPI_FLASH", + "value": 1, + "description": "FlexSPI flash" + }, + { + "name": "SERIAL_ISP_BOOT", + "value": 2, + "description": "Serial ISP boot" + }, + { + "name": "INTERNAL_FLASH", + "value": 3, + "description": "Internal Flash" + }, + { + "name": "AUTO_BOOT", + "value": 4, + "description": "Auto boot similar to ISP" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "USB_HID_MSC", + "value": 1, + "description": "USB HID MSC" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "CAN_ISP", + "value": 5, + "description": "CAN ISP" + }, + { + "name": "DISBL_ISP_FALLTHRU", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Boot Speed Core Clock", + "values": [ + { + "name": "SYS_SPD_CODE", + "value": 0, + "description": "Defined by NMPA[SYSTEM_SPEED_CODE]" + }, + { + "name": "HHZ96_FRO", + "value": 1, + "description": "96MHz FRO" + }, + { + "name": "MHZ48_FRO", + "value": 2, + "description": "48MHz FRO" + } + ] + }, + { + "width": 10 + }, + { + "width": 2, + "id": "field000-bits19-20", + "name": "ITRC_ZEROIZE", + "description": "ITRC_ZEROIZE", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "PKC_RAM", + "value": 1, + "description": "Zeroize PKC RAM" + }, + { + "name": "A0_RAM", + "value": 2, + "description": "Zeroize low power RAM (AO_RAM)" + }, + { + "name": "BOTH_A0_AND_PKC_RAM", + "value": 3, + "description": "Zeroize both AO_RAM and PKC_RAM" + } + ] + }, + { + "width": 1, + "id": "field000-bit21", + "name": "ASRT_FATAL", + "description": "ASRT_FATAL" + }, + { + "width": 1, + "id": "field000-bit22", + "name": "ASRT_RBF", + "description": "ASRT_RBF" + }, + { + "width": 1, + "id": "field000-bit23", + "name": "ASRT_ISPF", + "description": "ASRT_ISPF" + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "Boot Failure Pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_CAN_CFG", + "description": "SPI CAN Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field004-bits0-1", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI Recovery Boot Enable" + }, + { + "width": 3, + "id": "field004-bits2-4", + "name": "SPI_REC_IF", + "description": "SPI Recovery Interface", + "values": [ + { + "name": "HSPI", + "value": 0, + "description": "HSPI P1_3-MISO, P0_26-MOSI, P1_1-SSEL1, P1_2-SCK" + }, + { + "name": "FC0", + "value": 1, + "description": "FC0 P0_30-MISO, P0_24-MOSI, P0_31-SSEL0, P0_28-SCK" + }, + { + "name": "FC3", + "value": 2, + "description": "FC3 P0_2-MISO, P0_3-MOSI, P0_4-SSEL0, P0_6-SCK" + }, + { + "name": "FC1", + "value": 3, + "description": "FC1 P2_4-MISO, P2_3-MOSI, P2_5-SSEL0, P1_9-SCK" + } + ] + }, + { + "width": 11 + }, + { + "width": 4, + "id": "field004-bits16-19", + "name": "CAN_BAUD_RATE", + "description": "CAN Baud Rate", + "values": [ + { + "name": "AUTO_BAUD_DETECT", + "value": 0, + "description": "Auto baud detection (125K, 250K, 500K, 1M). Default." + }, + { + "name": "KBPS_10", + "value": 1, + "description": "10 kbp" + }, + { + "name": "KBPS_20", + "value": 2, + "description": "20 kbp" + }, + { + "name": "KBPS_50", + "value": 3, + "description": "50 kbps" + }, + { + "name": "KBPS_125", + "value": 4, + "description": "125 kbps" + }, + { + "name": "KBPS_250", + "value": 5, + "description": "250 kbps" + }, + { + "name": "KBPS_500", + "value": 6, + "description": "500 kbps" + }, + { + "name": "KBPS_800", + "value": 7, + "description": "800 kbps" + }, + { + "name": "KBPS_1000", + "value": 8, + "description": "1,000 kbps" + } + ] + }, + { + "width": 12 + } + ] + }, + { + "id": "field008", + "name": "USB_ID", + "description": "USB Identifiers", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "USB_VENDOR_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "USB_PRODUCT_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMEOUT", + "description": "Boot Timeout", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown Timeout" + }, + { + "width": 16, + "id": "field00C-bits16-31", + "name": "WDOG_TIMEOUT_SECS", + "description": "WDOG Timeout" + } + ] + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non-secure Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SPNIDEN", + "description": "Secure Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "SPIDEN", + "description": "Secure Invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 6 + }, + { + "width": 1, + "id": "field010-bit15", + "name": "UUID_CHECK", + "description": "UUID Check" + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure Non-invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit2", + "name": "SPNIDEN", + "description": "Secure Non-invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit3", + "name": "SPIDEN", + "description": "Secure Invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field014-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 7 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field018", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field018-bits16-31", + "name": "VENDOR_USAGE", + "description": "Vendor Usage [31:16]" + } + ] + }, + { + "id": "field01C", + "name": "SECURE_BOOT_CFG", + "description": "Secure Boot Configuration", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field01C-bits0-1", + "name": "ENF_CNSA", + "description": "Enforce CNSA", + "values": [ + { + "name": "ECC_P256", + "value": 0, + "description": "ECC P-256 keys" + }, + { + "name": "ECC_P384_0", + "value": 1, + "description": "ECC P-384 keys, SHA384 and AES256" + }, + { + "name": "ECC_P384_1", + "value": 2, + "description": "ECC P-384 keys, SHA384 and AES256" + }, + { + "name": "ECC_P384_2", + "value": 3, + "description": "ECC P-384 keys, SHA384 and AES256" + } + ] + }, + { + "width": 2, + "id": "field01C-bits2-3", + "name": "DICE_INC_NXP_CFG", + "description": "DICE Include NXP Configuration", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "Included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "Included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "Included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits4-5", + "name": "DICE_CUST_CFG", + "description": "DICE Customer Configuration", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "Included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "Included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "Included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits6-7", + "name": "SKIP_DICE", + "description": "Skip DICE computation.", + "values": [ + { + "name": "ENABLE_DICE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_DICE_0", + "value": 1, + "description": "Disable DICE" + }, + { + "name": "DISABLE_DICE_1", + "value": 2, + "description": "Disable DICE" + }, + { + "name": "DISABLE_DICE_2", + "value": 3, + "description": "Disable DICE" + } + ] + }, + { + "width": 2, + "id": "field01C-bits8-9", + "name": "ENF_TZM_PRESET", + "description": "Enforce TrustZone-M Preset", + "values": [ + { + "name": "IGNORE", + "value": 0, + "description": "Ignored" + }, + { + "name": "ENFORCE_0", + "value": 1, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_1", + "value": 2, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_2", + "value": 3, + "description": "Enforce preset TZM data in image manifest." + } + ] + }, + { + "width": 2, + "id": "field01C-bits10-11", + "name": "BLOCK_SET_KEY", + "description": "Block Set Key", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable key code generation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable key code generation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable key code generation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable key code generation" + } + ] + }, + { + "width": 2, + "id": "field01C-bits12-13", + "name": "BLOCK_ENROLL", + "description": "Block Enroll", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable enrollment mode" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable further enrollment" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable further enrollment" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable further enrollment" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field01C-bits16-17", + "name": "FIPS_SHA_STEN", + "description": "FIPS_SHA_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field01C-bits18-19", + "name": "FIPS_AES_STEN", + "description": "FIPS_AES_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field01C-bits20-21", + "name": "FIPS_ECDSA_STEN", + "description": "FIPS_ECDSA_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field01C-bits22-23", + "name": "FIPS_DRBG_STEN", + "description": "FIPS_DRBG_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field01C-bits24-25", + "name": "FIPS_CMAC_STEN", + "description": "FIPS_CMAC_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field01C-bits26-27", + "name": "FIPS_KDF_STEN", + "description": "FIPS_KDF_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field01C-bits30-31", + "name": "SEC_BOOT_EN", + "description": "Secure Boot Enable", + "values": [ + { + "name": "PLAIN_IMAGE", + "value": 0, + "description": "Plain image (internal flash with or without CRC)" + }, + { + "name": "CMAC_CHECK_IMAGE", + "value": 1, + "description": "Do CMAC checking of image." + }, + { + "name": "ECDSA_CHECK_IMAGE_0", + "value": 2, + "description": "Do complete ECDSA checking of signed images. (internal flash, ECDSA signed)" + }, + { + "name": "ECDSA_CHECK_IMAGE_1", + "value": 3, + "description": "Do complete ECDSA checking of signed images. (internal flash, ECDSA signed)" + } + ] + } + ] + }, + { + "id": "field020", + "name": "PRINCE_CONFIG", + "description": "Prince Configuration", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 2, + "id": "field020-bits16-17", + "name": "LOCK_REG0", + "description": "Lock Region 0", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_0", + "value": 1, + "description": "Region is locked." + }, + { + "name": "LOCKED_1", + "value": 2, + "description": "Region is locked." + }, + { + "name": "LOCKED_2", + "value": 3, + "description": "Region is locked." + } + ] + }, + { + "width": 2, + "id": "field020-bits18-19", + "name": "LOCK_REG1", + "description": "Lock Region 1", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_0", + "value": 1, + "description": "Region is locked." + }, + { + "name": "LOCKED_1", + "value": 2, + "description": "Region is locked." + }, + { + "name": "LOCKED_2", + "value": 3, + "description": "Region is locked." + } + ] + }, + { + "width": 2, + "id": "field020-bits20-21", + "name": "LOCK_REG2", + "description": "Lock Region 2", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_0", + "value": 1, + "description": "Region is locked." + }, + { + "name": "LOCKED_1", + "value": 2, + "description": "Region is locked." + }, + { + "name": "LOCKED_2", + "value": 3, + "description": "Region is locked." + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field020-bits24-25", + "name": "REG0_ERASE_CHECK_EN", + "description": "Region 0 Erase Check Enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Check is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Check is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Check is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Check is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits26-27", + "name": "REG1_ERASE_CHECK_EN", + "description": "Region 1 Erase Check Enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Check is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Check is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Check is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Check is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "REG2_ERASE_CHECK_EN", + "description": "Region 2 Erase Check Enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Check is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Check is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Check is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Check is enabled" + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "field024", + "name": "PRINCE_SR_0", + "description": "Region 0, Sub-region Enable", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field028", + "name": "PRINCE_SR_1", + "description": "Region 1, Sub-region Enable", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "PRINCE_SR_2", + "description": "Region 2, Sub-region Enable", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "XTAL_32KHZ_CAPABANK_TRIM", + "description": "Xtal 32kHz Capabank Trimming", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field030-bit0", + "name": "TRIM_VALID", + "description": "Trim Valid", + "values": [ + { + "name": "NOT_VALID", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used." + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid." + } + ] + }, + { + "width": 10, + "id": "field030-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "XTAL LOAD CAP IEC PF X100" + }, + { + "width": 10, + "id": "field030-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN PARA CAP PF X100" + }, + { + "width": 10, + "id": "field030-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT PARA CAP PF X100" + }, + { + "width": 1 + } + ] + }, + { + "id": "field034", + "name": "XTAL_16MHZ_CAPABANK_TRIM", + "description": "Xtal 16MHz Capabank Trimming", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field034-bit0", + "name": "TRIM_VALID", + "description": "Trim Valid", + "values": [ + { + "name": "NOT_VALID", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used." + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid." + } + ] + }, + { + "width": 10, + "id": "field034-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "XTAL LOAD CAP IEC PF X100" + }, + { + "width": 10, + "id": "field034-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN PARA CAP PF X100" + }, + { + "width": 10, + "id": "field034-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT PARA CAP PF X100" + }, + { + "width": 1 + } + ] + }, + { + "id": "field038", + "name": "FLASH_REMAP_SIZE", + "description": "Flash Remap Size", + "offset_int": "0x0038", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "FLASH_REMAP_OFFSET", + "description": "Flash Remap Offset", + "offset_int": "0x003C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field040", + "name": "PRINCE_XOM_0", + "description": "Prince eXecute-Only-Memory (XOM) 0", + "offset_int": "0x0040", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field044", + "name": "PRINCE_XOM_1", + "description": "Prince eXecute-Only-Memory (XOM) 1", + "offset_int": "0x0044", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field048", + "name": "PRINCE_XOM_2", + "description": "Prince eXecute-Only-Memory (XOM) 2", + "offset_int": "0x0048", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field04C", + "name": "RoTK_USAGE", + "description": "Root of Trust Key Usage", + "offset_int": "0x004C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field04C-bits0-2", + "name": "RoTK0_Usage", + "description": "RoTK0_Usage", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_AND_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "IMGKEY_FWUPD_KEY", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "field04C-bits3-5", + "name": "RoTK1_Usage", + "description": "RoTK1_Usage", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_AND_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "IMGKEY_FWUPD_KEY", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "field04C-bits6-8", + "name": "RoTK2_Usage", + "description": "RoTK2_Usage", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_AND_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "IMGKEY_FWUPD_KEY", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "field04C-bits9-11", + "name": "RoTK3_Usage", + "description": "RoTK3_Usage", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_AND_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "IMGKEY_FWUPD_KEY", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 20 + } + ] + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field050", + "name": "ROTKH0", + "description": "Root of Trust Key Hash 0", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "ROTKH1", + "description": "Root of Trust Key Hash 1", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "ROTKH2", + "description": "Root of Trust Key Hash 2", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "ROTKH3", + "description": "Root of Trust Key Hash 3", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field060", + "name": "ROTKH4", + "description": "Root of Trust Key Hash 4", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "ROTKH5", + "description": "Root of Trust Key Hash 5", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "ROTKH6", + "description": "Root of Trust Key Hash 6", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "ROTKH7", + "description": "Root of Trust Key Hash 7", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field070", + "name": "ROTKH8", + "description": "Root of Trust Key Hash 8", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "ROTKH9", + "description": "Root of Trust Key Hash 9", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "ROTKH10", + "description": "Root of Trust Key Hash 10", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "ROTKH11", + "description": "Root of Trust Key Hash 11", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field080", + "name": "FLEXSPI_BOOT_CFG0", + "description": "FlexSPI Boot Configuration 0", + "offset_int": "0x0080", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field080-bit0", + "name": "FLEXSPI_AUTO_PROBE_EN", + "description": "FLEXSPI_AUTO_PROBE_EN", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 3, + "id": "field080-bits1-3", + "name": "FLEXSPI_PROBE_TYPE", + "description": "FLEXSPI_PROBE_TYPE", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MACRONIX_OCTAL_FLASH", + "value": 1, + "description": "Macronix Octal FLASH" + }, + { + "name": "MICRON_OCTAL_FLASH", + "value": 2, + "description": "Micron Octal FLASH" + }, + { + "name": "ADESTO_OCTAL_FLASH", + "value": 3, + "description": "Adesto Octal FLASH" + } + ] + }, + { + "width": 3, + "id": "field080-bits4-6", + "name": "FLEXSPI_FLASH_TYPE", + "description": "FLEXSPI_FLASH_TYPE", + "values": [ + { + "name": "QSPI_ADDR_3B", + "value": 0, + "description": "QSPI_ADDR_3B" + }, + { + "name": "HYPER_1V8", + "value": 2, + "description": "HYPER_1V8" + }, + { + "name": "HYPER_3V3", + "value": 3, + "description": "HYPER_3V3" + }, + { + "name": "FlexSPI_DDR_MXIC", + "value": 4, + "description": "FlexSPI_DDR_MXIC" + }, + { + "name": "FlexSPI_DDR_MICRON", + "value": 5, + "description": "FlexSPI_DDR_MICRON" + } + ] + }, + { + "width": 4, + "id": "field080-bits7-10", + "name": "FLEXSPI_DUMMY_CYCLES", + "description": "FLEXSPI_DUMMY_CYCLES" + }, + { + "width": 3, + "id": "field080-bits11-13", + "name": "FLEXSPI_FREQUENCY", + "description": "FLEXSPI_FREQUENCY", + "values": [ + { + "name": "MHZ_50", + "value": 0, + "description": "50 Mhz" + }, + { + "name": "MHZ_60", + "value": 1, + "description": "60 Mhz" + }, + { + "name": "MHZ_80", + "value": 2, + "description": "80 Mhz" + }, + { + "name": "MHZ_100", + "value": 3, + "description": "100 Mhz" + }, + { + "name": "MHZ_120", + "value": 4, + "description": "120 Mhz" + }, + { + "name": "MHZ_133", + "value": 5, + "description": "133 Mhz" + }, + { + "name": "MHZ_166", + "value": 6, + "description": "166 Mhz" + }, + { + "name": "MHZ_200", + "value": 7, + "description": "200 Mhz" + } + ] + }, + { + "width": 1, + "id": "field080-bit14", + "name": "FLEXSPI_RESET_ENABLE", + "description": "FLEXSPI_RESET_ENABLE", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "No Reset(O/QSPI device reset pin is not connected or available.)" + }, + { + "name": "ENABLE_RESET", + "value": 1, + "description": "Enable Reset(O/QSPI device reset pin is connected to a GPIO (QSPI_RESET_PIN).)" + } + ] + }, + { + "width": 3, + "id": "field080-bits15-17", + "name": "FLEXSPI_RESET_GPIO_PORT", + "description": "FLEXSPI_RESET_ENABLE" + }, + { + "width": 5, + "id": "field080-bits18-22", + "name": "FLEXSPI_RESET_GPIO_PIN", + "description": "FLEXSPI_RESET_GPIO_PIN" + }, + { + "width": 2, + "id": "field080-bits23-24", + "name": "FLEXSPI_HOLD_TIME", + "description": "FLEXSPI_HOLD TIME", + "values": [ + { + "name": "WAIT_500_MICROSECS", + "value": 0, + "description": "Wait for 500 micro seconds" + }, + { + "name": "WAIT_1_MILISECS", + "value": 1, + "description": "Wait for 1 mili seconds" + }, + { + "name": "WAIT_3_MILISECS", + "value": 2, + "description": "Wait for 3 mili seconds" + }, + { + "name": "WAIT_10_MILISECS", + "value": 3, + "description": "Wait for 10 mili seconds" + } + ] + }, + { + "width": 4, + "id": "field080-bits25-28", + "name": "FLEXSPI_PWR_HOLD_TIME", + "description": "FLEXSPI_PWR_HOLD_TIME", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No delay" + }, + { + "name": "WAIT_100_MICROSECS", + "value": 1, + "description": "Waits additional 100 micro-seconds." + }, + { + "name": "WAIT_500_MICROSECS", + "value": 2, + "description": "Waits additional 500 micro-seconds." + }, + { + "name": "WAIT_1_MILISECS", + "value": 3, + "description": "Waits additional 1 mili-seconds." + }, + { + "name": "WAIT_10_MILISECS", + "value": 4, + "description": "Waits additional 10 mili-seconds." + }, + { + "name": "WAIT_20_MILISECS", + "value": 5, + "description": "Waits additional 20 mili-seconds." + }, + { + "name": "WAIT_40_MILISECS", + "value": 6, + "description": "Waits additional 40 mili-seconds." + }, + { + "name": "WAIT_60_MILISECS", + "value": 7, + "description": "Waits additional 60 mili-seconds." + }, + { + "name": "WAIT_80_MILISECS", + "value": 8, + "description": "Waits additional 80 mili-seconds." + }, + { + "name": "WAIT_100_MILISECS", + "value": 9, + "description": "Waits additional 100 mili-seconds." + }, + { + "name": "WAIT_120_MILISECS", + "value": 10, + "description": "Waits additional 120 mili-seconds." + }, + { + "name": "WAIT_140_MILISECS", + "value": 11, + "description": "Waits additional 140 mili-seconds." + }, + { + "name": "WAIT_160_MILISECS", + "value": 12, + "description": "Waits additional 160 mili-seconds." + }, + { + "name": "WAIT_180_MILISECS", + "value": 13, + "description": "Waits additional 180 mili-seconds." + }, + { + "name": "WAIT_200_MILISECS", + "value": 14, + "description": "Waits additional 200 mili-seconds." + }, + { + "name": "WAIT_220_MILISECS", + "value": 15, + "description": "Waits additional 220 mili-seconds." + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field084", + "name": "FLEXSPI_BOOT_CFG1", + "description": "FlexSPI Boot Configuration 1", + "offset_int": "0x0084", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 7, + "id": "field084-bits0-6", + "name": "FLEXSPI_DELAY_CELL_NUM", + "description": "FLEXSPI_DELAY_CELL_NUM" + }, + { + "width": 10, + "id": "field084-bits7-16", + "name": "FLEXSPI_IMAGE_OFFSET", + "description": "FLEXSPI_IMAGE_OFFSET" + }, + { + "width": 4, + "id": "field084-bits17-20", + "name": "FLEXSPI_REMAP_IMAGE_SIZE", + "description": "FLEXSPI_REMAP_IMAGE_SIZE", + "values": [ + { + "name": "SIZE", + "value": 0, + "description": "SIZE" + }, + { + "name": "SIZE_1MB", + "value": 1, + "description": "SIZE_1MB Size of remapped area is 1MByte." + }, + { + "name": "SIZE_2MB", + "value": 2, + "description": "SIZE_2MB Size of remapped area is 2MByte." + }, + { + "name": "SIZE_3MB", + "value": 3, + "description": "SIZE_3MB Size of remapped area is 3MByte." + }, + { + "name": "SIZE_4MB", + "value": 4, + "description": "SIZE_4MB Size of remapped area is 4MByte." + }, + { + "name": "SIZE_5MB", + "value": 5, + "description": "SIZE_5MB Size of remapped area is 5MByte." + }, + { + "name": "SIZE_6MB", + "value": 6, + "description": "SIZE_6MB Size of remapped area is 6MByte." + }, + { + "name": "SIZE_7MB", + "value": 7, + "description": "SIZE_7MB Size of remapped area is 7MByte." + }, + { + "name": "SIZE_8MB", + "value": 8, + "description": "SIZE_8MB Size of remapped area is 8MByte." + }, + { + "name": "SIZE_9MB", + "value": 9, + "description": "SIZE_9MB Size of remapped area is 9MByte." + }, + { + "name": "SIZE_10MB", + "value": 10, + "description": "SIZE_10MB Size of remapped area is 10MByte." + }, + { + "name": "SIZE_11MB", + "value": 11, + "description": "SIZE_11MB Size of remapped area is 11MByte." + }, + { + "name": "SIZE_12MB", + "value": 12, + "description": "SIZE_12MB Size of remapped area is 12MByte." + }, + { + "name": "SIZE_256KB", + "value": 13, + "description": "SIZE_256KB Size of remapped area is 256KByte." + }, + { + "name": "SIZE_512KB", + "value": 14, + "description": "SIZE_512KB Size of remapped area is 512KByte." + }, + { + "name": "SIZE_768KB", + "value": 15, + "description": "SIZE_768KB Size of remapped area is 768KByte." + } + ] + }, + { + "width": 11 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00088-0008C", + "description": "Reserved 00088-0008C" + }, + "registers": [ + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "IPED", + "description": "IPED fields" + }, + "registers": [ + { + "id": "field090", + "name": "IPED0_START", + "description": "IPED region 0 Start", + "offset_int": "0x0090", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field090-bits0-1", + "name": "ENABLE_REG0", + "description": "ENABLE_REG0", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLED_AND_LOCKED_0", + "value": 2, + "description": "Region is enabled and locked" + }, + { + "name": "ENABLED_AND_LOCKED_1", + "value": 3, + "description": "Region is enabled and locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field090-bits8-31", + "name": "IPED_REG0_START_ADDR", + "description": "IPED_REG0_START_ADDR" + } + ] + }, + { + "id": "field094", + "name": "IPED0_END", + "description": "IPED region 0 End", + "offset_int": "0x0094", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8 + }, + { + "width": 24, + "id": "field094-bits8-31", + "name": "IPED_REG0_END_ADDR", + "description": "IPED_REG0_END_ADDR" + } + ] + }, + { + "id": "field098", + "name": "IPED1_START", + "description": "IPED region 1 Start", + "offset_int": "0x0098", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field098-bits0-1", + "name": "ENABLE_REG1", + "description": "ENABLE_REG1", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLED_AND_LOCKED_0", + "value": 2, + "description": "Region is enabled and locked" + }, + { + "name": "ENABLED_AND_LOCKED_1", + "value": 3, + "description": "Region is enabled and locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field098-bits8-31", + "name": "IPED_REG1_START_ADDR", + "description": "IPED_REG1_START_ADDR" + } + ] + }, + { + "id": "field09C", + "name": "IPED1_END", + "description": "IPED region 1 End", + "offset_int": "0x009C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8 + }, + { + "width": 24, + "id": "field09C-bits8-31", + "name": "IPED_REG1_END_ADDR", + "description": "IPED_REG1_END_ADDR" + } + ] + }, + { + "id": "field0A0", + "name": "IPED2_START", + "description": "IPED region 2 Start", + "offset_int": "0x00A0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0A0-bits0-1", + "name": "ENABLE_REG2", + "description": "ENABLE_REG2", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLED_AND_LOCKED_0", + "value": 2, + "description": "Region is enabled and locked" + }, + { + "name": "ENABLED_AND_LOCKED_1", + "value": 3, + "description": "Region is enabled and locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0A0-bits8-31", + "name": "IPED_REG2_START_ADDR", + "description": "IPED_REG2_START_ADDR" + } + ] + }, + { + "id": "field0A4", + "name": "IPED2_END", + "description": "IPED region 2 End", + "offset_int": "0x00A4", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8 + }, + { + "width": 24, + "id": "field0A4-bits8-31", + "name": "IPED_REG2_END_ADDR", + "description": "IPED_REG2_END_ADDR" + } + ] + }, + { + "id": "field0A8", + "name": "IPED3_START", + "description": "IPED region 3 Start", + "offset_int": "0x00A8", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0A8-bits0-1", + "name": "ENABLE_REG3", + "description": "ENABLE_REG3", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLED_AND_LOCKED_0", + "value": 2, + "description": "Region is enabled and locked" + }, + { + "name": "ENABLED_AND_LOCKED_1", + "value": 3, + "description": "Region is enabled and locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0A8-bits8-31", + "name": "IPED_REG3_START_ADDR", + "description": "IPED_REG3_START_ADDR" + } + ] + }, + { + "id": "field0AC", + "name": "IPED3_END", + "description": "IPED region 3 End", + "offset_int": "0x00AC", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8 + }, + { + "width": 24, + "id": "field0AC-bits8-31", + "name": "IPED_REG3_END_ADDR", + "description": "IPED_REG3_END_ADDR" + } + ] + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field0B0", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port pins high", + "offset_int": "0x00B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port pins low", + "offset_int": "0x00B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port pins high", + "offset_int": "0x00B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port pins low", + "offset_int": "0x00BC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000C0-000FC", + "description": "Reserved 000C0-000FC" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E0", + "name": "CUSTOMER_DEFINED56", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "CUSTOMER_DEFINED57", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "CUSTOMER_DEFINED58", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "CUSTOMER_DEFINED59", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01EC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "CMAC", + "description": "CMAC fields" + }, + "registers": [ + { + "id": "field1F0", + "name": "CMPA_CMAC0", + "description": "CMPA CMAC 0", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "CMPA_CMAC1", + "description": "CMPA CMAC 1", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "CMPA_CMAC2", + "description": "CMPA CMAC 2", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "CMPA_CMAC3", + "description": "CMPA CMAC 3", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cmpa_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cmpa_a1.json new file mode 100644 index 0000000..a4f211f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfr_cmpa_a1.json @@ -0,0 +1,3535 @@ +{ + "cpu": "lpc55s36", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field000-bits0-2", + "name": "Default_Boot_Source", + "description": "Default Boot Source", + "values": [ + { + "name": "ISP_PIN", + "value": 0, + "description": "ISP pin source" + }, + { + "name": "FLEXSPI_FLASH", + "value": 1, + "description": "FlexSPI flash" + }, + { + "name": "SERIAL_ISP_BOOT", + "value": 2, + "description": "Serial ISP boot" + }, + { + "name": "INTERNAL_FLASH", + "value": 3, + "description": "Internal flash" + }, + { + "name": "AUTO_BOOT", + "value": 4, + "description": "Auto boot similar to ISP auto boot option" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "Default_ISP_mode", + "description": "Default ISP mode", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "USB_HID_MSC", + "value": 1, + "description": "USB HID MSC" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C slave ISP" + }, + { + "name": "CAN_ISP", + "value": 5, + "description": "CAN ISP" + }, + { + "name": "DISBL_ISP_FALLTHRU", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "Boot_Speed", + "description": "Boot Speed Core Clock", + "values": [ + { + "name": "SYS_SPD_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "MHZ48_FRO", + "value": 1, + "description": "48MHz FRO" + }, + { + "name": "MHZ96_FRO", + "value": 2, + "description": "96MHz FRO" + }, + { + "name": "MHZ150_FRO", + "value": 3, + "description": "150MHz PLL" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field000-bits19-20", + "name": "ITRC_ZEROIZE", + "description": "RAM zeroize on ITRC event. Zeroize long-term storage RAM (AO_RAM) on subsequent boot when Intrusion & Tamper control signals an intrusion event", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "PKC_RAM", + "value": 1, + "description": "Zeroize PKC RAM" + }, + { + "name": "A0_RAM", + "value": 2, + "description": "Zeroize low power RAM (AO_RAM)" + }, + { + "name": "BOTH_A0_AND_PKC_RAM", + "value": 3, + "description": "Zeroize both AO_RAM and PKC_RAM" + } + ] + }, + { + "width": 1, + "id": "field000-bit21", + "name": "ASRT_FATAL", + "description": "Assert on fatal errors. When set ROM drives BOOT_FAIL_PIN high when fatal error condition occurs on three attempts to boot image before locking the part" + }, + { + "width": 1, + "id": "field000-bit22", + "name": "ASRT_RBF", + "description": "Assert on recovery boot. When this bit is set ROM drives the BOOT_FAIL_PIN high whenever no valid image is found in primary boot media and execution enters recovery boot mode from secondary boot media" + }, + { + "width": 1, + "id": "field000-bit23", + "name": "ASRT_ISPF", + "description": "Assert on ISP fall through. When this bit is set ROM drives BOOT_FAIL_PIN high whenever there is no valid image in boot media and execution falls through to ISP mode" + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "Boot_failure_pin", + "description": "GPIO port and pin number to use for indicating failure reason. The toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_CAN_CFG", + "description": "SPI CAN Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field004-bits0-1", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "REC_BOOT_EN SPI flash recovery boot is enabled, if non-zero value is written to this field" + }, + { + "width": 3, + "id": "field004-bits2-4", + "name": "SPI_REC_IF", + "description": "Recovery SPI interface", + "values": [ + { + "name": "HSPI", + "value": 0, + "description": "HSPI P1_3-MISO, P0_26-MOSI, P1_1-SSEL1, P1_2-SCK" + }, + { + "name": "FC0", + "value": 1, + "description": "FC0 P0_30-MISO, P0_24-MOSI, P0_31-SSEL0, P0_28-SCK" + }, + { + "name": "FC3", + "value": 2, + "description": "FC3 P0_2-MISO, P0_3-MOSI, P0_4-SSEL0, P0_6-SCK" + }, + { + "name": "FC1", + "value": 3, + "description": "FC1 P2_4-MISO, P2_3-MOSI, P2_5-SSEL0, P1_9-SCK" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "field004-bits16-19", + "name": "CAN_BAUD_RATE", + "description": "CAN baud rate. Baud rate configured during CAN ISP mode", + "values": [ + { + "name": "AUTO_BAUD_DETECT", + "value": 0, + "description": "Auto baud detection (125K, 250K, 500K, 1M)" + }, + { + "name": "KBPS_10", + "value": 1, + "description": "10 kbps" + }, + { + "name": "KBPS_20", + "value": 2, + "description": "20 kbps" + }, + { + "name": "KBPS_50", + "value": 3, + "description": "50 kbps" + }, + { + "name": "KBPS_125", + "value": 4, + "description": "125 kbps" + }, + { + "name": "KBPS_250", + "value": 5, + "description": "250 kbps" + }, + { + "name": "KBPS_500", + "value": 6, + "description": "500 kbps" + }, + { + "name": "KBPS_800", + "value": 7, + "description": "800 kbps" + }, + { + "name": "KBPS_1000", + "value": 8, + "description": "1,000 kbps" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field008", + "name": "USB_ID", + "description": "USB Identifiers", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "USB_Vendor_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "USB_Product_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMEOUT", + "description": "Boot Timeout", + "offset_int": "0x000C", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Power-down timeout: Timeout value in seconds. When a non-zero value is programmed in this field ROM uses it as idle timeout value to enter power-down state to conserve power" + }, + { + "width": 16, + "id": "field00C-bits16-31", + "name": "WDOG_TIMEOUT_SECS", + "description": "WDOG timeout: Timeout value in seconds. When a non-zero value is programmed in this field ROM configures the watch dog timer to reset the device on timeout before passing execution control to user code" + } + ] + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. Combinations of PIN and DFLT bits and resulting restriction level: - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through the debug authentication process by providing an appropriate Debug Credential (DC) certificate. - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. - PIN=1,DFLT=0: Restriction level 2. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0010", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP boot command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. Combinations of PIN and DFLT bits and resulting restriction level: - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through the debug authentication process by providing an appropriate Debug Credential (DC) certificate. - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. - PIN=1,DFLT=0: Restriction level 2. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non Secure debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit8", + "name": "ME_CMD_EN", + "description": "Mass erase flash command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field018", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0018", + "default_value_int": "0", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 16, + "id": "field018-bits16-31", + "name": "VENDOR_USAGE", + "description": "Recommended to use this field to identify department or model number. So that Debug Credential (DC) Certificates can be issued on class basis instead of issuing UUID specific certificates" + } + ] + }, + { + "id": "field01C", + "name": "SECURE_BOOT_CFG", + "description": "Secure Boot Configuration", + "offset_int": "0x001C", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field01C-bits0-1", + "name": "ENF_CNSA", + "description": "Enforce CNSA suite algorithm", + "values": [ + { + "name": "ECC_P256", + "value": 0, + "description": "ECC P-256 keys" + }, + { + "name": "ECC_P384_0", + "value": 1, + "description": "ECC P-384 keys, SHA384 & AES256" + }, + { + "name": "ECC_P384_1", + "value": 2, + "description": "ECC P-384 keys, SHA384 & AES256" + }, + { + "name": "ECC_P384_2", + "value": 3, + "description": "ECC P-384 keys, SHA384 & AES256" + } + ] + }, + { + "width": 2, + "id": "field01C-bits2-3", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area in DICE computation", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits4-5", + "name": "DICE_CUST_CFG", + "description": "Include Customer factory area (including keys) in DICE computation", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits6-7", + "name": "SKIP_DICE", + "description": "Skip DICE computation", + "values": [ + { + "name": "ENABLE_DICE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_DICE_0", + "value": 1, + "description": "Disable DICE" + }, + { + "name": "DISABLE_DICE_1", + "value": 2, + "description": "Disable DICE" + }, + { + "name": "DISABLE_DICE_2", + "value": 3, + "description": "Disable DICE" + } + ] + }, + { + "width": 2, + "id": "field01C-bits8-9", + "name": "ENF_TZM_PRESET", + "description": "TrustZone-M mode", + "values": [ + { + "name": "IGNORE", + "value": 0, + "description": "Ignored" + }, + { + "name": "ENFORCE_0", + "value": 1, + "description": "Enforce preset TZM data in image manifest" + }, + { + "name": "ENFORCE_1", + "value": 2, + "description": "Enforce preset TZM data in image manifest" + }, + { + "name": "ENFORCE_2", + "value": 3, + "description": "Enforce preset TZM data in image manifest" + } + ] + }, + { + "width": 2, + "id": "field01C-bits10-11", + "name": "BLOCK_SET_KEY", + "description": "Block PUF key code generation. (PF commands qk_wrap and qy_wrap_generated_random are disabled)", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Enable Key code generation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable key code generation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable key code generation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable key code generation" + } + ] + }, + { + "width": 2, + "id": "field01C-bits12-13", + "name": "BLOCK_ENROLL", + "description": "Block PUF enrollment", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Enable enrollment mode" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable further enrollment" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable further enrollment" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable further enrollment" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field01C-bits16-17", + "name": "FIPS_SHA_STEN", + "description": "Enable self-test for SHA2 block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field01C-bits18-19", + "name": "FIPS_AES_STEN", + "description": "Enable self-test for AES block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field01C-bits20-21", + "name": "FIPS_ECDSA_STEN", + "description": "Enable self-test for ECDSA block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field01C-bits22-23", + "name": "FIPS_DRBG_STEN", + "description": "Enable self-test for DRBG block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field01C-bits24-25", + "name": "FIPS_CMAC_STEN", + "description": "Enable self-test for CMAC block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field01C-bits26-27", + "name": "FIPS_KDF_STEN", + "description": "Enable self-test for KDF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field01C-bits30-31", + "name": "SEC_BOOT_EN", + "description": "Secure boot enable", + "values": [ + { + "name": "PLAIN_IMAGE", + "value": 0, + "description": "Plain image (internal flash with or without CRC)" + }, + { + "name": "CMAC_CHECK_IMAGE", + "value": 1, + "description": "Do CMAC checking of image" + }, + { + "name": "ECDSA_CHECK_IMAGE_0", + "value": 2, + "description": "Do complete ECDSA checking of signed images. (internal flash, ECDSA signed)" + }, + { + "name": "ECDSA_CHECK_IMAGE_1", + "value": 3, + "description": "Do complete ECDSA checking of signed images. (internal flash, ECDSA signed)" + } + ] + } + ] + }, + { + "id": "field020", + "name": "PRINCE_CONFIG", + "description": "Prince Configuration", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field020-bits16-17", + "name": "LOCK_REG0", + "description": "Lock PRINCE region0 settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field020-bits18-19", + "name": "LOCK_REG1", + "description": "Lock PRINCE region1 settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field020-bits20-21", + "name": "LOCK_REG2", + "description": "Lock PRINCE region2 settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field020-bits24-25", + "name": "REG0_ERASE_CHECK_EN", + "description": "For PRINCE region0 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Check is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Check is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Check is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Check is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits26-27", + "name": "REG1_ERASE_CHECK_EN", + "description": "For PRINCE region0 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Check is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Check is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Check is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Check is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "REG2_ERASE_CHECK_EN", + "description": "For PRINCE region0 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Check is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Check is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Check is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Check is enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field024", + "name": "PRINCE_SR_0", + "description": "Region 0, Sub-region Enable", + "offset_int": "0x0024", + "default_value_int": "0" + }, + { + "id": "field028", + "name": "PRINCE_SR_1", + "description": "Region 1, Sub-region Enable", + "offset_int": "0x0028", + "default_value_int": "0" + }, + { + "id": "field02C", + "name": "PRINCE_SR_2", + "description": "Region 2, Sub-region Enable", + "offset_int": "0x002C", + "default_value_int": "0" + }, + { + "id": "field030", + "name": "XTAL_32KHZ_CAPABANK_TRIM", + "description": "Xtal 32kHz Capabank Trimming", + "offset_int": "0x0030", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field030-bit0", + "name": "TRIM_VALID", + "description": "Trim Valid", + "values": [ + { + "name": "NOT_VALID", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field030-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 10, + "id": "field030-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 10, + "id": "field030-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 1 + } + ] + }, + { + "id": "field034", + "name": "XTAL_16MHZ_CAPABANK_TRIM", + "description": "Xtal 16MHz Capabank Trimming", + "offset_int": "0x0034", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field034-bit0", + "name": "TRIM_VALID", + "description": "Trim Valid", + "values": [ + { + "name": "NOT_VALID", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field034-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 10, + "id": "field034-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 10, + "id": "field034-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600" + }, + { + "width": 1 + } + ] + }, + { + "id": "field038", + "name": "FLASH_REMAP_SIZE", + "description": "Flash Remap Size", + "offset_int": "0x0038", + "default_value_int": "0" + }, + { + "id": "field03C", + "name": "FLASH_REMAP_OFFSET", + "description": "Flash Remap Offset", + "offset_int": "0x003C", + "default_value_int": "0" + }, + { + "id": "field040", + "name": "PRINCE_XOM_0", + "description": "Prince eXecute-Only-Memory (XOM) 0", + "offset_int": "0x0040", + "default_value_int": "0" + }, + { + "id": "field044", + "name": "PRINCE_XOM_1", + "description": "Prince eXecute-Only-Memory (XOM) 1", + "offset_int": "0x0044", + "default_value_int": "0" + }, + { + "id": "field048", + "name": "PRINCE_XOM_2", + "description": "Prince eXecute-Only-Memory (XOM) 2", + "offset_int": "0x0048", + "default_value_int": "0" + }, + { + "id": "field04C", + "name": "RoTK_USAGE", + "description": "Root of Trust Key Usage", + "offset_int": "0x004C", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field04C-bits0-2", + "name": "RoTK0_Usage", + "description": "RoT key 0 usage properties", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_AND_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA" + }, + { + "name": "IMGKEY_FWUPD_KEY", + "value": 4, + "description": "Usable as image key & FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field04C-bits3-5", + "name": "RoTK1_Usage", + "description": "RoT key 1 usage properties. Check RoTK0_usage field description", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_AND_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA" + }, + { + "name": "IMGKEY_FWUPD_KEY", + "value": 4, + "description": "Usable as image key and FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field04C-bits6-8", + "name": "RoTK2_Usage", + "description": "RoT key 2 usage properties. Check RoTK0_Usage field description", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_AND_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA" + }, + { + "name": "IMGKEY_FWUPD_KEY", + "value": 4, + "description": "Usable as image key and FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field04C-bits9-11", + "name": "RoTK3_Usage", + "description": "RoT key 3 usage properties. Check RoTK0_usage field description", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_AND_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA" + }, + { + "name": "IMGKEY_FWUPD_KEY", + "value": 4, + "description": "Usable as image key and FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field050", + "name": "ROTKH0", + "description": "Root of Trust Key Hash 0", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field054", + "name": "ROTKH1", + "description": "Root of Trust Key Hash 1", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field058", + "name": "ROTKH2", + "description": "Root of Trust Key Hash 2", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field05C", + "name": "ROTKH3", + "description": "Root of Trust Key Hash 3", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field060", + "name": "ROTKH4", + "description": "Root of Trust Key Hash 4", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "ROTKH5", + "description": "Root of Trust Key Hash 5", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field068", + "name": "ROTKH6", + "description": "Root of Trust Key Hash 6", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field06C", + "name": "ROTKH7", + "description": "Root of Trust Key Hash 7", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field070", + "name": "ROTKH8", + "description": "Root of Trust Key Hash 8", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field074", + "name": "ROTKH9", + "description": "Root of Trust Key Hash 9", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field078", + "name": "ROTKH10", + "description": "Root of Trust Key Hash 10", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field07C", + "name": "ROTKH11", + "description": "Root of Trust Key Hash 11", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "FLEXSPI_BOOT_CFG", + "description": "FlexSPI boot cfg" + }, + "registers": [ + { + "id": "field080", + "name": "FLEXSPI_BOOT_CFG0", + "description": "FlexSPI Boot Configuration 0", + "offset_int": "0x0080", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field080-bit0", + "name": "FLEXSPI_AUTO_PROBE_EN", + "description": "Quad/Octal-SPI flash auto probe feature enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 3, + "id": "field080-bits1-3", + "name": "FLEXSPI_PROBE_TYPE", + "description": "Quad/Octal-SPI flash probe type", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MACRONIX_OCTAL_FLASH", + "value": 1, + "description": "Macronix Octal FLASH" + }, + { + "name": "MICRON_OCTAL_FLASH", + "value": 2, + "description": "Micron Octal FLASH" + }, + { + "name": "ADESTO_OCTAL_FLASH", + "value": 3, + "description": "Adesto Octal FLASH" + } + ] + }, + { + "width": 3, + "id": "field080-bits4-6", + "name": "FLEXSPI_FLASH_TYPE", + "description": "Define typical Serial NOR Flash types", + "values": [ + { + "name": "QSPI_ADDR_3B", + "value": 0, + "description": "QSPI ADDR 3B" + }, + { + "name": "HYPER_1V8", + "value": 2, + "description": "HYPER 1V8" + }, + { + "name": "HYPER_3V3", + "value": 3, + "description": "HYPER 3V3" + }, + { + "name": "FLEXSPI_DDR_MXIC", + "value": 4, + "description": "FlexSPI_DDR_MXIC" + }, + { + "name": "FLEXSPI_DDR_MICRON", + "value": 5, + "description": "FlexSPI_DDR_MICRON" + } + ] + }, + { + "width": 4, + "id": "field080-bits7-10", + "name": "FLEXSPI_DUMMY_CYCLES", + "description": "Quad/Octal-SPI dummy cycles for read command" + }, + { + "width": 3, + "id": "field080-bits11-13", + "name": "FLEXSPI_FREQUENCY", + "description": "Q/O-SPI flash interface frequency", + "values": [ + { + "name": "MHZ_50", + "value": 0, + "description": "50Mhz" + }, + { + "name": "MHZ_60", + "value": 1, + "description": "60Mhz" + }, + { + "name": "MHZ_80", + "value": 2, + "description": "80Mhz" + }, + { + "name": "MHZ_100", + "value": 3, + "description": "100Mhz" + }, + { + "name": "MHZ_120", + "value": 4, + "description": "120Mhz" + }, + { + "name": "MHZ_133", + "value": 5, + "description": "133Mhz" + }, + { + "name": "MHZ_166", + "value": 6, + "description": "166Mhz" + }, + { + "name": "MHZ_200", + "value": 7, + "description": "200Mhz" + } + ] + }, + { + "width": 1, + "id": "field080-bit14", + "name": "FLEXSPI_RESET_ENABLE", + "description": "Use QSPI_RESET_PIN to reset the flash device", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "NO_RESET(O/QSPI device reset pin is not connected or available.)" + }, + { + "name": "ENABLE_RESET", + "value": 1, + "description": "EN_RESET(O/QSPI device reset pin is connected to a GPIO (QSPI_RESET_PIN).)" + } + ] + }, + { + "width": 3, + "id": "field080-bits15-17", + "name": "FLEXSPI_RESET_GPIO_PORT", + "description": "GPIO port number to use for O/QSPI reset function" + }, + { + "width": 5, + "id": "field080-bits18-22", + "name": "FLEXSPI_RESET_GPIO_PIN", + "description": "GPIO pin number to use for O/QSPI reset function" + }, + { + "width": 2, + "id": "field080-bits23-24", + "name": "FLEXSPI_HOLD_TIME", + "description": "Wait time before access to Serial Flash", + "values": [ + { + "name": "WAIT_500_MICROSECS", + "value": 0, + "description": "Wait for 500 micro seconds" + }, + { + "name": "WAIT_1_MILISECS", + "value": 1, + "description": "Wait for 1 mili seconds" + }, + { + "name": "WAIT_3_MILISECS", + "value": 2, + "description": "Wait for 3 mili seconds" + }, + { + "name": "WAIT_10_MILISECS", + "value": 3, + "description": "Wait for 10 mili seconds" + } + ] + }, + { + "width": 4, + "id": "field080-bits25-28", + "name": "FLEXSPI_PWR_HOLD_TIME", + "description": "Delay after POR before accessing Quad/Octal-SPI flash devices in addition to delay defined by FLEXSPI_HOLD TIME field", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No delay" + }, + { + "name": "WAIT_100_MICROSECS", + "value": 1, + "description": "Waits additional 100 micro-seconds" + }, + { + "name": "WAIT_500_MICROSECS", + "value": 2, + "description": "Waits additional 500 micro-seconds" + }, + { + "name": "WAIT_1_MILISECS", + "value": 3, + "description": "Waits additional 1 mili-seconds" + }, + { + "name": "WAIT_10_MILISECS", + "value": 4, + "description": "Waits additional 10 mili-seconds" + }, + { + "name": "WAIT_20_MILISECS", + "value": 5, + "description": "Waits additional 20 mili-seconds" + }, + { + "name": "WAIT_40_MILISECS", + "value": 6, + "description": "Waits additional 40 mili-seconds" + }, + { + "name": "WAIT_60_MILISECS", + "value": 7, + "description": "Waits additional 60 mili-seconds" + }, + { + "name": "WAIT_80_MILISECS", + "value": 8, + "description": "Waits additional 80 mili-seconds" + }, + { + "name": "WAIT_100_MILISECS", + "value": 9, + "description": "Waits additional 100 mili-seconds" + }, + { + "name": "WAIT_120_MILISECS", + "value": 10, + "description": "Waits additional 120 mili-seconds" + }, + { + "name": "WAIT_140_MILISECS", + "value": 11, + "description": "Waits additional 140 mili-seconds" + }, + { + "name": "WAIT_160_MILISECS", + "value": 12, + "description": "Waits additional 160 mili-seconds" + }, + { + "name": "WAIT_180_MILISECS", + "value": 13, + "description": "Waits additional 180 mili-seconds" + }, + { + "name": "WAIT_200_MILISECS", + "value": 14, + "description": "Waits additional 200 mili-seconds" + }, + { + "name": "WAIT_220_MILISECS", + "value": 15, + "description": "Waits additional220 mili-seconds" + } + ] + }, + { + "width": 1, + "id": "field080-bit29", + "name": "PIN_SLEW_RATE", + "description": "Enable faster slew rate. When this bit is set ROM will configure FlexSPI pin with faster slew rate instead of standard slew rate", + "values": [ + { + "name": "STANDARD", + "value": 0, + "description": "Standard slew rate" + }, + { + "name": "FASTER", + "value": 1, + "description": "Faster slew rate" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field084", + "name": "FLEXSPI_BOOT_CFG1", + "description": "FlexSPI Boot Configuration 1", + "offset_int": "0x0084", + "default_value_int": "0", + "bitfields": [ + { + "width": 7, + "id": "field084-bits0-6", + "name": "FLEXSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for Flash read sampling via DQS (either internal loopback or external DQS)" + }, + { + "width": 10, + "id": "field084-bits7-16", + "name": "FLEXSPI_IMAGE_OFFSET", + "description": "Any offset in memory mapped Q/Octal-SPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. FlLEXSPI_IMAGE_OFFSET field specifies the offset location of second image. FLEXSPI_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped. If this field is left blank boot ROM assumes that application intends to not use redundant image boot feature. The physical flash offset is computed as below: physical offset = FLEXSPI_IMAGE_OFFSET" + }, + { + "width": 4, + "id": "field084-bits17-20", + "name": "FLEXSPI_REMAP_IMAGE_SIZE", + "description": "Any offset in memory mapped QSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. QSPI_IMAGE_OFFSET field specifies the offset location of second image. QSPI_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped. SIZE_OFFSET \"Size of the remapped area (aka second half) is same as first half. It is determined by FLEXSPI_IMAGE_OFFSET Field. Remap size = FLEXSPI_IMAGE_OFFSET", + "values": [ + { + "name": "SIZE", + "value": 0, + "description": "SIZE" + }, + { + "name": "SIZE_1MB", + "value": 1, + "description": "SIZE_1MB Size of remapped area is 1MByte" + }, + { + "name": "SIZE_2MB", + "value": 2, + "description": "SIZE_2MB Size of remapped area is 2MByte" + }, + { + "name": "SIZE_3MB", + "value": 3, + "description": "SIZE_3MB Size of remapped area is 3MByte" + }, + { + "name": "SIZE_4MB", + "value": 4, + "description": "SIZE_4MB Size of remapped area is 4MByte" + }, + { + "name": "SIZE_5MB", + "value": 5, + "description": "SIZE_5MB Size of remapped area is 5MByte" + }, + { + "name": "SIZE_6MB", + "value": 6, + "description": "SIZE_6MB Size of remapped area is 6MByte" + }, + { + "name": "SIZE_7MB", + "value": 7, + "description": "SIZE_7MB Size of remapped area is 7MByte" + }, + { + "name": "SIZE_8MB", + "value": 8, + "description": "SIZE_8MB Size of remapped area is 8MByte" + }, + { + "name": "SIZE_9MB", + "value": 9, + "description": "SIZE_9MB Size of remapped area is 9MByte" + }, + { + "name": "SIZE_10MB", + "value": 10, + "description": "SIZE_10MB Size of remapped area is 10MByte" + }, + { + "name": "SIZE_11MB", + "value": 11, + "description": "SIZE_11MB Size of remapped area is 11MByte" + }, + { + "name": "SIZE_12MB", + "value": 12, + "description": "SIZE_12MB Size of remapped area is 12MByte" + }, + { + "name": "SIZE_256KB", + "value": 13, + "description": "SIZE_256KB Size of remapped area is 256KByte" + }, + { + "name": "SIZE_512KB", + "value": 14, + "description": "SIZE_512KB Size of remapped area is 512KByte" + }, + { + "name": "SIZE_768KB", + "value": 15, + "description": "SIZE_768KB Size of remapped area is 768KByte" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00088-0008C", + "description": "Reserved 00088-0008C" + }, + "registers": [ + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "IPED", + "description": "IPED fields" + }, + "registers": [ + { + "id": "field090", + "name": "IPED0_START", + "description": "IPED region 0 Start", + "offset_int": "0x0090", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field090-bits0-1", + "name": "ENABLE_REG0", + "description": "Enable IPED region 0 settings during boot", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLED_AND_LOCKED_0", + "value": 2, + "description": "Region is enabled & locked" + }, + { + "name": "ENABLED_AND_LOCKED_1", + "value": 3, + "description": "Region is enabled & locked" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 24, + "id": "field090-bits8-31", + "name": "IPED_REG0_START_ADDR", + "description": "Upper 24-bits of IPED region 0 decryption start address for FlexSPI boot. Lower address bits are always 0" + } + ] + }, + { + "id": "field094", + "name": "IPED0_END", + "description": "IPED region 0 End", + "offset_int": "0x0094", + "default_value_int": "0", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 24, + "id": "field094-bits8-31", + "name": "IPED_REG0_END_ADDR", + "description": "Upper 24-bits of IPED region 0 decryption end address for FlexSPI boot. Lower address bits are always 0" + } + ] + }, + { + "id": "field098", + "name": "IPED1_START", + "description": "IPED region 1 Start", + "offset_int": "0x0098", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field098-bits0-1", + "name": "ENABLE_REG1", + "description": "Enable IPED region 1 settings during boot", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLED_AND_LOCKED_0", + "value": 2, + "description": "Region is enabled & locked" + }, + { + "name": "ENABLED_AND_LOCKED_1", + "value": 3, + "description": "Region is enabled & locked" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 24, + "id": "field098-bits8-31", + "name": "IPED_REG1_START_ADDR", + "description": "Upper 24-bits of IPED region 1 decryption start address for FlexSPI boot. Lower address bits are always 0" + } + ] + }, + { + "id": "field09C", + "name": "IPED1_END", + "description": "IPED region 1 End", + "offset_int": "0x009C", + "default_value_int": "0", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 24, + "id": "field09C-bits8-31", + "name": "IPED_REG1_END_ADDR", + "description": "Upper 24-bits of IPED region 1 decryption end address for FlexSPI boot. Lower address bits are always 0" + } + ] + }, + { + "id": "field0A0", + "name": "IPED2_START", + "description": "IPED region 2 Start", + "offset_int": "0x00A0", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0A0-bits0-1", + "name": "ENABLE_REG2", + "description": "Enable IPED region 2 settings during boot", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLED_AND_LOCKED_0", + "value": 2, + "description": "Region is enabled & locked" + }, + { + "name": "ENABLED_AND_LOCKED_1", + "value": 3, + "description": "Region is enabled & locked" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 24, + "id": "field0A0-bits8-31", + "name": "IPED_REG2_START_ADDR", + "description": "Upper 24-bits of IPED region 2 decryption start address for FlexSPI boot. Lower address bits are always 0" + } + ] + }, + { + "id": "field0A4", + "name": "IPED2_END", + "description": "IPED region 2 End", + "offset_int": "0x00A4", + "default_value_int": "0", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 24, + "id": "field0A4-bits8-31", + "name": "IPED_REG2_END_ADDR", + "description": "Upper 24-bits of IPED region 2 decryption end address for FlexSPI boot. Lower address bits are always 0" + } + ] + }, + { + "id": "field0A8", + "name": "IPED3_START", + "description": "IPED region 3 Start", + "offset_int": "0x00A8", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0A8-bits0-1", + "name": "ENABLE_REG3", + "description": "Enable IPED region 3 settings during boot", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLED_AND_LOCKED_0", + "value": 2, + "description": "Region is enabled & locked" + }, + { + "name": "ENABLED_AND_LOCKED_1", + "value": 3, + "description": "Region is enabled & locked" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 24, + "id": "field0A8-bits8-31", + "name": "IPED_REG3_START_ADDR", + "description": "Upper 24-bits of IPED region 3 decryption start address for FlexSPI boot. Lower address bits are always 0" + } + ] + }, + { + "id": "field0AC", + "name": "IPED3_END", + "description": "IPED region 3 End", + "offset_int": "0x00AC", + "default_value_int": "0", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 24, + "id": "field0AC-bits8-31", + "name": "IPED_REG3_END_ADDR", + "description": "Upper 24-bits of IPED region 3 decryption end address for FlexSPI boot. Lower address bits are always 0" + } + ] + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field0B0", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port pins high", + "offset_int": "0x00B0", + "default_value_int": "0" + }, + { + "id": "field0B4", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port pins low", + "offset_int": "0x00B4", + "default_value_int": "0" + }, + { + "id": "field0B8", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port pins high", + "offset_int": "0x00B8", + "default_value_int": "0" + }, + { + "id": "field0BC", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port pins low", + "offset_int": "0x00BC", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000C0-000FC", + "description": "Reserved 000C0-000FC" + }, + "registers": [ + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "Customer_Defined0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0" + }, + { + "id": "field104", + "name": "Customer_Defined1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0" + }, + { + "id": "field108", + "name": "Customer_Defined2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0" + }, + { + "id": "field10C", + "name": "Customer_Defined3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0" + }, + { + "id": "field110", + "name": "Customer_Defined4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0" + }, + { + "id": "field114", + "name": "Customer_Defined5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0" + }, + { + "id": "field118", + "name": "Customer_Defined6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0" + }, + { + "id": "field11C", + "name": "Customer_Defined7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0" + }, + { + "id": "field120", + "name": "Customer_Defined8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0" + }, + { + "id": "field124", + "name": "Customer_Defined9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0" + }, + { + "id": "field128", + "name": "Customer_Defined10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0" + }, + { + "id": "field12C", + "name": "Customer_Defined11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0" + }, + { + "id": "field130", + "name": "Customer_Defined12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0" + }, + { + "id": "field134", + "name": "Customer_Defined13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0" + }, + { + "id": "field138", + "name": "Customer_Defined14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0" + }, + { + "id": "field13C", + "name": "Customer_Defined15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0" + }, + { + "id": "field140", + "name": "Customer_Defined16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0" + }, + { + "id": "field144", + "name": "Customer_Defined17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0" + }, + { + "id": "field148", + "name": "Customer_Defined18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0" + }, + { + "id": "field14C", + "name": "Customer_Defined19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0" + }, + { + "id": "field150", + "name": "Customer_Defined20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0" + }, + { + "id": "field154", + "name": "Customer_Defined21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0" + }, + { + "id": "field158", + "name": "Customer_Defined22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0" + }, + { + "id": "field15C", + "name": "Customer_Defined23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0" + }, + { + "id": "field160", + "name": "Customer_Defined24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0" + }, + { + "id": "field164", + "name": "Customer_Defined25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0" + }, + { + "id": "field168", + "name": "Customer_Defined26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0" + }, + { + "id": "field16C", + "name": "Customer_Defined27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0" + }, + { + "id": "field170", + "name": "Customer_Defined28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0" + }, + { + "id": "field174", + "name": "Customer_Defined29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0" + }, + { + "id": "field178", + "name": "Customer_Defined30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0" + }, + { + "id": "field17C", + "name": "Customer_Defined31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0" + }, + { + "id": "field180", + "name": "Customer_Defined32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0" + }, + { + "id": "field184", + "name": "Customer_Defined33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0" + }, + { + "id": "field188", + "name": "Customer_Defined34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0" + }, + { + "id": "field18C", + "name": "Customer_Defined35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0" + }, + { + "id": "field190", + "name": "Customer_Defined36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0" + }, + { + "id": "field194", + "name": "Customer_Defined37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0" + }, + { + "id": "field198", + "name": "Customer_Defined38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0" + }, + { + "id": "field19C", + "name": "Customer_Defined39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0" + }, + { + "id": "field1A0", + "name": "Customer_Defined40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0" + }, + { + "id": "field1A4", + "name": "Customer_Defined41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0" + }, + { + "id": "field1A8", + "name": "Customer_Defined42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0" + }, + { + "id": "field1AC", + "name": "Customer_Defined43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0" + }, + { + "id": "field1B0", + "name": "Customer_Defined44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0" + }, + { + "id": "field1B4", + "name": "Customer_Defined45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0" + }, + { + "id": "field1B8", + "name": "Customer_Defined46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0" + }, + { + "id": "field1BC", + "name": "Customer_Defined47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0" + }, + { + "id": "field1C0", + "name": "Customer_Defined48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0" + }, + { + "id": "field1C4", + "name": "Customer_Defined49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0" + }, + { + "id": "field1C8", + "name": "Customer_Defined50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0" + }, + { + "id": "field1CC", + "name": "Customer_Defined51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0" + }, + { + "id": "field1D0", + "name": "Customer_Defined52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0" + }, + { + "id": "field1D4", + "name": "Customer_Defined53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0" + }, + { + "id": "field1D8", + "name": "Customer_Defined54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0" + }, + { + "id": "field1DC", + "name": "Customer_Defined55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0" + }, + { + "id": "field1E0", + "name": "Customer_Defined56", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E0", + "default_value_int": "0" + }, + { + "id": "field1E4", + "name": "Customer_Defined57", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E4", + "default_value_int": "0" + }, + { + "id": "field1E8", + "name": "Customer_Defined58", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01E8", + "default_value_int": "0" + }, + { + "id": "field1EC", + "name": "Customer_Defined59", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01EC", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CMAC", + "description": "CMAC fields" + }, + "registers": [ + { + "id": "field1F0", + "name": "CMPA_CMAC0", + "description": "cmpa cmac", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F4", + "name": "CMPA_CMAC1", + "description": "CMPA CMAC1", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F8", + "name": "CMPA_CMAC2", + "description": "CMPA CMAC2", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1FC", + "name": "CMPA_CMAC3", + "description": "CMPA CMAC3", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfrc_rules.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfrc_rules.yaml new file mode 100644 index 0000000..c2ab6eb --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/pfrc_rules.yaml @@ -0,0 +1,18 @@ +# Copyright 2022-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +rules: + - req_id: "lpc55s3x_4.1" + desc: By default (blank device), the RoTKx_EN values are set to 0b00. + When secure boot is enabled (SEC_BOOT_EN != 0) there must be at + least one RoTKx_EN which is set to 0b01 or 0b00 (enabled) to allow device to boot + successfully. + msg: Secure boot is enabled. Make sure at least one Root of Trust Key Enable bit is set. + cond: CMPA.SECURE_BOOT_CFG.SEC_BOOT_EN != 0 and CFPA.ROTKH_REVOKE.RoTK3_EN >=2 and CFPA.ROTKH_REVOKE.RoTK2_EN >=2 and CFPA.ROTKH_REVOKE.RoTK1_EN >=2 and CFPA.ROTKH_REVOKE.RoTK0_EN >=2 + + - req_id: "lpc55s3x_5.1" + desc: Inverse value (upper 16 bits) of VENDOR_USAGE must be always + valid. + msg: Inverse values are generated automatically based on configuration. + cond: CFPA.VENDOR_USAGE != 0 and (~(CFPA.VENDOR_USAGE>>int(16)) & 0xFFFF) != (CFPA.VENDOR_USAGE & 0xFFFF) diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/tz_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/tz_a0.json new file mode 100644 index 0000000..a1fd496 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/tz_a0.json @@ -0,0 +1,1013 @@ +{ + "cpu": "lpc55s36", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Start of block (tzm_magic)", + "description": "TrustZone register - Start of block (tzm_magic)", + "default_value_int": "0x4d2d5a54" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "Miscellaneous CM33 settings (cm33_misc_ctrl)", + "description": "TrustZone register - Miscellaneous CM33 settings (cm33_misc_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "CM33 Non-secure Access Control Register (cm33_nsacr)", + "description": "TrustZone register - CM33 Non-secure Access Control Register (cm33_nsacr)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "CM33 Coprocessor Power Control Register (cm33_cppwr)", + "description": "TrustZone register - CM33 Coprocessor Power Control Register (cm33_cppwr)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "CM33 Coprocessor Access Control Register (cm33_cpacr)", + "description": "TrustZone register - CM33 Coprocessor Access Control Register (cm33_cpacr)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Control Register (mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Control Register (mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Control Register (sau_ctrl)", + "description": "TrustZone register - SAU Control Register (sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "description": "TrustZone register - FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "FLASH Memory Rule Register 0 (flash_mem_rule0)", + "description": "TrustZone register - FLASH Memory Rule Register 0 (flash_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "RAMX Slave Rule Register (ramx_slave_rule)", + "description": "TrustZone register - RAMX Slave Rule Register (ramx_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "RAMX Memory Rule Register (ramx_mem_rule)", + "description": "TrustZone register - RAMX Memory Rule Register (ramx_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "QSPI Slave Rule Register (qspi_slave_rule)", + "description": "TrustZone register - QSPI Slave Rule Register (qspi_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "QSPI Memory Rule [0][0] Register (qspi_mem_rule00)", + "description": "TrustZone register - QSPI Memory Rule [0][0] Register (qspi_mem_rule00)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "QSPI Memory Rule [0][1] Register (qspi_mem_rule01)", + "description": "TrustZone register - QSPI Memory Rule [0][1] Register (qspi_mem_rule01)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "QSPI Memory Rule [0][2] Register (qspi_mem_rule02)", + "description": "TrustZone register - QSPI Memory Rule [0][2] Register (qspi_mem_rule02)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "QSPI Memory Rule [0][3] Register (qspi_mem_rule03)", + "description": "TrustZone register - QSPI Memory Rule [0][3] Register (qspi_mem_rule03)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "QSPI Memory Rule [1][0] Register (qspi_mem_rule10)", + "description": "TrustZone register - QSPI Memory Rule [1][0] Register (qspi_mem_rule10)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "QSPI Memory Rule [2][0] Register (qspi_mem_rule20)", + "description": "TrustZone register - QSPI Memory Rule [2][0] Register (qspi_mem_rule20)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "QSPI Memory Rule [3][0] Register (qspi_mem_rule30)", + "description": "TrustZone register - QSPI Memory Rule [3][0] Register (qspi_mem_rule30)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "QSPI Memory Rule [4][0] Register (qspi_mem_rule40)", + "description": "TrustZone register - QSPI Memory Rule [4][0] Register (qspi_mem_rule40)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "RAM0 Memory Rule Register (ram0_mem_rule)", + "description": "TrustZone register - RAM0 Memory Rule Register (ram0_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "RAM1 Memory Rule Register (ram1_mem_rule)", + "description": "TrustZone register - RAM1 Memory Rule Register (ram1_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "RAM2 Memory Rule Register (ram2_mem_rule)", + "description": "TrustZone register - RAM2 Memory Rule Register (ram2_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "RAM3 Slave Rule Register (ram3_slave_rule)", + "description": "TrustZone register - RAM3 Slave Rule Register (ram3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "RAM3 Memory Rule Register (ram3_mem_rule)", + "description": "TrustZone register - RAM3 Memory Rule Register (ram3_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "RAM4 Slave Rule Register (ram4_slave_rule)", + "description": "TrustZone register - RAM4 Slave Rule Register (ram4_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "RAM4 Memory Rule Register (ram4_mem_rule)", + "description": "TrustZone register - RAM4 Memory Rule Register (ram4_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "APB Bridge Slave Rule Register (apb_bridge_slave_rule)", + "description": "TrustZone register - APB Bridge Slave Rule Register (apb_bridge_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "APB Bridge 0 Memory Control Register 0 (apb_bridge0_mem_ctrl0)", + "description": "TrustZone register - APB Bridge 0 Memory Control Register 0 (apb_bridge0_mem_ctrl0)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "APB Bridge 0 Memory Control Register 1 (apb_bridge0_mem_ctrl1)", + "description": "TrustZone register - APB Bridge 0 Memory Control Register 1 (apb_bridge0_mem_ctrl1)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "APB Bridge 0 Memory Control Register 2 (apb_bridge0_mem_ctrl2)", + "description": "TrustZone register - APB Bridge 0 Memory Control Register 2 (apb_bridge0_mem_ctrl2)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "APB Bridge 0 Memory Control Register 3 (apb_bridge0_mem_ctrl3)", + "description": "TrustZone register - APB Bridge 0 Memory Control Register 3 (apb_bridge0_mem_ctrl3)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "APB Bridge 1 Memory Control Register 0 (apb_bridge1_mem_ctrl0)", + "description": "TrustZone register - APB Bridge 1 Memory Control Register 0 (apb_bridge1_mem_ctrl0)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "APB Bridge 1 Memory Control Register 1 (apb_bridge1_mem_ctrl1)", + "description": "TrustZone register - APB Bridge 1 Memory Control Register 1 (apb_bridge1_mem_ctrl1)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "APB Bridge 1 Memory Control Register 2 (apb_bridge1_mem_ctrl2)", + "description": "TrustZone register - APB Bridge 1 Memory Control Register 2 (apb_bridge1_mem_ctrl2)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "APB Bridge 1 Memory Control Register 3 (apb_bridge1_mem_ctrl3)", + "description": "TrustZone register - APB Bridge 1 Memory Control Register 3 (apb_bridge1_mem_ctrl3)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "APB Bridge 2 Memory Control Register 0 (apb_bridge2_mem_ctrl0)", + "description": "TrustZone register - APB Bridge 2 Memory Control Register 0 (apb_bridge2_mem_ctrl0)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "APB Bridge 2 Memory Control Register 1 (apb_bridge2_mem_ctrl1)", + "description": "TrustZone register - APB Bridge 2 Memory Control Register 1 (apb_bridge2_mem_ctrl1)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "APB Bridge 2 Memory Control Register 2 (apb_bridge2_mem_ctrl2)", + "description": "TrustZone register - APB Bridge 2 Memory Control Register 2 (apb_bridge2_mem_ctrl2)", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "APB Bridge 2 Memory Control Register 3 (apb_bridge2_mem_ctrl3)", + "description": "TrustZone register - APB Bridge 2 Memory Control Register 3 (apb_bridge2_mem_ctrl3)", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "AHB0 Peripherals 0 Slave Rule Register 0 (ahb0_0_slave_rule)", + "description": "TrustZone register - AHB0 Peripherals 0 Slave Rule Register 0 (ahb0_0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "AHB0 Peripherals 1 Slave Rule Register 0 (ahb0_1_slave_rule)", + "description": "TrustZone register - AHB0 Peripherals 1 Slave Rule Register 0 (ahb0_1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "AHB1 Peripherals 0 Slave Rule Register 0 (ahb1_0_slave_rule)", + "description": "TrustZone register - AHB1 Peripherals 0 Slave Rule Register 0 (ahb1_0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "AHB2 Peripherals 0 Slave Rule Register 0 (ahb2_0_slave_rule)", + "description": "TrustZone register - AHB2 Peripherals 0 Slave Rule Register 0 (ahb2_0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "AHB2 Peripherals 0 Memory Rule Register 0 (ahb2_0_mem_rule)", + "description": "TrustZone register - AHB2 Peripherals 0 Memory Rule Register 0 (ahb2_0_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "AHB3 Peripherals 0 Slave Rule Register 0 (ahb3_0_slave_rule)", + "description": "TrustZone register - AHB3 Peripherals 0 Slave Rule Register 0 (ahb3_0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "AHB4 Peripherals 0 Slave Rule Register 0 (ahb4_0_slave_rule)", + "description": "TrustZone register - AHB4 Peripherals 0 Slave Rule Register 0 (ahb4_0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "Secure GPIO Register 1 (sec_gp_reg1)", + "description": "TrustZone register - Secure GPIO Register 1 (sec_gp_reg1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "Secure GPIO Register 2 (sec_gp_reg2)", + "description": "TrustZone register - Secure GPIO Register 2 (sec_gp_reg2)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "Secure GPIO Register 3 (sec_gp_reg3)", + "description": "TrustZone register - Secure GPIO Register 3 (sec_gp_reg3)", + "default_value_int": "0x7f" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0xaa" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "CM33 Lock Control Register (cm33_lock_reg)", + "description": "TrustZone register - CM33 Lock Control Register (cm33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0x8aaa" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0x8aaa" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/tz_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/tz_a1.json new file mode 100644 index 0000000..ff4d71b --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s36/tz_a1.json @@ -0,0 +1,1125 @@ +{ + "cpu": "lpc55s36", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Start of block (tzm_magic)", + "description": "TrustZone register - Start of block (tzm_magic)", + "default_value_int": "0x4d2d5a54" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "description": "TrustZone register - Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "Interrupt target non-secure register 3 (cm33_nvic_itns3)", + "description": "TrustZone register - Interrupt target non-secure register 3 (cm33_nvic_itns3)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "Miscellaneous CM33 settings (cm33_misc_ctrl)", + "description": "TrustZone register - Miscellaneous CM33 settings (cm33_misc_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "CM33 Non-secure Access Control Register (cm33_nsacr)", + "description": "TrustZone register - CM33 Non-secure Access Control Register (cm33_nsacr)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "CM33 Coprocessor Power Control Register (cm33_cppwr)", + "description": "TrustZone register - CM33 Coprocessor Power Control Register (cm33_cppwr)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "CM33 Coprocessor Access Control Register (cm33_cpacr)", + "description": "TrustZone register - CM33 Coprocessor Access Control Register (cm33_cpacr)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Control Register (mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Control Register (mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Control Register (sau_ctrl)", + "description": "TrustZone register - SAU Control Register (sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "description": "TrustZone register - FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "FLASH Memory Rule Register 0 (flash_mem_rule0)", + "description": "TrustZone register - FLASH Memory Rule Register 0 (flash_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "RAMX Slave Rule Register (ramx_slave_rule)", + "description": "TrustZone register - RAMX Slave Rule Register (ramx_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "RAMX Memory Rule Register (ramx_mem_rule)", + "description": "TrustZone register - RAMX Memory Rule Register (ramx_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "QSPI Slave Rule Register (qspi_slave_rule)", + "description": "TrustZone register - QSPI Slave Rule Register (qspi_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "QSPI Memory Rule [0][0] Register (qspi_mem_rule00)", + "description": "TrustZone register - QSPI Memory Rule [0][0] Register (qspi_mem_rule00)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "QSPI Memory Rule [0][1] Register (qspi_mem_rule01)", + "description": "TrustZone register - QSPI Memory Rule [0][1] Register (qspi_mem_rule01)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "QSPI Memory Rule [0][2] Register (qspi_mem_rule02)", + "description": "TrustZone register - QSPI Memory Rule [0][2] Register (qspi_mem_rule02)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "QSPI Memory Rule [0][3] Register (qspi_mem_rule03)", + "description": "TrustZone register - QSPI Memory Rule [0][3] Register (qspi_mem_rule03)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "QSPI Memory Rule [1][0] Register (qspi_mem_rule10)", + "description": "TrustZone register - QSPI Memory Rule [1][0] Register (qspi_mem_rule10)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "QSPI Memory Rule [2][0] Register (qspi_mem_rule20)", + "description": "TrustZone register - QSPI Memory Rule [2][0] Register (qspi_mem_rule20)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "QSPI Memory Rule [3][0] Register (qspi_mem_rule30)", + "description": "TrustZone register - QSPI Memory Rule [3][0] Register (qspi_mem_rule30)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "QSPI Memory Rule [4][0] Register (qspi_mem_rule40)", + "description": "TrustZone register - QSPI Memory Rule [4][0] Register (qspi_mem_rule40)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "RAM0 Memory Rule Register (ram0_mem_rule)", + "description": "TrustZone register - RAM0 Memory Rule Register (ram0_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "RAM1 Memory Rule Register (ram1_mem_rule)", + "description": "TrustZone register - RAM1 Memory Rule Register (ram1_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "RAM2 Memory Rule Register (ram2_mem_rule)", + "description": "TrustZone register - RAM2 Memory Rule Register (ram2_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "RAM3 Slave Rule Register (ram3_slave_rule)", + "description": "TrustZone register - RAM3 Slave Rule Register (ram3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "RAM3 Memory Rule Register (ram3_mem_rule)", + "description": "TrustZone register - RAM3 Memory Rule Register (ram3_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "RAM4 Slave Rule Register (ram4_slave_rule)", + "description": "TrustZone register - RAM4 Slave Rule Register (ram4_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "RAM4 Memory Rule Register (ram4_mem_rule)", + "description": "TrustZone register - RAM4 Memory Rule Register (ram4_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "APB Bridge Slave Rule Register (apb_bridge_slave_rule)", + "description": "TrustZone register - APB Bridge Slave Rule Register (apb_bridge_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "APB Bridge 0 Memory Control Register 0 (apb_bridge0_mem_ctrl0)", + "description": "TrustZone register - APB Bridge 0 Memory Control Register 0 (apb_bridge0_mem_ctrl0)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "APB Bridge 0 Memory Control Register 1 (apb_bridge0_mem_ctrl1)", + "description": "TrustZone register - APB Bridge 0 Memory Control Register 1 (apb_bridge0_mem_ctrl1)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "APB Bridge 0 Memory Control Register 2 (apb_bridge0_mem_ctrl2)", + "description": "TrustZone register - APB Bridge 0 Memory Control Register 2 (apb_bridge0_mem_ctrl2)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "APB Bridge 0 Memory Control Register 3 (apb_bridge0_mem_ctrl3)", + "description": "TrustZone register - APB Bridge 0 Memory Control Register 3 (apb_bridge0_mem_ctrl3)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "APB Bridge 1 Memory Control Register 0 (apb_bridge1_mem_ctrl0)", + "description": "TrustZone register - APB Bridge 1 Memory Control Register 0 (apb_bridge1_mem_ctrl0)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "APB Bridge 1 Memory Control Register 1 (apb_bridge1_mem_ctrl1)", + "description": "TrustZone register - APB Bridge 1 Memory Control Register 1 (apb_bridge1_mem_ctrl1)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "APB Bridge 1 Memory Control Register 2 (apb_bridge1_mem_ctrl2)", + "description": "TrustZone register - APB Bridge 1 Memory Control Register 2 (apb_bridge1_mem_ctrl2)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "APB Bridge 1 Memory Control Register 3 (apb_bridge1_mem_ctrl3)", + "description": "TrustZone register - APB Bridge 1 Memory Control Register 3 (apb_bridge1_mem_ctrl3)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "APB Bridge 2 Memory Control Register 0 (apb_bridge2_mem_ctrl0)", + "description": "TrustZone register - APB Bridge 2 Memory Control Register 0 (apb_bridge2_mem_ctrl0)", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "APB Bridge 2 Memory Control Register 1 (apb_bridge2_mem_ctrl1)", + "description": "TrustZone register - APB Bridge 2 Memory Control Register 1 (apb_bridge2_mem_ctrl1)", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "APB Bridge 2 Memory Control Register 2 (apb_bridge2_mem_ctrl2)", + "description": "TrustZone register - APB Bridge 2 Memory Control Register 2 (apb_bridge2_mem_ctrl2)", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "APB Bridge 2 Memory Control Register 3 (apb_bridge2_mem_ctrl3)", + "description": "TrustZone register - APB Bridge 2 Memory Control Register 3 (apb_bridge2_mem_ctrl3)", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "AHB0 Peripherals 0 Slave Rule Register 0 (ahb0_0_slave_rule)", + "description": "TrustZone register - AHB0 Peripherals 0 Slave Rule Register 0 (ahb0_0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "AHB0 Peripherals 1 Slave Rule Register 0 (ahb0_1_slave_rule)", + "description": "TrustZone register - AHB0 Peripherals 1 Slave Rule Register 0 (ahb0_1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "AHB1 Peripherals 0 Slave Rule Register 0 (ahb1_0_slave_rule)", + "description": "TrustZone register - AHB1 Peripherals 0 Slave Rule Register 0 (ahb1_0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "AHB2 Peripherals 0 Slave Rule Register 0 (ahb2_0_slave_rule)", + "description": "TrustZone register - AHB2 Peripherals 0 Slave Rule Register 0 (ahb2_0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "AHB2 Peripherals 0 Memory Rule Register 0 (ahb2_0_mem_rule)", + "description": "TrustZone register - AHB2 Peripherals 0 Memory Rule Register 0 (ahb2_0_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "AHB3 Peripherals 0 Slave Rule Register 0 (ahb3_0_slave_rule)", + "description": "TrustZone register - AHB3 Peripherals 0 Slave Rule Register 0 (ahb3_0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "AHB4 Peripherals 0 Slave Rule Register 0 (ahb4_0_slave_rule)", + "description": "TrustZone register - AHB4 Peripherals 0 Slave Rule Register 0 (ahb4_0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "Secure GPIO Register 1 (sec_gp_reg1)", + "description": "TrustZone register - Secure GPIO Register 1 (sec_gp_reg1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "Secure GPIO Register 2 (sec_gp_reg2)", + "description": "TrustZone register - Secure GPIO Register 2 (sec_gp_reg2)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "Secure GPIO Register 3 (sec_gp_reg3)", + "description": "TrustZone register - Secure GPIO Register 3 (sec_gp_reg3)", + "default_value_int": "0x7f" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0xaa" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "CM33 Lock Control Register (cm33_lock_reg)", + "description": "TrustZone register - CM33 Lock Control Register (cm33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0x8aaa" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0x8aaa" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "ITRC IRQ Trigger Source Selector Register 0 (itrc_irq_out0_sel0)", + "description": "TrustZone register - ITRC IRQ Trigger Source Selector Register 0 (itrc_irq_out0_sel0)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "ITRC IRQ Trigger Source Selector Register 1 (itrc_irq_out0_sel1)", + "description": "TrustZone register - ITRC IRQ Trigger Source Selector Register 1 (itrc_irq_out0_sel1)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger Source Selector Register 0 (itrc_css_reset_out1_sel0)", + "description": "TrustZone register - ITRC CSS_RESET Trigger Source Selector Register 0 (itrc_css_reset_out1_sel0)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger Source Selector Register 1 (itrc_css_reset_out1_sel1)", + "description": "TrustZone register - ITRC CSS_RESET Trigger Source Selector Register 1 (itrc_css_reset_out1_sel1)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger Source Selector Register 0 (itrc_puf_zeroize_out2_sel0)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger Source Selector Register 0 (itrc_puf_zeroize_out2_sel0)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger Source Selector Register 1 (itrc_puf_zeroize_out2_sel1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger Source Selector Register 1 (itrc_puf_zeroize_out2_sel1)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger Source Selector Register 0 (itrc_ram_zeroize_out3_sel0)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger Source Selector Register 0 (itrc_ram_zeroize_out3_sel0)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger Source Selector Register 1 (itrc_ram_zeroize_out3_sel1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger Source Selector Register 1 (itrc_ram_zeroize_out3_sel1)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger Source Selector Register 0 (itrc_chip_reset_out4_sel0)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger Source Selector Register 0 (itrc_chip_reset_out4_sel0)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger Source Selector Register 1 (itrc_chip_reset_out4_sel1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger Source Selector Register 1 (itrc_chip_reset_out4_sel1)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger Source Selector Register 0 (itrc_itr_out_out5_sel0)", + "description": "TrustZone register - ITRC ITR_OUT Trigger Source Selector Register 0 (itrc_itr_out_out5_sel0)", + "default_value_int": "0xa02aaaaa" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger Source Selector Register 1 (itrc_itr_out_out5_sel1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger Source Selector Register 1 (itrc_itr_out_out5_sel1)", + "default_value_int": "0xa02aaaaa" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s66/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s66/database.yaml new file mode 100644 index 0000000..7db7733 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s66/database.yaml @@ -0,0 +1,30 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: lpc55s69 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x40000" + external: false + internal-flash_s: + start_int: "0x10000000" + size_int: "0x40000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x18000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x8000" + external: false + usb-ram: + start_int: "0x40100000" + size_int: "0x4000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/database.yaml new file mode 100644 index 0000000..ee56bb0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/database.yaml @@ -0,0 +1,196 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: + features: + tz: + reg_spec: tz_a0.json + a1: {} +latest: a1 + +# General MCU information +info: + purpose: LPC5500 Series + spsdk_predecessor_name: lpc55s6x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-cortex-m33/high-efficiency-arm-cortex-m33-based-microcontroller-family:LPC55S6x + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x40000" + external: false + internal-flash_s: + start_int: "0x10000000" + size_int: "0x40000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x18000" + external: false + sramx: + start_int: "0x4000000" + size_int: "0x8000" + external: false + usb-ram: + start_int: "0x40100000" + size_int: "0x4000" + external: false + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0021 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_8000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert1] + rot_type: "cert_block_1" + + # ======== DAT section ======== + dat: + socc: 1 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_ram: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV1 + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV1 + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + crc: crc_ram + signed: signed_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0x9_DE00 + size: 512 + reg_spec: pfr_cfpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + computed_fields: + field01C: # VENDOR_USAGE + field01C-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field020: # DCFG_CC_SOCU_NS_PIN + field020-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field024: # DCFG_CC_SOCU_NS_DFLT + field024-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + cmpa: # CMPA description + address: 0x9_E400 + size: 512 + reg_spec: pfr_cmpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + grouped_registers: + - uid: cmpa_rotkh + name: ROTKH + width: 256 + config_as_hexstring: true + reversed: true + description: + ROTKH field is compounded by 8 32-bit fields and contains Root key + table hash + sub_regs: + - field050 + - field054 + - field058 + - field05C + - field060 + - field064 + - field068 + - field06C + computed_fields: + field010: # DCFG_CC_SOCU_PIN + field010-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field014: # DCFG_CC_SOCU_DFLT + field014-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + rules: + - ../../common/pfrc_rules.yaml + - pfrc_rules.yaml + + # ======== Secure binary v2.1 section ======== + sb21: + supported_commands: [erase, load, enable, fill, jump, version_check] + keyblobs: false + + # ======== TrustZone section ======== + tz: + reg_spec: tz_a1.json + + # ======== Memory configuration ======== + memcfg: + peripherals: + spi_nor: + instances: [3] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + recovery_spi: + segments: + sb21: 0x00 + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfr_cfpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfr_cfpa.json new file mode 100644 index 0000000..e67fa10 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfr_cfpa.json @@ -0,0 +1,1738 @@ +{ + "cpu": "lpc55s69", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "Header", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field004", + "name": "VERSION", + "description": "Version", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "S_FW_Version", + "description": "Secure firmware version (Monotonic counter)", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure firmware version (Monotonic counter)", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "IMAGE_KEY_REVOKE", + "description": "Image key revocation ID (Monotonic counter)", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "ROTKH_REVOKE", + "description": "Root of Trust Key Hash Revoke", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field018-bits0-1", + "name": "RoTK0_EN", + "description": "RoT Key 0 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits2-3", + "name": "RoTK1_EN", + "description": "RoT Key 1 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits4-5", + "name": "RoTK2_EN", + "description": "RoT Key 2 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits6-7", + "name": "RoTK3_EN", + "description": "RoT Key 3 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 24 + } + ] + }, + { + "id": "field01C", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field01C-bits0-15", + "name": "DBG_VENDOR_USAGE", + "description": "Debug Vendor Usage" + }, + { + "width": 16, + "id": "field01C-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field020", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field020-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit5", + "name": "CPU1_DBGEN", + "description": "CPU1 (Micro cortex M33) invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field020-bit9", + "name": "CPU1_NIDEN", + "description": "CPU1 (Micro cortex M33) non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 5 + }, + { + "width": 1, + "id": "field020-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field020-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field024", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit5", + "name": "CPU1_DBGEN", + "description": "CPU1 (Micro cortex M33) invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit9", + "name": "CPU1_NIDEN", + "description": "CPU1 (Micro cortex M33) non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field028", + "name": "ENABLE_FA_MODE", + "description": "Enable FA mode. SET_FA_MODE Command should write 0xC33CA55A to this word to indicate boot ROM to enter FA mode.", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "CMPA_PROG_IN_PROGRESS", + "description": "CMPA Page programming on going. This field shall be set to 0x5CC55AA5 in the active CFPA page each time CMPA page programming is going on. It shall always be set to 0x00000000 in the CFPA scratch area.", + "offset_int": "0x002C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 0", + "description": "PRINCE region 0" + }, + "registers": [ + { + "id": "field030", + "name": "PRINCE_REGION0_IV_CODE0", + "description": "Field.", + "offset_int": "0x0030", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field034", + "name": "PRINCE_REGION0_IV_CODE1", + "description": "Field.", + "offset_int": "0x0034", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field034-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field034-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field034-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field038", + "name": "PRINCE_REGION0_IV_BODY0", + "description": "Field.", + "offset_int": "0x0038", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "PRINCE_REGION0_IV_BODY1", + "description": "Field.", + "offset_int": "0x003C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field040", + "name": "PRINCE_REGION0_IV_BODY2", + "description": "Field.", + "offset_int": "0x0040", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field044", + "name": "PRINCE_REGION0_IV_BODY3", + "description": "Field.", + "offset_int": "0x0044", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field048", + "name": "PRINCE_REGION0_IV_BODY4", + "description": "Field.", + "offset_int": "0x0048", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field04C", + "name": "PRINCE_REGION0_IV_BODY5", + "description": "Field.", + "offset_int": "0x004C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field050", + "name": "PRINCE_REGION0_IV_BODY6", + "description": "Field.", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "PRINCE_REGION0_IV_BODY7", + "description": "Field.", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "PRINCE_REGION0_IV_BODY8", + "description": "Field.", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "PRINCE_REGION0_IV_BODY9", + "description": "Field.", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field060", + "name": "PRINCE_REGION0_IV_BODY10", + "description": "Field.", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "PRINCE_REGION0_IV_BODY11", + "description": "Field.", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 1", + "description": "PRINCE region 1" + }, + "registers": [ + { + "id": "field068", + "name": "PRINCE_REGION1_IV_CODE0", + "description": "Field.", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "PRINCE_REGION1_IV_CODE1", + "description": "Field.", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field06C-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field06C-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field06C-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field070", + "name": "PRINCE_REGION1_IV_BODY0", + "description": "Field.", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "PRINCE_REGION1_IV_BODY1", + "description": "Field.", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "PRINCE_REGION1_IV_BODY2", + "description": "Field.", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "PRINCE_REGION1_IV_BODY3", + "description": "Field.", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field080", + "name": "PRINCE_REGION1_IV_BODY4", + "description": "Field.", + "offset_int": "0x0080", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "PRINCE_REGION1_IV_BODY5", + "description": "Field.", + "offset_int": "0x0084", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "PRINCE_REGION1_IV_BODY6", + "description": "Field.", + "offset_int": "0x0088", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "PRINCE_REGION1_IV_BODY7", + "description": "Field.", + "offset_int": "0x008C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field090", + "name": "PRINCE_REGION1_IV_BODY8", + "description": "Field.", + "offset_int": "0x0090", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field094", + "name": "PRINCE_REGION1_IV_BODY9", + "description": "Field.", + "offset_int": "0x0094", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field098", + "name": "PRINCE_REGION1_IV_BODY10", + "description": "Field.", + "offset_int": "0x0098", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field09C", + "name": "PRINCE_REGION1_IV_BODY11", + "description": "Field.", + "offset_int": "0x009C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "PRINCE region 2", + "description": "PRINCE region 2" + }, + "registers": [ + { + "id": "field0A0", + "name": "PRINCE_REGION2_IV_CODE0", + "description": "Field.", + "offset_int": "0x00A0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A4", + "name": "PRINCE_REGION2_IV_CODE1", + "description": "Field.", + "offset_int": "0x00A4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0A4-bits0-1", + "name": "TYPE", + "description": "Type." + }, + { + "width": 6 + }, + { + "width": 4, + "id": "field0A4-bits8-11", + "name": "INDEX", + "description": "Index." + }, + { + "width": 12 + }, + { + "width": 6, + "id": "field0A4-bits24-29", + "name": "SIZE", + "description": "Size." + }, + { + "width": 2 + } + ] + }, + { + "id": "field0A8", + "name": "PRINCE_REGION2_IV_BODY0", + "description": "Field.", + "offset_int": "0x00A8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0AC", + "name": "PRINCE_REGION2_IV_BODY1", + "description": "Field.", + "offset_int": "0x00AC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B0", + "name": "PRINCE_REGION2_IV_BODY2", + "description": "Field.", + "offset_int": "0x00B0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "PRINCE_REGION2_IV_BODY3", + "description": "Field.", + "offset_int": "0x00B4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "PRINCE_REGION2_IV_BODY4", + "description": "Field.", + "offset_int": "0x00B8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "PRINCE_REGION2_IV_BODY5", + "description": "Field.", + "offset_int": "0x00BC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C0", + "name": "PRINCE_REGION2_IV_BODY6", + "description": "Field.", + "offset_int": "0x00C0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C4", + "name": "PRINCE_REGION2_IV_BODY7", + "description": "Field.", + "offset_int": "0x00C4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C8", + "name": "PRINCE_REGION2_IV_BODY8", + "description": "Field.", + "offset_int": "0x00C8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0CC", + "name": "PRINCE_REGION2_IV_BODY9", + "description": "Field.", + "offset_int": "0x00CC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D0", + "name": "PRINCE_REGION2_IV_BODY10", + "description": "Field.", + "offset_int": "0x00D0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D4", + "name": "PRINCE_REGION2_IV_BODY11", + "description": "Field.", + "offset_int": "0x00D4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000D8-000FC", + "description": "Reserved 000D8-000FC" + }, + "registers": [ + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfr_cmpa.json new file mode 100644 index 0000000..1bfaabf --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfr_cmpa.json @@ -0,0 +1,2132 @@ +{ + "cpu": "lpc55s69", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode:", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "USB_HID_ISP", + "value": 1, + "description": "USB_HID_ISP" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "DISABLE", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Core clock:", + "values": [ + { + "name": "SYSTEM_SPEED_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "FRO_96MHZ", + "value": 1, + "description": "96MHz FRO" + }, + { + "name": "FRO_48MHZ", + "value": 2, + "description": "48MHz FRO" + } + ] + }, + { + "width": 2, + "id": "field000-bits9-10", + "name": "USB_SPEED", + "description": "Defines which USB module is used for ISP:", + "values": [ + { + "name": "USB_SPEED_0", + "value": 0, + "description": "Defined by NMPA.USBCFG.USB_SPEED" + }, + { + "name": "USB_FS", + "value": 1, + "description": "USB FS module used for ISP" + }, + { + "name": "USB_HS", + "value": 2, + "description": "USB HS module used for ISP" + }, + { + "name": "USB_SPEED_1", + "value": 3, + "description": "Defined by NMPA.USBCFG.USB_SPEED" + } + ] + }, + { + "width": 13 + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "GPIO port and pin number to use for indicating failure reason. The toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_FLASH_CFG", + "description": "SPI Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI flash recovery boot is enabled, if non-zero value is written to this field." + }, + { + "width": 27 + } + ] + }, + { + "id": "field008", + "name": "USB_ID", + "description": "USB Identifiers", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "USB_VENDOR_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "USB_PRODUCT_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field00C", + "name": "SDIO_CFG", + "description": "SDIO Configuration", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit5", + "name": "CPU1_DBGEN", + "description": "CPU1 (Micro cortex M33) invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field010-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit9", + "name": "CPU1_NIDEN", + "description": "CPU1 (Micro cortex M33) non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 5 + }, + { + "width": 1, + "id": "field010-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field014", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field014-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit5", + "name": "CPU1_DBGEN", + "description": "CPU1 (Micro cortex M33) invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field014-bit7", + "name": "FA_ME_CMD_EN", + "description": "Fault Analysis/Mass Erase Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field014-bit9", + "name": "CPU1_NIDEN", + "description": "CPU1 (Micro cortex M33) non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field018", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field018-bits16-31", + "name": "VENDOR_USAGE", + "description": "Upper 16 bits of vendor usage field defined in DAP. Lower 16-bits come from customer field area." + } + ] + }, + { + "id": "field01C", + "name": "SECURE_BOOT_CFG", + "description": "Secure boot configuration", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field01C-bits0-1", + "name": "RSA4K", + "description": "Select minimal key length. To enforce usage of RSA4096, setting 0b11 value is recommended to allow RSA4096 keys only.", + "values": [ + { + "name": "RSA2048", + "value": 0, + "description": "RSA2048 or higher can be used for image signing. Only RSA2048 can be used as debug keys." + }, + { + "name": "RSA4096_0", + "value": 1, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + }, + { + "name": "RSA4096_1", + "value": 2, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + }, + { + "name": "RSA4096_2", + "value": 3, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + } + ] + }, + { + "width": 2, + "id": "field01C-bits2-3", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits4-5", + "name": "DICE_CUST_CFG", + "description": "Include Customer factory area (including keys) in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field01C-bits6-7", + "name": "SKIP_DICE", + "description": "Skip DICE computation", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable DICE" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable DICE" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable DICE" + } + ] + }, + { + "width": 2, + "id": "field01C-bits8-9", + "name": "TZM_IMAGE_TYPE", + "description": "TrustZone-M mode", + "values": [ + { + "name": "HEADER", + "value": 0, + "description": "TZ-M image mode is taken from application image header" + }, + { + "name": "DISABLED", + "value": 1, + "description": "TZ-M disabled image, boots to non-secure mode" + }, + { + "name": "ENABLED", + "value": 2, + "description": "TZ-M enabled image, boots to secure mode" + }, + { + "name": "PRESET", + "value": 3, + "description": "TZ-M enabled image with TZ-M preset, boot to secure mode TZ-M pre-configured by data from application image header" + } + ] + }, + { + "width": 2, + "id": "field01C-bits10-11", + "name": "BLOCK_SET_KEY", + "description": "Block PUF key code generation", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow PUF Key Code generation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable PUF Key Code generation" + } + ] + }, + { + "width": 2, + "id": "field01C-bits12-13", + "name": "BLOCK_ENROLL", + "description": "Block PUF enrollment", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow PUF enroll operation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable PUF enroll operation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable PUF enroll operation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable PUF enroll operation" + } + ] + }, + { + "width": 2, + "id": "field01C-bits14-15", + "name": "DICE_INC_SEC_EPOCH", + "description": "Include security EPOCH in DICE" + }, + { + "width": 14 + }, + { + "width": 2, + "id": "field01C-bits30-31", + "name": "SEC_BOOT_EN", + "description": "Secure boot enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Plain image (internal flash with or without CRC)" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Boot signed images. (internal flash, RSA signed)" + } + ] + } + ] + }, + { + "id": "field020", + "name": "PRINCE_BASE_ADDR", + "description": "Prince Base Address", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4, + "id": "field020-bits0-3", + "name": "ADDR0_PRG", + "description": "Programmable portion of the base address of region 0" + }, + { + "width": 4, + "id": "field020-bits4-7", + "name": "ADDR1_PRG", + "description": "Programmable portion of the base address of region 1" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "ADDR2_PRG", + "description": "Programmable portion of the base address of region 2" + }, + { + "width": 6 + }, + { + "width": 2, + "id": "field020-bits18-19", + "name": "LOCK_REG0", + "description": "Lock PRINCE region0 settings", + "values": [ + { + "name": "UNLOCK", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCK_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCK_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCK_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field020-bits20-21", + "name": "LOCK_REG1", + "description": "Lock PRINCE region1 settings", + "values": [ + { + "name": "UNLOCK", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCK_0", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCK_1", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCK_2", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field020-bits24-25", + "name": "REG0_ERASE_CHECK_EN", + "description": "For PRINCE region0 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits26-27", + "name": "REG1_ERASE_CHECK_EN", + "description": "For PRINCE region1 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "REG2_ERASE_CHECK_EN", + "description": "For PRINCE region2 enable checking whether all encrypted pages are erased together", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Region is disabled" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Region is enabled" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Region is enabled" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Region is enabled" + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "field024", + "name": "PRINCE_SR_0", + "description": "Region 0, sub-region enable", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field028", + "name": "PRINCE_SR_1", + "description": "Region 1, sub-region enable", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "PRINCE_SR_2", + "description": "Region 2, sub-region enable", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "XTAL_32KHZ_CAPABANK_TRIM", + "description": "Xtal 32kHz capabank trimming.", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field030-bit0", + "name": "TRIM_VALID", + "description": "XTAL 32kHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field030-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field030-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + }, + { + "id": "field034", + "name": "XTAL_16MHZ_CAPABANK_TRIM", + "description": "Xtal 16MHz capabank trimming.", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field034-bit0", + "name": "TRIM_VALID", + "description": "XTAL 16MHz capa bank trimmings", + "values": [ + { + "name": "NOT_TRIM", + "value": 0, + "description": "Capa Bank trimmings not valid. Default trimmings value are used" + }, + { + "name": "VALID", + "value": 1, + "description": "Capa Bank trimmings valid" + } + ] + }, + { + "width": 10, + "id": "field034-bits1-10", + "name": "XTAL_LOAD_CAP_IEC_PF_X100", + "description": "Load capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits11-20", + "name": "PCB_XIN_PARA_CAP_PF_X100", + "description": "PCB XIN parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 10, + "id": "field034-bits21-30", + "name": "PCB_XOUT_PARA_CAP_PF_X100", + "description": "PCB XOUT parasitic capacitance, pF x 100. For example, 6pF becomes 600." + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00038-0004C", + "description": "Reserved 00038-0004C" + }, + "registers": [ + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field050", + "name": "ROTKH0", + "description": "ROTKH0 for Root of Trust Keys Table hash[255:224]", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "ROTKH1", + "description": "ROTKH1 for Root of Trust Keys Table hash[223:192]", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "ROTKH2", + "description": "ROTKH2 for Root of Trust Keys Table hash[191:160]", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "ROTKH3", + "description": "ROTKH3 for Root of Trust Keys Table hash[159:128]", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field060", + "name": "ROTKH4", + "description": "ROTKH4 for Root of Trust Keys Table hash[127:96]", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "ROTKH5", + "description": "ROTKH5 for Root of Trust Keys Table hash[95:64]", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "ROTKH6", + "description": "ROTKH6 for Root of Trust Keys Table hash[63:32]", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "ROTKH7", + "description": "ROTKH7 for Root of Trust Keys Table hash[31:0]", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00070-000FC", + "description": "Reserved 00070-000FC" + }, + "registers": [ + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00090", + "name": "Reserved 0x00090", + "description": "This field is reserved for internal use", + "offset_int": "0x0090", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A0", + "name": "Reserved 0x000A0", + "description": "This field is reserved for internal use", + "offset_int": "0x00A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field100", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfrc_rules.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfrc_rules.yaml new file mode 100644 index 0000000..60198c1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/pfrc_rules.yaml @@ -0,0 +1,19 @@ +# Copyright 2022-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +rules: + - req_id: "lpc55xx_4.1" + desc: + By default (blank device), the RoTKx_EN values are set to 0b00 which means + invalid. When secure boot is enabled (SEC_BOOT_EN != 0) there must be at + least one RoTKx_EN which is set to 0b01 (enabled) to allow device to boot + successfully. + msg: Secure boot is enabled. Make sure at least one Root of Trust Key Enable bit is set. + cond: CMPA.SECURE_BOOT_CFG.SEC_BOOT_EN != 0 and not (CFPA.ROTKH_REVOKE.RoTK3_EN == 1 or CFPA.ROTKH_REVOKE.RoTK2_EN == 1 or CFPA.ROTKH_REVOKE.RoTK1_EN == 1 or CFPA.ROTKH_REVOKE.RoTK0_EN == 1) + + - req_id: "lpc55xx_5.1" + desc: Inverse value (upper 16 bits) of VENDOR_USAGE must be always + valid. + msg: Inverse values are generated automatically based on configuration. + cond: CFPA.VENDOR_USAGE != 0 and (~(CFPA.VENDOR_USAGE>>int(16)) & 0xFFFF) != (CFPA.VENDOR_USAGE & 0xFFFF) diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/tz_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/tz_a0.json new file mode 100644 index 0000000..28cd87f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/tz_a0.json @@ -0,0 +1,933 @@ +{ + "cpu": "lpc55s69", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "MCM33 Secure vector table address (mcm33_vtor_addr)", + "description": "TrustZone register - MCM33 Secure vector table address (mcm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "MPU Control Register.(cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register.(cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "Non-secure MPU Control Register.(cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register.(cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "SAU Control Register.(cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register.(cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "description": "TrustZone register - FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "FLASH Memory Rule Register 0 (flash_mem_rule0)", + "description": "TrustZone register - FLASH Memory Rule Register 0 (flash_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "FLASH Memory Rule Register 1 (flash_mem_rule1)", + "description": "TrustZone register - FLASH Memory Rule Register 1 (flash_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "FLASH Memory Rule Register 2 (flash_mem_rule2)", + "description": "TrustZone register - FLASH Memory Rule Register 2 (flash_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "RAMX Slave Rule Register (ramx_slave_rule)", + "description": "TrustZone register - RAMX Slave Rule Register (ramx_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "RAMX Memory Rule Register 0 (ramx_mem_rule0)", + "description": "TrustZone register - RAMX Memory Rule Register 0 (ramx_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "RAM0 Memory Rule Register 0 (ram0_mem_rule0)", + "description": "TrustZone register - RAM0 Memory Rule Register 0 (ram0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "RAM0 Memory Rule Register 1 (ram0_mem_rule1)", + "description": "TrustZone register - RAM0 Memory Rule Register 1 (ram0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "RAM1 Memory Rule Register 0 (ram1_mem_rule0)", + "description": "TrustZone register - RAM1 Memory Rule Register 0 (ram1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "RAM1 Memory Rule Register 1 (ram1_mem_rule1)", + "description": "TrustZone register - RAM1 Memory Rule Register 1 (ram1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "RAM2 Memory Rule Register 0 (ram2_mem_rule0)", + "description": "TrustZone register - RAM2 Memory Rule Register 0 (ram2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "RAM2 Memory Rule Register 1 (ram2_mem_rule1)", + "description": "TrustZone register - RAM2 Memory Rule Register 1 (ram2_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "RAM3 Slave Rule Register (ram3_slave_rule)", + "description": "TrustZone register - RAM3 Slave Rule Register (ram3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "RAM3 Memory Rule Register 0 (ram3_mem_rule0)", + "description": "TrustZone register - RAM3 Memory Rule Register 0 (ram3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "RAM3 Memory Rule Register 1 (ram3_mem_rule1)", + "description": "TrustZone register - RAM3 Memory Rule Register 1 (ram3_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "RAM4 Slave Rule Register (ram4_slave_rule)", + "description": "TrustZone register - RAM4 Slave Rule Register (ram4_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "RAM4 Memory Rule Register 0 (ram4_mem_rule0)", + "description": "TrustZone register - RAM4 Memory Rule Register 0 (ram4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "description": "TrustZone register - APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 1 (ahb_periph0_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 1 (ahb_periph0_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register 0 (ahb_periph1_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register 0 (ahb_periph1_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register 1 (ahb_periph1_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register 1 (ahb_periph1_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 1 (ahb_periph2_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 1 (ahb_periph2_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "AHB Peripherals 2 Memory Rule Register 0 (ahb_periph2_mem_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Memory Rule Register 0 (ahb_periph2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "HS USB Slave Rule Register 0 (usb_hs_slave_rule0)", + "description": "TrustZone register - HS USB Slave Rule Register 0 (usb_hs_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "HS USB Memory Rule Register 0 (usb_hs__mem_rule0)", + "description": "TrustZone register - HS USB Memory Rule Register 0 (usb_hs__mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "Secure GPIO Register 1 (sec_gp_reg1)", + "description": "TrustZone register - Secure GPIO Register 1 (sec_gp_reg1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "Secure GPIO Register 2 (sec_gp_reg2)", + "description": "TrustZone register - Secure GPIO Register 2 (sec_gp_reg2)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "Secure GPIO Register 3 (sec_gp_reg3)", + "description": "TrustZone register - Secure GPIO Register 3 (sec_gp_reg3)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "Secure Interrupt Mask for CPU1 Register 0 (sec_int_reg0)", + "description": "TrustZone register - Secure Interrupt Mask for CPU1 Register 0 (sec_int_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "Secure Interrupt Mask for CPU1 Register 1 (sec_int_reg1)", + "description": "TrustZone register - Secure Interrupt Mask for CPU1 Register 1 (sec_int_reg1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0xaaa" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "CM33 Lock Control Register (cm33_lock_reg)", + "description": "TrustZone register - CM33 Lock Control Register (cm33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "MCM33 Lock Control Register (mcm33_lock_reg)", + "description": "TrustZone register - MCM33 Lock Control Register (mcm33_lock_reg)", + "default_value_int": "0x8000000a" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0xaaaa" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/tz_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/tz_a1.json new file mode 100644 index 0000000..69aec39 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc55s69/tz_a1.json @@ -0,0 +1,941 @@ +{ + "cpu": "lpc55s69", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "MCM33 Secure vector table address (mcm33_vtor_addr)", + "description": "TrustZone register - MCM33 Secure vector table address (mcm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "MPU Control Register.(cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register.(cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "Non-secure MPU Control Register.(cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register.(cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "SAU Control Register.(cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register.(cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "description": "TrustZone register - FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "FLASH Memory Rule Register 0 (flash_mem_rule0)", + "description": "TrustZone register - FLASH Memory Rule Register 0 (flash_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "FLASH Memory Rule Register 1 (flash_mem_rule1)", + "description": "TrustZone register - FLASH Memory Rule Register 1 (flash_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "FLASH Memory Rule Register 2 (flash_mem_rule2)", + "description": "TrustZone register - FLASH Memory Rule Register 2 (flash_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "RAMX Slave Rule Register (ramx_slave_rule)", + "description": "TrustZone register - RAMX Slave Rule Register (ramx_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "RAMX Memory Rule Register 0 (ramx_mem_rule0)", + "description": "TrustZone register - RAMX Memory Rule Register 0 (ramx_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "RAM0 Memory Rule Register 0 (ram0_mem_rule0)", + "description": "TrustZone register - RAM0 Memory Rule Register 0 (ram0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "RAM0 Memory Rule Register 1 (ram0_mem_rule1)", + "description": "TrustZone register - RAM0 Memory Rule Register 1 (ram0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "RAM1 Memory Rule Register 0 (ram1_mem_rule0)", + "description": "TrustZone register - RAM1 Memory Rule Register 0 (ram1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "RAM1 Memory Rule Register 1 (ram1_mem_rule1)", + "description": "TrustZone register - RAM1 Memory Rule Register 1 (ram1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "RAM2 Memory Rule Register 0 (ram2_mem_rule0)", + "description": "TrustZone register - RAM2 Memory Rule Register 0 (ram2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "RAM2 Memory Rule Register 1 (ram2_mem_rule1)", + "description": "TrustZone register - RAM2 Memory Rule Register 1 (ram2_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "RAM3 Slave Rule Register (ram3_slave_rule)", + "description": "TrustZone register - RAM3 Slave Rule Register (ram3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "RAM3 Memory Rule Register 0 (ram3_mem_rule0)", + "description": "TrustZone register - RAM3 Memory Rule Register 0 (ram3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "RAM3 Memory Rule Register 1 (ram3_mem_rule1)", + "description": "TrustZone register - RAM3 Memory Rule Register 1 (ram3_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "RAM4 Slave Rule Register (ram4_slave_rule)", + "description": "TrustZone register - RAM4 Slave Rule Register (ram4_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "RAM4 Memory Rule Register 0 (ram4_mem_rule0)", + "description": "TrustZone register - RAM4 Memory Rule Register 0 (ram4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "description": "TrustZone register - APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 1 (ahb_periph0_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 1 (ahb_periph0_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register 0 (ahb_periph1_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register 0 (ahb_periph1_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register 1 (ahb_periph1_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register 1 (ahb_periph1_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 1 (ahb_periph2_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 1 (ahb_periph2_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "AHB Peripherals 2 Memory Rule Register 0 (ahb_periph2_mem_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Memory Rule Register 0 (ahb_periph2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "HS USB Slave Rule Register 0 (usb_hs_slave_rule0)", + "description": "TrustZone register - HS USB Slave Rule Register 0 (usb_hs_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "HS USB Memory Rule Register 0 (usb_hs__mem_rule0)", + "description": "TrustZone register - HS USB Memory Rule Register 0 (usb_hs__mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "Secure GPIO Register 1 (sec_gp_reg1)", + "description": "TrustZone register - Secure GPIO Register 1 (sec_gp_reg1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "Secure GPIO Register 2 (sec_gp_reg2)", + "description": "TrustZone register - Secure GPIO Register 2 (sec_gp_reg2)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "Secure GPIO Register 3 (sec_gp_reg3)", + "description": "TrustZone register - Secure GPIO Register 3 (sec_gp_reg3)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "Secure Interrupt Mask for CPU1 Register 0 (sec_int_reg0)", + "description": "TrustZone register - Secure Interrupt Mask for CPU1 Register 0 (sec_int_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "Secure Interrupt Mask for CPU1 Register 1 (sec_int_reg1)", + "description": "TrustZone register - Secure Interrupt Mask for CPU1 Register 1 (sec_int_reg1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0xaaa" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "CM33 Lock Control Register (cm33_lock_reg)", + "description": "TrustZone register - CM33 Lock Control Register (cm33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "MCM33 Lock Control Register (mcm33_lock_reg)", + "description": "TrustZone register - MCM33 Lock Control Register (mcm33_lock_reg)", + "default_value_int": "0x8000000a" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "Miscellaneous TZM settings (misc_tzm_settings)", + "description": "TrustZone register - Miscellaneous TZM settings (misc_tzm_settings)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc804/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc804/database.yaml new file mode 100644 index 0000000..0b95899 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc804/database.yaml @@ -0,0 +1,35 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + purpose: LPC800 Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc800-arm-cortex-m0-plus-/lpc800-32-bit-arm-cortex-m0-plus-based-low-cost-mcu:LPC80X + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8000 + external: false + ram0: + start_int: 0x1000_0000 + size_int: 0x1000 + external: false + isp: + rom: + protocol: lpc + interfaces: ["uart"] + +features: + lpcprog: + part_ids: + "8040": LPC804M101JBD64 + "8041": LPC804M101JDH20 + "8042": LPC804M101JDH24 + "8043": LPC804M111JDH24 + "8044": LPC804M101JHI33 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc810/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc810/database.yaml new file mode 100644 index 0000000..dcab271 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc810/database.yaml @@ -0,0 +1,33 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + purpose: LPC800 Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc800-arm-cortex-m0-plus-/lpc810-and-lpc830-32-bit-arm-cortex-m0-plus-based-low-cost-mcu:LPC81X_LPC83X + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size: 0x1000 + external: false + ram0: + start_int: 0x1000_0000 + size: 0x400 + external: false + isp: + rom: + protocol: lpc + interfaces: ["uart"] + +features: + lpcprog: + part_ids: + "8100": LPC810M021FN8 + buffer_address: 0x1000_0300 + buffer_size: 0x100 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc812/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc812/database.yaml new file mode 100644 index 0000000..0b84767 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc812/database.yaml @@ -0,0 +1,32 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + purpose: LPC800 Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc800-arm-cortex-m0-plus-/lpc810-and-lpc830-32-bit-arm-cortex-m0-plus-based-low-cost-mcu:LPC81X_LPC83X + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size: 0x4000 + external: false + ram0: + start_int: 0x1000_0000 + size: 0x1000 + external: false + isp: + rom: + protocol: lpc + interfaces: ["uart"] + +features: + lpcprog: + part_ids: + "8122": LPC812M101JDH20 + buffer_size: 0x200 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc845/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc845/database.yaml new file mode 100644 index 0000000..cd6e6f9 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc845/database.yaml @@ -0,0 +1,34 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + purpose: LPC800 Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc800-arm-cortex-m0-plus-/lpc840-32-bit-arm-cortex-m0-plus-based-low-cost-mcu:LPC84X + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10000 + external: false + ram0: + start_int: 0x1000_0000 + size_int: 0x4000 + external: false + isp: + rom: + protocol: lpc + interfaces: ["uart"] + +features: + lpcprog: + part_ids: + "8451": LPC845M301JBD64 + "8452": LPC845M301JBD48 + "8453": LPC845M301JHI48 + "8454": LPC845M301JHI33 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc865/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc865/database.yaml new file mode 100644 index 0000000..8eb5723 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/lpc865/database.yaml @@ -0,0 +1,33 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + purpose: LPC800 Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc800-arm-cortex-m0-plus-/lpc860-32-bit-arm-cortex-m0-plus-based-low-cost-mcu-with-i3c-interface:LPC86X + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10000 + external: false + ram0: + start_int: 0x1000_0000 + size_int: 0x2000 + external: false + isp: + rom: + protocol: lpc + interfaces: ["uart"] + +features: + lpcprog: + part_ids: + "8651": LPC865M201JBD64 + "8652": LPC865M201JHI48 + "8654": LPC865M201JHI33 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81646/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81646/database.yaml new file mode 100644 index 0000000..70f4157 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81646/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mc56f81648 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81648/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81648/database.yaml new file mode 100644 index 0000000..d896526 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81648/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mc56f81668 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10000 + external: false + ram: + start_int: 0x60000 + size_int: 0x3000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81666/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81666/database.yaml new file mode 100644 index 0000000..1de117d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81666/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mc56f81668 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81668/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81668/database.yaml new file mode 100644 index 0000000..1cabeaa --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81668/database.yaml @@ -0,0 +1,8 @@ +# Copyright 2023-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mc56f81768 + +info: + spsdk_predecessor_name: mc56f816xx diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81746/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81746/database.yaml new file mode 100644 index 0000000..e2aef4d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81746/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mc56f81748 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81748/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81748/database.yaml new file mode 100644 index 0000000..8ef00d0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81748/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mc56f81768 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10000 + external: false + ram: + start_int: 0x60000 + size_int: 0x3000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81766/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81766/database.yaml new file mode 100644 index 0000000..063317c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81766/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mc56f81768 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/bca.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/bca.json new file mode 100644 index 0000000..384ec85 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/bca.json @@ -0,0 +1,260 @@ +{ + "cpu": "mcf56f81xxx", + "groups": [ + { + "group": { + "name": "General regs", + "description": "BCA registers generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "name": "TAG", + "description": "Tag: Magic number to verify bootloader configuration is valid. Must be set to 'KCFG'", + "offset_int": "0", + "default_value_int": "0x6766636B", + "access": "RO", + "reg_width": 32 + }, + { + "id": "field004", + "name": "CRC_START_ADDRESS", + "description": "Start address for application image CRC check", + "offset_int": "0x004", + "default_value_int": "0", + "access": "RO", + "reg_width": 32 + }, + { + "id": "field008", + "name": "CRC_BYTE_COUNT", + "description": "Byte count for application image CRC check", + "offset_int": "0x008", + "default_value_int": "0", + "access": "RO", + "reg_width": 32 + }, + { + "id": "field00C", + "name": "CRC_EXPECTED_VALUE", + "description": "Expected CRC value for application CRC check", + "offset_int": "0x00C", + "default_value_int": "0", + "access": "RO", + "reg_width": 32 + }, + { + "id": "field010", + "name": "ENABLED_PERIPHERALS", + "description": "Bitfield of peripherals to enable. Bootloader will enable the peripheral if corresponding bit is set to 1", + "offset_int": "0x010", + "default_value_int": "3", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "UART_SCI", + "description": "Enable UART/SCI peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable UART/SCI peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable UART/SCI peripheral" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "LPI2C", + "description": "Enable LPI2C peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable LPI2C peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable LPI2C peripheral" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field011", + "name": "I2C_SLAVE_ADDRESS", + "description": "If not 0xFF, used as the 7-bit I2C slave address", + "offset_int": "0x011", + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "field012", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Timeout in milliseconds for active peripheral detection", + "offset_int": "0x012", + "default_value_int": "0xFFFF", + "reg_width": 16 + }, + { + "id": "Reserved014", + "name": "Reserved 0x014", + "description": "This field is reserved for internal use", + "offset_int": "0x014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved018", + "name": "Reserved 0x018", + "description": "This field is reserved for internal use", + "offset_int": "0x018", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved01C", + "name": "Reserved 0x01C", + "description": "This field is reserved for internal use", + "offset_int": "0x01C", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "Reserved01D", + "name": "Reserved 0x01D", + "description": "This field is reserved for internal use", + "offset_int": "0x01D", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "field01E", + "name": "BOOT_FLAGS", + "description": "One's complement of direct boot flag. 0xFE represents direct boot", + "offset_int": "0x01E", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field01E-bit0", + "name": "DIRECT_BOOT", + "description": "Enable direct boot", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable direct boot" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Disable direct boot - standard boot with ISP" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved01F", + "name": "Reserved 0x01F", + "description": "This field is reserved for internal use", + "offset_int": "0x01F", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "field020", + "name": "IMAGE_SIZE", + "description": "The information about total size of the image", + "offset_int": "0x020", + "default_value_int": "0", + "reg_width": 32 + }, + { + "id": "field024", + "name": "FIRMWARE_VERSION", + "description": "Firmware version, stored in little endian format. Used for anti-rollback protection. New firmware must have the same or higher FW version", + "offset_int": "0x024", + "default_value_int": "0", + "reg_width": 32 + }, + { + "id": "Reserved028", + "name": "Reserved 0x028", + "description": "This field is reserved for internal use", + "offset_int": "0x028", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved02C", + "name": "Reserved 0x02C", + "description": "This field is reserved for internal use", + "offset_int": "0x02C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved030", + "name": "Reserved 0x030", + "description": "This field is reserved for internal use", + "offset_int": "0x030", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved034", + "name": "Reserved 0x034", + "description": "This field is reserved for internal use", + "offset_int": "0x034", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved038", + "name": "Reserved 0x038", + "description": "This field is reserved for internal use", + "offset_int": "0x038", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved03C", + "name": "Reserved 0x03C", + "description": "This field is reserved for internal use", + "offset_int": "0x03C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/database.yaml new file mode 100644 index 0000000..faf8c92 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/database.yaml @@ -0,0 +1,87 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + b1: {} +latest: b1 + +# General MCU information +info: + purpose: 32-bit DSC Series + spsdk_predecessor_name: mc56f817xx + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/additional-mpu-mcus-architectures/digital-signal-controllers/32-bit-56800ex-ef-core/up-to-100mhz-digital-signal-controllers-with-dsass-and-operational-amplifier:MC56F81xxx + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x20000 + external: false + ram: + start_int: 0x60000 + size_int: 0x5000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "i2c", "spi"] + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x04003000 + size: 0x1000 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinBca + - Mbi_MixinFcf + - Mbi_ExportMixinAppBcaFcf + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinFcf + - Mbi_MixinBca + - Mbi_ExportMixinAppBcaFcf + - Mbi_ExportMixinCrcSignBca + images: + xip: + plain: plain_xip + crc: crc_xip + # Fixed image type redefines the image type fetched from IVT + fixed_image_type: 5 + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 + + # ======== BCA section ======== + bca: + reg_spec: bca.json + + # ======== FCF section ======== + fcf: + reg_spec: fcf.json + reg_spec_modification: + field000: + reverse: True + config_as_hexstring: True + + # ======== PFR section ======== + pfr: + sub_features: [ifr] + ifr: + address: 0x0 + reg_spec: ifr_ns.json diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/fcf.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/fcf.json new file mode 100644 index 0000000..7b41812 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/fcf.json @@ -0,0 +1,147 @@ +{ + "cpu": "mcf56f81xxx", + "groups": [ + { + "group": { + "name": "General regs", + "description": "FCF registers generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "name": "BACKDOOR_KEY", + "offset_int": "0", + "default_value_int": "0xFFFFFFFFFFFFFFFF", + "reg_width": 64, + "description": "Backdoor Comparison Key. Refer to Verify Backdoor Access Key Command and Unsecuring the Chip Using Backdoor Key Access." + }, + { + "id": "field008", + "name": "FPROT", + "description": "Program flash protection bytes. Refer to the description of the Program Flash Protection Registers (FPROT0-3).", + "offset_int": "0x008", + "default_value_int": "0xFFFFFFFF", + "reg_width": 32, + "bitfields": [ + { + "width": 8, + "id": "field008-bits0-7", + "name": "FPROT3", + "description": "Program Flash Protection Registers (FPROT3)" + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "FPROT2", + "description": "Program Flash Protection Registers (FPROT2)" + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "FPROT1", + "description": "Program Flash Protection Registers (FPROT1)" + }, + { + "width": 8, + "id": "field008-bits24-31", + "name": "FPROT0", + "description": "Program Flash Protection Registers (FPROT0)" + } + ] + }, + { + "id": "field00C", + "name": "LIFECYCLE", + "description": "DSA Secure Lifecycle state", + "offset_int": "0x00C", + "default_value_int": "0xFE", + "reg_width": 8, + "bitfields": [ + { + "width": 8, + "id": "field00C-bits0-7", + "name": "LIFECYCLE_STATE", + "description": "DSA Secure Lifecycle state", + "values": [ + { + "name": "OEM_OPEN_ROP0", + "value": 254, + "description": "Most permissive state - full ISP command set available in all conditions" + }, + { + "name": "OEM_CLOSED_ROP1", + "value": 144, + "description": "Moderate security - partial ISP commands on normal boot, full commands via ROM_API" + }, + { + "name": "OEM_CLOSED_ROP2", + "value": 149, + "description": "Higher security - no ISP commands on normal boot, partial commands via ROM_API or invalid image" + }, + { + "name": "OEM_CLOSED_ROP3", + "value": 155, + "description": "Very high security - no ISP commands except ReceiveSBFile via ROM_API for secure devices only" + }, + { + "name": "OEM_CLOSED_NO_RETURN", + "value": 107, + "description": "Maximum security - no ISP commands available in any condition, device cannot be reprogrammed" + } + ] + } + ] + }, + { + "id": "field00D", + "name": "OPTION_BYTE", + "description": "Flash nonvolatile option byte. Refer to the description of the Flash Option Register (FOPT).", + "offset_int": "0x00D", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field00D-bit-0", + "name": "POWER_MODE", + "description": "Controls which power mode register takes effect", + "values": [ + { + "name": "SIM_PWRMODE", + "value": 1, + "description": "Writing SIM_PWRMODE register takes effect, writing SIM_PWR register doesn't take effect" + }, + { + "name": "SIM_PWR", + "value": 0, + "description": "Writing SIM_PWRMODE register doesn't take effect, writing SIM_PWR register takes effect" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00E", + "name": "Reserved 0x00E", + "description": "This field is reserved for internal use", + "offset_int": "0x00E", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "Reserved00F", + "name": "Reserved 0x00F", + "description": "This field is reserved for internal use", + "offset_int": "0x00F", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/ifr_ns.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/ifr_ns.json new file mode 100644 index 0000000..b3197c1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81768/ifr_ns.json @@ -0,0 +1,121 @@ +{ + "cpu": "MWCT20D2", + "groups": [ + { + "group": { + "name": "Customer IFR data", + "description": "Customer IFR data" + }, + "registers": [ + { + "id": "field000", + "name": "CUSTOMER_DEFINED0", + "description": "Customer defined", + "offset_int": "0x00C0", + "index_int": "0", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field001", + "name": "CUSTOMER_DEFINED1", + "description": "Customer defined", + "offset_int": "0x00C4", + "index_int": "0x0001", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field002", + "name": "CUSTOMER_DEFINED2", + "description": "Customer defined", + "offset_int": "0x00C8", + "index_int": "0x0002", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field003", + "name": "CUSTOMER_DEFINED3", + "description": "Customer defined", + "offset_int": "0x00CC", + "index_int": "0x0003", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field004", + "name": "CUSTOMER_DEFINED4", + "description": "Customer defined", + "offset_int": "0x00D0", + "index_int": "0x0004", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field005", + "name": "CUSTOMER_DEFINED5", + "description": "Customer defined", + "offset_int": "0x00D4", + "index_int": "0x0005", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field006", + "name": "CUSTOMER_DEFINED6", + "description": "Customer defined", + "offset_int": "0x00D8", + "index_int": "0x0006", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field007", + "name": "CUSTOMER_DEFINED7", + "description": "Customer defined", + "offset_int": "0x00DC", + "index_int": "0x0007", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field008", + "name": "CUSTOMER_DEFINED8", + "description": "Customer defined", + "offset_int": "0x00E0", + "index_int": "0x0008", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field009", + "name": "CUSTOMER_DEFINED9", + "description": "Customer defined", + "offset_int": "0x00E4", + "index_int": "0x0009", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field010", + "name": "CUSTOMER_DEFINED10", + "description": "Customer defined", + "offset_int": "0x00E8", + "index_int": "0x000A", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field011", + "name": "CUSTOMER_DEFINED11", + "description": "Customer defined", + "offset_int": "0x00EC", + "index_int": "0x000B", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81866/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81866/database.yaml new file mode 100644 index 0000000..00d6f2a --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81866/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mc56f81868 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/bca.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/bca.json new file mode 100644 index 0000000..384ec85 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/bca.json @@ -0,0 +1,260 @@ +{ + "cpu": "mcf56f81xxx", + "groups": [ + { + "group": { + "name": "General regs", + "description": "BCA registers generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "name": "TAG", + "description": "Tag: Magic number to verify bootloader configuration is valid. Must be set to 'KCFG'", + "offset_int": "0", + "default_value_int": "0x6766636B", + "access": "RO", + "reg_width": 32 + }, + { + "id": "field004", + "name": "CRC_START_ADDRESS", + "description": "Start address for application image CRC check", + "offset_int": "0x004", + "default_value_int": "0", + "access": "RO", + "reg_width": 32 + }, + { + "id": "field008", + "name": "CRC_BYTE_COUNT", + "description": "Byte count for application image CRC check", + "offset_int": "0x008", + "default_value_int": "0", + "access": "RO", + "reg_width": 32 + }, + { + "id": "field00C", + "name": "CRC_EXPECTED_VALUE", + "description": "Expected CRC value for application CRC check", + "offset_int": "0x00C", + "default_value_int": "0", + "access": "RO", + "reg_width": 32 + }, + { + "id": "field010", + "name": "ENABLED_PERIPHERALS", + "description": "Bitfield of peripherals to enable. Bootloader will enable the peripheral if corresponding bit is set to 1", + "offset_int": "0x010", + "default_value_int": "3", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "UART_SCI", + "description": "Enable UART/SCI peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable UART/SCI peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable UART/SCI peripheral" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "LPI2C", + "description": "Enable LPI2C peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable LPI2C peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable LPI2C peripheral" + } + ] + }, + { + "width": 6 + } + ] + }, + { + "id": "field011", + "name": "I2C_SLAVE_ADDRESS", + "description": "If not 0xFF, used as the 7-bit I2C slave address", + "offset_int": "0x011", + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "field012", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Timeout in milliseconds for active peripheral detection", + "offset_int": "0x012", + "default_value_int": "0xFFFF", + "reg_width": 16 + }, + { + "id": "Reserved014", + "name": "Reserved 0x014", + "description": "This field is reserved for internal use", + "offset_int": "0x014", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved018", + "name": "Reserved 0x018", + "description": "This field is reserved for internal use", + "offset_int": "0x018", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved01C", + "name": "Reserved 0x01C", + "description": "This field is reserved for internal use", + "offset_int": "0x01C", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "Reserved01D", + "name": "Reserved 0x01D", + "description": "This field is reserved for internal use", + "offset_int": "0x01D", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "field01E", + "name": "BOOT_FLAGS", + "description": "One's complement of direct boot flag. 0xFE represents direct boot", + "offset_int": "0x01E", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field01E-bit0", + "name": "DIRECT_BOOT", + "description": "Enable direct boot", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable direct boot" + }, + { + "name": "DISABLE", + "value": 1, + "description": "Disable direct boot - standard boot with ISP" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved01F", + "name": "Reserved 0x01F", + "description": "This field is reserved for internal use", + "offset_int": "0x01F", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "field020", + "name": "IMAGE_SIZE", + "description": "The information about total size of the image", + "offset_int": "0x020", + "default_value_int": "0", + "reg_width": 32 + }, + { + "id": "field024", + "name": "FIRMWARE_VERSION", + "description": "Firmware version, stored in little endian format. Used for anti-rollback protection. New firmware must have the same or higher FW version", + "offset_int": "0x024", + "default_value_int": "0", + "reg_width": 32 + }, + { + "id": "Reserved028", + "name": "Reserved 0x028", + "description": "This field is reserved for internal use", + "offset_int": "0x028", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved02C", + "name": "Reserved 0x02C", + "description": "This field is reserved for internal use", + "offset_int": "0x02C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved030", + "name": "Reserved 0x030", + "description": "This field is reserved for internal use", + "offset_int": "0x030", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved034", + "name": "Reserved 0x034", + "description": "This field is reserved for internal use", + "offset_int": "0x034", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved038", + "name": "Reserved 0x038", + "description": "This field is reserved for internal use", + "offset_int": "0x038", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved03C", + "name": "Reserved 0x03C", + "description": "This field is reserved for internal use", + "offset_int": "0x03C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/database.yaml new file mode 100644 index 0000000..0b37165 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/database.yaml @@ -0,0 +1,95 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + b1: {} +latest: b1 + +# General MCU information +info: + purpose: 32-bit DSC Series + spsdk_predecessor_name: mc56f818xx + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/additional-mpu-mcus-architectures/digital-signal-controllers/32-bit-56800ex-ef-core/up-to-100mhz-digital-signal-controllers-with-dsass-and-operational-amplifier:MC56F81xxx + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x20000 + external: false + sram: + start_int: 0x60000 + size_int: 0x5000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "i2c", "spi"] + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x04003000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_certx] + rot_type: "cert_block_x" + + # ======== MBI section ======== + mbi: + mbi_classes: + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinBca + - Mbi_MixinFcf + - Mbi_MixinCertBlockVx + - Mbi_ExportMixinAppBcaFcf + - Mbi_ExportMixinEccSignVx + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinBca + - Mbi_MixinFcf + - Mbi_ExportMixinAppBcaFcf + images: + xip: + signed: signed_xip + plain: plain_xip + # Fixed image type redefines the image type fetched from IVT + fixed_image_type: 4 + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsmSBx] + key_blob_offset: -1 + key_blob_command_position: -1 + + # ======== Secure binary vX section ======== + sbx: {} + + # ======== BCA section ======== + bca: + reg_spec: bca.json + + # ======== FCF section ======== + fcf: + reg_spec: fcf.json + reg_spec_modification: + field000: + reverse: True + config_as_hexstring: True + + # ======== PFR section ======== + pfr: + sub_features: [ifr] + ifr: + address: 0x0 + reg_spec: ifr_s.json diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/fcf.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/fcf.json new file mode 100644 index 0000000..7b41812 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/fcf.json @@ -0,0 +1,147 @@ +{ + "cpu": "mcf56f81xxx", + "groups": [ + { + "group": { + "name": "General regs", + "description": "FCF registers generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "name": "BACKDOOR_KEY", + "offset_int": "0", + "default_value_int": "0xFFFFFFFFFFFFFFFF", + "reg_width": 64, + "description": "Backdoor Comparison Key. Refer to Verify Backdoor Access Key Command and Unsecuring the Chip Using Backdoor Key Access." + }, + { + "id": "field008", + "name": "FPROT", + "description": "Program flash protection bytes. Refer to the description of the Program Flash Protection Registers (FPROT0-3).", + "offset_int": "0x008", + "default_value_int": "0xFFFFFFFF", + "reg_width": 32, + "bitfields": [ + { + "width": 8, + "id": "field008-bits0-7", + "name": "FPROT3", + "description": "Program Flash Protection Registers (FPROT3)" + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "FPROT2", + "description": "Program Flash Protection Registers (FPROT2)" + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "FPROT1", + "description": "Program Flash Protection Registers (FPROT1)" + }, + { + "width": 8, + "id": "field008-bits24-31", + "name": "FPROT0", + "description": "Program Flash Protection Registers (FPROT0)" + } + ] + }, + { + "id": "field00C", + "name": "LIFECYCLE", + "description": "DSA Secure Lifecycle state", + "offset_int": "0x00C", + "default_value_int": "0xFE", + "reg_width": 8, + "bitfields": [ + { + "width": 8, + "id": "field00C-bits0-7", + "name": "LIFECYCLE_STATE", + "description": "DSA Secure Lifecycle state", + "values": [ + { + "name": "OEM_OPEN_ROP0", + "value": 254, + "description": "Most permissive state - full ISP command set available in all conditions" + }, + { + "name": "OEM_CLOSED_ROP1", + "value": 144, + "description": "Moderate security - partial ISP commands on normal boot, full commands via ROM_API" + }, + { + "name": "OEM_CLOSED_ROP2", + "value": 149, + "description": "Higher security - no ISP commands on normal boot, partial commands via ROM_API or invalid image" + }, + { + "name": "OEM_CLOSED_ROP3", + "value": 155, + "description": "Very high security - no ISP commands except ReceiveSBFile via ROM_API for secure devices only" + }, + { + "name": "OEM_CLOSED_NO_RETURN", + "value": 107, + "description": "Maximum security - no ISP commands available in any condition, device cannot be reprogrammed" + } + ] + } + ] + }, + { + "id": "field00D", + "name": "OPTION_BYTE", + "description": "Flash nonvolatile option byte. Refer to the description of the Flash Option Register (FOPT).", + "offset_int": "0x00D", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field00D-bit-0", + "name": "POWER_MODE", + "description": "Controls which power mode register takes effect", + "values": [ + { + "name": "SIM_PWRMODE", + "value": 1, + "description": "Writing SIM_PWRMODE register takes effect, writing SIM_PWR register doesn't take effect" + }, + { + "name": "SIM_PWR", + "value": 0, + "description": "Writing SIM_PWRMODE register doesn't take effect, writing SIM_PWR register takes effect" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "Reserved00E", + "name": "Reserved 0x00E", + "description": "This field is reserved for internal use", + "offset_int": "0x00E", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "Reserved00F", + "name": "Reserved 0x00F", + "description": "This field is reserved for internal use", + "offset_int": "0x00F", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/ifr_s.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/ifr_s.json new file mode 100644 index 0000000..f221865 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mc56f81868/ifr_s.json @@ -0,0 +1,165 @@ +{ + "cpu": "MWCT20D2", + "groups": [ + { + "group": { + "name": "Customer IFR data", + "description": "Customer IFR data" + }, + "registers": [ + { + "id": "field000", + "name": "CUSTOMER_DEFINED0", + "description": "Customer defined", + "offset_int": "0x00C0", + "index_int": "0", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field001", + "name": "CUSTOMER_DEFINED1", + "description": "Customer defined", + "offset_int": "0x00C4", + "index_int": "0x0001", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field002", + "name": "CUSTOMER_DEFINED2", + "description": "Customer defined", + "offset_int": "0x00C8", + "index_int": "0x0002", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field003", + "name": "CUSTOMER_DEFINED3", + "description": "Customer defined", + "offset_int": "0x00CC", + "index_int": "0x0003", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field004", + "name": "CUSTOMER_DEFINED4", + "description": "Customer defined", + "offset_int": "0x00D0", + "index_int": "0x0004", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field005", + "name": "CUSTOMER_DEFINED5", + "description": "Customer defined", + "offset_int": "0x00D4", + "index_int": "0x0005", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field006", + "name": "CUSTOMER_DEFINED6", + "description": "Customer defined", + "offset_int": "0x00D8", + "index_int": "0x0006", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field007", + "name": "CUSTOMER_DEFINED7", + "description": "Customer defined", + "offset_int": "0x00DC", + "index_int": "0x0007", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field008", + "name": "CUSTOMER_DEFINED8", + "description": "Customer defined", + "offset_int": "0x00E0", + "index_int": "0x0008", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field009", + "name": "CUSTOMER_DEFINED9", + "description": "Customer defined", + "offset_int": "0x00E4", + "index_int": "0x0009", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field010", + "name": "CUSTOMER_DEFINED10", + "description": "Customer defined", + "offset_int": "0x00E8", + "index_int": "0x000A", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field011", + "name": "CUSTOMER_DEFINED11", + "description": "Customer defined", + "offset_int": "0x00EC", + "index_int": "0x000B", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + } + ] + }, + { + "group": { + "name": "ISK_CERT_HASH", + "description": "ISK_CERT_HASH" + }, + "registers": [ + { + "id": "field012", + "name": "ISK_CERT_HASH[31:0]", + "description": "ISK_CERT_HASH[31:0]", + "offset_int": "0x00F0", + "index_int": "0x000C", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field013", + "name": "ISK_CERT_HASH[63:32]", + "description": "ISK_CERT_HASH[63:32]", + "offset_int": "0x00F4", + "index_int": "0x000D", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field014", + "name": "ISK_CERT_HASH[95:64]", + "description": "ISK_CERT_HASH[95:64]", + "offset_int": "0x00F8", + "index_int": "0x000E", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field015", + "name": "ISK_CERT_HASH[127:96]", + "description": "ISK_CERT_HASH[127:96]", + "offset_int": "0x00FC", + "index_int": "0x000F", + "individual_write_lock": "implicit", + "default_value_int": "0xFFFFFFFF" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa132/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa132/database.yaml new file mode 100644 index 0000000..6caa26e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa132/database.yaml @@ -0,0 +1,21 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa142 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x4000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa133/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa133/database.yaml new file mode 100644 index 0000000..b949857 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa133/database.yaml @@ -0,0 +1,21 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa142 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x20000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x6000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa142/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa142/database.yaml new file mode 100644 index 0000000..e1ecc1d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa142/database.yaml @@ -0,0 +1,95 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + spsdk_predecessor_name: mcxa1xx + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x1_0000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x4000 + external: false + + isp: + rom: + protocol: mboot + interfaces: ["usb", "uart", "spi", "i2c"] + usb: + - vid: 0x1FC9 + pid: 0x0155 + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_0000 + size: 0x1000 + + # ======== DAT section ======== + dat: + dmbox_ap_ix: 1 # Typical Index of debug mailbox access port is 2 + non_standard_statuses: # dictionary of non standard return statuses from various commands + 2: # Command get_crp_level + 0xFFFF_FFFF: ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state + 0xEEBA_04C3: ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available + 0x4939_8D8B: ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available + 0xB0AB_B703: ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available + + # ======== Blhost section ======== + blhost: + sub_features: [overridden_properties] + overridden_properties: + 10: "life-cycle" + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + images: + xip: + plain: plain_xip + crc: crc_xip + + # ======== PFR section ======== + pfr: + sub_features: [cmpa] + cmpa: # CMPA description + erase_method: flash_erase + address: 0x100_0000 + size: 256 + reg_spec: pfr_cmpa.json + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa142/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa142/pfr_cmpa.json new file mode 100644 index 0000000..bbb8fdf --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa142/pfr_cmpa.json @@ -0,0 +1,1756 @@ +{ + "cpu": "MCXA142", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0x59630000", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_IF", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "USB0_HID", + "value": 4, + "description": "USB0_HID" + } + ] + }, + { + "width": 5 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "BOOT_SPEED", + "description": "Core Clock", + "values": [ + { + "name": "FRO_48_MHZ", + "value": 0, + "description": "48Mhz FRO @1v0" + }, + { + "name": "FRO_96_MHZ", + "value": 1, + "description": "96MHz FRO @1v1" + } + ] + }, + { + "width": 2, + "id": "field000-bits14-15", + "name": "AGDET_RE_EN", + "description": "AGDET reset must be enabled during boot (must be 00b).", + "values": [ + { + "name": "ENABLED_0b00", + "value": 0, + "description": "Enable AGDET reset" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Don't enable AGDET reset" + }, + { + "name": "DISABLED_0b10", + "value": 2, + "description": "Don't enable AGDET reset" + }, + { + "name": "DISABLED_0b11", + "value": 3, + "description": "Don't enable AGDET reset" + } + ] + }, + { + "width": 16, + "access": "WRITE_CONST", + "id": "field000-bits16-31", + "name": "HEADER", + "description": "CMPA Header marker should be set to 0x5963" + } + ] + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "FLASH_REMAP_SIZE", + "description": "Flash remap size. \nThis field should be written to remap field in flash." + }, + { + "width": 5 + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion.", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command.", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2 + }, + { + "width": 16 + } + ] + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "Boot LED Status", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "BOOT_FAIL_LED", + "description": "Assert on fatal errors during boot. \nROM toggles the GPIO pin identified by this field whenever primary boot fails due to fatal errors before locking-up/reset. \nNote, use QUICK_SET_/CLR_GPIOx field to set the default level of pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 8 + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "Boot Timers", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout: \nTimeout value in seconds. \nWhen a non-zero value is programmed in this field ROM uses it as idle timeout value to enter power-down state to conserve power." + }, + { + "width": 16 + } + ] + }, + { + "id": "field010", + "name": "ISP_UART_CFG", + "description": "ISP UART Configuration", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field010-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin. \nIdentifies the pin to be used as UART_RX pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4, + "id": "field010-bits12-15", + "name": "UART_ISP_INSTANCE", + "description": "Identifies the LPUART instance used for UART ISP mode." + }, + { + "width": 8, + "id": "field010-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin. \nIdentifies the pin to be used as UART_TX pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + } + ] + }, + { + "id": "field014", + "name": "ISP_I2C_CFG", + "description": "ISP I2C Configuration", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field014-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default I2C SCL ISP pin. \nIdentifies the pin to be used as I2C_SCL pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4, + "id": "field014-bits12-15", + "name": "I2C_ISP_INSTANCE", + "description": "Identifies the LPI2C instance used for I2C ISP mode." + }, + { + "width": 8, + "id": "field014-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default I2C SDA ISP pin. \nIdentifies the pin to be used as I2C_SDA pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field01C", + "name": "ISP_SPI_CFG0", + "description": "ISP SPI Configuration 0", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI SCK ISP pin. \nIdentifies the pin to be used as SPI_SCK pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4, + "id": "field01C-bits12-15", + "name": "SPI_ISP_INSTANCE", + "description": "Identifies the LPSPI instance used for SPI ISP mode" + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI MOSI ISP pin. \nIdentifies the pin to be used as SPI_MOSI pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + } + ] + }, + { + "id": "field020", + "name": "ISP_SPI_CFG1", + "description": "ISP SPI Configuration 1", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI MISO ISP pin. \nIdentifies the pin to be used as SPI_MISO pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI SSEL ISP pin. \nIdentifies the pin to be used as SPI_SSEL pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number. \nFlexComm SPI interfaces supports up to four chip selects." + }, + { + "width": 2 + } + ] + }, + { + "id": "field024", + "name": "ISP_USB_ID", + "description": "ISP USB Identification", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field024-bits0-15", + "name": "USB_Vendor_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "USB_Product_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field028", + "name": "ISP_USB_CFG", + "description": "ISP USB Configuration", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field028-bits0-7", + "name": "USBx_VBUS_PIN", + "description": "Override default USB0_VBUS_DETECT ISP pin. \nIdentifies the pin to be used as USB0_VBUS detect pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field028-bits8-11", + "name": "USBx_VBUS_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 20 + } + ] + }, + { + "id": "field02C", + "name": "ISP_MISC_CFG", + "description": "ISP MISC Configuration", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field02C-bits0-7", + "name": "I2C_SLAVE_ADDR", + "description": "I2C slave address. \nA 7-bit Address used for selecting our device on shared I2C bus system. \nBy default ROM uses 0x10 as slave address." + }, + { + "width": 14 + }, + { + "width": 2, + "id": "field02C-bits22-23", + "name": "ISP_USB_CUST", + "description": "Use customer defined GPIO for USB VBUS detect function during ISP mode.", + "values": [ + { + "name": "DEDICATED", + "value": 0, + "description": "Use dedicated VBUS pins." + }, + { + "name": "USB0_VBUS", + "value": 1, + "description": "Customer defined GPIO for USB0_VBUS detect." + }, + { + "name": "VDD_USB", + "value": 3, + "description": "Use VDD_USB for VBUS presence. On board regulator should generate VDD_USB voltage using 5V input fo VBUS pin on connector." + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field02C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins.", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins." + }, + { + "name": "CUST_DEFINED", + "value": 1, + "description": "Customer defined." + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins." + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins." + } + ] + }, + { + "width": 2, + "id": "field02C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins.", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins." + }, + { + "name": "CUST_DEFINED", + "value": 1, + "description": "Customer defined." + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins." + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins." + } + ] + }, + { + "width": 2, + "id": "field02C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins.", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins." + }, + { + "name": "CUST_DEFINED", + "value": 1, + "description": "Customer defined." + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins." + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins." + } + ] + } + ] + }, + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Flash access control", + "description": "Flash access control" + }, + "registers": [ + { + "id": "field040", + "name": "FLASH_ACL_0_7", + "description": "Access control for flash sector 0-7", + "offset_int": "0x0040", + "default_value_int": "0x44444444", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field040-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector (offset range 0x00_0000 - 0x00_1FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector (offset range 0x00_2000 - 0x00_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector (offset range 0x00_4000 - 0x00_5FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector (offset range 0x00_6000 - 0x00_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector (offset range 0x00_8000 - 0x00_9FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector (offset range 0x00_A000 - 0x00_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector (offset range 0x00_C000 - 0x00_DFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector (offset range 0x00_E000 - 0x00_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field044", + "name": "FLASH_ACL_8_15", + "description": "Access control for flash sector 8-15", + "offset_int": "0x0044", + "default_value_int": "0x44444444", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field044-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector (offset range 0x01_0000 - 0x01_1FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector (offset range 0x01_2000 - 0x01_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector (offset range 0x01_4000 - 0x01_5FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector (offset range 0x01_6000 - 0x01_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector (offset range 0x01_8000 - 0x01_9FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector (offset range 0x01_A000 - 0x01_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector (offset range 0x01_C000 - 0x01_DFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector (offset range 0x01_E000 - 0x01_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00048-0005C", + "description": "Reserved 00048-0005C" + }, + "registers": [ + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field060", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port [31:0] pins high after reset. \nEach bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0060", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port [31:0] pins low after reset. \nEach bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0064", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port [31:0] pins high after reset. \nEach bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0068", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port [31:0] pins low after reset. \nEach bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x006C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field070", + "name": "QUICK_SET_GPIO_2", + "description": "Quick Set to Drive GPIO 2 port [31:0] pins high after reset. \nEach bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0070", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "QUICK_CLR_GPIO_2", + "description": "Quick Clear to Drive GPIO 2 port [31:0] pins low after reset. \nEach bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0074", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "QUICK_SET_GPIO_3", + "description": "Quick Set to Drive GPIO 3 port [31:0] pins high after reset. \nEach bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0078", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "QUICK_CLR_GPIO_3", + "description": "Quick Clear to Drive GPIO 3 port [31:0] pins low after reset. \nEach bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x007C", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00080-0008C", + "description": "Reserved 00080-0008C" + }, + "registers": [ + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Read Out Protection", + "description": "Read Out Protection (ROP) configuration" + }, + "registers": [ + { + "id": "field090", + "name": "ROP_STATE", + "description": "Read Out Protection (ROP) State value. \nDevice does not support secure boot, but it does support four levels of Read Out Protection, referred as ROP_STATE. \nThis read out protection is a mechanism that allows user to enable different levels of protection in the system. \nROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. \nAny other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 32, + "id": "field090-bits0-31", + "name": "ROP_STATE", + "description": "ROP_STATE[31:0]", + "values": [ + { + "name": "ROP_LEVEL0", + "value": 4294967295, + "description": "ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state." + }, + { + "name": "ROP_LEVEL1", + "value": 3, + "description": "ROP_STATE = 0x0000_0003. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available." + }, + { + "name": "ROP_LEVEL2", + "value": 1, + "description": "ROP_STATE = 0x0000_0001. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available." + }, + { + "name": "ROP_LEVEL3", + "value": 0, + "description": "ROP_STATE = 0x0000_0000. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available." + } + ] + } + ] + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A0", + "name": "ROP_STATE_DP", + "description": "Read Out Protection (ROP) State duplicate value. \nROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. \nAny other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 32, + "id": "field0A0-bits0-31", + "name": "ROP_STATE_DP", + "description": "ROP_STATE_DP[31:0]", + "values": [ + { + "name": "ROP_LEVEL0", + "value": 4294967295, + "description": "ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state." + }, + { + "name": "ROP_LEVEL1", + "value": 3, + "description": "ROP_STATE = 0x0000_0003. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available." + }, + { + "name": "ROP_LEVEL2", + "value": 1, + "description": "ROP_STATE = 0x0000_0001. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available." + }, + { + "name": "ROP_LEVEL3", + "value": 0, + "description": "ROP_STATE = 0x0000_0000. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available." + } + ] + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa143/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa143/database.yaml new file mode 100644 index 0000000..3a87a01 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa143/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa142 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x2_0000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x8000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa144/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa144/database.yaml new file mode 100644 index 0000000..bc8f204 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa144/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa156 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x4_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x1_0000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa145/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa145/database.yaml new file mode 100644 index 0000000..334adcb --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa145/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa156 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x1_8000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa146/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa146/database.yaml new file mode 100644 index 0000000..3338f53 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa146/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa156 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x2_0000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa152/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa152/database.yaml new file mode 100644 index 0000000..030df42 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa152/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa142 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x1_0000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x4000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa153/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa153/database.yaml new file mode 100644 index 0000000..3a87a01 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa153/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa142 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x2_0000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x8000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa154/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa154/database.yaml new file mode 100644 index 0000000..bc8f204 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa154/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa156 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x4_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x1_0000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa155/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa155/database.yaml new file mode 100644 index 0000000..334adcb --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa155/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa156 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x1_8000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa156/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa156/database.yaml new file mode 100644 index 0000000..4ffb1b1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa156/database.yaml @@ -0,0 +1,93 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/MCX-A13X-A14X-A15X + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x2_0000 + external: false + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x015e + +features: + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_0000 + size: 0x1000 + + # ======== DAT section ======== + dat: + dmbox_ap_ix: 1 # Typical Index of debug mailbox access port is 2 + non_standard_statuses: # dictionary of non standard return statuses from various commands + 2: # Command get_crp_level + 0xFFFF_FFFF: ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state + 0xEEBA_04C3: ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available + 0x4939_8D8B: ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available + 0xB0AB_B703: ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available + + # ======== Blhost section ======== + blhost: + sub_features: [overridden_properties] + overridden_properties: + 17: "life-cycle" + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + images: + xip: + plain: plain_xip + crc: crc_xip + + # ======== PFR section ======== + pfr: + sub_features: [cmpa] + cmpa: # CMPA description + erase_method: flash_erase + address: 0x100_0000 + size: 256 + reg_spec: pfr_cmpa.json + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa156/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa156/pfr_cmpa.json new file mode 100644 index 0000000..17dfe3d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa156/pfr_cmpa.json @@ -0,0 +1,4200 @@ +{ + "cpu": "MCXA156", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_IF", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "USB0_HID", + "value": 4, + "description": "USB0_HID" + } + ] + }, + { + "width": 5 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "BOOT_SPEED", + "description": "Core Clock", + "values": [ + { + "name": "FRO_48_MHZ", + "value": 0, + "description": "48Mhz FRO @1v0" + }, + { + "name": "FRO_96_MHZ", + "value": 1, + "description": "96MHz FRO @1v1" + } + ] + }, + { + "width": 2, + "id": "field000-bits14-15", + "name": "AGDET_RE_EN", + "description": "AGDET reset must be enabled during boot (must be 00b).", + "values": [ + { + "name": "ENABLED_0b00", + "value": 0, + "description": "Enable AGDET reset" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Don't enable AGDET reset" + }, + { + "name": "DISABLED_0b10", + "value": 2, + "description": "Don't enable AGDET reset" + }, + { + "name": "DISABLED_0b11", + "value": 3, + "description": "Don't enable AGDET reset" + } + ] + }, + { + "width": 16, + "access": "WRITE_CONST", + "id": "field000-bits16-31", + "name": "HEADER", + "description": "CMPA Header marker should be set to 0x5963" + } + ], + "default_value_int": "0x59630000" + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "Flash Configuration", + "offset_int": "0x0004", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "FLASH_REMAP_SIZE", + "description": "Flash remap size. \nThis field should be written to remap field in flash." + }, + { + "width": 5 + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion.", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command.", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2 + }, + { + "width": 16 + } + ], + "default_value_int": "0" + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "Boot LED Status", + "offset_int": "0x0008", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "BOOT_FAIL_LED", + "description": "Assert on fatal errors during boot. \nROM toggles the GPIO pin identified by this field whenever primary boot fails due to fatal errors before locking-up/reset. \nNote, use QUICK_SET_/CLR_GPIOx field to set the default level of pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 8 + } + ], + "default_value_int": "0" + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "Boot Timers", + "offset_int": "0x000C", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout: \nTimeout value in seconds. \nWhen a non-zero value is programmed in this field ROM uses it as idle timeout value to enter power-down state to conserve power." + }, + { + "width": 16 + } + ], + "default_value_int": "0" + }, + { + "id": "field010", + "name": "ISP_UART_CFG", + "description": "ISP UART Configuration", + "offset_int": "0x0010", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field010-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin. \nIdentifies the pin to be used as UART_RX pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4, + "id": "field010-bits12-15", + "name": "UART_ISP_INSTANCE", + "description": "Identifies the LPUART instance used for UART ISP mode." + }, + { + "width": 8, + "id": "field010-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin. \nIdentifies the pin to be used as UART_TX pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + } + ], + "default_value_int": "0" + }, + { + "id": "field014", + "name": "ISP_I2C_CFG", + "description": "ISP I2C Configuration", + "offset_int": "0x0014", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field014-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default I2C SCL ISP pin. \nIdentifies the pin to be used as I2C_SCL pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4, + "id": "field014-bits12-15", + "name": "I2C_ISP_INSTANCE", + "description": "Identifies the LPI2C instance used for I2C ISP mode." + }, + { + "width": 8, + "id": "field014-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default I2C SDA ISP pin. \nIdentifies the pin to be used as I2C_SDA pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + } + ], + "default_value_int": "0" + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field01C", + "name": "ISP_SPI_CFG0", + "description": "ISP SPI Configuration 0", + "offset_int": "0x001C", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI SCK ISP pin. \nIdentifies the pin to be used as SPI_SCK pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4, + "id": "field01C-bits12-15", + "name": "SPI_ISP_INSTANCE", + "description": "Identifies the LPSPI instance used for SPI ISP mode" + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI MOSI ISP pin. \nIdentifies the pin to be used as SPI_MOSI pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + } + ], + "default_value_int": "0" + }, + { + "id": "field020", + "name": "ISP_SPI_CFG1", + "description": "ISP SPI Configuration 1", + "offset_int": "0x0020", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI MISO ISP pin. \nIdentifies the pin to be used as SPI_MISO pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI SSEL ISP pin. \nIdentifies the pin to be used as SPI_SSEL pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number. \nFlexComm SPI interfaces supports up to four chip selects." + }, + { + "width": 2 + } + ], + "default_value_int": "0" + }, + { + "id": "field024", + "name": "ISP_USB_ID", + "description": "ISP USB Identification", + "offset_int": "0x0024", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field024-bits0-15", + "name": "USB_Vendor_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "USB_Product_ID", + "description": "USB Product ID" + } + ], + "default_value_int": "0" + }, + { + "id": "field028", + "name": "ISP_USB_CFG", + "description": "ISP USB Configuration", + "offset_int": "0x0028", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field028-bits0-7", + "name": "USBx_VBUS_PIN", + "description": "Override default USB0_VBUS_DETECT ISP pin. \nIdentifies the pin to be used as USB0_VBUS detect pin. \n[4:0] GPIO Pin number \n[7:5] GPIO port number" + }, + { + "width": 4, + "id": "field028-bits8-11", + "name": "USBx_VBUS_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 20 + } + ], + "default_value_int": "0" + }, + { + "id": "field02C", + "name": "ISP_MISC_CFG", + "description": "ISP MISC Configuration", + "offset_int": "0x002C", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field02C-bits0-7", + "name": "I2C_SLAVE_ADDR", + "description": "I2C slave address. \nA 7-bit Address used for selecting our device on shared I2C bus system. \nBy default ROM uses 0x10 as slave address." + }, + { + "width": 14 + }, + { + "width": 2, + "id": "field02C-bits22-23", + "name": "ISP_USB_CUST", + "description": "Use customer defined GPIO for USB VBUS detect function during ISP mode.", + "values": [ + { + "name": "DEDICATED", + "value": 0, + "description": "Use dedicated VBUS pins." + }, + { + "name": "USB0_VBUS", + "value": 1, + "description": "Customer defined GPIO for USB0_VBUS detect." + }, + { + "name": "VDD_USB", + "value": 3, + "description": "Use VDD_USB for VBUS presence. On board regulator should generate VDD_USB voltage using 5V input fo VBUS pin on connector." + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field02C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins.", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins." + }, + { + "name": "CUST_DEFINED", + "value": 1, + "description": "Customer defined." + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins." + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins." + } + ] + }, + { + "width": 2, + "id": "field02C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins.", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins." + }, + { + "name": "CUST_DEFINED", + "value": 1, + "description": "Customer defined." + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins." + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins." + } + ] + }, + { + "width": 2, + "id": "field02C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins.", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins." + }, + { + "name": "CUST_DEFINED", + "value": 1, + "description": "Customer defined." + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins." + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins." + } + ] + } + ], + "default_value_int": "0" + }, + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "individual_write_lock": "none", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Flash access control", + "description": "Flash access control" + }, + "registers": [ + { + "id": "field040", + "name": "FLASH_ACL_0_7", + "description": "Access control for flash sector 0-7, ACL_SEC_x 3 bits represents GAC Index configuration", + "offset_int": "0x0040", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field040-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector (offset range 0x00_0000 - 0x00_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector (offset range 0x00_4000 - 0x00_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector (offset range 0x00_8000 - 0x00_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector (offset range 0x00_C000 - 0x00_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector (offset range 0x01_0000 - 0x01_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector (offset range 0x01_4000 - 0x01_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector (offset range 0x01_8000 - 0x01_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector (offset range 0x01_C000 - 0x01_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ], + "default_value_int": "0x44444444" + }, + { + "id": "field044", + "name": "FLASH_ACL_8_15", + "description": "Access control for flash sector 8-15", + "offset_int": "0x0044", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field044-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector (offset range 0x02_0000 - 0x02_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector (offset range 0x02_4000 - 0x02_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector (offset range 0x02_8000 - 0x02_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector (offset range 0x02_C000 - 0x02_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector (offset range 0x03_0000 - 0x03_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector (offset range 0x03_4000 - 0x03_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector (offset range 0x03_8000 - 0x03_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector (offset range 0x03_C000 - 0x03_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ], + "default_value_int": "0x44444444" + }, + { + "id": "field048", + "name": "FLASH_ACL_16_23", + "description": "Access control for flash sector 16-23", + "offset_int": "0x0048", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field048-bits0-2", + "name": "ACL_SEC_16", + "description": "Access control for flash sector (offset range 0x04_0000 - 0x04_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits4-6", + "name": "ACL_SEC_17", + "description": "Access control for flash sector (offset range 0x04_4000 - 0x04_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits8-10", + "name": "ACL_SEC_18", + "description": "Access control for flash sector (offset range 0x04_8000 - 0x04_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits12-14", + "name": "ACL_SEC_19", + "description": "Access control for flash sector (offset range 0x04_C000 - 0x04_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits16-18", + "name": "ACL_SEC_20", + "description": "Access control for flash sector (offset range 0x05_0000 - 0x05_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits20-22", + "name": "ACL_SEC_21", + "description": "Access control for flash sector (offset range 0x05_4000 - 0x05_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits24-26", + "name": "ACL_SEC_22", + "description": "Access control for flash sector (offset range 0x05_8000 - 0x05_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits28-30", + "name": "ACL_SEC_23", + "description": "Access control for flash sector (offset range 0x05_C000 - 0x05_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ], + "default_value_int": "0x44444444" + }, + { + "id": "field04C", + "name": "FLASH_ACL_24_31", + "description": "Access control for flash sector 24-31", + "offset_int": "0x004C", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field04C-bits0-2", + "name": "ACL_SEC_24", + "description": "Access control for flash sector (offset range 0x06_0000 - 0x06_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits4-6", + "name": "ACL_SEC_25", + "description": "Access control for flash sector (offset range 0x06_4000 - 0x06_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits8-10", + "name": "ACL_SEC_26", + "description": "Access control for flash sector (offset range 0x06_8000 - 0x06_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits12-14", + "name": "ACL_SEC_27", + "description": "Access control for flash sector (offset range 0x06_C000 - 0x06_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits16-18", + "name": "ACL_SEC_28", + "description": "Access control for flash sector (offset range 0x07_0000 - 0x07_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits20-22", + "name": "ACL_SEC_29", + "description": "Access control for flash sector (offset range 0x07_4000 - 0x07_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits24-26", + "name": "ACL_SEC_30", + "description": "Access control for flash sector (offset range 0x07_8000 - 0x07_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits28-30", + "name": "ACL_SEC_31", + "description": "Access control for flash sector (offset range 0x07_C000 - 0x07_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ], + "default_value_int": "0x44444444" + }, + { + "id": "field050", + "name": "FLASH_ACL_32_39", + "description": "Access control for flash sector 32-39", + "offset_int": "0x0050", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field050-bits0-2", + "name": "ACL_SEC_32", + "description": "Access control for flash sector (offset range 0x08_0000 - 0x08_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits4-6", + "name": "ACL_SEC_33", + "description": "Access control for flash sector (offset range 0x08_4000 - 0x08_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits8-10", + "name": "ACL_SEC_34", + "description": "Access control for flash sector (offset range 0x08_8000 - 0x08_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits12-14", + "name": "ACL_SEC_35", + "description": "Access control for flash sector (offset range 0x08_C000 - 0x08_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits16-18", + "name": "ACL_SEC_36", + "description": "Access control for flash sector (offset range 0x09_0000 - 0x09_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits20-22", + "name": "ACL_SEC_37", + "description": "Access control for flash sector (offset range 0x09_4000 - 0x09_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits24-26", + "name": "ACL_SEC_38", + "description": "Access control for flash sector (offset range 0x09_8000 - 0x09_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits28-30", + "name": "ACL_SEC_39", + "description": "Access control for flash sector (offset range 0x09_C000 - 0x09_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ], + "default_value_int": "0x44444444" + }, + { + "id": "field054", + "name": "FLASH_ACL_40_47", + "description": "Access control for flash sector 40-47", + "offset_int": "0x0054", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field054-bits0-2", + "name": "ACL_SEC_40", + "description": "Access control for flash sector (offset range 0x0A_0000 - 0x0A_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits4-6", + "name": "ACL_SEC_41", + "description": "Access control for flash sector (offset range 0x0A_4000 - 0x0A_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits8-10", + "name": "ACL_SEC_42", + "description": "Access control for flash sector (offset range 0x0A_8000 - 0x0A_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits12-14", + "name": "ACL_SEC_43", + "description": "Access control for flash sector (offset range 0x0A_C000 - 0x0A_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits16-18", + "name": "ACL_SEC_44", + "description": "Access control for flash sector (offset range 0x0B_0000 - 0x0B_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits20-22", + "name": "ACL_SEC_45", + "description": "Access control for flash sector (offset range 0x0B_4000 - 0x0B_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits24-26", + "name": "ACL_SEC_46", + "description": "Access control for flash sector (offset range 0x0B_8000 - 0x0B_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits28-30", + "name": "ACL_SEC_47", + "description": "Access control for flash sector (offset range 0x0B_C000 - 0x0B_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ], + "default_value_int": "0x44444444" + }, + { + "id": "field058", + "name": "FLASH_ACL_48_55", + "description": "Access control for flash sector 48-55", + "offset_int": "0x0058", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field058-bits0-2", + "name": "ACL_SEC_48", + "description": "Access control for flash sector (offset range 0x0C_0000 - 0x0C_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits4-6", + "name": "ACL_SEC_49", + "description": "Access control for flash sector (offset range 0x0C_4000 - 0x0C_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits8-10", + "name": "ACL_SEC_50", + "description": "Access control for flash sector (offset range 0x0C_8000 - 0x0C_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits12-14", + "name": "ACL_SEC_51", + "description": "Access control for flash sector (offset range 0x0C_C000 - 0x0C_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits16-18", + "name": "ACL_SEC_52", + "description": "Access control for flash sector (offset range 0x0D_0000 - 0x0D_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits20-22", + "name": "ACL_SEC_53", + "description": "Access control for flash sector (offset range 0x0D_4000 - 0x0D_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits24-26", + "name": "ACL_SEC_54", + "description": "Access control for flash sector (offset range 0x0D_8000 - 0x0D_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits28-30", + "name": "ACL_SEC_55", + "description": "Access control for flash sector (offset range 0x0D_C000 - 0x0D_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ], + "default_value_int": "0x44444444" + }, + { + "id": "field05C", + "name": "FLASH_ACL_56_63", + "description": "Access control for flash sector 55-63", + "offset_int": "0x005C", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field05C-bits0-2", + "name": "ACL_SEC_56", + "description": "Access control for flash sector (offset range 0x0E_0000 - 0x0E_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits4-6", + "name": "ACL_SEC_57", + "description": "Access control for flash sector (offset range 0x0E_4000 - 0x0E_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits8-10", + "name": "ACL_SEC_58", + "description": "Access control for flash sector (offset range 0x0E_8000 - 0x0E_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits12-14", + "name": "ACL_SEC_59", + "description": "Access control for flash sector (offset range 0x0E_C000 - 0x0E_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits16-18", + "name": "ACL_SEC_60", + "description": "Access control for flash sector (offset range 0x0F_0000 - 0x0F_3FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits20-22", + "name": "ACL_SEC_61", + "description": "Access control for flash sector (offset range 0x0F_4000 - 0x0F_7FFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits24-26", + "name": "ACL_SEC_62", + "description": "Access control for flash sector (offset range 0x0F_8000 - 0x0F_BFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits28-30", + "name": "ACL_SEC_63", + "description": "Access control for flash sector (offset range 0x0F_C000 - 0x0F_FFFF).", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ], + "default_value_int": "0x44444444" + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field060", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port [31:0] pins high after reset. \nEach bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0060", + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port [31:0] pins low after reset. \nEach bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0064", + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field068", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port [31:0] pins high after reset. \nEach bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0068", + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field06C", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port [31:0] pins low after reset. \nEach bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x006C", + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field070", + "name": "QUICK_SET_GPIO_2", + "description": "Quick Set to Drive GPIO 2 port [31:0] pins high after reset. \nEach bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0070", + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field074", + "name": "QUICK_CLR_GPIO_2", + "description": "Quick Clear to Drive GPIO 2 port [31:0] pins low after reset. \nEach bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0074", + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field078", + "name": "QUICK_SET_GPIO_3", + "description": "Quick Set to Drive GPIO 3 port [31:0] pins high after reset. \nEach bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0078", + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field07C", + "name": "QUICK_CLR_GPIO_3", + "description": "Quick Clear to Drive GPIO 3 port [31:0] pins low after reset. \nEach bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x007C", + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field080", + "name": "QUICK_SET_GPIO_4", + "description": "Quick Set to Drive GPIO 4 port [31:0] pins high after reset. \nEach bit corresponds to the pin in GPIO port 4. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0080", + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "QUICK_CLR_GPIO_4", + "description": "Quick Clear to Drive GPIO 4 port [31:0] pins low after reset. \nEach bit corresponds to the pin in GPIO port 4. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. \nThis feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0084", + "individual_write_lock": "none", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00088-0008C", + "description": "Reserved 00088-0008C" + }, + "registers": [ + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "individual_write_lock": "none", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Read Out Protection", + "description": "Read Out Protection (ROP) configuration" + }, + "registers": [ + { + "id": "field090", + "name": "ROP_STATE", + "description": "Read Out Protection (ROP) State value. \nDevice does not support secure boot, but it does support four levels of Read Out Protection, referred as ROP_STATE. \nThis read out protection is a mechanism that allows user to enable different levels of protection in the system. \nROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. \nAny other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x0090", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 32, + "id": "field090-bits0-31", + "name": "ROP_STATE", + "description": "ROP_STATE[31:0]", + "values": [ + { + "name": "ROP_LEVEL0", + "value": 4294967295, + "description": "ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state." + }, + { + "name": "ROP_LEVEL1", + "value": 4005168323, + "description": "ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available." + }, + { + "name": "ROP_LEVEL2", + "value": 1228508555, + "description": "ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available." + }, + { + "name": "ROP_LEVEL3", + "value": 2964043523, + "description": "ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available." + } + ] + } + ], + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "Reserved00098", + "name": "Reserved 0x00098", + "description": "This field is reserved for internal use", + "offset_int": "0x0098", + "is_reserved": true, + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "individual_write_lock": "none", + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "ROP_STATE_DP", + "description": "Read Out Protection (ROP) State duplicate value. \nROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. \nAny other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x00A0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 32, + "id": "field0A0-bits0-31", + "name": "ROP_STATE_DP", + "description": "ROP_STATE_DP[31:0]", + "values": [ + { + "name": "ROP_LEVEL0", + "value": 4294967295, + "description": "ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state." + }, + { + "name": "ROP_LEVEL1", + "value": 4005168323, + "description": "ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available." + }, + { + "name": "ROP_LEVEL2", + "value": 1228508555, + "description": "ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available." + }, + { + "name": "ROP_LEVEL3", + "value": 2964043523, + "description": "ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available." + } + ] + } + ], + "default_value_int": "0xFFFFFFFF" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa173/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa173/database.yaml new file mode 100644 index 0000000..93804a0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa173/database.yaml @@ -0,0 +1,21 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa343 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x2_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x8000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa174/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa174/database.yaml new file mode 100644 index 0000000..73396a7 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa174/database.yaml @@ -0,0 +1,25 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa343 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x4_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x1_0000 + external: false +features: + pfr: + cmpa: # CMPA description + address: 0x3_E000 \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa175/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa175/database.yaml new file mode 100644 index 0000000..e4525f2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa175/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa345 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8_0000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa176/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa176/database.yaml new file mode 100644 index 0000000..2906dcf --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa176/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa346 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10_0000 + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa185/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa185/database.yaml new file mode 100644 index 0000000..46926a3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa185/database.yaml @@ -0,0 +1,28 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa345 + + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8_0000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0x7_e000 \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa186/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa186/database.yaml new file mode 100644 index 0000000..df50e54 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa186/database.yaml @@ -0,0 +1,27 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa346 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10_0000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0xF_e000 \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa255/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa255/database.yaml new file mode 100644 index 0000000..9f90d11 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa255/database.yaml @@ -0,0 +1,115 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8_0000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_2000 + size: 0x1000 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + images: + xip: + plain: plain_xip + crc: crc_xip + + # ======== PFR section ======== + pfr: + sub_features: [cmpa] + cmpa: # CMPA description + erase_method: flash_erase + address: 0x7_e000 + size: 256 + reg_spec: pfr_cmpa.json + grouped_registers: + - name: ERASE_TOKEN + uid: cmpa_erase_token + width: 128 + config_as_hexstring: true + reversed: false + description: + ERASE_TOKEN[127:0] + sub_regs: + - field0D0 + - field0D4 + - field0D8 + - field0DC + + # ======== DAT section ======== + dat: + dmbox_ap_ix: 1 # Typical Index of debug mailbox access port is 2 + non_standard_statuses: # dictionary of non standard return statuses from various commands + 2: # Command get_crp_level + 0xFFFF_FFFF: ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state + 0xEEBA_04C3: ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available + 0x4939_8D8B: ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available + 0xB0AB_B703: ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available + + # ======== Blhost section ======== + blhost: + sub_features: [overridden_properties] + overridden_properties: + 17: "life-cycle" + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsmSBc] + supported_commands: + - erase + - load + - loadKeyBlob + - execute + + sbc: + supported_commands: + - erase + - load + - execute + - loadKeyBlob + \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa255/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa255/pfr_cmpa.json new file mode 100644 index 0000000..bef9cc8 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa255/pfr_cmpa.json @@ -0,0 +1,7775 @@ +{ + "cpu": "mcxa255", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0x59630000", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_IF", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "SPI_SLAVE", + "value": 2, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_SLAVE", + "value": 3, + "description": "I2C slave ISP" + }, + { + "name": "USB0_HID", + "value": 4, + "description": "USB0 HID" + } + ] + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "BOOT_SPEED", + "description": "Core clock", + "values": [ + { + "name": "FRO_45_MHZ", + "value": 0, + "description": "45Mhz FRO @1v0" + }, + { + "name": "FRO_90_MHZ", + "value": 1, + "description": "90MHz FRO @1v2" + }, + { + "name": "FRO_180_MHZ", + "value": 2, + "description": "180MHz FRO @1v2" + } + ] + }, + { + "width": 2 + }, + { + "width": 16, + "access": "WRITE_CONST", + "id": "field000-bits16-31", + "name": "HEADER", + "description": "CMPA Header marker should be set to 0x5963" + } + ] + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field004-bits0-7", + "name": "FLASH_REMAP_SIZE", + "description": "Flash remap size. This field should be written to remap field in flash. FLASH_REMAP_SIZE defines the size of the secondary boot image (the range of flash addresses that will be remapped)in internal flash, where remapped address end = FLASH_REMAP_SIZE" + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits14-15", + "name": "ISP_API_ENTRY", + "description": "Disable ISP mode entry through ROM API call. ISP mode can be entered through ROM API invocation", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "Boot LED Status", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 8 + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "ISP_BOOT_LED", + "description": "Assert on ISP fall through. ROM drives the GPIO pin identified by this field whenever primary boot fails and execution falls through to ISP mode. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "Boot Timers", + "offset_int": "0x000C", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout: Timeout value in seconds. When a non-zero value is programmed in this field ROM uses it as idle timeout value to enter power-down state to conserve power" + }, + { + "width": 16 + } + ] + }, + { + "id": "field010", + "name": "ISP_UART_CFG", + "description": "ISP UART Configuration", + "offset_int": "0x0010", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field010-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field010-bits12-15", + "name": "UART_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode" + }, + { + "width": 8, + "id": "field010-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field010-bits28-31", + "name": "UART_BAUD_RATE", + "description": "UART baud rate. Baud rate configured during UART ISP mode", + "values": [ + { + "name": "AUTO_BAUD_DETECTION", + "value": 0, + "description": "Auto baud detection" + } + ] + } + ] + }, + { + "id": "field014", + "name": "ISP_I2C_CFG", + "description": "ISP I2C Configuration", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field014-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field014-bits12-15", + "name": "I2C_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode" + }, + { + "width": 8, + "id": "field014-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field01C", + "name": "ISP_SPI_CFG0", + "description": "ISP SPI Configuration 0", + "offset_int": "0x001C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field01C-bits12-15", + "name": "SPI_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field020", + "name": "ISP_SPI_CFG1", + "description": "ISP SPI Configuration 1", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field024", + "name": "ISP_USB_ID", + "description": "ISP USB Identification", + "offset_int": "0x0024", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field024-bits0-15", + "name": "USB_Vendor_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "USB_Product_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field028", + "name": "ISP_USB_CFG", + "description": "ISP USB Configuration", + "offset_int": "0x0028", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field028-bits0-7", + "name": "USBx_VBUS_PIN", + "description": "Override default USB0_VBUS_DETECT ISP pin. Identifies the pin to be used as USB0_VBUS detect pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field028-bits8-11", + "name": "USBx_VBUS_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field02C", + "name": "ISP_MISC_CFG", + "description": "ISP MISC Configuration", + "offset_int": "0x002C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field02C-bits0-7", + "name": "I2C_SLAVE_ADDR", + "description": "I2C slave address A 7-bit Address used for selecting our device on shared I2C bus system. By default ROM uses 0x10 as slave address. If this address conflicts with another slave on board customer could use this field to override the address" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field02C-bits22-23", + "name": "ISP_USB_CUST", + "description": "Use customer defined GPIO for USB VBUS detect function during ISP mode", + "values": [ + { + "name": "DEDICATED", + "value": 0, + "description": "Use dedicated VBUS pins" + }, + { + "name": "USB0_VBUS", + "value": 1, + "description": "Customer defined GPIO for USB0_VBUS detect" + }, + { + "name": "VDD_USB", + "value": 3, + "description": "Use VDD_USB for VBUS presence. On board regulator should generate VDD_USB voltage using 5V input fo VBUS pin on connector" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field02C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field02C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field02C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00030-0003C", + "description": "Reserved 00030-0003C" + }, + "registers": [ + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Flash Access Control", + "description": "Flash access control" + }, + "registers": [ + { + "id": "field040", + "name": "FLASH_ACL_0_7", + "description": "Access control for flash sector", + "offset_int": "0x0040", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field040-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector (offset range 0x00_0000 - 0x00_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector (offset range 0x00_2000 - 0x00_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector (offset range 0x00_4000 - 0x00_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector (offset range 0x00_6000 - 0x00_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector (offset range 0x00_8000 - 0x00_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector (offset range 0x00_A000 - 0x00_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector (offset range 0x00_C000 - 0x00_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector (offset range 0x00_E000 - 0x00_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field044", + "name": "FLASH_ACL_15_8", + "description": "Access control for flash sector", + "offset_int": "0x0044", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field044-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector (offset range 0x01_0000 - 0x01_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector (offset range 0x01_2000 - 0x01_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector (offset range 0x01_4000 - 0x01_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector (offset range 0x01_6000 - 0x01_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector (offset range 0x01_8000 - 0x01_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector (offset range 0x01_A000 - 0x01_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector (offset range 0x01_C000 - 0x01_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector (offset range 0x01_E000 - 0x01_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field048", + "name": "FLASH_ACL_23_16", + "description": "Access control for flash sector", + "offset_int": "0x0048", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field048-bits0-2", + "name": "ACL_SEC_16", + "description": "Access control for flash sector (offset range 0x02_0000 - 0x02_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits4-6", + "name": "ACL_SEC_17", + "description": "Access control for flash sector (offset range 0x02_2000 - 0x02_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits8-10", + "name": "ACL_SEC_18", + "description": "Access control for flash sector (offset range 0x02_4000 - 0x02_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits12-14", + "name": "ACL_SEC_19", + "description": "Access control for flash sector (offset range 0x02_6000 - 0x02_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits16-18", + "name": "ACL_SEC_20", + "description": "Access control for flash sector (offset range 0x02_8000 - 0x02_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits20-22", + "name": "ACL_SEC_21", + "description": "Access control for flash sector (offset range 0x02_A000 - 0x02_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits24-26", + "name": "ACL_SEC_22", + "description": "Access control for flash sector (offset range 0x02_C000 - 0x02_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits28-30", + "name": "ACL_SEC_23", + "description": "Access control for flash sector (offset range 0x02_E000 - 0x02_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field04C", + "name": "FLASH_ACL_31_24", + "description": "Access control for flash sector", + "offset_int": "0x004C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field04C-bits0-2", + "name": "ACL_SEC_24", + "description": "Access control for flash sector (offset range 0x03_0000 - 0x03_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits4-6", + "name": "ACL_SEC_25", + "description": "Access control for flash sector (offset range 0x03_2000 - 0x03_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits8-10", + "name": "ACL_SEC_26", + "description": "Access control for flash sector (offset range 0x03_4000 - 0x03_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits12-14", + "name": "ACL_SEC_27", + "description": "Access control for flash sector (offset range 0x03_6000 - 0x03_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits16-18", + "name": "ACL_SEC_28", + "description": "Access control for flash sector (offset range 0x03_8000 - 0x03_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits20-22", + "name": "ACL_SEC_29", + "description": "Access control for flash sector (offset range 0x03_A000 - 0x03_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits24-26", + "name": "ACL_SEC_30", + "description": "Access control for flash sector (offset range 0x03_C000 - 0x03_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits28-30", + "name": "ACL_SEC_31", + "description": "Access control for flash sector (offset range 0x03_E000 - 0x03_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field050", + "name": "FLASH_ACL_39_32", + "description": "Access control for flash sector", + "offset_int": "0x0050", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field050-bits0-2", + "name": "ACL_SEC_32", + "description": "Access control for flash sector (offset range 0x04_0000 - 0x04_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits4-6", + "name": "ACL_SEC_33", + "description": "Access control for flash sector (offset range 0x04_2000 - 0x04_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits8-10", + "name": "ACL_SEC_34", + "description": "Access control for flash sector (offset range 0x04_4000 - 0x04_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits12-14", + "name": "ACL_SEC_35", + "description": "Access control for flash sector (offset range 0x04_6000 - 0x04_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits16-18", + "name": "ACL_SEC_36", + "description": "Access control for flash sector (offset range 0x04_8000 - 0x04_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits20-22", + "name": "ACL_SEC_37", + "description": "Access control for flash sector (offset range 0x04_A000 - 0x04_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits24-26", + "name": "ACL_SEC_38", + "description": "Access control for flash sector (offset range 0x04_C000 - 0x04_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits28-30", + "name": "ACL_SEC_39", + "description": "Access control for flash sector (offset range 0x04_E000 - 0x04_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field054", + "name": "FLASH_ACL_47_40", + "description": "Access control for flash sector", + "offset_int": "0x0054", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field054-bits0-2", + "name": "ACL_SEC_40", + "description": "Access control for flash sector (offset range 0x05_0000 - 0x05_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits4-6", + "name": "ACL_SEC_41", + "description": "Access control for flash sector (offset range 0x05_2000 - 0x05_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits8-10", + "name": "ACL_SEC_42", + "description": "Access control for flash sector (offset range 0x05_4000 - 0x05_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits12-14", + "name": "ACL_SEC_43", + "description": "Access control for flash sector (offset range 0x05_6000 - 0x05_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits16-18", + "name": "ACL_SEC_44", + "description": "Access control for flash sector (offset range 0x05_8000 - 0x05_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits20-22", + "name": "ACL_SEC_45", + "description": "Access control for flash sector (offset range 0x05_A000 - 0x05_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits24-26", + "name": "ACL_SEC_46", + "description": "Access control for flash sector (offset range 0x05_C000 - 0x05_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits28-30", + "name": "ACL_SEC_47", + "description": "Access control for flash sector (offset range 0x05_E000 - 0x05_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field058", + "name": "FLASH_ACL_55_48", + "description": "Access control for flash sector", + "offset_int": "0x0058", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field058-bits0-2", + "name": "ACL_SEC_48", + "description": "Access control for flash sector (offset range 0x06_0000 - 0x06_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits4-6", + "name": "ACL_SEC_49", + "description": "Access control for flash sector (offset range 0x06_2000 - 0x06_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits8-10", + "name": "ACL_SEC_50", + "description": "Access control for flash sector (offset range 0x06_4000 - 0x06_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits12-14", + "name": "ACL_SEC_51", + "description": "Access control for flash sector (offset range 0x06_6000 - 0x06_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits16-18", + "name": "ACL_SEC_52", + "description": "Access control for flash sector (offset range 0x06_8000 - 0x06_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits20-22", + "name": "ACL_SEC_53", + "description": "Access control for flash sector (offset range 0x06_A000 - 0x06_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits24-26", + "name": "ACL_SEC_54", + "description": "Access control for flash sector (offset range 0x06_C000 - 0x06_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits28-30", + "name": "ACL_SEC_55", + "description": "Access control for flash sector (offset range 0x06_E000 - 0x06_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field05C", + "name": "FLASH_ACL_63_56", + "description": "Access control for flash sector", + "offset_int": "0x005C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field05C-bits0-2", + "name": "ACL_SEC_56", + "description": "Access control for flash sector (offset range 0x07_0000 - 0x07_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits4-6", + "name": "ACL_SEC_57", + "description": "Access control for flash sector (offset range 0x07_2000 - 0x07_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits8-10", + "name": "ACL_SEC_58", + "description": "Access control for flash sector (offset range 0x07_4000 - 0x07_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits12-14", + "name": "ACL_SEC_59", + "description": "Access control for flash sector (offset range 0x07_6000 - 0x07_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits16-18", + "name": "ACL_SEC_60", + "description": "Access control for flash sector (offset range 0x07_8000 - 0x07_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits20-22", + "name": "ACL_SEC_61", + "description": "Access control for flash sector (offset range 0x07_A000 - 0x07_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits24-26", + "name": "ACL_SEC_62", + "description": "Access control for flash sector (offset range 0x07_C000 - 0x07_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits28-30", + "name": "ACL_SEC_63", + "description": "Access control for flash sector (offset range 0x07_E000 - 0x07_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field060", + "name": "FLASH_ACL_71_64", + "description": "Access control for flash sector", + "offset_int": "0x0060", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field060-bits0-2", + "name": "ACL_SEC_64", + "description": "Access control for flash sector (offset range 0x08_0000 - 0x08_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits4-6", + "name": "ACL_SEC_65", + "description": "Access control for flash sector (offset range 0x08_2000 - 0x08_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits8-10", + "name": "ACL_SEC_66", + "description": "Access control for flash sector (offset range 0x08_4000 - 0x08_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits12-14", + "name": "ACL_SEC_67", + "description": "Access control for flash sector (offset range 0x08_6000 - 0x08_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits16-18", + "name": "ACL_SEC_68", + "description": "Access control for flash sector (offset range 0x08_8000 - 0x08_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits20-22", + "name": "ACL_SEC_69", + "description": "Access control for flash sector (offset range 0x08_A000 - 0x08_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits24-26", + "name": "ACL_SEC_70", + "description": "Access control for flash sector (offset range 0x08_C000 - 0x08_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits28-30", + "name": "ACL_SEC_71", + "description": "Access control for flash sector (offset range 0x08_E000 - 0x08_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field064", + "name": "FLASH_ACL_79_72", + "description": "Access control for flash sector", + "offset_int": "0x0064", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field064-bits0-2", + "name": "ACL_SEC_72", + "description": "Access control for flash sector (offset range 0x09_0000 - 0x09_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits4-6", + "name": "ACL_SEC_73", + "description": "Access control for flash sector (offset range 0x09_2000 - 0x09_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits8-10", + "name": "ACL_SEC_74", + "description": "Access control for flash sector (offset range 0x09_4000 - 0x09_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits12-14", + "name": "ACL_SEC_75", + "description": "Access control for flash sector (offset range 0x09_6000 - 0x09_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits16-18", + "name": "ACL_SEC_76", + "description": "Access control for flash sector (offset range 0x09_8000 - 0x09_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits20-22", + "name": "ACL_SEC_77", + "description": "Access control for flash sector (offset range 0x09_A000 - 0x09_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits24-26", + "name": "ACL_SEC_78", + "description": "Access control for flash sector (offset range 0x09_C000 - 0x09_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits28-30", + "name": "ACL_SEC_79", + "description": "Access control for flash sector (offset range 0x09_E000 - 0x09_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field068", + "name": "FLASH_ACL_87_80", + "description": "Access control for flash sector", + "offset_int": "0x0068", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field068-bits0-2", + "name": "ACL_SEC_80", + "description": "Access control for flash sector (offset range 0x0A_0000 - 0x0A_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits4-6", + "name": "ACL_SEC_81", + "description": "Access control for flash sector (offset range 0x0A_2000 - 0x0A_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits8-10", + "name": "ACL_SEC_82", + "description": "Access control for flash sector (offset range 0x0A_4000 - 0x0A_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits12-14", + "name": "ACL_SEC_83", + "description": "Access control for flash sector (offset range 0x0A_6000 - 0x0A_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits16-18", + "name": "ACL_SEC_84", + "description": "Access control for flash sector (offset range 0x0A_8000 - 0x0A_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits20-22", + "name": "ACL_SEC_85", + "description": "Access control for flash sector (offset range 0x0A_A000 - 0x0A_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits24-26", + "name": "ACL_SEC_86", + "description": "Access control for flash sector (offset range 0x0A_C000 - 0x0A_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits28-30", + "name": "ACL_SEC_87", + "description": "Access control for flash sector (offset range 0x0A_E000 - 0x0A_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field06C", + "name": "FLASH_ACL_95_88", + "description": "Access control for flash sector", + "offset_int": "0x006C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field06C-bits0-2", + "name": "ACL_SEC_88", + "description": "Access control for flash sector (offset range 0x0B_0000 - 0x0B_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits4-6", + "name": "ACL_SEC_89", + "description": "Access control for flash sector (offset range 0x0B_2000 - 0x0B_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits8-10", + "name": "ACL_SEC_90", + "description": "Access control for flash sector (offset range 0x0B_4000 - 0x0B_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits12-14", + "name": "ACL_SEC_91", + "description": "Access control for flash sector (offset range 0x0B_6000 - 0x0B_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits16-18", + "name": "ACL_SEC_92", + "description": "Access control for flash sector (offset range 0x0B_8000 - 0x0B_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits20-22", + "name": "ACL_SEC_93", + "description": "Access control for flash sector (offset range 0x0B_A000 - 0x0B_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits24-26", + "name": "ACL_SEC_94", + "description": "Access control for flash sector (offset range 0x0B_C000 - 0x0B_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits28-30", + "name": "ACL_SEC_95", + "description": "Access control for flash sector (offset range 0x0B_E000 - 0x0B_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field070", + "name": "FLASH_ACL_103_96", + "description": "Access control for flash sector", + "offset_int": "0x0070", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field070-bits0-2", + "name": "ACL_SEC_96", + "description": "Access control for flash sector (offset range 0x0C_0000 - 0x0C_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits4-6", + "name": "ACL_SEC_97", + "description": "Access control for flash sector (offset range 0x0C_2000 - 0x0C_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits8-10", + "name": "ACL_SEC_98", + "description": "Access control for flash sector (offset range 0x0C_4000 - 0x0C_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits12-14", + "name": "ACL_SEC_99", + "description": "Access control for flash sector (offset range 0x0C_6000 - 0x0C_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits16-18", + "name": "ACL_SEC_100", + "description": "Access control for flash sector (offset range 0x0C_8000 - 0x0C_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits20-22", + "name": "ACL_SEC_101", + "description": "Access control for flash sector (offset range 0x0C_A000 - 0x0C_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits24-26", + "name": "ACL_SEC_102", + "description": "Access control for flash sector (offset range 0x0C_C000 - 0x0C_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits28-30", + "name": "ACL_SEC_103", + "description": "Access control for flash sector (offset range 0x0C_E000 - 0x0C_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field074", + "name": "FLASH_ACL_111_104", + "description": "Access control for flash sector", + "offset_int": "0x0074", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field074-bits0-2", + "name": "ACL_SEC_104", + "description": "Access control for flash sector (offset range 0x0D_0000 - 0x0D_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits4-6", + "name": "ACL_SEC_105", + "description": "Access control for flash sector (offset range 0x0D_2000 - 0x0D_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits8-10", + "name": "ACL_SEC_106", + "description": "Access control for flash sector (offset range 0x0D_4000 - 0x0D_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits12-14", + "name": "ACL_SEC_107", + "description": "Access control for flash sector (offset range 0x0D_6000 - 0x0D_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits16-18", + "name": "ACL_SEC_108", + "description": "Access control for flash sector (offset range 0x0D_8000 - 0x0D_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits20-22", + "name": "ACL_SEC_109", + "description": "Access control for flash sector (offset range 0x0D_A000 - 0x0D_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits24-26", + "name": "ACL_SEC_110", + "description": "Access control for flash sector (offset range 0x0D_C000 - 0x0D_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits28-30", + "name": "ACL_SEC_111", + "description": "Access control for flash sector (offset range 0x0D_E000 - 0x0D_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field078", + "name": "FLASH_ACL_119_112", + "description": "Access control for flash sector", + "offset_int": "0x0078", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field078-bits0-2", + "name": "ACL_SEC_112", + "description": "Access control for flash sector (offset range 0x0E_0000 - 0x0E_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits4-6", + "name": "ACL_SEC_113", + "description": "Access control for flash sector (offset range 0x0E_2000 - 0x0E_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits8-10", + "name": "ACL_SEC_114", + "description": "Access control for flash sector (offset range 0x0E_4000 - 0x0E_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits12-14", + "name": "ACL_SEC_115", + "description": "Access control for flash sector (offset range 0x0E_6000 - 0x0E_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits16-18", + "name": "ACL_SEC_116", + "description": "Access control for flash sector (offset range 0x0E_8000 - 0x0E_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits20-22", + "name": "ACL_SEC_117", + "description": "Access control for flash sector (offset range 0x0E_A000 - 0x0E_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits24-26", + "name": "ACL_SEC_118", + "description": "Access control for flash sector (offset range 0x0E_C000 - 0x0E_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits28-30", + "name": "ACL_SEC_119", + "description": "Access control for flash sector (offset range 0x0E_E000 - 0x0E_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field07C", + "name": "FLASH_ACL_127_120", + "description": "Access control for flash sector", + "offset_int": "0x007C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field07C-bits0-2", + "name": "ACL_SEC_120", + "description": "Access control for flash sector (offset range 0x0F_0000 - 0x0F_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits4-6", + "name": "ACL_SEC_121", + "description": "Access control for flash sector (offset range 0x0F_2000 - 0x0F_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits8-10", + "name": "ACL_SEC_122", + "description": "Access control for flash sector (offset range 0x0F_4000 - 0x0F_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits12-14", + "name": "ACL_SEC_123", + "description": "Access control for flash sector (offset range 0x0F_6000 - 0x0F_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits16-18", + "name": "ACL_SEC_124", + "description": "Access control for flash sector (offset range 0x0F_8000 - 0x0F_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits20-22", + "name": "ACL_SEC_125", + "description": "Access control for flash sector (offset range 0x0F_A000 - 0x0F_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits24-26", + "name": "ACL_SEC_126", + "description": "Access control for flash sector (offset range 0x0F_C000 - 0x0F_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits28-30", + "name": "ACL_SEC_127", + "description": "Access control for flash sector (offset range 0x0F_E000 - 0x0F_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field080", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0080", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0084", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0088", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x008C", + "default_value_int": "0" + }, + { + "id": "field090", + "name": "QUICK_SET_GPIO_2", + "description": "Quick Set to Drive GPIO 2 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0090", + "default_value_int": "0" + }, + { + "id": "field094", + "name": "QUICK_CLR_GPIO_2", + "description": "Quick Clear to Drive GPIO 2 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0094", + "default_value_int": "0" + }, + { + "id": "field098", + "name": "QUICK_SET_GPIO_3", + "description": "Quick Set to Drive GPIO 3 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "field09C", + "name": "QUICK_CLR_GPIO_3", + "description": "Quick Clear to Drive GPIO 3 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x009C", + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "QUICK_SET_GPIO_4", + "description": "Quick Set to Drive GPIO 4 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 4. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x00A0", + "default_value_int": "0" + }, + { + "id": "field0A4", + "name": "QUICK_CLR_GPIO_4", + "description": "Quick Clear to Drive GPIO 4 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 4. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x00A4", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000A8-000AC", + "description": "Reserved 000A8-000AC" + }, + "registers": [ + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Read Out Protection", + "description": "Read Out Protection (ROP) configuration" + }, + "registers": [ + { + "id": "field0B0", + "name": "ROP_STATE", + "description": "Read Out Protection (ROP) State value. Device does not support secure boot, but it does support four levels of Read Out Protection, referred as ROP_STATE. This read out protection is a mechanism that allows user to enable different levels of protection in the system. ROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. Any other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field0B4", + "name": "SBL_PROT", + "description": "Secondary Boot Loader Protection.", + "offset_int": "0x00B4", + "default_value_int": "0" + }, + { + "id": "field0B8", + "name": "SBL_START_ADDR", + "description": "Secondary Boot Loader Start Address.", + "offset_int": "0x00B8", + "default_value_int": "0" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field0C0", + "name": "ROP_STATE_DP", + "description": "Read Out Protection (ROP) State duplicate value. ROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. Any other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x00C0", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field0C4", + "name": "SBL_PROT_DP", + "description": "Secondary Boot Loader Protection (Duplicate).", + "offset_int": "0x00C4", + "default_value_int": "0" + }, + { + "id": "field0C8", + "name": "SBL_START_ADDR_DP", + "description": "Secondary Boot Loader Start Address (Duplicate).", + "offset_int": "0x00C8", + "default_value_int": "0" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Secure Installer", + "description": "Secure installer" + }, + "registers": [ + { + "id": "field0D0", + "name": "ERASE_TOKEN0", + "description": "ERASE_TOKEN[31:0]", + "offset_int": "0x00D0", + "default_value_int": "0" + }, + { + "id": "field0D4", + "name": "ERASE_TOKEN1", + "description": "ERASE_TOKEN[63:32]", + "offset_int": "0x00D4", + "default_value_int": "0" + }, + { + "id": "field0D8", + "name": "ERASE_TOKEN2", + "description": "ERASE_TOKEN[95:64]", + "offset_int": "0x00D8", + "default_value_int": "0" + }, + { + "id": "field0DC", + "name": "ERASE_TOKEN3", + "description": "ERASE_TOKEN[127:96]", + "offset_int": "0x00DC", + "default_value_int": "0" + }, + { + "id": "field0E0", + "name": "DELETE_INSTALLER", + "description": "DELETE_INSTALLER", + "offset_int": "0x00E0", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000E4-000F0", + "description": "Reserved 000E4-000F0" + }, + "registers": [ + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0" + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa256/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa256/database.yaml new file mode 100644 index 0000000..d6982b0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa256/database.yaml @@ -0,0 +1,27 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa255 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10_0000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0xF_e000 \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa265/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa265/database.yaml new file mode 100644 index 0000000..7dac664 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa265/database.yaml @@ -0,0 +1,27 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa255 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8_0000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0x7_e000 \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa266/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa266/database.yaml new file mode 100644 index 0000000..acf1087 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa266/database.yaml @@ -0,0 +1,27 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa256 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10_0000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0xF_e000 \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa343/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa343/database.yaml new file mode 100644 index 0000000..d402607 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa343/database.yaml @@ -0,0 +1,88 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x2_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x8000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_0000 + size: 0x1000 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + images: + xip: + plain: plain_xip + crc: crc_xip + + # ======== PFR section ======== + pfr: + sub_features: [cmpa] + cmpa: # CMPA description + erase_method: flash_erase + address: 0x1_E000 + size: 512 + reg_spec: pfr_cmpa.json + + # ======== DAT section ======== + dat: + dmbox_ap_ix: 1 + non_standard_statuses: # dictionary of non standard return statuses from various commands + 2: # Command get_crp_level + 0xFFFF_FFFF: ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state + 0xEEBA_04C3: ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available + 0x4939_8D8B: ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available + 0xB0AB_B703: ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available + + # ======== Blhost section ======== + blhost: + sub_features: [overridden_properties] + overridden_properties: + 17: "life-cycle" + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa343/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa343/pfr_cmpa.json new file mode 100644 index 0000000..fff9fdc --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa343/pfr_cmpa.json @@ -0,0 +1,2700 @@ +{ + "cpu": "MCXA343", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0x59630000", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_IF", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 2, + "description": "SPI ISP" + }, + { + "name": "I2C_ISP", + "value": 3, + "description": "I2C ISP" + } + ] + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "BOOT_SPEED", + "description": "Core clock", + "values": [ + { + "name": "FRO_45_MHZ", + "value": 0, + "description": "45Mhz FRO @1v0" + }, + { + "name": "FRO_90_MHZ", + "value": 1, + "description": "90MHz FRO @1v2" + }, + { + "name": "FRO_180_MHZ", + "value": 2, + "description": "180MHz FRO @1v2" + } + ] + }, + { + "width": 2 + }, + { + "width": 16, + "access": "WRITE_CONST", + "id": "field000-bits16-31", + "name": "HEADER", + "description": "CMPA Header marker should be set to 0x5963. After this header is set, all non-zero values will take effect; leaving all settings at 0xff will cause undefined behavior. It is recommended to set all values to 0x00 before setting the CMPA header value" + } + ] + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field004-bits0-7", + "name": "FLASH_REMAP_SIZE", + "description": "Flash remap size. This field should be written to remap field in flash. FLASH_REMAP_SIZE defines the size of the secondary boot image (the range of flash addresses that will be remapped)in internal flash, where remapped address end = FLASH_REMAP_SIZE" + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + } + ] + }, + { + "width": 2, + "id": "field004-bits14-15", + "name": "ISP_API_ENTRY", + "description": "Disable ISP mode entry through ROM API call. ISP mode can be entered through ROM API invocation", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + } + ] + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "Boot LED Status", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 8 + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "ISP_BOOT_LED", + "description": "Assert on ISP fall through. ROM drives the GPIO pin identified by this field whenever primary boot fails and execution falls through to ISP mode. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "Boot Timers", + "offset_int": "0x000C", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout: Timeout value in seconds. When a non-zero value is programmed in this field ROM uses it as idle timeout value to enter power-down state to conserve power" + }, + { + "width": 16 + } + ] + }, + { + "id": "field010", + "name": "ISP_UART_CFG", + "description": "ISP UART Configuration", + "offset_int": "0x0010", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field010-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field010-bits12-15", + "name": "UART_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode UART_BAUD_RATE" + }, + { + "width": 8, + "id": "field010-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field010-bits28-31", + "name": "UART_BAUD_RATE", + "description": "UART baud rate. Baud rate configured during UART ISP mode", + "values": [ + { + "name": "AUTO_BAUD_DETECTION", + "value": 0, + "description": "Auto baud detection" + } + ] + } + ] + }, + { + "id": "field014", + "name": "ISP_I2C_CFG", + "description": "ISP I2C Configuration", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field014-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field014-bits12-15", + "name": "I2C_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode" + }, + { + "width": 8, + "id": "field014-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field01C", + "name": "ISP_SPI_CFG0", + "description": "ISP SPI Configuration 0", + "offset_int": "0x001C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field01C-bits12-15", + "name": "SPI_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field020", + "name": "ISP_SPI_CFG1", + "description": "ISP SPI Configuration 1", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field024", + "name": "ISP_USB_ID", + "description": "isp usb id", + "offset_int": "0x0024", + "default_value_int": "0" + }, + { + "id": "field028", + "name": "ISP_USB_CFG", + "description": "isp usb cfg", + "offset_int": "0x0028", + "default_value_int": "0" + }, + { + "id": "field02C", + "name": "ISP_MISC_CFG", + "description": "ISP MISC Configuration", + "offset_int": "0x002C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field02C-bits0-7", + "name": "I2C_SLAVE_ADDR", + "description": "I2C slave address A 7-bit Address used for selecting our device on shared I2C bus system. By default ROM uses 0x10 as slave address. If this address conflicts with another slave on board customer could use this field to override the address" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field02C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field02C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field02C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00030-0003C", + "description": "Reserved 00030-0003C" + }, + "registers": [ + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Flash Access Control", + "description": "Flash access control" + }, + "registers": [ + { + "id": "field040", + "name": "FLASH_ACL_0_7", + "description": "Access control for flash sector", + "offset_int": "0x0040", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field040-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector (offset range 0x00_0000 - 0x00_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector (offset range 0x00_2000 - 0x00_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector (offset range 0x00_4000 - 0x00_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector (offset range 0x00_6000 - 0x00_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector (offset range 0x00_8000 - 0x00_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector (offset range 0x00_A000 - 0x00_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector (offset range 0x00_C000 - 0x00_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector (offset range 0x00_E000 - 0x00_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field044", + "name": "FLASH_ACL_8_15", + "description": "Access control for flash sector", + "offset_int": "0x0044", + "deprecated_names": [ + "FLASH_ACL_8_15" + ], + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field044-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector (offset range 0x01_0000 - 0x01_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector (offset range 0x01_2000 - 0x01_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector (offset range 0x01_4000 - 0x01_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector (offset range 0x01_6000 - 0x01_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector (offset range 0x01_8000 - 0x01_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector (offset range 0x01_A000 - 0x01_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector (offset range 0x01_C000 - 0x01_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector (offset range 0x01_E000 - 0x01_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field048", + "name": "FLASH_ACL_16_23", + "description": "Access control for flash sector", + "offset_int": "0x0048", + "deprecated_names": [ + "FLASH_ACL_16_23" + ], + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field048-bits0-2", + "name": "ACL_SEC_16", + "description": "Access control for flash sector (offset range 0x02_0000 - 0x02_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits4-6", + "name": "ACL_SEC_17", + "description": "Access control for flash sector (offset range 0x02_2000 - 0x02_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits8-10", + "name": "ACL_SEC_18", + "description": "Access control for flash sector (offset range 0x02_4000 - 0x02_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits12-14", + "name": "ACL_SEC_19", + "description": "Access control for flash sector (offset range 0x02_6000 - 0x02_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits16-18", + "name": "ACL_SEC_20", + "description": "Access control for flash sector (offset range 0x02_8000 - 0x02_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits20-22", + "name": "ACL_SEC_21", + "description": "Access control for flash sector (offset range 0x02_A000 - 0x02_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits24-26", + "name": "ACL_SEC_22", + "description": "Access control for flash sector (offset range 0x02_C000 - 0x02_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits28-30", + "name": "ACL_SEC_23", + "description": "Access control for flash sector (offset range 0x02_E000 - 0x02_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field04C", + "name": "FLASH_ACL_24_31", + "description": "Access control for flash sector", + "offset_int": "0x004C", + "deprecated_names": [ + "FLASH_ACL_24_31" + ], + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field04C-bits0-2", + "name": "ACL_SEC_24", + "description": "Access control for flash sector (offset range 0x03_0000 - 0x03_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits4-6", + "name": "ACL_SEC_25", + "description": "Access control for flash sector (offset range 0x03_2000 - 0x03_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits8-10", + "name": "ACL_SEC_26", + "description": "Access control for flash sector (offset range 0x03_4000 - 0x03_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits12-14", + "name": "ACL_SEC_27", + "description": "Access control for flash sector (offset range 0x03_6000 - 0x03_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits16-18", + "name": "ACL_SEC_28", + "description": "Access control for flash sector (offset range 0x03_8000 - 0x03_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits20-22", + "name": "ACL_SEC_29", + "description": "Access control for flash sector (offset range 0x03_A000 - 0x03_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits24-26", + "name": "ACL_SEC_30", + "description": "Access control for flash sector (offset range 0x03_C000 - 0x03_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits28-30", + "name": "ACL_SEC_31", + "description": "Access control for flash sector (offset range 0x03_E000 - 0x03_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00050-0007C", + "description": "Reserved 00050-0007C" + }, + "registers": [ + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00060", + "name": "Reserved 0x00060", + "description": "This field is reserved for internal use", + "offset_int": "0x0060", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field080", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0080", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0084", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0088", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x008C", + "default_value_int": "0" + }, + { + "id": "field090", + "name": "QUICK_SET_GPIO_2", + "description": "Quick Set to Drive GPIO 2 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0090", + "default_value_int": "0" + }, + { + "id": "field094", + "name": "QUICK_CLR_GPIO_2", + "description": "Quick Clear to Drive GPIO 2 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0094", + "default_value_int": "0" + }, + { + "id": "field098", + "name": "QUICK_SET_GPIO_3", + "description": "Quick Set to Drive GPIO 3 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "field09C", + "name": "QUICK_CLR_GPIO_3", + "description": "Quick Clear to Drive GPIO 3 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x009C", + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "QUICK_SET_GPIO_4", + "description": "Quick Set to Drive GPIO 4 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 4. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x00A0", + "default_value_int": "0" + }, + { + "id": "field0A4", + "name": "QUICK_CLR_GPIO_4", + "description": "Quick Clear to Drive GPIO 4 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 4. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x00A4", + "default_value_int": "0" + }, + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Read Out Protection", + "description": "Read Out Protection (ROP) configuration" + }, + "registers": [ + { + "id": "field0B0", + "name": "ROP_STATE", + "description": "Read Out Protection (ROP) State value. Device does not support secure boot, but it does support four levels of Read Out Protection, referred as ROP_STATE. This read out protection is a mechanism that allows user to enable different levels of protection in the system. ROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. Any other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field0C0", + "name": "ROP_STATE_DP", + "description": "Read Out Protection (ROP) State duplicate value. ROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. Any other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x00C0", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000D0-000DC", + "description": "Reserved 000D0-000DC" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0" + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa344/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa344/database.yaml new file mode 100644 index 0000000..37b009c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa344/database.yaml @@ -0,0 +1,25 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa343 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x4_0000 + external: false + sram: + start_int: 0x200_00000 + size_int: 0x1_0000 + external: false +features: + pfr: + cmpa: + address: 0x3_E000 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa345/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa345/database.yaml new file mode 100644 index 0000000..9b6ace6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa345/database.yaml @@ -0,0 +1,26 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa346 +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8_0000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x1_e000 + external: false + +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0x7_e000 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa346/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa346/database.yaml new file mode 100644 index 0000000..8dbdbf3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa346/database.yaml @@ -0,0 +1,98 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10_0000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x3_c000 + external: false + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_2000 + size: 0x1000 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + images: + xip: + plain: plain_xip + crc: crc_xip + + # ======== PFR section ======== + pfr: + sub_features: [cmpa] + cmpa: # CMPA description + erase_method: flash_erase + address: 0xf_e000 + size: 256 + reg_spec: pfr_cmpa.json + grouped_registers: + - name: ERASE_TOKEN + uid: cmpa_erase_token + width: 128 + config_as_hexstring: true + reversed: false + description: + ERASE_TOKEN[127:0] + sub_regs: + - field0D0 + - field0D4 + - field0D8 + - field0DC + + # ======== DAT section ======== + dat: + dmbox_ap_ix: 1 # Typical Index of debug mailbox access port is 2 + non_standard_statuses: # dictionary of non standard return statuses from various commands + 2: # Command get_crp_level + 0xFFFF_FFFF: ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state + 0xEEBA_04C3: ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available + 0x4939_8D8B: ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available + 0xB0AB_B703: ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available + + # ======== Blhost section ======== + blhost: + sub_features: [overridden_properties] + overridden_properties: + 17: "life-cycle" + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa346/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa346/pfr_cmpa.json new file mode 100644 index 0000000..5548d1e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa346/pfr_cmpa.json @@ -0,0 +1,7736 @@ +{ + "cpu": "mcxa346", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0x59630000", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_IF", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "SPI_SLAVE", + "value": 2, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_SLAVE", + "value": 3, + "description": "I2C slave ISP" + }, + { + "name": "USB0_HID", + "value": 4, + "description": "USB0 HID" + } + ] + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "BOOT_SPEED", + "description": "Core clock", + "values": [ + { + "name": "FRO_45_MHZ", + "value": 0, + "description": "45Mhz FRO @1v0" + }, + { + "name": "FRO_90_MHZ", + "value": 1, + "description": "90MHz FRO @1v2" + }, + { + "name": "FRO_180_MHZ", + "value": 2, + "description": "180MHz FRO @1v2" + } + ] + }, + { + "width": 2 + }, + { + "width": 16, + "access": "WRITE_CONST", + "id": "field000-bits16-31", + "name": "HEADER", + "description": "CMPA Header marker should be set to 0x5963" + } + ] + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field004-bits0-7", + "name": "FLASH_REMAP_SIZE", + "description": "Flash remap size. This field should be written to remap field in flash. FLASH_REMAP_SIZE defines the size of the secondary boot image (the range of flash addresses that will be remapped)in internal flash, where remapped address end = FLASH_REMAP_SIZE" + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits14-15", + "name": "ISP_API_ENTRY", + "description": "Disable ISP mode entry through ROM API call. ISP mode can be entered through ROM API invocation", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "Boot LED Status", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 8 + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "ISP_BOOT_LED", + "description": "Assert on ISP fall through. ROM drives the GPIO pin identified by this field whenever primary boot fails and execution falls through to ISP mode. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "Boot Timers", + "offset_int": "0x000C", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout: Timeout value in seconds. When a non-zero value is programmed in this field ROM uses it as idle timeout value to enter power-down state to conserve power" + }, + { + "width": 16 + } + ] + }, + { + "id": "field010", + "name": "ISP_UART_CFG", + "description": "ISP UART Configuration", + "offset_int": "0x0010", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field010-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field010-bits12-15", + "name": "UART_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode" + }, + { + "width": 8, + "id": "field010-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field010-bits28-31", + "name": "UART_BAUD_RATE", + "description": "UART baud rate. Baud rate configured during UART ISP mode", + "values": [ + { + "name": "AUTO_BAUD_DETECTION", + "value": 0, + "description": "Auto baud detection" + } + ] + } + ] + }, + { + "id": "field014", + "name": "ISP_I2C_CFG", + "description": "ISP I2C Configuration", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field014-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field014-bits12-15", + "name": "I2C_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode" + }, + { + "width": 8, + "id": "field014-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field01C", + "name": "ISP_SPI_CFG0", + "description": "ISP SPI Configuration 0", + "offset_int": "0x001C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field01C-bits12-15", + "name": "SPI_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field020", + "name": "ISP_SPI_CFG1", + "description": "ISP SPI Configuration 1", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved00024", + "name": "Reserved 0x00024", + "description": "This field is reserved for internal use", + "offset_int": "0x0024", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field028", + "name": "ISP_USB_CFG", + "description": "ISP USB Configuration", + "offset_int": "0x0028", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field028-bits0-7", + "name": "USBx_VBUS_PIN", + "description": "Override default USB0_VBUS_DETECT ISP pin. Identifies the pin to be used as USB0_VBUS detect pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field02C", + "name": "ISP_MISC_CFG", + "description": "ISP MISC Configuration", + "offset_int": "0x002C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field02C-bits0-7", + "name": "I2C_SLAVE_ADDR", + "description": "I2C slave address A 7-bit Address used for selecting our device on shared I2C bus system. By default ROM uses 0x10 as slave address. If this address conflicts with another slave on board customer could use this field to override the address" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field02C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field02C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field02C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00030-0003C", + "description": "Reserved 00030-0003C" + }, + "registers": [ + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Flash Access Control", + "description": "Flash access control" + }, + "registers": [ + { + "id": "field040", + "name": "FLASH_ACL_0_7", + "description": "Access control for flash sector", + "offset_int": "0x0040", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field040-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector (offset range 0x00_0000 - 0x00_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector (offset range 0x00_2000 - 0x00_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector (offset range 0x00_4000 - 0x00_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector (offset range 0x00_6000 - 0x00_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector (offset range 0x00_8000 - 0x00_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector (offset range 0x00_A000 - 0x00_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector (offset range 0x00_C000 - 0x00_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector (offset range 0x00_E000 - 0x00_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field044", + "name": "FLASH_ACL_15_8", + "description": "Access control for flash sector", + "offset_int": "0x0044", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field044-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector (offset range 0x01_0000 - 0x01_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector (offset range 0x01_2000 - 0x01_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector (offset range 0x01_4000 - 0x01_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector (offset range 0x01_6000 - 0x01_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector (offset range 0x01_8000 - 0x01_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector (offset range 0x01_A000 - 0x01_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector (offset range 0x01_C000 - 0x01_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector (offset range 0x01_E000 - 0x01_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field048", + "name": "FLASH_ACL_23_16", + "description": "Access control for flash sector", + "offset_int": "0x0048", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field048-bits0-2", + "name": "ACL_SEC_16", + "description": "Access control for flash sector (offset range 0x02_0000 - 0x02_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits4-6", + "name": "ACL_SEC_17", + "description": "Access control for flash sector (offset range 0x02_2000 - 0x02_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits8-10", + "name": "ACL_SEC_18", + "description": "Access control for flash sector (offset range 0x02_4000 - 0x02_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits12-14", + "name": "ACL_SEC_19", + "description": "Access control for flash sector (offset range 0x02_6000 - 0x02_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits16-18", + "name": "ACL_SEC_20", + "description": "Access control for flash sector (offset range 0x02_8000 - 0x02_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits20-22", + "name": "ACL_SEC_21", + "description": "Access control for flash sector (offset range 0x02_A000 - 0x02_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits24-26", + "name": "ACL_SEC_22", + "description": "Access control for flash sector (offset range 0x02_C000 - 0x02_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits28-30", + "name": "ACL_SEC_23", + "description": "Access control for flash sector (offset range 0x02_E000 - 0x02_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field04C", + "name": "FLASH_ACL_31_24", + "description": "Access control for flash sector", + "offset_int": "0x004C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field04C-bits0-2", + "name": "ACL_SEC_24", + "description": "Access control for flash sector (offset range 0x03_0000 - 0x03_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits4-6", + "name": "ACL_SEC_25", + "description": "Access control for flash sector (offset range 0x03_2000 - 0x03_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits8-10", + "name": "ACL_SEC_26", + "description": "Access control for flash sector (offset range 0x03_4000 - 0x03_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits12-14", + "name": "ACL_SEC_27", + "description": "Access control for flash sector (offset range 0x03_6000 - 0x03_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits16-18", + "name": "ACL_SEC_28", + "description": "Access control for flash sector (offset range 0x03_8000 - 0x03_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits20-22", + "name": "ACL_SEC_29", + "description": "Access control for flash sector (offset range 0x03_A000 - 0x03_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits24-26", + "name": "ACL_SEC_30", + "description": "Access control for flash sector (offset range 0x03_C000 - 0x03_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits28-30", + "name": "ACL_SEC_31", + "description": "Access control for flash sector (offset range 0x03_E000 - 0x03_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field050", + "name": "FLASH_ACL_39_32", + "description": "Access control for flash sector", + "offset_int": "0x0050", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field050-bits0-2", + "name": "ACL_SEC_32", + "description": "Access control for flash sector (offset range 0x04_0000 - 0x04_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits4-6", + "name": "ACL_SEC_33", + "description": "Access control for flash sector (offset range 0x04_2000 - 0x04_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits8-10", + "name": "ACL_SEC_34", + "description": "Access control for flash sector (offset range 0x04_4000 - 0x04_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits12-14", + "name": "ACL_SEC_35", + "description": "Access control for flash sector (offset range 0x04_6000 - 0x04_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits16-18", + "name": "ACL_SEC_36", + "description": "Access control for flash sector (offset range 0x04_8000 - 0x04_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits20-22", + "name": "ACL_SEC_37", + "description": "Access control for flash sector (offset range 0x04_A000 - 0x04_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits24-26", + "name": "ACL_SEC_38", + "description": "Access control for flash sector (offset range 0x04_C000 - 0x04_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits28-30", + "name": "ACL_SEC_39", + "description": "Access control for flash sector (offset range 0x04_E000 - 0x04_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field054", + "name": "FLASH_ACL_47_40", + "description": "Access control for flash sector", + "offset_int": "0x0054", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field054-bits0-2", + "name": "ACL_SEC_40", + "description": "Access control for flash sector (offset range 0x05_0000 - 0x05_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits4-6", + "name": "ACL_SEC_41", + "description": "Access control for flash sector (offset range 0x05_2000 - 0x05_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits8-10", + "name": "ACL_SEC_42", + "description": "Access control for flash sector (offset range 0x05_4000 - 0x05_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits12-14", + "name": "ACL_SEC_43", + "description": "Access control for flash sector (offset range 0x05_6000 - 0x05_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits16-18", + "name": "ACL_SEC_44", + "description": "Access control for flash sector (offset range 0x05_8000 - 0x05_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits20-22", + "name": "ACL_SEC_45", + "description": "Access control for flash sector (offset range 0x05_A000 - 0x05_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits24-26", + "name": "ACL_SEC_46", + "description": "Access control for flash sector (offset range 0x05_C000 - 0x05_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits28-30", + "name": "ACL_SEC_47", + "description": "Access control for flash sector (offset range 0x05_E000 - 0x05_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field058", + "name": "FLASH_ACL_55_48", + "description": "Access control for flash sector", + "offset_int": "0x0058", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field058-bits0-2", + "name": "ACL_SEC_48", + "description": "Access control for flash sector (offset range 0x06_0000 - 0x06_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits4-6", + "name": "ACL_SEC_49", + "description": "Access control for flash sector (offset range 0x06_2000 - 0x06_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits8-10", + "name": "ACL_SEC_50", + "description": "Access control for flash sector (offset range 0x06_4000 - 0x06_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits12-14", + "name": "ACL_SEC_51", + "description": "Access control for flash sector (offset range 0x06_6000 - 0x06_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits16-18", + "name": "ACL_SEC_52", + "description": "Access control for flash sector (offset range 0x06_8000 - 0x06_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits20-22", + "name": "ACL_SEC_53", + "description": "Access control for flash sector (offset range 0x06_A000 - 0x06_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits24-26", + "name": "ACL_SEC_54", + "description": "Access control for flash sector (offset range 0x06_C000 - 0x06_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits28-30", + "name": "ACL_SEC_55", + "description": "Access control for flash sector (offset range 0x06_E000 - 0x06_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field05C", + "name": "FLASH_ACL_63_56", + "description": "Access control for flash sector", + "offset_int": "0x005C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field05C-bits0-2", + "name": "ACL_SEC_56", + "description": "Access control for flash sector (offset range 0x07_0000 - 0x07_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits4-6", + "name": "ACL_SEC_57", + "description": "Access control for flash sector (offset range 0x07_2000 - 0x07_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits8-10", + "name": "ACL_SEC_58", + "description": "Access control for flash sector (offset range 0x07_4000 - 0x07_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits12-14", + "name": "ACL_SEC_59", + "description": "Access control for flash sector (offset range 0x07_6000 - 0x07_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits16-18", + "name": "ACL_SEC_60", + "description": "Access control for flash sector (offset range 0x07_8000 - 0x07_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits20-22", + "name": "ACL_SEC_61", + "description": "Access control for flash sector (offset range 0x07_A000 - 0x07_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits24-26", + "name": "ACL_SEC_62", + "description": "Access control for flash sector (offset range 0x07_C000 - 0x07_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits28-30", + "name": "ACL_SEC_63", + "description": "Access control for flash sector (offset range 0x07_E000 - 0x07_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field060", + "name": "FLASH_ACL_71_64", + "description": "Access control for flash sector", + "offset_int": "0x0060", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field060-bits0-2", + "name": "ACL_SEC_64", + "description": "Access control for flash sector (offset range 0x08_0000 - 0x08_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits4-6", + "name": "ACL_SEC_65", + "description": "Access control for flash sector (offset range 0x08_2000 - 0x08_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits8-10", + "name": "ACL_SEC_66", + "description": "Access control for flash sector (offset range 0x08_4000 - 0x08_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits12-14", + "name": "ACL_SEC_67", + "description": "Access control for flash sector (offset range 0x08_6000 - 0x08_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits16-18", + "name": "ACL_SEC_68", + "description": "Access control for flash sector (offset range 0x08_8000 - 0x08_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits20-22", + "name": "ACL_SEC_69", + "description": "Access control for flash sector (offset range 0x08_A000 - 0x08_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits24-26", + "name": "ACL_SEC_70", + "description": "Access control for flash sector (offset range 0x08_C000 - 0x08_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits28-30", + "name": "ACL_SEC_71", + "description": "Access control for flash sector (offset range 0x08_E000 - 0x08_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field064", + "name": "FLASH_ACL_79_72", + "description": "Access control for flash sector", + "offset_int": "0x0064", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field064-bits0-2", + "name": "ACL_SEC_72", + "description": "Access control for flash sector (offset range 0x09_0000 - 0x09_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits4-6", + "name": "ACL_SEC_73", + "description": "Access control for flash sector (offset range 0x09_2000 - 0x09_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits8-10", + "name": "ACL_SEC_74", + "description": "Access control for flash sector (offset range 0x09_4000 - 0x09_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits12-14", + "name": "ACL_SEC_75", + "description": "Access control for flash sector (offset range 0x09_6000 - 0x09_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits16-18", + "name": "ACL_SEC_76", + "description": "Access control for flash sector (offset range 0x09_8000 - 0x09_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits20-22", + "name": "ACL_SEC_77", + "description": "Access control for flash sector (offset range 0x09_A000 - 0x09_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits24-26", + "name": "ACL_SEC_78", + "description": "Access control for flash sector (offset range 0x09_C000 - 0x09_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits28-30", + "name": "ACL_SEC_79", + "description": "Access control for flash sector (offset range 0x09_E000 - 0x09_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field068", + "name": "FLASH_ACL_87_80", + "description": "Access control for flash sector", + "offset_int": "0x0068", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field068-bits0-2", + "name": "ACL_SEC_80", + "description": "Access control for flash sector (offset range 0x0A_0000 - 0x0A_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits4-6", + "name": "ACL_SEC_81", + "description": "Access control for flash sector (offset range 0x0A_2000 - 0x0A_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits8-10", + "name": "ACL_SEC_82", + "description": "Access control for flash sector (offset range 0x0A_4000 - 0x0A_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits12-14", + "name": "ACL_SEC_83", + "description": "Access control for flash sector (offset range 0x0A_6000 - 0x0A_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits16-18", + "name": "ACL_SEC_84", + "description": "Access control for flash sector (offset range 0x0A_8000 - 0x0A_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits20-22", + "name": "ACL_SEC_85", + "description": "Access control for flash sector (offset range 0x0A_A000 - 0x0A_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits24-26", + "name": "ACL_SEC_86", + "description": "Access control for flash sector (offset range 0x0A_C000 - 0x0A_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits28-30", + "name": "ACL_SEC_87", + "description": "Access control for flash sector (offset range 0x0A_E000 - 0x0A_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field06C", + "name": "FLASH_ACL_95_88", + "description": "Access control for flash sector", + "offset_int": "0x006C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field06C-bits0-2", + "name": "ACL_SEC_88", + "description": "Access control for flash sector (offset range 0x0B_0000 - 0x0B_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits4-6", + "name": "ACL_SEC_89", + "description": "Access control for flash sector (offset range 0x0B_2000 - 0x0B_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits8-10", + "name": "ACL_SEC_90", + "description": "Access control for flash sector (offset range 0x0B_4000 - 0x0B_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits12-14", + "name": "ACL_SEC_91", + "description": "Access control for flash sector (offset range 0x0B_6000 - 0x0B_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits16-18", + "name": "ACL_SEC_92", + "description": "Access control for flash sector (offset range 0x0B_8000 - 0x0B_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits20-22", + "name": "ACL_SEC_93", + "description": "Access control for flash sector (offset range 0x0B_A000 - 0x0B_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits24-26", + "name": "ACL_SEC_94", + "description": "Access control for flash sector (offset range 0x0B_C000 - 0x0B_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits28-30", + "name": "ACL_SEC_95", + "description": "Access control for flash sector (offset range 0x0B_E000 - 0x0B_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field070", + "name": "FLASH_ACL_103_96", + "description": "Access control for flash sector", + "offset_int": "0x0070", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field070-bits0-2", + "name": "ACL_SEC_96", + "description": "Access control for flash sector (offset range 0x0C_0000 - 0x0C_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits4-6", + "name": "ACL_SEC_97", + "description": "Access control for flash sector (offset range 0x0C_2000 - 0x0C_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits8-10", + "name": "ACL_SEC_98", + "description": "Access control for flash sector (offset range 0x0C_4000 - 0x0C_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits12-14", + "name": "ACL_SEC_99", + "description": "Access control for flash sector (offset range 0x0C_6000 - 0x0C_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits16-18", + "name": "ACL_SEC_100", + "description": "Access control for flash sector (offset range 0x0C_8000 - 0x0C_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits20-22", + "name": "ACL_SEC_101", + "description": "Access control for flash sector (offset range 0x0C_A000 - 0x0C_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits24-26", + "name": "ACL_SEC_102", + "description": "Access control for flash sector (offset range 0x0C_C000 - 0x0C_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits28-30", + "name": "ACL_SEC_103", + "description": "Access control for flash sector (offset range 0x0C_E000 - 0x0C_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field074", + "name": "FLASH_ACL_111_104", + "description": "Access control for flash sector", + "offset_int": "0x0074", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field074-bits0-2", + "name": "ACL_SEC_104", + "description": "Access control for flash sector (offset range 0x0D_0000 - 0x0D_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits4-6", + "name": "ACL_SEC_105", + "description": "Access control for flash sector (offset range 0x0D_2000 - 0x0D_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits8-10", + "name": "ACL_SEC_106", + "description": "Access control for flash sector (offset range 0x0D_4000 - 0x0D_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits12-14", + "name": "ACL_SEC_107", + "description": "Access control for flash sector (offset range 0x0D_6000 - 0x0D_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits16-18", + "name": "ACL_SEC_108", + "description": "Access control for flash sector (offset range 0x0D_8000 - 0x0D_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits20-22", + "name": "ACL_SEC_109", + "description": "Access control for flash sector (offset range 0x0D_A000 - 0x0D_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits24-26", + "name": "ACL_SEC_110", + "description": "Access control for flash sector (offset range 0x0D_C000 - 0x0D_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits28-30", + "name": "ACL_SEC_111", + "description": "Access control for flash sector (offset range 0x0D_E000 - 0x0D_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field078", + "name": "FLASH_ACL_119_112", + "description": "Access control for flash sector", + "offset_int": "0x0078", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field078-bits0-2", + "name": "ACL_SEC_112", + "description": "Access control for flash sector (offset range 0x0E_0000 - 0x0E_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits4-6", + "name": "ACL_SEC_113", + "description": "Access control for flash sector (offset range 0x0E_2000 - 0x0E_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits8-10", + "name": "ACL_SEC_114", + "description": "Access control for flash sector (offset range 0x0E_4000 - 0x0E_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits12-14", + "name": "ACL_SEC_115", + "description": "Access control for flash sector (offset range 0x0E_6000 - 0x0E_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits16-18", + "name": "ACL_SEC_116", + "description": "Access control for flash sector (offset range 0x0E_8000 - 0x0E_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits20-22", + "name": "ACL_SEC_117", + "description": "Access control for flash sector (offset range 0x0E_A000 - 0x0E_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits24-26", + "name": "ACL_SEC_118", + "description": "Access control for flash sector (offset range 0x0E_C000 - 0x0E_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits28-30", + "name": "ACL_SEC_119", + "description": "Access control for flash sector (offset range 0x0E_E000 - 0x0E_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field07C", + "name": "FLASH_ACL_127_120", + "description": "Access control for flash sector", + "offset_int": "0x007C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field07C-bits0-2", + "name": "ACL_SEC_120", + "description": "Access control for flash sector (offset range 0x0F_0000 - 0x0F_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits4-6", + "name": "ACL_SEC_121", + "description": "Access control for flash sector (offset range 0x0F_2000 - 0x0F_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits8-10", + "name": "ACL_SEC_122", + "description": "Access control for flash sector (offset range 0x0F_4000 - 0x0F_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits12-14", + "name": "ACL_SEC_123", + "description": "Access control for flash sector (offset range 0x0F_6000 - 0x0F_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits16-18", + "name": "ACL_SEC_124", + "description": "Access control for flash sector (offset range 0x0F_8000 - 0x0F_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits20-22", + "name": "ACL_SEC_125", + "description": "Access control for flash sector (offset range 0x0F_A000 - 0x0F_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits24-26", + "name": "ACL_SEC_126", + "description": "Access control for flash sector (offset range 0x0F_C000 - 0x0F_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits28-30", + "name": "ACL_SEC_127", + "description": "Access control for flash sector (offset range 0x0F_E000 - 0x0F_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field080", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0080", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0084", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0088", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x008C", + "default_value_int": "0" + }, + { + "id": "field090", + "name": "QUICK_SET_GPIO_2", + "description": "Quick Set to Drive GPIO 2 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0090", + "default_value_int": "0" + }, + { + "id": "field094", + "name": "QUICK_CLR_GPIO_2", + "description": "Quick Clear to Drive GPIO 2 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0094", + "default_value_int": "0" + }, + { + "id": "field098", + "name": "QUICK_SET_GPIO_3", + "description": "Quick Set to Drive GPIO 3 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "field09C", + "name": "QUICK_CLR_GPIO_3", + "description": "Quick Clear to Drive GPIO 3 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x009C", + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "QUICK_SET_GPIO_4", + "description": "Quick Set to Drive GPIO 4 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 4. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x00A0", + "default_value_int": "0" + }, + { + "id": "field0A4", + "name": "QUICK_CLR_GPIO_4", + "description": "Quick Clear to Drive GPIO 4 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 4. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x00A4", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000A8-000AC", + "description": "Reserved 000A8-000AC" + }, + "registers": [ + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Read Out Protection", + "description": "Read Out Protection (ROP) configuration" + }, + "registers": [ + { + "id": "field0B0", + "name": "ROP_STATE", + "description": "Read Out Protection (ROP) State value. Device does not support secure boot, but it does support four levels of Read Out Protection, referred as ROP_STATE. This read out protection is a mechanism that allows user to enable different levels of protection in the system. ROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. Any other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field0B4", + "name": "SBL_PROT", + "description": "sbl prot", + "offset_int": "0x00B4", + "default_value_int": "0" + }, + { + "id": "field0B8", + "name": "SBL_START_ADDR.", + "description": "sbl start addr.", + "offset_int": "0x00B8", + "default_value_int": "0" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field0C0", + "name": "ROP_STATE_DP", + "description": "Read Out Protection (ROP) State duplicate value. ROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. Any other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x00C0", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field0C4", + "name": "SBL_PROT_DP", + "description": "sbl prot dp", + "offset_int": "0x00C4", + "default_value_int": "0" + }, + { + "id": "field0C8", + "name": "SBL_START_ADDR_DP", + "description": "sbl start addr dp", + "offset_int": "0x00C8", + "default_value_int": "0" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000C4-000F0", + "description": "Reserved 000C4-000F0" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0" + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa355/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa355/database.yaml new file mode 100644 index 0000000..b85607f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa355/database.yaml @@ -0,0 +1,30 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa356 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8_0000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x1_e000 + external: false + sramx: + start_int: 0x4000000 + size_int: 0x2000 + external: false +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0x7_e000 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa356/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa356/database.yaml new file mode 100644 index 0000000..92682f0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa356/database.yaml @@ -0,0 +1,31 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa346 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10_0000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x3_c000 + external: false + sramx: + start_int: 0x4000000 + size_int: 0x2000 + external: false + +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0xF_e000 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa365/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa365/database.yaml new file mode 100644 index 0000000..a8bca74 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa365/database.yaml @@ -0,0 +1,26 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxa366 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8_0000 + external: false + sram: + start_int: 0x20000000 + size_int: 0x1_e000 + external: false +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0x7_e000 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa366/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa366/database.yaml new file mode 100644 index 0000000..edf4fee --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa366/database.yaml @@ -0,0 +1,118 @@ +# Copyright 2024-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-a-series-microcontrollers:MCX-A-SERIES + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x10_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x3_c000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_2000 + size: 0x1000 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + images: + xip: + plain: plain_xip + crc: crc_xip + + # ======== PFR section ======== + pfr: + sub_features: [cmpa] + cmpa: # CMPA description + erase_method: flash_erase + address: 0xf_e000 + size: 256 + reg_spec: pfr_cmpa.json + grouped_registers: + - name: ERASE_TOKEN + uid: cmpa_erase_token + width: 128 + config_as_hexstring: true + reversed: false + description: ERASE_TOKEN[127:0] + sub_regs: + - field0D0 + - field0D4 + - field0D8 + - field0DC + + # ======== DAT section ======== + dat: + dmbox_ap_ix: 1 # Typical Index of debug mailbox access port is 2 + non_standard_statuses: # dictionary of non standard return statuses from various commands + 2: # Command get_crp_level + 0xFFFF_FFFF: ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state + 0xEEBA_04C3: ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available + 0x4939_8D8B: ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available + 0xB0AB_B703: ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available + + # ======== Blhost section ======== + blhost: + sub_features: [overridden_properties] + overridden_properties: + 17: "life-cycle" + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsmSBc] + supported_commands: + - erase + - load + - loadKeyBlob + - execute + + sbc: + supported_commands: + - erase + - load + - execute + - loadKeyBlob diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa366/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa366/pfr_cmpa.json new file mode 100644 index 0000000..73be00b --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxa366/pfr_cmpa.json @@ -0,0 +1,7775 @@ +{ + "cpu": "MCXA366", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0x59630000", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_IF", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "SPI_SLAVE", + "value": 2, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_SLAVE", + "value": 3, + "description": "I2C slave ISP" + }, + { + "name": "USB0_HID", + "value": 4, + "description": "USB0 HID" + } + ] + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "BOOT_SPEED", + "description": "Core clock", + "values": [ + { + "name": "FRO_45_MHZ", + "value": 0, + "description": "45Mhz FRO @1v0" + }, + { + "name": "FRO_90_MHZ", + "value": 1, + "description": "90MHz FRO @1v2" + }, + { + "name": "FRO_180_MHZ", + "value": 2, + "description": "180MHz FRO @1v2" + } + ] + }, + { + "width": 2 + }, + { + "width": 16, + "access": "WRITE_CONST", + "id": "field000-bits16-31", + "name": "HEADER", + "description": "CMPA Header marker should be set to 0x5963" + } + ] + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field004-bits0-7", + "name": "FLASH_REMAP_SIZE", + "description": "Flash remap size. This field should be written to remap field in flash. FLASH_REMAP_SIZE defines the size of the secondary boot image (the range of flash addresses that will be remapped)in internal flash, where remapped address end = FLASH_REMAP_SIZE" + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion", + "values": [ + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command", + "values": [ + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits14-15", + "name": "ISP_API_ENTRY", + "description": "Disable ISP mode entry through ROM API call. ISP mode can be entered through ROM API invocation", + "values": [ + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "Boot LED Status", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 8 + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "ISP_BOOT_LED", + "description": "Assert on ISP fall through. ROM drives the GPIO pin identified by this field whenever primary boot fails and execution falls through to ISP mode. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "Boot Timers", + "offset_int": "0x000C", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout: Timeout value in seconds. When a non-zero value is programmed in this field ROM uses it as idle timeout value to enter power-down state to conserve power" + }, + { + "width": 16 + } + ] + }, + { + "id": "field010", + "name": "ISP_UART_CFG", + "description": "ISP UART Configuration", + "offset_int": "0x0010", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field010-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field010-bits12-15", + "name": "UART_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode" + }, + { + "width": 8, + "id": "field010-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field010-bits28-31", + "name": "UART_BAUD_RATE", + "description": "UART baud rate. Baud rate configured during UART ISP mode", + "values": [ + { + "name": "AUTO_BAUD_DETECTION", + "value": 0, + "description": "Auto baud detection" + } + ] + } + ] + }, + { + "id": "field014", + "name": "ISP_I2C_CFG", + "description": "ISP I2C Configuration", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field014-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field014-bits12-15", + "name": "I2C_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode" + }, + { + "width": 8, + "id": "field014-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field01C", + "name": "ISP_SPI_CFG0", + "description": "ISP SPI Configuration 0", + "offset_int": "0x001C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field01C-bits12-15", + "name": "SPI_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field020", + "name": "ISP_SPI_CFG1", + "description": "ISP SPI Configuration 1", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field024", + "name": "ISP_USB_ID", + "description": "ISP USB Identification", + "offset_int": "0x0024", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field024-bits0-15", + "name": "USB_VENDOR_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "USB_PRODUCT_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field028", + "name": "ISP_USB_CFG", + "description": "ISP USB Configuration", + "offset_int": "0x0028", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field028-bits0-7", + "name": "USBX_VBUS_PIN", + "description": "Override default USB0_VBUS_DETECT ISP pin. Identifies the pin to be used as USB0_VBUS detect pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field028-bits8-11", + "name": "USBX_VBUS_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field02C", + "name": "ISP_MISC_CFG", + "description": "ISP MISC Configuration", + "offset_int": "0x002C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field02C-bits0-7", + "name": "I2C_SLAVE_ADDR", + "description": "I2C slave address A 7-bit Address used for selecting our device on shared I2C bus system. By default ROM uses 0x10 as slave address. If this address conflicts with another slave on board customer could use this field to override the address" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field02C-bits22-23", + "name": "ISP_USB_CUST", + "description": "Use customer defined GPIO for USB VBUS detect function during ISP mode", + "values": [ + { + "name": "DEDICATED", + "value": 0, + "description": "Use dedicated VBUS pins" + }, + { + "name": "USB0_VBUS", + "value": 1, + "description": "Customer defined GPIO for USB0_VBUS detect" + }, + { + "name": "VDD_USB", + "value": 3, + "description": "Use VDD_USB for VBUS presence. On board regulator should generate VDD_USB voltage using 5V input fo VBUS pin on connector" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field02C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field02C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field02C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00030-0003C", + "description": "Reserved 00030-0003C" + }, + "registers": [ + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Flash Access Control", + "description": "Flash access control" + }, + "registers": [ + { + "id": "field040", + "name": "FLASH_ACL_0_7", + "description": "Access control for flash sector", + "offset_int": "0x0040", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field040-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector (offset range 0x00_0000 - 0x00_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector (offset range 0x00_2000 - 0x00_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector (offset range 0x00_4000 - 0x00_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector (offset range 0x00_6000 - 0x00_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector (offset range 0x00_8000 - 0x00_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector (offset range 0x00_A000 - 0x00_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector (offset range 0x00_C000 - 0x00_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector (offset range 0x00_E000 - 0x00_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field044", + "name": "FLASH_ACL_15_8", + "description": "Access control for flash sector", + "offset_int": "0x0044", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field044-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector (offset range 0x01_0000 - 0x01_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector (offset range 0x01_2000 - 0x01_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector (offset range 0x01_4000 - 0x01_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector (offset range 0x01_6000 - 0x01_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector (offset range 0x01_8000 - 0x01_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector (offset range 0x01_A000 - 0x01_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector (offset range 0x01_C000 - 0x01_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector (offset range 0x01_E000 - 0x01_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field048", + "name": "FLASH_ACL_23_16", + "description": "Access control for flash sector", + "offset_int": "0x0048", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field048-bits0-2", + "name": "ACL_SEC_16", + "description": "Access control for flash sector (offset range 0x02_0000 - 0x02_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits4-6", + "name": "ACL_SEC_17", + "description": "Access control for flash sector (offset range 0x02_2000 - 0x02_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits8-10", + "name": "ACL_SEC_18", + "description": "Access control for flash sector (offset range 0x02_4000 - 0x02_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits12-14", + "name": "ACL_SEC_19", + "description": "Access control for flash sector (offset range 0x02_6000 - 0x02_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits16-18", + "name": "ACL_SEC_20", + "description": "Access control for flash sector (offset range 0x02_8000 - 0x02_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits20-22", + "name": "ACL_SEC_21", + "description": "Access control for flash sector (offset range 0x02_A000 - 0x02_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits24-26", + "name": "ACL_SEC_22", + "description": "Access control for flash sector (offset range 0x02_C000 - 0x02_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits28-30", + "name": "ACL_SEC_23", + "description": "Access control for flash sector (offset range 0x02_E000 - 0x02_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field04C", + "name": "FLASH_ACL_31_24", + "description": "Access control for flash sector", + "offset_int": "0x004C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field04C-bits0-2", + "name": "ACL_SEC_24", + "description": "Access control for flash sector (offset range 0x03_0000 - 0x03_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits4-6", + "name": "ACL_SEC_25", + "description": "Access control for flash sector (offset range 0x03_2000 - 0x03_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits8-10", + "name": "ACL_SEC_26", + "description": "Access control for flash sector (offset range 0x03_4000 - 0x03_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits12-14", + "name": "ACL_SEC_27", + "description": "Access control for flash sector (offset range 0x03_6000 - 0x03_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits16-18", + "name": "ACL_SEC_28", + "description": "Access control for flash sector (offset range 0x03_8000 - 0x03_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits20-22", + "name": "ACL_SEC_29", + "description": "Access control for flash sector (offset range 0x03_A000 - 0x03_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits24-26", + "name": "ACL_SEC_30", + "description": "Access control for flash sector (offset range 0x03_C000 - 0x03_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits28-30", + "name": "ACL_SEC_31", + "description": "Access control for flash sector (offset range 0x03_E000 - 0x03_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field050", + "name": "FLASH_ACL_39_32", + "description": "Access control for flash sector", + "offset_int": "0x0050", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field050-bits0-2", + "name": "ACL_SEC_32", + "description": "Access control for flash sector (offset range 0x04_0000 - 0x04_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits4-6", + "name": "ACL_SEC_33", + "description": "Access control for flash sector (offset range 0x04_2000 - 0x04_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits8-10", + "name": "ACL_SEC_34", + "description": "Access control for flash sector (offset range 0x04_4000 - 0x04_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits12-14", + "name": "ACL_SEC_35", + "description": "Access control for flash sector (offset range 0x04_6000 - 0x04_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits16-18", + "name": "ACL_SEC_36", + "description": "Access control for flash sector (offset range 0x04_8000 - 0x04_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits20-22", + "name": "ACL_SEC_37", + "description": "Access control for flash sector (offset range 0x04_A000 - 0x04_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits24-26", + "name": "ACL_SEC_38", + "description": "Access control for flash sector (offset range 0x04_C000 - 0x04_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits28-30", + "name": "ACL_SEC_39", + "description": "Access control for flash sector (offset range 0x04_E000 - 0x04_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field054", + "name": "FLASH_ACL_47_40", + "description": "Access control for flash sector", + "offset_int": "0x0054", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field054-bits0-2", + "name": "ACL_SEC_40", + "description": "Access control for flash sector (offset range 0x05_0000 - 0x05_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits4-6", + "name": "ACL_SEC_41", + "description": "Access control for flash sector (offset range 0x05_2000 - 0x05_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits8-10", + "name": "ACL_SEC_42", + "description": "Access control for flash sector (offset range 0x05_4000 - 0x05_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits12-14", + "name": "ACL_SEC_43", + "description": "Access control for flash sector (offset range 0x05_6000 - 0x05_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits16-18", + "name": "ACL_SEC_44", + "description": "Access control for flash sector (offset range 0x05_8000 - 0x05_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits20-22", + "name": "ACL_SEC_45", + "description": "Access control for flash sector (offset range 0x05_A000 - 0x05_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits24-26", + "name": "ACL_SEC_46", + "description": "Access control for flash sector (offset range 0x05_C000 - 0x05_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits28-30", + "name": "ACL_SEC_47", + "description": "Access control for flash sector (offset range 0x05_E000 - 0x05_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field058", + "name": "FLASH_ACL_55_48", + "description": "Access control for flash sector", + "offset_int": "0x0058", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field058-bits0-2", + "name": "ACL_SEC_48", + "description": "Access control for flash sector (offset range 0x06_0000 - 0x06_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits4-6", + "name": "ACL_SEC_49", + "description": "Access control for flash sector (offset range 0x06_2000 - 0x06_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits8-10", + "name": "ACL_SEC_50", + "description": "Access control for flash sector (offset range 0x06_4000 - 0x06_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits12-14", + "name": "ACL_SEC_51", + "description": "Access control for flash sector (offset range 0x06_6000 - 0x06_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits16-18", + "name": "ACL_SEC_52", + "description": "Access control for flash sector (offset range 0x06_8000 - 0x06_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits20-22", + "name": "ACL_SEC_53", + "description": "Access control for flash sector (offset range 0x06_A000 - 0x06_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits24-26", + "name": "ACL_SEC_54", + "description": "Access control for flash sector (offset range 0x06_C000 - 0x06_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits28-30", + "name": "ACL_SEC_55", + "description": "Access control for flash sector (offset range 0x06_E000 - 0x06_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field05C", + "name": "FLASH_ACL_63_56", + "description": "Access control for flash sector", + "offset_int": "0x005C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field05C-bits0-2", + "name": "ACL_SEC_56", + "description": "Access control for flash sector (offset range 0x07_0000 - 0x07_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits4-6", + "name": "ACL_SEC_57", + "description": "Access control for flash sector (offset range 0x07_2000 - 0x07_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits8-10", + "name": "ACL_SEC_58", + "description": "Access control for flash sector (offset range 0x07_4000 - 0x07_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits12-14", + "name": "ACL_SEC_59", + "description": "Access control for flash sector (offset range 0x07_6000 - 0x07_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits16-18", + "name": "ACL_SEC_60", + "description": "Access control for flash sector (offset range 0x07_8000 - 0x07_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits20-22", + "name": "ACL_SEC_61", + "description": "Access control for flash sector (offset range 0x07_A000 - 0x07_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits24-26", + "name": "ACL_SEC_62", + "description": "Access control for flash sector (offset range 0x07_C000 - 0x07_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits28-30", + "name": "ACL_SEC_63", + "description": "Access control for flash sector (offset range 0x07_E000 - 0x07_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field060", + "name": "FLASH_ACL_71_64", + "description": "Access control for flash sector", + "offset_int": "0x0060", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field060-bits0-2", + "name": "ACL_SEC_64", + "description": "Access control for flash sector (offset range 0x08_0000 - 0x08_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits4-6", + "name": "ACL_SEC_65", + "description": "Access control for flash sector (offset range 0x08_2000 - 0x08_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits8-10", + "name": "ACL_SEC_66", + "description": "Access control for flash sector (offset range 0x08_4000 - 0x08_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits12-14", + "name": "ACL_SEC_67", + "description": "Access control for flash sector (offset range 0x08_6000 - 0x08_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits16-18", + "name": "ACL_SEC_68", + "description": "Access control for flash sector (offset range 0x08_8000 - 0x08_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits20-22", + "name": "ACL_SEC_69", + "description": "Access control for flash sector (offset range 0x08_A000 - 0x08_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits24-26", + "name": "ACL_SEC_70", + "description": "Access control for flash sector (offset range 0x08_C000 - 0x08_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field060-bits28-30", + "name": "ACL_SEC_71", + "description": "Access control for flash sector (offset range 0x08_E000 - 0x08_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field064", + "name": "FLASH_ACL_79_72", + "description": "Access control for flash sector", + "offset_int": "0x0064", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field064-bits0-2", + "name": "ACL_SEC_72", + "description": "Access control for flash sector (offset range 0x09_0000 - 0x09_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits4-6", + "name": "ACL_SEC_73", + "description": "Access control for flash sector (offset range 0x09_2000 - 0x09_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits8-10", + "name": "ACL_SEC_74", + "description": "Access control for flash sector (offset range 0x09_4000 - 0x09_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits12-14", + "name": "ACL_SEC_75", + "description": "Access control for flash sector (offset range 0x09_6000 - 0x09_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits16-18", + "name": "ACL_SEC_76", + "description": "Access control for flash sector (offset range 0x09_8000 - 0x09_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits20-22", + "name": "ACL_SEC_77", + "description": "Access control for flash sector (offset range 0x09_A000 - 0x09_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits24-26", + "name": "ACL_SEC_78", + "description": "Access control for flash sector (offset range 0x09_C000 - 0x09_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field064-bits28-30", + "name": "ACL_SEC_79", + "description": "Access control for flash sector (offset range 0x09_E000 - 0x09_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field068", + "name": "FLASH_ACL_87_80", + "description": "Access control for flash sector", + "offset_int": "0x0068", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field068-bits0-2", + "name": "ACL_SEC_80", + "description": "Access control for flash sector (offset range 0x0A_0000 - 0x0A_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits4-6", + "name": "ACL_SEC_81", + "description": "Access control for flash sector (offset range 0x0A_2000 - 0x0A_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits8-10", + "name": "ACL_SEC_82", + "description": "Access control for flash sector (offset range 0x0A_4000 - 0x0A_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits12-14", + "name": "ACL_SEC_83", + "description": "Access control for flash sector (offset range 0x0A_6000 - 0x0A_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits16-18", + "name": "ACL_SEC_84", + "description": "Access control for flash sector (offset range 0x0A_8000 - 0x0A_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits20-22", + "name": "ACL_SEC_85", + "description": "Access control for flash sector (offset range 0x0A_A000 - 0x0A_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits24-26", + "name": "ACL_SEC_86", + "description": "Access control for flash sector (offset range 0x0A_C000 - 0x0A_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field068-bits28-30", + "name": "ACL_SEC_87", + "description": "Access control for flash sector (offset range 0x0A_E000 - 0x0A_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field06C", + "name": "FLASH_ACL_95_88", + "description": "Access control for flash sector", + "offset_int": "0x006C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field06C-bits0-2", + "name": "ACL_SEC_88", + "description": "Access control for flash sector (offset range 0x0B_0000 - 0x0B_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits4-6", + "name": "ACL_SEC_89", + "description": "Access control for flash sector (offset range 0x0B_2000 - 0x0B_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits8-10", + "name": "ACL_SEC_90", + "description": "Access control for flash sector (offset range 0x0B_4000 - 0x0B_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits12-14", + "name": "ACL_SEC_91", + "description": "Access control for flash sector (offset range 0x0B_6000 - 0x0B_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits16-18", + "name": "ACL_SEC_92", + "description": "Access control for flash sector (offset range 0x0B_8000 - 0x0B_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits20-22", + "name": "ACL_SEC_93", + "description": "Access control for flash sector (offset range 0x0B_A000 - 0x0B_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits24-26", + "name": "ACL_SEC_94", + "description": "Access control for flash sector (offset range 0x0B_C000 - 0x0B_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field06C-bits28-30", + "name": "ACL_SEC_95", + "description": "Access control for flash sector (offset range 0x0B_E000 - 0x0B_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field070", + "name": "FLASH_ACL_103_96", + "description": "Access control for flash sector", + "offset_int": "0x0070", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field070-bits0-2", + "name": "ACL_SEC_96", + "description": "Access control for flash sector (offset range 0x0C_0000 - 0x0C_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits4-6", + "name": "ACL_SEC_97", + "description": "Access control for flash sector (offset range 0x0C_2000 - 0x0C_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits8-10", + "name": "ACL_SEC_98", + "description": "Access control for flash sector (offset range 0x0C_4000 - 0x0C_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits12-14", + "name": "ACL_SEC_99", + "description": "Access control for flash sector (offset range 0x0C_6000 - 0x0C_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits16-18", + "name": "ACL_SEC_100", + "description": "Access control for flash sector (offset range 0x0C_8000 - 0x0C_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits20-22", + "name": "ACL_SEC_101", + "description": "Access control for flash sector (offset range 0x0C_A000 - 0x0C_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits24-26", + "name": "ACL_SEC_102", + "description": "Access control for flash sector (offset range 0x0C_C000 - 0x0C_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field070-bits28-30", + "name": "ACL_SEC_103", + "description": "Access control for flash sector (offset range 0x0C_E000 - 0x0C_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field074", + "name": "FLASH_ACL_111_104", + "description": "Access control for flash sector", + "offset_int": "0x0074", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field074-bits0-2", + "name": "ACL_SEC_104", + "description": "Access control for flash sector (offset range 0x0D_0000 - 0x0D_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits4-6", + "name": "ACL_SEC_105", + "description": "Access control for flash sector (offset range 0x0D_2000 - 0x0D_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits8-10", + "name": "ACL_SEC_106", + "description": "Access control for flash sector (offset range 0x0D_4000 - 0x0D_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits12-14", + "name": "ACL_SEC_107", + "description": "Access control for flash sector (offset range 0x0D_6000 - 0x0D_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits16-18", + "name": "ACL_SEC_108", + "description": "Access control for flash sector (offset range 0x0D_8000 - 0x0D_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits20-22", + "name": "ACL_SEC_109", + "description": "Access control for flash sector (offset range 0x0D_A000 - 0x0D_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits24-26", + "name": "ACL_SEC_110", + "description": "Access control for flash sector (offset range 0x0D_C000 - 0x0D_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field074-bits28-30", + "name": "ACL_SEC_111", + "description": "Access control for flash sector (offset range 0x0D_E000 - 0x0D_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field078", + "name": "FLASH_ACL_119_112", + "description": "Access control for flash sector", + "offset_int": "0x0078", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field078-bits0-2", + "name": "ACL_SEC_112", + "description": "Access control for flash sector (offset range 0x0E_0000 - 0x0E_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits4-6", + "name": "ACL_SEC_113", + "description": "Access control for flash sector (offset range 0x0E_2000 - 0x0E_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits8-10", + "name": "ACL_SEC_114", + "description": "Access control for flash sector (offset range 0x0E_4000 - 0x0E_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits12-14", + "name": "ACL_SEC_115", + "description": "Access control for flash sector (offset range 0x0E_6000 - 0x0E_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits16-18", + "name": "ACL_SEC_116", + "description": "Access control for flash sector (offset range 0x0E_8000 - 0x0E_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits20-22", + "name": "ACL_SEC_117", + "description": "Access control for flash sector (offset range 0x0E_A000 - 0x0E_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits24-26", + "name": "ACL_SEC_118", + "description": "Access control for flash sector (offset range 0x0E_C000 - 0x0E_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field078-bits28-30", + "name": "ACL_SEC_119", + "description": "Access control for flash sector (offset range 0x0E_E000 - 0x0E_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field07C", + "name": "FLASH_ACL_127_120", + "description": "Access control for flash sector", + "offset_int": "0x007C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field07C-bits0-2", + "name": "ACL_SEC_120", + "description": "Access control for flash sector (offset range 0x0F_0000 - 0x0F_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits4-6", + "name": "ACL_SEC_121", + "description": "Access control for flash sector (offset range 0x0F_2000 - 0x0F_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits8-10", + "name": "ACL_SEC_122", + "description": "Access control for flash sector (offset range 0x0F_4000 - 0x0F_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits12-14", + "name": "ACL_SEC_123", + "description": "Access control for flash sector (offset range 0x0F_6000 - 0x0F_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits16-18", + "name": "ACL_SEC_124", + "description": "Access control for flash sector (offset range 0x0F_8000 - 0x0F_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits20-22", + "name": "ACL_SEC_125", + "description": "Access control for flash sector (offset range 0x0F_A000 - 0x0F_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits24-26", + "name": "ACL_SEC_126", + "description": "Access control for flash sector (offset range 0x0F_C000 - 0x0F_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field07C-bits28-30", + "name": "ACL_SEC_127", + "description": "Access control for flash sector (offset range 0x0F_E000 - 0x0F_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L)" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL)" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L)" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_)" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_)" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL)" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L)" + } + ] + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field080", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0080", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0084", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0088", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x008C", + "default_value_int": "0" + }, + { + "id": "field090", + "name": "QUICK_SET_GPIO_2", + "description": "Quick Set to Drive GPIO 2 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0090", + "default_value_int": "0" + }, + { + "id": "field094", + "name": "QUICK_CLR_GPIO_2", + "description": "Quick Clear to Drive GPIO 2 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0094", + "default_value_int": "0" + }, + { + "id": "field098", + "name": "QUICK_SET_GPIO_3", + "description": "Quick Set to Drive GPIO 3 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "field09C", + "name": "QUICK_CLR_GPIO_3", + "description": "Quick Clear to Drive GPIO 3 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 3. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x009C", + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "QUICK_SET_GPIO_4", + "description": "Quick Set to Drive GPIO 4 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 4. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x00A0", + "default_value_int": "0" + }, + { + "id": "field0A4", + "name": "QUICK_CLR_GPIO_4", + "description": "Quick Clear to Drive GPIO 4 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 4. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x00A4", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000A8-000AC", + "description": "Reserved 000A8-000AC" + }, + "registers": [ + { + "id": "Reserved000A8", + "name": "Reserved 0x000A8", + "description": "This field is reserved for internal use", + "offset_int": "0x00A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Read Out Protection", + "description": "Read Out Protection (ROP) configuration" + }, + "registers": [ + { + "id": "field0B0", + "name": "ROP_STATE", + "description": "Read Out Protection (ROP) State value. Device does not support secure boot, but it does support four levels of Read Out Protection, referred as ROP_STATE. This read out protection is a mechanism that allows user to enable different levels of protection in the system. ROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. Any other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x00B0", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field0B4", + "name": "SBL_PROT", + "description": "Secondary Boot Loader Protection.", + "offset_int": "0x00B4", + "default_value_int": "0" + }, + { + "id": "field0B8", + "name": "SBL_START_ADDR", + "description": "Secondary Boot Loader Start Address.", + "offset_int": "0x00B8", + "default_value_int": "0" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field0C0", + "name": "ROP_STATE_DP", + "description": "Read Out Protection (ROP) State duplicate value. ROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. Any other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x00C0", + "default_value_int": "0xFFFFFFFF" + }, + { + "id": "field0C4", + "name": "SBL_PROT_DP", + "description": "Secondary Boot Loader Protection (Duplicate).", + "offset_int": "0x00C4", + "default_value_int": "0" + }, + { + "id": "field0C8", + "name": "SBL_START_ADDR_DP", + "description": "Secondary Boot Loader Start Address (Duplicate).", + "offset_int": "0x00C8", + "default_value_int": "0" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Secure Installer", + "description": "Secure installer" + }, + "registers": [ + { + "id": "field0D0", + "name": "ERASE_TOKEN0", + "description": "ERASE_TOKEN[31:0]", + "offset_int": "0x00D0", + "default_value_int": "0" + }, + { + "id": "field0D4", + "name": "ERASE_TOKEN1", + "description": "ERASE_TOKEN[63:32]", + "offset_int": "0x00D4", + "default_value_int": "0" + }, + { + "id": "field0D8", + "name": "ERASE_TOKEN2", + "description": "ERASE_TOKEN[95:64]", + "offset_int": "0x00D8", + "default_value_int": "0" + }, + { + "id": "field0DC", + "name": "ERASE_TOKEN3", + "description": "ERASE_TOKEN[127:96]", + "offset_int": "0x00DC", + "default_value_int": "0" + }, + { + "id": "field0E0", + "name": "DELETE_INSTALLER", + "description": "DELETE_INSTALLER", + "offset_int": "0x00E0", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000E4-000F0", + "description": "Reserved 000E4-000F0" + }, + "registers": [ + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0" + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/bca.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/bca.json new file mode 100644 index 0000000..46c0799 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/bca.json @@ -0,0 +1,309 @@ +{ + "cpu": "mcxc041", + "groups": [ + { + "group": { + "name": "General regs", + "description": "BCA registers generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "name": "TAG", + "description": "Tag: Magic number to verify bootloader configuration is valid. Must be set to 'kcfg' (0x6766636B).", + "offset_int": "0", + "default_value_int": "0x6766636B", + "reg_width": 32, + "access": "RO" + }, + { + "id": "Reserved004", + "name": "Reserved 0x004", + "description": "This field is reserved for internal use", + "offset_int": "0x004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved008", + "name": "Reserved 0x008", + "description": "This field is reserved for internal use", + "offset_int": "0x008", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved00C", + "name": "Reserved 0x00C", + "description": "This field is reserved for internal use", + "offset_int": "0x00C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "field010", + "name": "ENABLED_PERIPHERALS", + "description": "Configuration bitfields of peripherals to enable. Bootloader will enable the peripheral if corresponding bit is set to 1.", + "offset_int": "0x0010", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "LPUART", + "description": "Enable LPUART peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable LPUART peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable LPUART peripheral" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "I2C", + "description": "Enable I2C peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable I2C peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable I2C peripheral" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SPI", + "description": "Enable SPI peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable SPI peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable SPI peripheral" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "I2C_SLAVE_ADDRESS", + "description": "Configuration of I2C slave address", + "offset_int": "0x011", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 8, + "id": "field011-bits0-7", + "name": "i2cSlaveAddress", + "description": "If not 0xFF, used as the 7-bit I2C slave address. If 0xFF, defaults to 0x10 for I2C slave address." + } + ] + }, + { + "id": "field012", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Timeout in milliseconds for active peripheral detection. If 0xFFFF, defaults to 5 seconds.", + "offset_int": "0x012", + "default_value_int": "0xFFFF", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "field012-bits0-15", + "name": "peripheralDetectionTimeout", + "description": "Timeout in milliseconds for active peripheral detection. If 0xFFFF, defaults to 5 seconds." + } + ] + }, + { + "id": "Reserved014", + "name": "Reserved 0x014", + "description": "This field is reserved for internal use", + "offset_int": "0x014", + "is_reserved": true, + "default_value_int": "0xFFFF", + "reg_width": 16 + }, + { + "id": "Reserved016", + "name": "Reserved 0x016", + "description": "This field is reserved for internal use", + "offset_int": "0x016", + "is_reserved": true, + "default_value_int": "0xFFFF", + "reg_width": 16 + }, + { + "id": "Reserved018", + "name": "Reserved 0x018", + "description": "This field is reserved for internal use", + "offset_int": "0x018", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "field01C", + "name": "CLOCK_FLAGS", + "description": "Configuration clockFlags field. The flags in the clockFlags configuration field are enabled if the corresponding bit is cleared (0).", + "offset_int": "0x01C", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field01C-bit0", + "name": "HighSpeed", + "description": "Enable high speed mode (i.e., 48 MHz).", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable high speed." + }, + { + "name": "DISABLE", + "value": 1, + "description": "Disable high speed." + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "field01D", + "name": "CLOCK_DIVIDER", + "description": "Clock divider configuration", + "offset_int": "0x01D", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 8, + "id": "field01D-bits0-7", + "name": "clockDivider", + "description": "Inverted value of the divider to use for core and bus clocks when in high speed mode." + } + ] + }, + { + "id": "Reserved01E", + "name": "Reserved 0x01E", + "description": "This field is reserved for internal use", + "offset_int": "0x01E", + "is_reserved": true, + "default_value_int": "0xFFFF", + "reg_width": 16 + }, + { + "id": "Reserved020", + "name": "Reserved 0x020", + "description": "This field is reserved for internal use", + "offset_int": "0x020", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved024", + "name": "Reserved 0x024", + "description": "This field is reserved for internal use", + "offset_int": "0x024", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved028", + "name": "Reserved 0x028", + "description": "This field is reserved for internal use", + "offset_int": "0x028", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved02C", + "name": "Reserved 0x02C", + "description": "This field is reserved for internal use", + "offset_int": "0x02C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved030", + "name": "Reserved 0x030", + "description": "This field is reserved for internal use", + "offset_int": "0x030", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved034", + "name": "Reserved 0x034", + "description": "This field is reserved for internal use", + "offset_int": "0x034", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved038", + "name": "Reserved 0x038", + "description": "This field is reserved for internal use", + "offset_int": "0x038", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved03C", + "name": "Reserved 0x03C", + "description": "This field is reserved for internal use", + "offset_int": "0x03C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/database.yaml new file mode 100644 index 0000000..32decb8 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/database.yaml @@ -0,0 +1,71 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-c-series-microcontrollers/mcx-c04x-mcus-with-arm-cortex-m0-plus-entry-level-mcus-with-classical-peripherals:MCX-C04x + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x7FFF + external: false + sram-l: + start_int: 0x1FFF_FE00 + size_int: 0x1FF + external: false + sram-u: + start_int: 0x2000_0000 + size_int: 0x5FF + external: false + isp: + rom: + interfaces: ["uart", "spi", "i2c"] + protocol: mboot + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_0000 + size: 0x500 + + # ======== Blhost section ======== + blhost: {} + + # ======== BCA section ======== + bca: + reg_spec: bca.json + + # ======== FCF section ======== + fcf: + reg_spec: fcf.json + reg_spec_modification: + field000: + reverse: True + config_as_hexstring: True + + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinBca + - Mbi_MixinFcf + - Mbi_ExportMixinApp + images: + xip: + plain: plain_xip diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/fcf.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/fcf.json new file mode 100644 index 0000000..ac022c1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc041/fcf.json @@ -0,0 +1,336 @@ +{ + "cpu": "mcxc041", + "groups": [ + { + "group": { + "name": "General regs", + "description": "FCF registers generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "name": "BACKDOOR_KEY", + "offset_int": "0", + "default_value_int": "0xFFFFFFFFFFFFFFFF", + "reg_width": 64, + "description": "Backdoor Comparison Key. Refer to Verify Backdoor Access Key Command and Unsecuring the Chip Using Backdoor Key Access." + }, + { + "id": "field008", + "name": "FPROT", + "description": "Program flash protection bytes. Refer to the description of the Program Flash Protection Registers (FPROT0-3).", + "offset_int": "0x008", + "default_value_int": "0xFFFFFFFF", + "reg_width": 32, + "bitfields": [ + { + "width": 8, + "id": "field008-bits0-7", + "name": "FPROT3", + "description": "Program Flash Protection Registers (FPROT3)" + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "FPROT2", + "description": "Program Flash Protection Registers (FPROT2)" + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "FPROT1", + "description": "Program Flash Protection Registers (FPROT1)" + }, + { + "width": 8, + "id": "field008-bits24-31", + "name": "FPROT0", + "description": "Program Flash Protection Registers (FPROT0)" + } + ] + }, + { + "id": "field00C", + "name": "FSEC", + "description": "Flash security byte. Refer to the description of the Flash Security Register (FSEC).", + "offset_int": "0x00C", + "reg_width": 8, + "bitfields": [ + { + "width": 2, + "id": "field00C-bits0-1", + "name": "SEC", + "description": "Flash Security.", + "values": [ + { + "name": "SECURE_0", + "value": 0, + "description": "MCU security status is secure." + }, + { + "name": "SECURE", + "value": 1, + "description": "MCU security status is secure." + }, + { + "name": "UNSECURE", + "value": 2, + "description": "MCU security status is unsecure. (The standard shipping condition of the flash memory module is unsecure.)" + }, + { + "name": "SECURE_3", + "value": 3, + "description": "MCU security status is secure." + } + ] + }, + { + "width": 2, + "id": "field00C-bits2-3", + "name": "FSLACC", + "description": "Factory Security Level Access Code.", + "values": [ + { + "name": "GRANTED_0", + "value": 0, + "description": "NXP factory access granted" + }, + { + "name": "DENIED_1", + "value": 1, + "description": "NXP factory access denied" + }, + { + "name": "DENIED_2", + "value": 2, + "description": "NXP factory access denied" + }, + { + "name": "GRANTED_3", + "value": 3, + "description": "NXP factory access granted" + } + ] + }, + { + "width": 2, + "id": "field00C-bits4-5", + "name": "MEEN", + "description": "Mass Erase Enable. Enables and disables mass erase capability of the flash memory module.", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Mass erase is enabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Mass erase is enabled" + }, + { + "name": "DISABLED", + "value": 2, + "description": "Mass erase is disabled" + }, + { + "name": "ENABLED_3", + "value": 3, + "description": "Mass erase is enabled" + } + ] + }, + { + "width": 2, + "id": "field00C-bits6-7", + "name": "KEYEN", + "description": "Backdoor Key Security Enable. Enables or disables backdoor key access to the flash memory module.", + "values": [ + { + "name": "DISABLED_0", + "value": 0, + "description": "Backdoor key access disabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Backdoor key access disabled (preferred KEYEN state to disable backdoor key access)" + }, + { + "name": "ENABLED", + "value": 2, + "description": "Backdoor key access enabled" + }, + { + "name": "DISABLED_3", + "value": 3, + "description": "Backdoor key access disabled" + } + ] + } + ], + "default_value_int": "0xfe" + }, + { + "id": "field00D", + "name": "FOPT", + "description": "Flash nonvolatile option byte. Refer to the description of the Flash Option Register (FOPT).", + "offset_int": "0x00D", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field00D-bit0", + "name": "LPBOOT[0]", + "description": "Configure Core and system clock divider (OUTDIV1) value on exit from reset. Together with LPBOOT[1], controls the reset value of OUTDIV1 value in SIM_CLKDIV1 register, and the state of the RUNM register in SMC_PMCTRL. \nLarger divide value selections produce lower average power consumption during POR, VLLSx recoveries and reset sequencing and after reset exit. The recovery times are also extended if the FAST_INIT option is not selected.", + "values": [ + { + "name": "DIV_BY_8_OR_2", + "value": 0, + "description": "VLPR mode: Core and system clock divider (OUTDIV1) is 0x7 (divide by 8).\nRUN mode: Core and system clock divider (OUTDIV1) is 0x1 (divide by 2)." + }, + { + "name": "DIV_BY_4_OR_1", + "value": 1, + "description": "VLPR mode: Core and system clock divider (OUTDIV1) is 0x3 (divide by 4).\nRUN mode: Core and system clock divider (OUTDIV1) is 0x0 (divide by 1)." + } + ] + }, + { + "width": 1, + "id": "field00D-bit1", + "name": "BOOTPIN_OPT", + "description": "External pin selects boot options.", + "values": [ + { + "name": "FORCE_FROM_ROM", + "value": 0, + "description": "Force Boot from ROM if BOOTCFG0 asserted, where BOOTCFG0 is the boot config function which is muxed with NMI pin. RESET pin must be enabled (FOPT[RESET_PIN_CFG] = 1) when this option is selected. NMI pin is sampled at the end of reset (when reset pin negates). If BOOTCFG0 pin is not asserted, Boot source configured by FOPT[7:6] (BOOTSRC_SEL) bits." + }, + { + "name": "BOOTSRC_SEL", + "value": 1, + "description": "Boot source configured by FOPT[7:6] (BOOTSRC_SEL) bits." + } + ] + }, + { + "width": 1, + "id": "field00D-bit2", + "name": "NMI_DIS", + "description": "Enables/disables control for the NMI function.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "NMI interrupts are always blocked. The associated pin continues to default to NMI pin controls with internal pullup enabled. When NMI pin function is disabled, it cannot be used as a source for low-power mode wake-up." + }, + { + "name": "ENABLE", + "value": 1, + "description": "NMI_b pin/interrupts reset default to enabled." + } + ] + }, + { + "width": 1, + "id": "field00D-bit3", + "name": "RESET_PIN_CFG", + "description": "Enables/disables control for the RESET pin.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "RESET pin is disabled following a POR and cannot be enabled as reset function." + }, + { + "name": "ENABLE", + "value": 1, + "description": "RESET_b pin is dedicated. The port is configured with pullup enabled, open drain, passive filter enabled." + } + ] + }, + { + "width": 1, + "id": "field00D-bit4", + "name": "LPBOOT[1]", + "description": "Configure device for VLPR or RUN mode on exit from reset. Together with LPBOOT[0], controls the reset value of OUTDIV1 value in SIM_CLKDIV1 register, and the state of the RUNM register in SMC_PMCTRL.", + "values": [ + { + "name": "VLPR_MODE", + "value": 0, + "description": "Device is configured for VLPR mode on exit from reset." + }, + { + "name": "RUN_MODE", + "value": 1, + "description": "Device is configured for RUN mode on exit from reset." + } + ] + }, + { + "width": 1, + "id": "field00D-bit5", + "name": "FAST_INIT", + "description": "Selects initialization speed on POR, VLLSx, and any system reset.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Slower initialization: The flash initialization will be slower with the benefit of reduced average current during this time. The duration of the recovery will be controlled by the clock divider selection determined by the LPBOOT setting." + }, + { + "name": "ENABLE", + "value": 1, + "description": "Fast Initialization: The flash has faster recoveries at the expense of higher current during these times." + } + ] + }, + { + "width": 2, + "id": "field00D-bits6-7", + "name": "BOOTSRC_SEL", + "description": "Boot Source Selection: these bits select the boot sources if boot pin option bit BOOTPIN_OPT = 1", + "values": [ + { + "name": "FLASH", + "value": 0, + "description": "Boot from Flash" + }, + { + "name": "ROM_2", + "value": 2, + "description": "Boot from ROM" + }, + { + "name": "ROM", + "value": 3, + "description": "Boot from ROM" + } + ] + } + ] + }, + { + "id": "Reserved00E", + "name": "Reserved 0x00E", + "description": "This field is reserved for internal use", + "offset_int": "0x00E", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "Reserved00F", + "name": "Reserved 0x00F", + "description": "This field is reserved for internal use", + "offset_int": "0x00F", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/bca.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/bca.json new file mode 100644 index 0000000..7ac299b --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/bca.json @@ -0,0 +1,327 @@ +{ + "cpu": "mcxc141", + "groups": [ + { + "group": { + "name": "General regs", + "description": "BCA registers generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "name": "TAG", + "description": "Tag: Magic number to verify bootloader configuration is valid. Must be set to 'kcfg' (0x6766636B).", + "offset_int": "0", + "default_value_int": "0x6766636B", + "reg_width": 32, + "access": "RO" + }, + { + "id": "Reserved004", + "name": "Reserved 0x004", + "description": "This field is reserved for internal use", + "offset_int": "0x004", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved008", + "name": "Reserved 0x008", + "description": "This field is reserved for internal use", + "offset_int": "0x008", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved00C", + "name": "Reserved 0x00C", + "description": "This field is reserved for internal use", + "offset_int": "0x00C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "field010", + "name": "ENABLED_PERIPHERALS", + "description": "Configuration bitfields of peripherals to enable. Bootloader will enable the peripheral if corresponding bit is set to 1.", + "offset_int": "0x0010", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "LPUART", + "description": "Enable LPUART peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable LPUART peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable LPUART peripheral" + } + ] + }, + { + "width": 1, + "id": "field010-bit1", + "name": "I2C", + "description": "Enable I2C peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable I2C peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable I2C peripheral" + } + ] + }, + { + "width": 1, + "id": "field010-bit2", + "name": "SPI", + "description": "Enable SPI peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable SPI peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable SPI peripheral" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field010-bit4", + "name": "USB", + "description": "Enable USB peripheral", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable USB peripheral" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable USB peripheral" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "field011", + "name": "I2C_SLAVE_ADDRESS", + "description": "Configuration of I2C slave address", + "offset_int": "0x011", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 8, + "id": "field011-bits0-7", + "name": "i2cSlaveAddress", + "description": "If not 0xFF, used as the 7-bit I2C slave address. If 0xFF, defaults to 0x10 for I2C slave address." + } + ] + }, + { + "id": "field012", + "name": "PERIPHERAL_DETECTION_TIMEOUT", + "description": "Timeout in milliseconds for active peripheral detection. If 0xFFFF, defaults to 5 seconds.", + "offset_int": "0x012", + "default_value_int": "0xFFFF", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "field012-bits0-15", + "name": "peripheralDetectionTimeout", + "description": "Timeout in milliseconds for active peripheral detection. If 0xFFFF, defaults to 5 seconds." + } + ] + }, + { + "id": "field014", + "name": "USB", + "description": "Configuration of USB Vendor ID and Product ID", + "offset_int": "0x014", + "default_value_int": "0xFFFFFFFF", + "reg_width": 32, + "bitfields": [ + { + "width": 16, + "id": "field014-bits0-15", + "name": "usbVid", + "description": "Sets the USB Vendor ID reported by the device during enumeration. If 0xFFFF, it defaults to 0x15A2." + }, + { + "width": 16, + "id": "field014-bits16-31", + "name": "usbPid", + "description": "Sets the USB Product ID reported by the device during enumeration." + } + ] + }, + { + "id": "field018", + "name": "USB_STRINGS_POINTER", + "description": "Sets the USB Strings reported by the device during enumeration. Default string values are described in the USB peripheral section.", + "offset_int": "0x018", + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "field01C", + "name": "CLOCK_FLAGS", + "description": "Configuration clockFlags field. The flags in the clockFlags configuration field are enabled if the corresponding bit is cleared (0).", + "offset_int": "0x01C", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field01C-bit0", + "name": "HighSpeed", + "description": "Enable high speed mode (i.e., 48 MHz).", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable high speed." + }, + { + "name": "DISABLE", + "value": 1, + "description": "Disable high speed." + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "field01D", + "name": "CLOCK_DIVIDER", + "description": "Clock divider configuration", + "offset_int": "0x01D", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 8, + "id": "field01D-bits0-7", + "name": "clockDivider", + "description": "Inverted value of the divider to use for core and bus clocks when in high speed mode." + } + ] + }, + { + "id": "Reserved01E", + "name": "Reserved 0x01E", + "description": "This field is reserved for internal use", + "offset_int": "0x01E", + "is_reserved": true, + "default_value_int": "0xFFFF", + "reg_width": 16 + }, + { + "id": "Reserved020", + "name": "Reserved 0x020", + "description": "This field is reserved for internal use", + "offset_int": "0x020", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved024", + "name": "Reserved 0x024", + "description": "This field is reserved for internal use", + "offset_int": "0x024", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved028", + "name": "Reserved 0x028", + "description": "This field is reserved for internal use", + "offset_int": "0x028", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved02C", + "name": "Reserved 0x02C", + "description": "This field is reserved for internal use", + "offset_int": "0x02C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved030", + "name": "Reserved 0x030", + "description": "This field is reserved for internal use", + "offset_int": "0x030", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved034", + "name": "Reserved 0x034", + "description": "This field is reserved for internal use", + "offset_int": "0x034", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved038", + "name": "Reserved 0x038", + "description": "This field is reserved for internal use", + "offset_int": "0x038", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + }, + { + "id": "Reserved03C", + "name": "Reserved 0x03C", + "description": "This field is reserved for internal use", + "offset_int": "0x03C", + "is_reserved": true, + "default_value_int": "0xFFFFFFFF", + "reg_width": 32 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/database.yaml new file mode 100644 index 0000000..f8d79f3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/database.yaml @@ -0,0 +1,69 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-c-series-microcontrollers/mcx-c14x-24x-44x-mcus-with-arm-cortex-m0-plus-entry-level-mcus-with-usb-segment-lcd-and-classical-peripherals:MCX-C14x-24x-44x + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x7FFF + external: false + sram-l: + start_int: 0x1FFF_F800 + size_int: 0x7FF + external: false + sram-u: + start_int: 0x2000_0000 + size_int: 0x17FF + external: false + isp: + rom: + interfaces: ["uart", "usb", "spi", "i2c"] + protocol: mboot + usb: + - vid: 0x15a2 + pid: 0x0073 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_0000 + + # ======== BCA section ======== + bca: + reg_spec: bca.json + + # ======== FCF section ======== + fcf: + reg_spec: fcf.json + reg_spec_modification: + field000: + reverse: True + config_as_hexstring: True + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinBca + - Mbi_MixinFcf + - Mbi_ExportMixinApp + images: + xip: + plain: plain_xip diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/fcf.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/fcf.json new file mode 100644 index 0000000..3ac6cbf --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc141/fcf.json @@ -0,0 +1,336 @@ +{ + "cpu": "mcxc141", + "groups": [ + { + "group": { + "name": "General regs", + "description": "FCF registers generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "name": "BACKDOOR_KEY", + "offset_int": "0", + "default_value_int": "0xFFFFFFFFFFFFFFFF", + "reg_width": 64, + "description": "Backdoor Comparison Key. Refer to Verify Backdoor Access Key Command and Unsecuring the Chip Using Backdoor Key Access." + }, + { + "id": "field008", + "name": "FPROT", + "description": "Program flash protection bytes. Refer to the description of the Program Flash Protection Registers (FPROT0-3).", + "offset_int": "0x008", + "default_value_int": "0xFFFFFFFF", + "reg_width": 32, + "bitfields": [ + { + "width": 8, + "id": "field008-bits0-7", + "name": "FPROT3", + "description": "Program Flash Protection Registers (FPROT3)" + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "FPROT2", + "description": "Program Flash Protection Registers (FPROT2)" + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "FPROT1", + "description": "Program Flash Protection Registers (FPROT1)" + }, + { + "width": 8, + "id": "field008-bits24-31", + "name": "FPROT0", + "description": "Program Flash Protection Registers (FPROT0)" + } + ] + }, + { + "id": "field00C", + "name": "FSEC", + "description": "Flash security byte. Refer to the description of the Flash Security Register (FSEC).", + "offset_int": "0x00C", + "reg_width": 8, + "bitfields": [ + { + "width": 2, + "id": "field00C-bits0-1", + "name": "SEC", + "description": "Flash Security.", + "values": [ + { + "name": "SECURE_0", + "value": 0, + "description": "MCU security status is secure." + }, + { + "name": "SECURE", + "value": 1, + "description": "MCU security status is secure." + }, + { + "name": "UNSECURE", + "value": 2, + "description": "MCU security status is unsecure. (The standard shipping condition of the flash memory module is unsecure.)" + }, + { + "name": "SECURE_3", + "value": 3, + "description": "MCU security status is secure." + } + ] + }, + { + "width": 2, + "id": "field00C-bits2-3", + "name": "FSLACC", + "description": "Factory Security Level Access Code.", + "values": [ + { + "name": "GRANTED_0", + "value": 0, + "description": "NXP factory access granted" + }, + { + "name": "DENIED_1", + "value": 1, + "description": "NXP factory access denied" + }, + { + "name": "DENIED_2", + "value": 2, + "description": "NXP factory access denied" + }, + { + "name": "GRANTED_3", + "value": 3, + "description": "NXP factory access granted" + } + ] + }, + { + "width": 2, + "id": "field00C-bits4-5", + "name": "MEEN", + "description": "Mass Erase Enable. Enables and disables mass erase capability of the flash memory module.", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Mass erase is enabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Mass erase is enabled" + }, + { + "name": "DISABLED", + "value": 2, + "description": "Mass erase is disabled" + }, + { + "name": "ENABLED_3", + "value": 3, + "description": "Mass erase is enabled" + } + ] + }, + { + "width": 2, + "id": "field00C-bits6-7", + "name": "KEYEN", + "description": "Backdoor Key Security Enable. Enables or disables backdoor key access to the flash memory module.", + "values": [ + { + "name": "DISABLED_0", + "value": 0, + "description": "Backdoor key access disabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Backdoor key access disabled (preferred KEYEN state to disable backdoor key access)" + }, + { + "name": "ENABLED", + "value": 2, + "description": "Backdoor key access enabled" + }, + { + "name": "DISABLED_3", + "value": 3, + "description": "Backdoor key access disabled" + } + ] + } + ], + "default_value_int": "0xfe" + }, + { + "id": "field00D", + "name": "FOPT", + "description": "Flash nonvolatile option byte. Refer to the description of the Flash Option Register (FOPT).", + "offset_int": "0x00D", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field00D-bit0", + "name": "LPBOOT[0]", + "description": "Configure Core and system clock divider (OUTDIV1) value on exit from reset. Together with LPBOOT[1], controls the reset value of OUTDIV1 value in SIM_CLKDIV1 register, and the state of the RUNM register in SMC_PMCTRL. \nLarger divide value selections produce lower average power consumption during POR, VLLSx recoveries and reset sequencing and after reset exit. The recovery times are also extended if the FAST_INIT option is not selected.", + "values": [ + { + "name": "DIV_BY_8_OR_2", + "value": 0, + "description": "VLPR mode: Core and system clock divider (OUTDIV1) is 0x7 (divide by 8).\nRUN mode: Core and system clock divider (OUTDIV1) is 0x1 (divide by 2)." + }, + { + "name": "DIV_BY_4_OR_1", + "value": 1, + "description": "VLPR mode: Core and system clock divider (OUTDIV1) is 0x3 (divide by 4).\nRUN mode: Core and system clock divider (OUTDIV1) is 0x0 (divide by 1)." + } + ] + }, + { + "width": 1, + "id": "field00D-bit1", + "name": "BOOTPIN_OPT", + "description": "External pin selects boot options.", + "values": [ + { + "name": "FORCE_FROM_ROM", + "value": 0, + "description": "Force Boot from ROM if BOOTCFG0 asserted, where BOOTCFG0 is the boot config function which is muxed with NMI pin. RESET pin must be enabled (FOPT[RESET_PIN_CFG] = 1) when this option is selected. NMI pin is sampled at the end of reset (when reset pin negates). If BOOTCFG0 pin is not asserted, Boot source configured by FOPT[7:6] (BOOTSRC_SEL) bits." + }, + { + "name": "BOOTSRC_SEL", + "value": 1, + "description": "Boot source configured by FOPT[7:6] (BOOTSRC_SEL) bits." + } + ] + }, + { + "width": 1, + "id": "field00D-bit2", + "name": "NMI_DIS", + "description": "Enables/disables control for the NMI function.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "NMI interrupts are always blocked. The associated pin continues to default to NMI pin controls with internal pullup enabled. When NMI pin function is disabled, it cannot be used as a source for low-power mode wake-up." + }, + { + "name": "ENABLE", + "value": 1, + "description": "NMI_b pin/interrupts reset default to enabled." + } + ] + }, + { + "width": 1, + "id": "field00D-bit3", + "name": "RESET_PIN_CFG", + "description": "Enables/disables control for the RESET pin.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "RESET pin is disabled following a POR and cannot be enabled as reset function." + }, + { + "name": "ENABLE", + "value": 1, + "description": "RESET_b pin is dedicated. The port is configured with pullup enabled, open drain, passive filter enabled." + } + ] + }, + { + "width": 1, + "id": "field00D-bit4", + "name": "LPBOOT[1]", + "description": "Configure device for VLPR or RUN mode on exit from reset. Together with LPBOOT[0], controls the reset value of OUTDIV1 value in SIM_CLKDIV1 register, and the state of the RUNM register in SMC_PMCTRL.", + "values": [ + { + "name": "VLPR_MODE", + "value": 0, + "description": "Device is configured for VLPR mode on exit from reset." + }, + { + "name": "RUN_MODE", + "value": 1, + "description": "Device is configured for RUN mode on exit from reset." + } + ] + }, + { + "width": 1, + "id": "field00D-bit5", + "name": "FAST_INIT", + "description": "Selects initialization speed on POR, VLLSx, and any system reset.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Slower initialization: The flash initialization will be slower with the benefit of reduced average current during this time. The duration of the recovery will be controlled by the clock divider selection determined by the LPBOOT setting." + }, + { + "name": "ENABLE", + "value": 1, + "description": "Fast Initialization: The flash has faster recoveries at the expense of higher current during these times." + } + ] + }, + { + "width": 2, + "id": "field00D-bits6-7", + "name": "BOOTSRC_SEL", + "description": "Boot Source Selection: these bits select the boot sources if boot pin option bit BOOTPIN_OPT = 1", + "values": [ + { + "name": "FLASH", + "value": 0, + "description": "Boot from Flash" + }, + { + "name": "ROM_2", + "value": 2, + "description": "Boot from ROM" + }, + { + "name": "ROM", + "value": 3, + "description": "Boot from ROM" + } + ] + } + ] + }, + { + "id": "Reserved00E", + "name": "Reserved 0x00E", + "description": "This field is reserved for internal use", + "offset_int": "0x00E", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + }, + { + "id": "Reserved00F", + "name": "Reserved 0x00F", + "description": "This field is reserved for internal use", + "offset_int": "0x00F", + "is_reserved": true, + "default_value_int": "0xFF", + "reg_width": 8 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc142/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc142/database.yaml new file mode 100644 index 0000000..55eecc6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc142/database.yaml @@ -0,0 +1,21 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxc141 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0xFFFF + external: false + sram-l: + start_int: 0x1FFF_F000 + size_int: 0xFFF + external: false + sram-u: + start_int: 0x2000_0000 + size_int: 0x2FFF + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc143/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc143/database.yaml new file mode 100644 index 0000000..e36b17f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc143/database.yaml @@ -0,0 +1,25 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxc141 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash0: + start_int: 0x0 + size_int: 0xFFFF + external: false + internal-flash1: + start_int: 0x1_0000 + size_int: 0xFFFF + external: false + sram-l: + start_int: 0x1FFF_F000 + size_int: 0xFFF + external: false + sram-u: + start_int: 0x2000_0000 + size_int: 0x2FFF + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc144/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc144/database.yaml new file mode 100644 index 0000000..64f7e0f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc144/database.yaml @@ -0,0 +1,25 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxc141 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash0: + start_int: 0x0 + size_int: 0x1_FFFF + external: false + internal-flash1: + start_int: 0x2_0000 + size_int: 0x1_FFFF + external: false + sram-l: + start_int: 0x1FFF_E000 + size_int: 0x1FFF + external: false + sram-u: + start_int: 0x2000_0000 + size_int: 0x5FFF + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc242/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc242/database.yaml new file mode 100644 index 0000000..55eecc6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc242/database.yaml @@ -0,0 +1,21 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxc141 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0xFFFF + external: false + sram-l: + start_int: 0x1FFF_F000 + size_int: 0xFFF + external: false + sram-u: + start_int: 0x2000_0000 + size_int: 0x2FFF + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc243/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc243/database.yaml new file mode 100644 index 0000000..152bc43 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc243/database.yaml @@ -0,0 +1,25 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxc242 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash0: + start_int: 0x0 + size_int: 0xFFFF + external: false + internal-flash1: + start_int: 0x1_0000 + size_int: 0xFFFF + external: false + sram-l: + start_int: 0x1FFF_F000 + size_int: 0xFFF + external: false + sram-u: + start_int: 0x2000_0000 + size_int: 0x2FFF + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc244/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc244/database.yaml new file mode 100644 index 0000000..199f233 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc244/database.yaml @@ -0,0 +1,25 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxc242 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash0: + start_int: 0x0 + size_int: 0x1_FFFF + external: false + internal-flash1: + start_int: 0x2_0000 + size_int: 0x1_FFFF + external: false + sram-l: + start_int: 0x1FFF_E000 + size_int: 0x1FFF + external: false + sram-u: + start_int: 0x2000_0000 + size_int: 0x5FFF + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc443/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc443/database.yaml new file mode 100644 index 0000000..152bc43 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc443/database.yaml @@ -0,0 +1,25 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxc242 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash0: + start_int: 0x0 + size_int: 0xFFFF + external: false + internal-flash1: + start_int: 0x1_0000 + size_int: 0xFFFF + external: false + sram-l: + start_int: 0x1FFF_F000 + size_int: 0xFFF + external: false + sram-u: + start_int: 0x2000_0000 + size_int: 0x2FFF + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc444/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc444/database.yaml new file mode 100644 index 0000000..bffb9b2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxc444/database.yaml @@ -0,0 +1,25 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxc443 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash0: + start_int: 0x0 + size_int: 0x1_FFFF + external: false + internal-flash1: + start_int: 0x2_0000 + size_int: 0x1_FFFF + external: false + sram-l: + start_int: 0x1FFF_E000 + size_int: 0x1FFF + external: false + sram-u: + start_int: 0x2000_0000 + size_int: 0x5FFF + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe245/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe245/database.yaml new file mode 100644 index 0000000..60bb80e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe245/database.yaml @@ -0,0 +1,62 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + +latest: a0 + +# General MCU information +info: + use_in_doc: True + purpose: MCX Series + spsdk_predecessor_name: mcxe24x + web: https://www.nxp.com/products/MCX-E24 + memory_map: + internal-flash_ns: + start_int: "0x0" + size_int: "0x40000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x20000" + external: false + non_xip_type: int_ram + isp: + flashloader: + protocol: mboot + interfaces: ["uart", "spi"] + +features: + # ======== Blhost section ======== + blhost: {} + + comm_buffer: + address: 0x2000_0000 + size: 0x1000 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinFcf + - Mbi_ExportMixinApp + images: + xip: + plain: plain_xip + + # ======== FCF section ======== + fcf: + reg_spec: fcf.json + reg_spec_modification: + field000: + reverse: True + config_as_hexstring: True + + she_scec: { + flash_size_cfg_enabled : False + } diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe245/fcf.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe245/fcf.json new file mode 100644 index 0000000..91a902f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe245/fcf.json @@ -0,0 +1,562 @@ +{ + "cpu": "mcxc141", + "groups": [ + { + "group": { + "name": "General regs", + "description": "FCF registers generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "name": "BACKDOOR_KEY", + "offset_int": "0", + "default_value_int": "0xFFFFFFFFFFFFFFFF", + "reg_width": 64, + "description": "Backdoor Comparison Key. Refer to Verify Backdoor Access Key Command and Unsecuring the Chip Using Backdoor Key Access." + }, + { + "id": "field008", + "name": "FPROT", + "description": "Program flash protection bytes. Refer to the description of the Program Flash Protection Registers (FPROT0-3).", + "offset_int": "0x008", + "default_value_int": "0xFFFFFFFF", + "reg_width": 32, + "bitfields": [ + { + "width": 8, + "id": "field008-bits0-7", + "name": "FPROT3", + "description": "Program Flash Protection Registers (FPROT3)" + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "FPROT2", + "description": "Program Flash Protection Registers (FPROT2)" + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "FPROT1", + "description": "Program Flash Protection Registers (FPROT1)" + }, + { + "width": 8, + "id": "field008-bits24-31", + "name": "FPROT0", + "description": "Program Flash Protection Registers (FPROT0)" + } + ] + }, + { + "id": "field00C", + "name": "FSEC", + "description": "Flash security byte. Refer to the description of the Flash Security Register (FSEC).", + "offset_int": "0x00C", + "reg_width": 8, + "bitfields": [ + { + "width": 2, + "id": "field00C-bits0-1", + "name": "SEC", + "description": "Flash Security.", + "values": [ + { + "name": "SECURE_0", + "value": 0, + "description": "MCU security status is secure." + }, + { + "name": "SECURE", + "value": 1, + "description": "MCU security status is secure." + }, + { + "name": "UNSECURE", + "value": 2, + "description": "MCU security status is unsecure. (The standard shipping condition of the flash memory module is unsecure.)" + }, + { + "name": "SECURE_3", + "value": 3, + "description": "MCU security status is secure." + } + ] + }, + { + "width": 2, + "id": "field00C-bits2-3", + "name": "FSLACC", + "description": "Factory Security Level Access Code.", + "values": [ + { + "name": "GRANTED_0", + "value": 0, + "description": "NXP factory access granted" + }, + { + "name": "DENIED_1", + "value": 1, + "description": "NXP factory access denied" + }, + { + "name": "DENIED_2", + "value": 2, + "description": "NXP factory access denied" + }, + { + "name": "GRANTED_3", + "value": 3, + "description": "NXP factory access granted" + } + ] + }, + { + "width": 2, + "id": "field00C-bits4-5", + "name": "MEEN", + "description": "Mass Erase Enable. Enables and disables mass erase capability of the flash memory module.", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Mass erase is enabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Mass erase is enabled" + }, + { + "name": "DISABLED", + "value": 2, + "description": "Mass erase is disabled" + }, + { + "name": "ENABLED_3", + "value": 3, + "description": "Mass erase is enabled" + } + ] + }, + { + "width": 2, + "id": "field00C-bits6-7", + "name": "KEYEN", + "description": "Backdoor Key Security Enable. Enables or disables backdoor key access to the flash memory module.", + "values": [ + { + "name": "DISABLED_0", + "value": 0, + "description": "Backdoor key access disabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Backdoor key access disabled (preferred KEYEN state to disable backdoor key access)" + }, + { + "name": "ENABLED", + "value": 2, + "description": "Backdoor key access enabled" + }, + { + "name": "DISABLED_3", + "value": 3, + "description": "Backdoor key access disabled" + } + ] + } + ], + "default_value_int": "0xfe" + }, + { + "id": "field00D", + "name": "FOPT", + "description": "Flash nonvolatile option byte. Refer to the description of the Flash Option Register (FOPT).", + "offset_int": "0x00D", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field00D-bit0", + "name": "LPBOOT", + "description": "Controls the reset value of clock divider of IRC 48 Mhz to feed the Core and platform clocks. Larger divide value selections produce lower average power consumption during POR and reset sequencing and after reset exit.", + "values": [ + { + "name": "DIV_BY_2", + "value": 0, + "description": "Core and system clock divider (OUTDIV1) is 0x1 (divide by 2)." + }, + { + "name": "DIV_BY_1", + "value": 1, + "description": "Core and system clock divider (OUTDIV1) is 0x0 (divide by 1)." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field00D-bit2", + "name": "NMI_PIN_CFG", + "description": "Enables/disables control for the NMI function.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "NMI interrupts are always blocked. The associated pin continues to default to NMI_b pin controls with internal pullup enabled. When NMI_b pin function is disabled, it cannot be used as a source for low-power mode wake-up. If the NMI function is not required, either for an interrupt or wake up source, it is recommended that the NMI function be disabled by writing 0 to NMI_PIN_CFG." + }, + { + "name": "ENABLE", + "value": 1, + "description": "NMI_b pin/interrupts reset default to enabled." + } + ] + }, + { + "width": 1, + "id": "field00D-bit3", + "name": "RESET_PIN_CFG", + "description": "Enables/disables control for the RESET pin.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "RESET_B pin is disabled following a POR and cannot be enabled as reset function. When this option is selected, there could be a short period of contention during a POR ramp where the MCU drives the pin low prior to establishing the setting of this option and releasing the reset function on the pin. This bit is preserved through system resets and low-power modes. When RESET_B pin function is disabled, it cannot be used as a source for low-power mode wake-up." + }, + { + "name": "ENABLE", + "value": 1, + "description": "The port is configured with pullup enabled, passive filter enabled." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + } + ] + }, + { + "id": "field00E", + "name": "FEPROT", + "description": "EEPROM Region Protect. Individual emulated EEPROM regions can be protected from alteration by setting the associated EPROT bit to the protected state. The EPROT bits are not used when the FlexNVM Partition Code is set to data flash only. When the FlexNVM Partition Code is set to data flash and EEPROM or EEPROM only, each EPROT bit covers one-eighth of the configured EEPROM data. In NVM Normal mode: The protection can only be increased, meaning currently-unprotected memory can be protected, but currently-protected memory cannot be unprotected. Unprotected regions are marked with a 1 and protected regions use a 0. Trying to alter data by writing to any protected area in the emulated EEPROM results in a protection violation error and sets the FSTAT[FPVIOL] bit.", + "offset_int": "0x00E", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field00E-bit0", + "name": "EPROT0", + "description": "EEPROM Region Protect Bit 0 - Controls protection for 1/8th of the EEPROM data (first region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "EEPROM region 0 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "EEPROM region 0 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00E-bit1", + "name": "EPROT1", + "description": "EEPROM Region Protect Bit 1 - Controls protection for 1/8th of the EEPROM data (second region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "EEPROM region 1 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "EEPROM region 1 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00E-bit2", + "name": "EPROT2", + "description": "EEPROM Region Protect Bit 2 - Controls protection for 1/8th of the EEPROM data (third region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "EEPROM region 2 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "EEPROM region 2 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00E-bit3", + "name": "EPROT3", + "description": "EEPROM Region Protect Bit 3 - Controls protection for 1/8th of the EEPROM data (fourth region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "EEPROM region 3 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "EEPROM region 3 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00E-bit4", + "name": "EPROT4", + "description": "EEPROM Region Protect Bit 4 - Controls protection for 1/8th of the EEPROM data (fifth region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "EEPROM region 4 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "EEPROM region 4 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00E-bit5", + "name": "EPROT5", + "description": "EEPROM Region Protect Bit 5 - Controls protection for 1/8th of the EEPROM data (sixth region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "EEPROM region 5 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "EEPROM region 5 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00E-bit6", + "name": "EPROT6", + "description": "EEPROM Region Protect Bit 6 - Controls protection for 1/8th of the EEPROM data (seventh region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "EEPROM region 6 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "EEPROM region 6 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00E-bit7", + "name": "EPROT7", + "description": "EEPROM Region Protect Bit 7 - Controls protection for 1/8th of the EEPROM data (eighth region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "EEPROM region 7 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "EEPROM region 7 is not protected" + } + ] + } + ] + + }, + { + "id": "field00F", + "name": "FDPROT", + "description": "Data Flash Region Protect. Individual data flash regions can be protected from program and erase operations by setting the associated DPROT bit to the protected state. Each DPROT bit protects one-eighth of the partitioned data flash memory space. The granularity of data flash protection cannot be less than the data flash sector size. If an unused DPROT bit is set to the protected state, the Erase all Blocks command does not execute and sets the FSTAT[FPVIOL] bit. Unprotected regions are marked with a 1 and protected regions use a 0. Trying to alter data in any protected area in the data flash memory results in a protection violation error and sets the FSTAT[FPVIOL] bit.", + "offset_int": "0x00F", + "default_value_int": "0xFF", + "reg_width": 8, + "bitfields": [ + { + "width": 1, + "id": "field00F-bit0", + "name": "DPROT0", + "description": "Data Flash Region Protect Bit 0 - Controls protection for 1/8th of the data flash (first region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "Data Flash region 0 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "Data Flash region 0 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00F-bit1", + "name": "DPROT1", + "description": "Data Flash Region Protect Bit 1 - Controls protection for 1/8th of the data flash (second region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "Data Flash region 1 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "Data Flash region 1 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00F-bit2", + "name": "DPROT2", + "description": "Data Flash Region Protect Bit 2 - Controls protection for 1/8th of the data flash (third region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "Data Flash region 2 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "Data Flash region 2 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00F-bit3", + "name": "DPROT3", + "description": "Data Flash Region Protect Bit 3 - Controls protection for 1/8th of the data flash (fourth region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "Data Flash region 3 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "Data Flash region 3 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00F-bit4", + "name": "DPROT4", + "description": "Data Flash Region Protect Bit 4 - Controls protection for 1/8th of the data flash (fifth region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "Data Flash region 4 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "Data Flash region 4 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00F-bit5", + "name": "DPROT5", + "description": "Data Flash Region Protect Bit 5 - Controls protection for 1/8th of the data flash (sixth region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "Data Flash region 5 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "Data Flash region 5 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00F-bit6", + "name": "DPROT6", + "description": "Data Flash Region Protect Bit 6 - Controls protection for 1/8th of the data flash (seventh region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "Data Flash region 6 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "Data Flash region 6 is not protected" + } + ] + }, + { + "width": 1, + "id": "field00F-bit7", + "name": "DPROT7", + "description": "Data Flash Region Protect Bit 7 - Controls protection for 1/8th of the data flash (eighth region)", + "values": [ + { + "name": "PROTECTED", + "value": 0, + "description": "Data Flash region 7 is protected" + }, + { + "name": "UNPROTECTED", + "value": 1, + "description": "Data Flash region 7 is not protected" + } + ] + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe246/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe246/database.yaml new file mode 100644 index 0000000..f77d6e6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe246/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxe245 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe247/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe247/database.yaml new file mode 100644 index 0000000..f77d6e6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe247/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxe245 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe315/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe315/database.yaml new file mode 100644 index 0000000..4c97675 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe315/database.yaml @@ -0,0 +1,21 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxe31b + +info: + memory_map: + internal-flash0: + start_int: "0x40_0000" + size_int: "0x8_0000" + external: false + internal-flash1: + start_int: "0x1000_0000" + size_int: "0x1_0000" + external: false + sram0: + start_int: "0x2040_0000" + size_int: "0x4000" + external: false + non_xip_type: int_ram diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe316/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe316/database.yaml new file mode 100644 index 0000000..023dba5 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe316/database.yaml @@ -0,0 +1,26 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxe31b + +info: + memory_map: + internal-flash0: + start_int: "0x40_0000" + size_int: "0x8_0000" + external: false + internal-flash1: + start_int: "0x48_0000" + size_int: "0x8_0000" + external: false + internal-flash2: + start_int: "0x1000_0000" + size_int: "0x1_0000" + external: false + sram0: + start_int: "0x2040_0000" + size_int: "0x8000" + external: false + non_xip_type: int_ram + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe317/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe317/database.yaml new file mode 100644 index 0000000..5a62c0d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe317/database.yaml @@ -0,0 +1,25 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxe31b + +info: + memory_map: + internal-flash0: + start_int: "0x40_0000" + size_int: "0x10_0000" + external: false + internal-flash1: + start_int: "0x50_0000" + size_int: "0x10_0000" + external: false + internal-flash2: + start_int: "0x1000_0000" + size_int: "0x2_0000" + external: false + sram0: + start_int: "0x2040_0000" + size_int: "0x1_8000" + external: false + non_xip_type: int_ram diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe31b/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe31b/database.yaml new file mode 100644 index 0000000..179f9d6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxe31b/database.yaml @@ -0,0 +1,92 @@ +# Copyright 2024-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com/products/MCX-E31 + memory_map: + internal-flash0: + start_int: "0x40_0000" + size_int: "0x10_0000" + external: false + internal-flash1: + start_int: "0x50_0000" + size_int: "0x10_0000" + external: false + internal-flash2: + start_int: "0x60_0000" + size_int: "0x10_0000" + external: false + internal-flash3: + start_int: "0x70_0000" + size_int: "0x10_0000" + external: false + internal-flash4: + start_int: "0x1000_0000" + size_int: "0x2_0000" + external: false + sram0: + start_int: "0x2040_0000" + size_int: "0x2_8000" + external: false + non_xip_type: int_ram + sram1: + start_int: "0x2042_8000" + size_int: "0x2_8000" + external: false + non_xip_type: int_ram + isp: + flashloader: + protocol: mboot + interfaces: ["uart", "spi"] + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2040_1000 + size: 0x1000 + + # ======== Blhost section ======== + blhost: {} + + # ======== MBI section ======== + mbi: + ivt_type: Mbi_MixinHseIvt + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinHseIvt + - Mbi_MixinHseApp + - Mbi_ExportMixinHseApp + - Mbi_MixinHseLifecycle + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinHseIvt + - Mbi_MixinHseApp + - Mbi_MixinHseAppBootHeader + - Mbi_ExportMixinHseSignature + - Mbi_MixinHseLifecycle + - Mbi_ExportMixinHseAppSigned + images: + xip: + plain: plain_xip + signed: signed_xip + + # ======== EdgeLock Enclave section ======== + ele: + ele_device: mboot + + # ======== Hardware Security Engine === ===== + hse: + sub_features: [hse_attribute, key_import, key_catalog, smr] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl253/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl253/database.yaml new file mode 100644 index 0000000..698bbbb --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl253/database.yaml @@ -0,0 +1,27 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxl255 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x2_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x8000 + external: false + +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0x1_E000 \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl254/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl254/database.yaml new file mode 100644 index 0000000..5d1cb10 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl254/database.yaml @@ -0,0 +1,27 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxl255 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x4_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x1_0000 + external: false + +features: + # ======== PFR section ======== + pfr: + cmpa: # CMPA description + address: 0x3_E000 \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl255/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl255/database.yaml new file mode 100644 index 0000000..7fdf94a --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl255/database.yaml @@ -0,0 +1,118 @@ +# Copyright 2024-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + a1: {} +latest: a1 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x8_0000 + external: false + sram: + start_int: 0x2000_0000 + size_int: 0x2_0000 + external: false + isp: + rom: + protocol: mboot + interfaces: ["uart", "spi", "i2c"] + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_0000 + size: 0x1000 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinImageVersion + - Mbi_ExportMixinApp + - Mbi_ExportMixinCrcSign + images: + xip: + plain: plain_xip + crc: crc_xip + + # ======== DAT section ======== + dat: + dmbox_ap_ix: 1 # Typical Index of debug mailbox access port is 2 + non_standard_statuses: # dictionary of non standard return statuses from various commands + 2: # Command get_crp_level + 0xFFFF_FFFF: ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state + 0xEEBA_04C3: ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available + 0x4939_8D8B: ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available + 0xB0AB_B703: ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available + + # ======== PFR section ======== + pfr: + sub_features: [cmpa] + cmpa: # CMPA description + erase_method: flash_erase + address: 0x7_e000 + size: 256 + reg_spec: pfr_cmpa.json + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 + + # ======== Blhost section ======== + blhost: + sub_features: [overridden_properties] + overridden_properties: + 17: "life-cycle" + + # ======== Secure binary v3.1 section ======== + sb31: + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - copy + - loadHashLocking + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + key_wraps_version: 2 + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsmSBc] + header_version: 2 + oem_share_output_size: 64 + oem_master_share_output_size: 96 + supported_commands: + - erase + - load + - loadKeyBlob + - execute diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl255/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl255/pfr_cmpa.json new file mode 100644 index 0000000..cd90def --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxl255/pfr_cmpa.json @@ -0,0 +1,4591 @@ +{ + "cpu": "mcxl255", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0x59630000", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_IF", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "SPI_SLAVE", + "value": 2, + "description": "LPSPI Slave ISP" + }, + { + "name": "I2C_SLAVE", + "value": 3, + "description": "LPI2C slave ISP" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "BOOT_SPEED", + "description": "Core Clock Default value is 48MHz", + "values": [ + { + "name": "FRO_48_MHZ", + "value": 0, + "description": "48Mhz FRO @1v0" + }, + { + "name": "FRO_96_MHZ", + "value": 1, + "description": "96MHz FRO @1v1" + } + ] + }, + { + "width": 2, + "id": "field000-bits14-15", + "name": "AGDET_RE_EN", + "description": "Enablement and arming of security detectors (LVD, HVD, AGDET)", + "values": [ + { + "name": "ENABLED_0b00", + "value": 0, + "description": "Enable AGDET reset" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Don't enable AGDET reset" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Enable AGDET reset" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Enable AGDET reset" + } + ] + }, + { + "width": 16, + "access": "WRITE_CONST", + "id": "field000-bits16-31", + "name": "HEADER", + "description": "CMPA Header marker should be set to 0x5963. If the CMPA header marker is 16'hFFFF and the device is in the Develop lifecycle state, the main flash permission is R/W/X. When the CMPA header marker is valid, the permissions of the sectors of the main flash will depend on the values written for the flash access control. The flash access control values start at offset 0x40 in the CMPA" + } + ] + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 7, + "id": "field004-bits0-6", + "name": "FLASH_REMAP_SIZE", + "description": "Flash remap size. This field should be written to remap field in flash" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "Boot LED Status", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "BOOT_FAIL_LED", + "description": "Assert on fatal errors during boot. ROM toggles the GPIO pin identified by this field whenever primary boot fails due to fatal errors before locking-up/reset. Note, use QUICK_SET_/CLR_GPIOx field to set the default level of pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "Boot Timers", + "offset_int": "0x000C", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout: Timeout value in seconds. When a non-zero value is programmed in this field ROM uses it as idle timeout value to enter power-down state to conserve power" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field010", + "name": "ISP_UART_CFG", + "description": "ISP UART Configuration", + "offset_int": "0x0010", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field010-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field010-bits12-15", + "name": "UART_ISP_INSTANCE", + "description": "Identifies the LPUART instance used for UART ISP mode" + }, + { + "width": 8, + "id": "field010-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field010-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field010-bits28-31", + "name": "UART_BAUD_RATE", + "description": "UART baud rate.Baud rate configured during UART ISP mode", + "values": [ + { + "name": "AUTO_BAUD_DETECTION", + "value": 0, + "description": "Auto baud detection" + } + ] + } + ] + }, + { + "id": "field014", + "name": "ISP_I2C_CFG", + "description": "ISP I2C Configuration", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field014-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default I2C SCL ISP pin. Identifies the pin to be used as I2C_SCL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field014-bits12-15", + "name": "I2C_ISP_INSTANCE", + "description": "Identifies the LPI2C instance used for I2C ISP mode" + }, + { + "width": 8, + "id": "field014-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default I2C SDA ISP pin. Identifies the pin to be used as I2C_SDA pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field014-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field01C", + "name": "ISP_SPI_CFG0", + "description": "ISP SPI Configuration 0", + "offset_int": "0x001C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field01C-bits12-15", + "name": "SPI_ISP_INSTANCE", + "description": "Identifies the LPSPI instance used for SPI ISP mode" + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "field020", + "name": "ISP_SPI_CFG1", + "description": "ISP SPI Configuration 1", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 2, + "id": "field020-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved00024", + "name": "Reserved 0x00024", + "description": "This field is reserved for internal use", + "offset_int": "0x0024", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00028", + "name": "Reserved 0x00028", + "description": "This field is reserved for internal use", + "offset_int": "0x0028", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field02C", + "name": "ISP_MISC_CFG", + "description": "ISP MISC Configuration", + "offset_int": "0x002C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field02C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEFINED", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field02C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEFINED", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field02C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEFINED", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00030-0003C", + "description": "Reserved 00030-0003C" + }, + "registers": [ + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Flash Access Control", + "description": "Flash access control" + }, + "registers": [ + { + "id": "field040", + "name": "FLASH_ACL_0_7", + "description": "Access control for flash sector", + "offset_int": "0x0040", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field040-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector (offset range 0x00_0000 - 0x00_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector (offset range 0x00_2000 - 0x00_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector (offset range 0x00_4000 - 0x00_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector (offset range 0x00_6000 - 0x00_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector (offset range 0x00_8000 - 0x00_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector (offset range 0x00_A000 - 0x00_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector (offset range 0x00_C000 - 0x00_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field040-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector (offset range 0x00_E000 - 0x00_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field044", + "name": "FLASH_ACL_8_15", + "description": "Access control for flash sector", + "offset_int": "0x0044", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field044-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector (offset range 0x01_0000 - 0x01_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector (offset range 0x01_2000 - 0x01_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector (offset range 0x01_4000 - 0x01_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector (offset range 0x01_6000 - 0x01_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector (offset range 0x01_8000 - 0x01_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector (offset range 0x01_A000 - 0x01_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector (offset range 0x01_C000 - 0x01_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field044-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector (offset range 0x01_E000 - 0x01_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field048", + "name": "FLASH_ACL_16_23", + "description": "Access control for flash sector", + "offset_int": "0x0048", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field048-bits0-2", + "name": "ACL_SEC_16", + "description": "Access control for flash sector (offset range 0x02_0000 - 0x02_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits4-6", + "name": "ACL_SEC_17", + "description": "Access control for flash sector (offset range 0x02_2000 - 0x02_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits8-10", + "name": "ACL_SEC_18", + "description": "Access control for flash sector (offset range 0x02_4000 - 0x02_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits12-14", + "name": "ACL_SEC_19", + "description": "Access control for flash sector (offset range 0x02_6000 - 0x02_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits16-18", + "name": "ACL_SEC_20", + "description": "Access control for flash sector (offset range 0x02_8000 - 0x02_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits20-22", + "name": "ACL_SEC_21", + "description": "Access control for flash sector (offset range 0x02_A000 - 0x02_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits24-26", + "name": "ACL_SEC_22", + "description": "Access control for flash sector (offset range 0x02_C000 - 0x02_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field048-bits28-30", + "name": "ACL_SEC_23", + "description": "Access control for flash sector (offset range 0x02_E000 - 0x02_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field04C", + "name": "FLASH_ACL_24_31", + "description": "Access control for flash sector", + "offset_int": "0x004C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field04C-bits0-2", + "name": "ACL_SEC_24", + "description": "Access control for flash sector (offset range 0x03_0000 - 0x03_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits4-6", + "name": "ACL_SEC_25", + "description": "Access control for flash sector (offset range 0x03_2000 - 0x03_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits8-10", + "name": "ACL_SEC_26", + "description": "Access control for flash sector (offset range 0x03_4000 - 0x03_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits12-14", + "name": "ACL_SEC_27", + "description": "Access control for flash sector (offset range 0x03_6000 - 0x03_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits16-18", + "name": "ACL_SEC_28", + "description": "Access control for flash sector (offset range 0x03_8000 - 0x03_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits20-22", + "name": "ACL_SEC_29", + "description": "Access control for flash sector (offset range 0x03_A000 - 0x03_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits24-26", + "name": "ACL_SEC_30", + "description": "Access control for flash sector (offset range 0x03_C000 - 0x03_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field04C-bits28-30", + "name": "ACL_SEC_31", + "description": "Access control for flash sector (offset range 0x03_E000 - 0x03_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field050", + "name": "FLASH_ACL_32_39", + "description": "Access control for flash sector", + "offset_int": "0x0050", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field050-bits0-2", + "name": "ACL_SEC_32", + "description": "Access control for flash sector (offset range 0x04_0000 - 0x04_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits4-6", + "name": "ACL_SEC_33", + "description": "Access control for flash sector (offset range 0x04_2000 - 0x04_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits8-10", + "name": "ACL_SEC_34", + "description": "Access control for flash sector (offset range 0x04_4000 - 0x04_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits12-14", + "name": "ACL_SEC_35", + "description": "Access control for flash sector (offset range 0x04_6000 - 0x04_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits16-18", + "name": "ACL_SEC_36", + "description": "Access control for flash sector (offset range 0x04_8000 - 0x04_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits20-22", + "name": "ACL_SEC_37", + "description": "Access control for flash sector (offset range 0x04_A000 - 0x04_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits24-26", + "name": "ACL_SEC_38", + "description": "Access control for flash sector (offset range 0x04_C000 - 0x04_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field050-bits28-30", + "name": "ACL_SEC_39", + "description": "Access control for flash sector (offset range 0x04_E000 - 0x04_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field054", + "name": "FLASH_ACL_40_47", + "description": "Access control for flash sector", + "offset_int": "0x0054", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field054-bits0-2", + "name": "ACL_SEC_40", + "description": "Access control for flash sector (offset range 0x05_0000 - 0x05_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits4-6", + "name": "ACL_SEC_41", + "description": "Access control for flash sector (offset range 0x05_2000 - 0x05_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits8-10", + "name": "ACL_SEC_42", + "description": "Access control for flash sector (offset range 0x05_4000 - 0x05_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits12-14", + "name": "ACL_SEC_43", + "description": "Access control for flash sector (offset range 0x05_6000 - 0x05_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits16-18", + "name": "ACL_SEC_44", + "description": "Access control for flash sector (offset range 0x05_8000 - 0x05_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits20-22", + "name": "ACL_SEC_45", + "description": "Access control for flash sector (offset range 0x05_A000 - 0x05_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits24-26", + "name": "ACL_SEC_46", + "description": "Access control for flash sector (offset range 0x05_C000 - 0x05_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field054-bits28-30", + "name": "ACL_SEC_47", + "description": "Access control for flash sector (offset range 0x05_E000 - 0x05_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field058", + "name": "FLASH_ACL_48_55", + "description": "Access control for flash sector", + "offset_int": "0x0058", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field058-bits0-2", + "name": "ACL_SEC_48", + "description": "Access control for flash sector (offset range 0x06_0000 - 0x06_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits4-6", + "name": "ACL_SEC_49", + "description": "Access control for flash sector (offset range 0x06_2000 - 0x06_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits8-10", + "name": "ACL_SEC_50", + "description": "Access control for flash sector (offset range 0x06_4000 - 0x06_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits12-14", + "name": "ACL_SEC_51", + "description": "Access control for flash sector (offset range 0x06_6000 - 0x06_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits16-18", + "name": "ACL_SEC_52", + "description": "Access control for flash sector (offset range 0x06_8000 - 0x06_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits20-22", + "name": "ACL_SEC_53", + "description": "Access control for flash sector (offset range 0x06_A000 - 0x06_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits24-26", + "name": "ACL_SEC_54", + "description": "Access control for flash sector (offset range 0x06_C000 - 0x06_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field058-bits28-30", + "name": "ACL_SEC_55", + "description": "Access control for flash sector (offset range 0x06_E000 - 0x06_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field05C", + "name": "FLASH_ACL_56_63", + "description": "Access control for flash sector", + "offset_int": "0x005C", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field05C-bits0-2", + "name": "ACL_SEC_56", + "description": "Access control for flash sector (offset range 0x07_0000 - 0x07_1FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits4-6", + "name": "ACL_SEC_57", + "description": "Access control for flash sector (offset range 0x07_2000 - 0x07_3FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits8-10", + "name": "ACL_SEC_58", + "description": "Access control for flash sector (offset range 0x07_4000 - 0x07_5FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits12-14", + "name": "ACL_SEC_59", + "description": "Access control for flash sector (offset range 0x07_6000 - 0x07_7FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits16-18", + "name": "ACL_SEC_60", + "description": "Access control for flash sector (offset range 0x07_8000 - 0x07_9FFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits20-22", + "name": "ACL_SEC_61", + "description": "Access control for flash sector (offset range 0x07_A000 - 0x07_BFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits24-26", + "name": "ACL_SEC_62", + "description": "Access control for flash sector (offset range 0x07_C000 - 0x07_DFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field05C-bits28-30", + "name": "ACL_SEC_63", + "description": "Access control for flash sector (offset range 0x07_E000 - 0x07_FFFF)", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Data flash and unlocked (RW__). Default flash behavior with read and write access only. Instruction fetches (execute access) are blocked and generates security violation. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "Data flash and locked (RW_L). Read and write operations are allowed but execution is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "Read only Memory (ROM) and locked (R_XL). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "Data Read only memory (DROM) and locked (R__L). Read operations is allowed but write & execute are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "Read-Only-Memory (ROM) and un-locked (R_X_). Read & execute operations are allowed but write is blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "eXecute-only Memory (XOM) and un-locked (__X_). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index can be changed to another index by software. This configuration register is unlocked and updatable by application" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "eXecute-Only-Memory (XOM) and locked (__XL). Execute operations are allowed but read & write are blocked. Blocks assigned with this access control index cannot be changed to another index until next reset" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (___L). Read, Write & execute operations are blocked. Once this access control index is assigned to a block, the memory range associated with block is hidden until next reset" + } + ] + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field060", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0060", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0064", + "default_value_int": "0" + }, + { + "id": "field068", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0068", + "default_value_int": "0" + }, + { + "id": "field06C", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 1. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x006C", + "default_value_int": "0" + }, + { + "id": "field070", + "name": "QUICK_SET_GPIO_2", + "description": "Quick Set to Drive GPIO 2 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0070", + "default_value_int": "0" + }, + { + "id": "field074", + "name": "QUICK_CLR_GPIO_2", + "description": "Quick Clear to Drive GPIO 2 port [31:0] pins low after reset. Each bit corresponds to the pin in GPIO port 2. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot.", + "offset_int": "0x0074", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00078-0008C", + "description": "Reserved 00078-0008C" + }, + "registers": [ + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00080", + "name": "Reserved 0x00080", + "description": "This field is reserved for internal use", + "offset_int": "0x0080", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00084", + "name": "Reserved 0x00084", + "description": "This field is reserved for internal use", + "offset_int": "0x0084", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00088", + "name": "Reserved 0x00088", + "description": "This field is reserved for internal use", + "offset_int": "0x0088", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0008C", + "name": "Reserved 0x0008C", + "description": "This field is reserved for internal use", + "offset_int": "0x008C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Read Out Protection", + "description": "Read Out Protection (ROP) configuration" + }, + "registers": [ + { + "id": "field090", + "name": "ROP_STATE", + "description": "Read Out Protection (ROP) State value. Device does not support secure boot, but it does support four levels of Read Out Protection, referred as ROP_STATE. This read out protection is a mechanism that allows user to enable different levels of protection in the system. ROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. Any other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled).", + "offset_int": "0x0090", + "default_value_int": "0xFFFFFFFF", + "bitfields": [ + { + "width": 32, + "id": "field090-bits0-31", + "name": "ROP_STATE", + "description": "ROP_STATE[31:0]", + "values": [ + { + "name": "ROP_LEVEL2", + "value": 1228508555, + "description": "ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available" + }, + { + "name": "ROP_LEVEL3", + "value": 2964043523, + "description": "ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available" + }, + { + "name": "ROP_LEVEL1", + "value": 4005168323, + "description": "ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available" + }, + { + "name": "ROP_LEVEL0", + "value": 4294967295, + "description": "ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state" + } + ] + } + ] + }, + { + "id": "field094", + "name": "SBL_PROT", + "description": "Secondary Boot Loader Protection.If the field contains a value other than 0x0000_0000 or 0xFFFF_FFFF, Debug Mailbox commands and ISP commands will not be allowed at In-Field ROP1 and In-Field life cycles.", + "offset_int": "0x0094", + "default_value_int": "0" + }, + { + "id": "field098", + "name": "SBL_START_ADDR", + "description": "Secondary Boot Loader Start Address.At the end of boot ROM execution, if the user does not wish boot ROM to jump at address 0x0000_0000 (default jump address) of the main flash, this field needs to be programmed with a valid flash jump address.", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "ROP_STATE_DP", + "description": "Read Out Protection (ROP) State duplicate value. ROM reads ROP_STATE from ROP_STATE and ROP_STATE_DP on IFR0, does the compare, and if it does not match, resets the device; if match then programs it to SYSCON->ROP_STATE. Any other value then four listed means ROP3-like behavior (debug disabled/locked, ISP disabled). Duplicate of ROP_STATE at offset 0x90", + "offset_int": "0x00A0", + "default_value_int": "0xFFFFFFFF", + "bitfields": [ + { + "width": 32, + "id": "field0A0-bits0-31", + "name": "ROP_STATE_DP", + "description": "ROP_STATE_DP[31:0]", + "values": [ + { + "name": "ROP_LEVEL2", + "value": 1228508555, + "description": "ROP_STATE = 0x4939_8D8B. Debug disabled and locked, cannot be modified by customer, only limited debug mailbox commands available" + }, + { + "name": "ROP_LEVEL3", + "value": 2964043523, + "description": "ROP_STATE = 0xB0AB_B703. Debug disabled and locked, cannot be modified by customer, no debug mailbox commands available" + }, + { + "name": "ROP_LEVEL1", + "value": 4005168323, + "description": "ROP_STATE = 0xEEBA_04C3. Debug disabled and unlocked, can be modified by customer, only limited debug mailbox commands available" + }, + { + "name": "ROP_LEVEL0", + "value": 4294967295, + "description": "ROP_STATE = 0xFFFF_FFFF (erased FLASH value), no ROP. Default for blank state" + } + ] + } + ] + }, + { + "id": "field0A4", + "name": "SBL_PROT_DP", + "description": "Secondary Boot Loader Protection (Duplicate). Duplicate of SBL_PROT at offset 0x94", + "offset_int": "0x00A4", + "default_value_int": "0" + }, + { + "id": "field0A8", + "name": "SBL_START_ADDR_DP", + "description": "Duplicate of SBL_START_ADDR at offset 0xA0", + "offset_int": "0x00A8", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000AC-000CC", + "description": "Reserved 000AC-000CC" + }, + "registers": [ + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Secure Installer Token", + "description": "Secure installer token" + }, + "registers": [ + { + "id": "field0D0", + "name": "SI_ERASE_TOKEN0", + "description": "Secure Installer Erase Token [0:31]. Very important: This field is used by boot ROM when the secure installer is erased. Corrupting this field will lead to the region of the flash where the secure installer is located being non-writable and non-readable.", + "offset_int": "0x00D0", + "default_value_int": "0" + }, + { + "id": "field0D4", + "name": "SI_ERASE_TOKEN1", + "description": "Secure Installer Erase Token [32:63]. Very important: This field is used by boot ROM when the secure installer is erased. Corrupting this field will lead to the region of the flash where the secure installer is located being non-writable and non-readable.", + "offset_int": "0x00D4", + "default_value_int": "0" + }, + { + "id": "field0D8", + "name": "SI_ERASE_TOKEN2", + "description": "Secure Installer Erase Token [64:95]. Very important: This field is used by boot ROM when the secure installer is erased. Corrupting this field will lead to the region of the flash where the secure installer is located being non-writable and non-readable.", + "offset_int": "0x00D8", + "default_value_int": "0" + }, + { + "id": "field0DC", + "name": "SI_ERASE_TOKEN3", + "description": "Secure Installer Erase Token [96:127]. Very important: This field is used by boot ROM when the secure installer is erased. Corrupting this field will lead to the region of the flash where the secure installer is located being non-writable and non-readable.", + "offset_int": "0x00DC", + "default_value_int": "0" + }, + { + "id": "field0E0", + "name": "SI_DELETE_TOKEN", + "description": "Secure Installer Delete Token. Token provided by NXP to indicate the desire for the user to erase the secure installer in order to reclaim the flash portion occupied by the secure installer.", + "offset_int": "0x00E0", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000E4-000FC", + "description": "Reserved 000E4-000FC" + }, + "registers": [ + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F0", + "name": "Reserved 0x000F0", + "description": "This field is reserved for internal use", + "offset_int": "0x00F0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn235/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn235/database.yaml new file mode 100644 index 0000000..48ded8c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn235/database.yaml @@ -0,0 +1,39 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxn236 + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x80000" + external: false + internal-flash_s: + start_int: "0x10000000" + size_int: "0x80000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x28000" + external: false + warning_ranges: + - start_int: "0x20020000" + size_int: "0x8000" + warning_msg: RAM above 0x20020000 is not available if SRAM ECC is enabled + sramx: + start_int: "0x4000000" + size_int: "0x8000" + external: false + __comment: Does not work as target `onchip RAM` memory + ifr-bank1_ns: + start_int: "0x1008000" + size_int: "0x8000" + external: false + ifr-bank1_s: + start_int: "0x11008000" + size_int: "0x8000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/database.yaml new file mode 100644 index 0000000..0981f74 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/database.yaml @@ -0,0 +1,344 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + +latest: a0 + +# General MCU information +info: + purpose: MCX Series + spsdk_predecessor_name: mcxn23x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-n-series-microcontrollers/mcx-n23x-highly-integrated-mcus-with-on-chip-accelerators-intelligent-peripherals-and-advanced-security:MCX-N23X + use_in_doc: True # Remove when the device is available + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x100000" + external: false + internal-flash_s: + start_int: "0x10000000" + size_int: "0x100000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x40000" + external: false + warning_ranges: + - start_int: "0x20030000" + size_int: "0x10000" + warning_msg: RAM above 0x20030000 is not available if SRAM ECC is enabled + sramx: + start_int: "0x4000000" + size_int: "0x18000" + external: false + __comment: Does not work as target `onchip RAM` memory + ifr-bank1_ns: + start_int: "0x1008000" + size_int: "0x8000" + external: false + ifr-bank1_s: + start_int: "0x11008000" + size_int: "0x8000" + external: false + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0158 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_7000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert21] + rot_type: "cert_block_21" + + # ======== DAT section ======== + dat: + socc: 7 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + plain_ram: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestCrc + - Mbi_MixinImageSubType + - Mbi_MixinImageVersion + - Mbi_MixinFwVersion + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + signed_ram: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestCrc + - Mbi_MixinImageSubType + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_MixinFwVersion + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + plain: plain_ram + crc: crc_ram + signed: signed_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + reg_spec: pfr_cfpa.json + address: 0x100_0000 + size: 512 + seal_start: field1EC # CFPA_CRC32 + seal_count: 1 + grouped_registers: + - uid: cfpa_dice_cert + name: DICE_Certificate + width: 1152 + config_as_hexstring: true + description: + DICE Certificate field is compounded by 36 32-bit fields and contains + value of DICE Certificate generated by ROM + sub_regs: + - field100 + - field104 + - field108 + - field10C + - field110 + - field114 + - field118 + - field11C + - field120 + - field124 + - field128 + - field12C + - field130 + - field134 + - field138 + - field13C + - field140 + - field144 + - field148 + - field14C + - field150 + - field154 + - field158 + - field15C + - field160 + - field164 + - field168 + - field16C + - field170 + - field174 + - field178 + - field17C + - Reserved00180 + - Reserved00184 + - Reserved00188 + - Reserved0018C + computed_fields: + field000: # HEADER + field000-bits8-15: pfr_reg_inverse_lower_8_bits # INV_CFPA_LC_STATE + field020: # DBG_REVOKE_VU + field020-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field024: # DCFG_CC_SOCU_NS_PIN + field024-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field028: # DCFG_CC_SOCU_NS_DFLT + field028-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + cmpa: # CMPA description + reg_spec: pfr_cmpa.json + address: 0x0100_4000 + size: 512 + seal_start: field1F0 # CMPA_CMAC0 + seal_count: 4 + grouped_registers: + - uid: cmpa_rotkh + name: ROTKH + width: 384 + reversed: true + config_as_hexstring: true + alternative_widths: [256] + description: + ROTKH field is compounded by 12 32-bit fields and contains Root key table hash. + Root of Trust Key Hash is SHA256 or SHA384 of RoTK public. Hash algorithm is selected + based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). + Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates + container and signed boot image based on CMPA.RoTKx_Usage. + sub_regs: + - field060 + - field064 + - field068 + - field06C + - field070 + - field074 + - field078 + - field07C + - field080 + - field084 + - field088 + - field08C + - uid: cmpa_keyblob + name: CUST_MK_SK_KEY_BLOB + width: 384 + reversed: false + config_as_hexstring: true + description: CUST_MK_SK key blob. + CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. + CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. + To store this key into CMPA, SB_STORE_KEY command should be used. + sub_regs: + - field160 + - field164 + - field168 + - field16C + - field170 + - field174 + - field178 + - field17C + - field180 + - field184 + - field188 + - field18C + computed_fields: + field040: # DCFG_CC_SOCU_PIN + field040-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field044: # DCFG_CC_SOCU_DFLT + field044-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + + # ======== Secure binary v3.1 section ======== + sb31: + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - copy + - loadHashLocking + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + key_wraps_version: 2 + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsmSB31] + key_blob_offset: 0x0 + key_blob_command_position: -1 + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - copy + - loadHashLocking + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + + # ======== TrustZone section ======== + tz: + reg_spec: tz.json + + # ======== Memory configuration ======== + memcfg: + peripherals: + spi_nor: + instances: [7] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + recovery_spi_mbi: + segments: + mbi: 0x00 + recovery_spi_sb31: + segments: + sb31: 0x00 + internal: + segments: + mbi: 0x00 + + # ======== EL2GO TP section ======== + el2go_tp: + el2go_name: MCXN + prov_method: dispatch_fw + dispatch_method: sb_only + use_additional_data: true + fw_read_address: 0x2000_0100 + ignored_otp_ranges: [11, 22] + clean_method: erase_cmpa + validation_method: max_count=16;max_total_size=16384 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/fuses.json new file mode 100644 index 0000000..72d26d5 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/fuses.json @@ -0,0 +1,2769 @@ +{ + "cpu": "MCXN236", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Boot configuration locks" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCKS", + "description": "Boot Configuration Locks", + "index_int": "0", + "bitfields": [ + { + "width": 9 + }, + { + "width": 3, + "id": "fuse0-bits-9-11", + "name": "BOOT_CFG_LOCK[2:0]", + "description": "Boot config lock\nConfigures the locking of EFUSE bits for fuse #3, #4, #5, #6, #7 and fuses #11 - #22. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "PRINCE_CFG_LOCK[2:0]", + "description": "Prince Config Lock\nConfigures the locking EFUSE bits for fuses #23 - #30. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-15-17", + "name": "OSCAA_KEY_LOCK[2:0]", + "description": "OSCAA Key Lock\nConfigures the locking EFUSE bits for fuses #39 - #42. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked001", + "value": 0, + "description": "Unlocked001 - Locked for programming [WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-18-20", + "name": "CUST_LOCK0[2:0]", + "description": "CUST Lock 0\nConfigures the locking of EFUSE bits for fuses #43, #44, #45 and #46. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-21-23", + "name": "CUST_LOCK1[2:0]", + "description": "CUST Lock 1\nConfigures the locking of EFUSE bits for fuses #47, #48, #49 and #50. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-24-26", + "name": "CUST_LOCK2[2:0]", + "description": "CUST Lock 2\nConfigures the locking of EFUSE bits for fuses #51, #52, #53 and #54. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-27-29", + "name": "CUST_LOCK3[2:0]", + "description": "CUST Lock 3\nConfigures the locking EFUSE bits for fuses #55 - #62. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 2 + } + ] + } + ] + }, + { + "group": { + "name": "Configurations", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse1", + "name": "LIFE_CYCLE", + "description": "Life cycle state, debug setting, and ROTK setting", + "index_int": "0x0001", + "bitfields": [ + { + "width": 8, + "id": "fuse1-bits-0-7", + "name": "LIFECYCLE[7:0]", + "description": "Life cycle state.\nThis field can be used to advance life cycle state. Below are the allowed values for this field. Use of other values may lead to bricked state.", + "values": [ + { + "name": "BLANK", + "value": 0, + "description": "Blank" + }, + { + "name": "DEVELOP", + "value": 3, + "description": "Develop state" + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Develop 2 state" + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field state" + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "In-field locked state" + }, + { + "name": "FIELD_RETURN_OEM", + "value": 31, + "description": "Field return OEM state" + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "Failure Analysis state" + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked state" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-8", + "name": "NIDEN_dis", + "description": "Disable Non-secure non-invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-9", + "name": "DBGEN_dis", + "description": "Disable Non-secure invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-10", + "name": "SPIDEN_dis", + "description": "Disable Secure invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-11", + "name": "SPNIDEN_dis", + "description": "Disable Secure non-invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "fuse1-bit-15", + "name": "ISP_CMD_dis", + "description": "Disable Enter ISP Debug mailbox command.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-16", + "name": "FA_CMD_dis", + "description": "Disable Set FA mode Debug mailbox command.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-17", + "name": "ME_CMD_dis", + "description": "Disable Mass erase Debug mailbox command.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-18", + "name": "UUID_CHECK_ENF", + "description": "Enforce UUID checking during debug authentication", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Enable", + "value": 1, + "description": "Always enabled." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse1-bit-20", + "name": "RoTK0_dis", + "description": "Revoke Root of Trust key 0.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-21", + "name": "RoTK1_dis", + "description": "Revoke Root of Trust key 1.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-22", + "name": "RoTK2_dis", + "description": "Revoke Root of Trust key 2.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-23", + "name": "RoTK3_dis", + "description": "Revoke Root of Trust key 3.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 8, + "id": "fuse1-bits-24-31", + "name": "LIFECYCLE_DP[7:0]", + "description": "Duplicate of the LIFECYCLE fuse value.", + "values": [ + { + "name": "BLANK", + "value": 0, + "description": "Blank" + }, + { + "name": "DEVELOP", + "value": 3, + "description": "Develop state" + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Develop 2 state" + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field state" + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "In-field locked state" + }, + { + "name": "FIELD_RETURN_OEM", + "value": 31, + "description": "Field return OEM state" + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "Failure Analysis state" + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked state" + } + ] + } + ] + }, + { + "id": "fuse2", + "name": "KEY_REVOKE", + "description": "Image key revoke and PRINCE, PUF, and NXP provisioning firmware setting", + "index_int": "0x0002", + "bitfields": [ + { + "width": 8, + "id": "fuse2-bits-0-7", + "name": "DBG_KEY_REVOKE[7:0]", + "description": "Debug key revoke.\nThis field is combined with\nCFPA.DBG_REVOKE_VU and CMPA.VENDOR_USAGE fields to form a 32-bit value which is compared with vendor usage field in debug credential certificate. Only if the values match debug access is granted.\nCC_VENDOR_USAGE = { CMPA.VENDOR_USAGE[31:16],\nCFPA.DBG_REVOKE_VU[15:8],\n(CFPA.DBG_REVOKE_VU[7:0] | OTP.DBG_KEY_REVOKE[7:0]) }" + }, + { + "width": 8, + "id": "fuse2-bits-8-15", + "name": "IMAGE_KEY_REVOKE[7:0]", + "description": "Image signing key revoke.\nThis field is combined with\nCFPA.IMAGE_KEY_REVOKE field to form a 32-bit value which is compared with IskCertificate.constraints field during image authentication. If the values don't match image authentication fails.\nISK_CONSTRAINT[31:0] = {CFPA.IMAGE_KEY_REVOKE_VU[23:0], OTP.IMAGE_KEY_REVOKE[7:0] }" + }, + { + "width": 4 + }, + { + "width": 1, + "id": "fuse2-bit-20", + "name": "PUF_ENROLL_DIS", + "description": "Block PUF enrollment.", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "Allow PUF enroll operation" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable PUF enroll operation" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse2-bit-23", + "name": "DIS_NXP_FW", + "description": "Block NXP signed SB3 loading.", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "Allow NXP signed SB3 FW" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable NXP signed SB3 FW" + } + ] + }, + { + "width": 8 + } + ] + }, + { + "id": "fuse3", + "name": "BOOT_CFG", + "description": "ISP pin selection setting and boot configuration setting", + "index_int": "0x0003", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse3-bit-1", + "name": "Boot_flash_Dis", + "description": "Disable boot from internal flash.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Boot from internal flash enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "Boot from internal flash disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-2", + "name": "Boot_IFR0_Dis", + "description": "Disable boot from IFR0 (as SBL).", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Boot from IFR0 enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "Boot from IFR0 disabled." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse3-bit-5", + "name": "RBoot_SPI_Dis", + "description": "Disable recovery boot from external 1-bit SPI flash connected to FlexComm ports.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-6", + "name": "RBoot_IFR0_Dis", + "description": "Disable recovery boot from IFR0 area( 0x0100_8000 to 0x0100_FFFF).", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-7", + "name": "PinSel_SPI_RBoot_Dis", + "description": "Disable logic related to forcing recovery boot based on ISP pin state.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-8", + "name": "ISP_UART_Dis", + "description": "Disable UART interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "UART ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "UART ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-9", + "name": "ISP_I2C_Dis", + "description": "Disable I2C interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "I2C ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "I2C ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-10", + "name": "ISP_SPI_Dis", + "description": "Disable SPI interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "SPI ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "SPI ISP is disabled." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse3-bit-12", + "name": "ISP_USB1_Dis", + "description": "Disable USB0 interface in ISP mode", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "USB0 ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "USB0 ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-13", + "name": "ISP_CAN_Dis", + "description": "Disable CAN interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "CAN ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "CAN ISP is disabled." + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "fuse3-bits-16-17", + "name": "ISP_DISABLE[1:0]", + "description": "Disable ISP mode entry points.\nISP mode can be entered through pin assertion, debug mailbox command, image verification failure and ROM API invocation", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "All entry point allowed." + }, + { + "name": "Disable_ISP_pin", + "value": 1, + "description": "Entry by ISP Pin assertion disabled." + }, + { + "name": "Disable", + "value": 2, + "description": "Entry by ISP Pin assertion and debug mailbox command disabled." + }, + { + "name": "Disable_0", + "value": 3, + "description": "Entry by ISP Pin assertion and debug mailbox command disabled." + } + ] + }, + { + "width": 4 + }, + { + "width": 2, + "id": "fuse3-bits-22-23", + "name": "BOOT_SPEED[1:0]", + "description": "Boot speed. Selects the core frequency and voltage to use during ROM execution.", + "values": [ + { + "name": "CMPA_BOOT_SPEED", + "value": 0, + "description": "Use value from CMPA.BOOT_SPEED" + }, + { + "name": "72MHz FRO", + "value": 1, + "description": "72 MHz FRO @ 1.1V" + }, + { + "name": "144MHz FRO", + "value": 2, + "description": "144 MHz FRO @ 1.2V" + }, + { + "name": "150MHz PLL", + "value": 3, + "description": "150 MHz PLL @ 1.2V" + } + ] + }, + { + "width": 5, + "id": "fuse3-bits-24-28", + "name": "FLASH_REMAP_SZ[4:0]", + "description": "Flash remap size.\nFLASH_REMAP_SZ defines the size of the secondary boot image\n(the range of flash addresses that will be remapped)in internal flash, where remapped\naddress end = (FLASH_REMAP_SZ + 1) * 32 KB. For example, if FLASH_REMAP_SZ = 2,\nthen the first 96KB of addresses will be remapped to flash bank1 instead of flash bank0\nwhen remap is active. Set this field to 0 if you do not want to use the flash remap feature" + }, + { + "width": 3, + "id": "fuse3-bits-29-31", + "name": "OEM_BANK1_IFR0_USAGE[2:0]", + "description": "Defines flash protection of Bank1_IFR0 area based on usage.\nNote, if the SBL / Recovery image size is more than IFR0 size of 32KB then sectors from user flash can be associated for extended image size using CMPA.REC_IMG_EXT0/1.", + "values": [ + { + "name": "000", + "value": 0, + "description": "Not determined by ROM (MBC fields are modified by OEM code)" + }, + { + "name": "001", + "value": 1, + "description": "Used as OEM Root of Trust image, in other words secondary boot loader (OEM_SBL). MBC protection bits set as RWXL = 1010. Updatable by OEM code later." + }, + { + "name": "010", + "value": 2, + "description": "Used as OEM_SBL. MBC protection bits set as RWXL = 1011." + }, + { + "name": "011", + "value": 3, + "description": "Used as OEM_SBL. MBC protection bits set as RWXL = 0011." + }, + { + "name": "100", + "value": 4, + "description": "Used as OEM recovery boot image with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 1010 on ROM exiting to user image." + }, + { + "name": "101", + "value": 5, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 1011 on ROM exiting to user image." + }, + { + "name": "110", + "value": 6, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 0011 on ROM exiting to user image." + }, + { + "name": "111", + "value": 7, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 0001 on ROM exiting to user image." + } + ] + } + ] + }, + { + "id": "fuse6", + "name": "SECURE_BOOT_CFG", + "description": "Secure Boot Configuration 0", + "index_int": "0x0006", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse6-bits-0-1", + "name": "SEC_BOOT_EN[1:0]", + "description": "Secure boot enforcement.\nThis field defines the minimum image verification procedure (CRC32, CMAC, ECDSA sign).\nThe Image type field in header indicates the type of verification data (checksum or signature) included in it.\nPlain < CRC32 < CMAC < ECDSA", + "values": [ + { + "name": "ALL_IMAGES", + "value": 0, + "description": "All Image types are allowed." + }, + { + "name": "CRC32_IMAGES", + "value": 1, + "description": "Only CRC32 or signed (CMAC or ECDSA) images are allowed." + }, + { + "name": "SIGNED_IMAGES", + "value": 2, + "description": "Only Signed (CMAC or ECDSA) images are allowed." + }, + { + "name": "ECDSA_SIGNED", + "value": 3, + "description": "Only ECDSA signed images are allowed." + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse6-bits-3-4", + "name": "LP_SEC_BOOT[1:0]", + "description": "Secure boot option for low-power wake from power-down & deep-powerdown.\nFor CFPA/CMPA do CRC check always.", + "values": [ + { + "name": "COLD_BOOT", + "value": 0, + "description": "Same as cold boot" + }, + { + "name": "CHECK_CRC32", + "value": 1, + "description": "CRC check for CFPA/CMPA & CRC32 check of active image" + }, + { + "name": "CHECK_JUMP", + "value": 2, + "description": "CRC check for CFPA/CMPA & jump to vector address specified in CFPA." + }, + { + "name": "CHECK_CMAC", + "value": 3, + "description": "CRC check for CFPA/CMPA & CMAC check of active image" + } + ] + }, + { + "width": 3 + }, + { + "width": 2, + "id": "fuse6-bits-8-9", + "name": "ENF_CNSA[1:0]", + "description": "Enforce CNSA suite approved algorithms for secure boot, secure update and debug authentication.\nNote, CMAC image authentication is only allowed in 2b'00 setting.", + "values": [ + { + "name": "ALL_ALLOWED", + "value": 0, + "description": "All algorithm allowed." + }, + { + "name": "LIMITED", + "value": 1, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used." + }, + { + "name": "LIMITED_0", + "value": 2, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used." + }, + { + "name": "LIMITED_1", + "value": 3, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-10-11", + "name": "ENF_TZM_PRESET[1:0]", + "description": "TrustZone-M mode.", + "values": [ + { + "name": "IGNORE", + "value": 0, + "description": "Ignored." + }, + { + "name": "ENFORCE", + "value": 1, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_0", + "value": 2, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_1", + "value": 3, + "description": "Enforce preset TZM data in image manifest." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-12-13", + "name": "ITRC_ZEROIZE[1:0]", + "description": "RAM zeroize on ITRC event.\nZeroize long-term storage RAM (RAMA) on subsequent boot when Intrusion & Tamper control signals an intrusion event (ITRC_OUT3).\nNote, when ITRC is re-configured in application then ITRC_OUT4 (CHIP_RESET) should be triggered with at least same events as ITRC_OUT3 (RAM_ZEROIZE).", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action." + }, + { + "name": "PKC_RAM_ON_ITRC", + "value": 1, + "description": "Always Zeroize PKC RAM on ITRC event only." + }, + { + "name": "PKC_RAMA_ON_ITRC", + "value": 2, + "description": "Zeroize PKC & RAMA on ITRC event only." + }, + { + "name": "PKC_RAMA_ALL_RESET", + "value": 3, + "description": "Always Zeroize PKC & RAMA on all reset boot." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-14-15", + "name": "ACTIVE_IMG_PROT[1:0]", + "description": "Protection of active image.\nThis field defines protection of flash area occupied by the active image. Only applicable to internal flash.", + "values": [ + { + "name": "FLASH_ACL_PROTECTION", + "value": 0, + "description": "Protection is defined using the CFPA FLASH_ACL settings." + }, + { + "name": "WITH_STICKY_LOCK", + "value": 1, + "description": "Write protect active image area with sticky lock. GLBAC2 is used. FLASH_ACL settings are ignored." + }, + { + "name": "NO_STICKY_LOCK", + "value": 2, + "description": "Write protect active image area without sticky lock. GLBAC4 is used. FLASH_ACL settings are ignored." + }, + { + "name": "XOM_PROTECTION", + "value": 3, + "description": "XOM protect active image area with sticky lock. GLBAC6 is used. FLASH_ACL settings are ignored." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-16-17", + "name": "FIPS_SHA_STEN[1:0]", + "description": "Enable self-test for SHA2 block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-18-19", + "name": "FIPS_AES_STEN[1:0]", + "description": "Enable self-test for AES block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-20-21", + "name": "FIPS_ECDSA_STEN[1:0]", + "description": "Enable self-test for ECDSA block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-22-23", + "name": "FIPS_DRBG_STEN[1:0]", + "description": "Enable self-test for DRBG block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-24-25", + "name": "FIPS_CMAC_STEN[1:0]", + "description": "Enable self-test for CMAC block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-26-27", + "name": "FIPS_KDF_STEN[1:0]", + "description": "Enable self-test for KDF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-28-29", + "name": "FIPS_PUF_STEN[1:0]", + "description": "Enable self-test for PUF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "fuse7", + "name": "RoTK_USAGE", + "description": "Secure Boot Configuration 1", + "index_int": "0x0007", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 3, + "id": "fuse7-bits-0-2", + "name": "RoTK0_Usage[2:0]", + "description": "RoT key 0 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-3-5", + "name": "RoTK1_Usage[2:0]", + "description": "RoT key 1 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-6-8", + "name": "RoTK2_Usage[2:0]", + "description": "RoT key 2 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW_IMG", + "value": 2, + "description": "Usable as image (boot & FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-9-11", + "name": "RoTK3_Usage[2:0]", + "description": "RoT key 3 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-12", + "name": "SKIP_DICE", + "description": "Skip DICE computation.", + "values": [ + { + "name": "Enable DICE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "Disable DICE", + "value": 1, + "description": "Disable DICE" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-13", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area (IFR1) containing specific part configuration data defined during chip manufacturing process in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-14", + "name": "DICE_INC_CUST_CFG", + "description": "Include data from CMPA page (512 bytes) in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 9 + }, + { + "width": 2, + "id": "fuse7-bits-24-25", + "name": "NPX_LOCK_CTX0[1:0]", + "description": "Lock on-chip flash NPX PRINCE context 0 settings.\nFlash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled." + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-26-27", + "name": "NPX_LOCK_CTX1[1:0]", + "description": "Lock on-chip flash NPX PRINCE context 1 settings.\nFlash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled." + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-28-29", + "name": "NPX_LOCK_CTX2[1:0]", + "description": "Lock on-chip flash NPX PRINCE context 2 settings.\nFlash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled." + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-30-31", + "name": "NPX_LOCK_CTX3[1:0]", + "description": "Lock on-chip flash NPX PRINCE context 3 settings.\nFlash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "Root of trust keys configuration" + }, + "registers": [ + { + "id": "fuse11", + "name": "ROTKH0", + "description": "Root of Trust Keys Table Hash 0 (ROTKH[31:0])", + "index_int": "0x000B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse11-bits-0-31", + "name": "ROTKH[31:0]", + "description": "Root of Trust Keys Table Hash 0 (ROTKH[31:0])\nSHA384 ROTKH[383:352] / SHA56 ROTKH[255:224]" + } + ] + }, + { + "id": "fuse12", + "name": "ROTKH1", + "description": "Root of Trust Keys Table Hash 1 (ROTKH[63:32])", + "index_int": "0x000C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse12-bits-0-31", + "name": "ROTKH[63:32]", + "description": "Root of Trust Keys Table Hash 1 (ROTKH[63:32])\nSHA384 ROTKH[351:320] / SHA56 ROTKH[223:192]" + } + ] + }, + { + "id": "fuse13", + "name": "ROTKH2", + "description": "Root of Trust Keys Table Hash 2 (ROTKH[95:64])", + "index_int": "0x000D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse13-bits-0-31", + "name": "ROTKH[95:64]", + "description": "Root of Trust Keys Table Hash 2 (ROTKH[95:64])\nSHA384 ROTKH[319:288] / SHA56 ROTKH[191:160]" + } + ] + }, + { + "id": "fuse14", + "name": "ROTKH3", + "description": "Root of Trust Keys Table Hash 3 (ROTKH[127:96])", + "index_int": "0x000E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse14-bits-0-31", + "name": "ROTKH[127:96]", + "description": "Root of Trust Keys Table Hash 3 (ROTKH[127:96])\nSHA384 ROTKH[287:256] / SHA56 ROTKH[159:128]" + } + ] + }, + { + "id": "fuse15", + "name": "ROTKH4", + "description": "Root of Trust Keys Table Hash 4 (ROTKH[159:128])", + "index_int": "0x000F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse15-bits-0-31", + "name": "ROTKH[159:128]", + "description": "Root of Trust Keys Table Hash 4 (ROTKH[159:128])\nSHA384 ROTKH[255:224] / SHA56 ROTKH[127:96]" + } + ] + }, + { + "id": "fuse16", + "name": "ROTKH5", + "description": "Root of Trust Keys Table Hash 5 (ROTKH[191:160])", + "index_int": "0x0010", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse16-bits-0-31", + "name": "ROTKH[191:160]", + "description": "Root of Trust Keys Table Hash 5 (ROTKH[191:160])\nSHA384 ROTKH[223:192] / SHA56 ROTKH[95:64]" + } + ] + }, + { + "id": "fuse17", + "name": "ROTKH6", + "description": "Root of Trust Keys Table Hash 6 (ROTKH[223:192])", + "index_int": "0x0011", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse17-bits-0-31", + "name": "ROTKH[223:192]", + "description": "Root of Trust Keys Table Hash 6 (ROTKH[223:192])\nSHA384 ROTKH[191:160] / SHA56 ROTKH[63:32]", + "deprecated_names": [ + "ROTKH[232:192]" + ] + } + ] + }, + { + "id": "fuse18", + "name": "ROTKH7", + "description": "Root of Trust Keys Table Hash 7 (ROTKH[255:224])", + "index_int": "0x0012", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse18-bits-0-31", + "name": "ROTKH[255:224]", + "description": "Root of Trust Keys Table Hash 7 (ROTKH[255:224])\nSHA384 ROTKH[159:128 / SHA56 ROTKH[31:0]" + } + ] + }, + { + "id": "fuse19", + "name": "ROTKH8", + "description": "Root of Trust Keys Table Hash 8 (ROTKH[287:256])", + "index_int": "0x0013", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse19-bits-0-31", + "name": "ROTKH[287:256]", + "description": "Root of Trust Keys Table Hash 8 (ROTKH[287:256])\nSHA384 ROTKH[127:96] / 0" + } + ] + }, + { + "id": "fuse20", + "name": "ROTKH9", + "description": "Root of Trust Keys Table Hash 9 (ROTKH[319:288])", + "index_int": "0x0014", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse20-bits-0-31", + "name": "ROTKH[319:288]", + "description": "Root of Trust Keys Table Hash 9 (ROTKH[319:288])\nSHA384 ROTKH[95:64] / 0" + } + ] + }, + { + "id": "fuse21", + "name": "ROTKH10", + "description": "Root of Trust Keys Table Hash 10 (ROTKH[351:320])", + "index_int": "0x0015", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse21-bits-0-31", + "name": "ROTKH[351:320]", + "description": "Root of Trust Keys Table Hash 10 (ROTKH[351:320])\nSHA384 ROTKH[63:32] / 0" + } + ] + }, + { + "id": "fuse22", + "name": "ROTKH11", + "description": "Root of Trust Keys Table Hash 11 (ROTKH[383:352])", + "index_int": "0x0016", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse22-bits-0-31", + "name": "ROTKH[383:352]", + "description": "Root of Trust Keys Table Hash 11 (ROTKH[383:352])\nSHA384 ROTKH[31:0] / 0" + } + ] + } + ] + }, + { + "group": { + "name": "PRINCE", + "description": "Prince Context configuration" + }, + "registers": [ + { + "id": "fuse23", + "name": "NPX_CTX0_WD0", + "description": "Bitmap mask for NPX Prince context 0 (sectors 0 - 31)", + "index_int": "0x0017", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse23-bits-0-31", + "name": "NPX_CTX0_WD0", + "description": "Bitmap mask for NPX Prince context 0 (sectors 0 - 31)\nROM copies this value to NPX->VMAPCTX0_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX0 key & IV. NPX_CTX0_WD0[31:0]" + } + ] + }, + { + "id": "fuse25", + "name": "NPX_CTX1_WD0", + "description": "Bitmap mask for NPX Prince context 1 (sectors 0 - 31)", + "index_int": "0x0019", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse25-bits-0-31", + "name": "NPX_CTX1_WD0", + "description": "Bitmap mask for NPX Prince context 1 (sectors 0 - 31)\nROM copies this value to NPX->VMAPCTX1_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX1 key & IV. NPX_CTX1_WD0[31:0]" + } + ] + }, + { + "id": "fuse27", + "name": "NPX_CTX2_WD0", + "description": "Bitmap mask for NPX Prince context 2 (sectors 0 - 31)", + "index_int": "0x001B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse27-bits-0-31", + "name": "NPX_CTX2_WD0", + "description": "Bitmap mask for NPX Prince context 2 (sectors 0 - 31)\nROM copies this value to NPX->VMAPCTX2_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX2 key & IV. NPX_CTX2_WD0[31:0]" + } + ] + }, + { + "id": "fuse29", + "name": "NPX_CTX3_WD0", + "description": "Bitmap mask for NPX Prince context 3 (sectors 0 - 31)", + "index_int": "0x001D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse29-bits-0-31", + "name": "NPX_CTX3_WD0", + "description": "Bitmap mask for NPX Prince context 3 (sectors 0 - 31)\nROM copies this value to NPX->VMAPCTX3_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX3 key & IV. NPX_CTX3_WD0[31:0]" + } + ] + } + ] + }, + { + "group": { + "name": "OSCAA", + "description": "OSCAA key configuration" + }, + "registers": [ + { + "id": "fuse39", + "name": "OSCAA_KEY0", + "description": "OSCAA_KEY[31:0]", + "index_int": "0x0027", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse39-bits-0-31", + "name": "OSCAA_KEY0", + "description": "OSCAA_KEY[31:0]" + } + ] + }, + { + "id": "fuse40", + "name": "OSCAA_KEY1", + "description": "OSCAA_KEY[63:32]", + "index_int": "0x0028", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse40-bits-0-31", + "name": "OSCAA_KEY1", + "description": "OSCAA_KEY[63:32]" + } + ] + }, + { + "id": "fuse41", + "name": "OSCAA_KEY2", + "description": "OSCAA_KEY[95:64]", + "index_int": "0x0029", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse41-bits-0-31", + "name": "OSCAA_KEY2", + "description": "OSCAA_KEY[95:64]" + } + ] + }, + { + "id": "fuse42", + "name": "OSCAA_KEY3", + "description": "OSCAA_KEY[127:96]", + "index_int": "0x002A", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse42-bits-0-31", + "name": "OSCAA_KEY3", + "description": "OSCAA_KEY[127:96]" + } + ] + } + ] + }, + { + "group": { + "name": "CUST", + "description": "Customer fuses configuration" + }, + "registers": [ + { + "id": "fuse43", + "name": "GP0", + "description": "General Purpose Fuse 0 (GP0[31:0])", + "index_int": "0x002B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "read_lock_int": "0x00100000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse43-bits-0-31", + "name": "GP0[31:0]", + "description": "General Purpose Fuse 0 (GP0[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse44", + "name": "GP1", + "description": "General Purpose Fuse 1 (GP1[31:0])", + "index_int": "0x002C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "read_lock_int": "0x00100000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse44-bits-0-31", + "name": "GP1[31:0]", + "description": "General Purpose Fuse 1 (GP1[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse45", + "name": "GP2", + "description": "General Purpose Fuse 2 (GP2[31:0])", + "index_int": "0x002D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "read_lock_int": "0x00100000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse45-bits-0-31", + "name": "GP2[31:0]", + "description": "General Purpose Fuse 2 (GP2[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse46", + "name": "GP3", + "description": "General Purpose Fuse 3 (GP3[31:0])", + "index_int": "0x002E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "read_lock_int": "0x00100000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse46-bits-0-31", + "name": "GP3[31:0]", + "description": "General Purpose Fuse 3 (GP3[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse47", + "name": "GP4", + "description": "General Purpose Fuse 4 (GP4[31:0])", + "index_int": "0x002F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse47-bits-0-31", + "name": "GP4[31:0]", + "description": "General Purpose Fuse 4 (GP4[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse48", + "name": "GP5", + "description": "General Purpose Fuse 5 (GP5[31:0])", + "index_int": "0x0030", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse48-bits-0-31", + "name": "GP5[31:0]", + "description": "General Purpose Fuse 5 (GP5[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse49", + "name": "GP6", + "description": "General Purpose Fuse 6 (GP6[31:0])", + "index_int": "0x0031", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse49-bits-0-31", + "name": "GP6[31:0]", + "description": "General Purpose Fuse 6 (GP6[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse50", + "name": "GP7", + "description": "General Purpose Fuse 7 (GP7[31:0])", + "index_int": "0x0032", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse50-bits-0-31", + "name": "GP7[31:0]", + "description": "General Purpose Fuse 7 (GP7[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse51", + "name": "GP8", + "description": "General Purpose Fuse 8 (GP8[31:0])", + "index_int": "0x0033", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x04000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse51-bits-0-31", + "name": "GP8[31:0]", + "description": "General Purpose Fuse 8 (GP8[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse52", + "name": "GP9", + "description": "General Purpose Fuse 9 (GP9[31:0])", + "index_int": "0x0034", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x04000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse52-bits-0-31", + "name": "GP9[31:0]", + "description": "General Purpose Fuse 9 (GP9[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse53", + "name": "GP10", + "description": "General Purpose Fuse 10 (GP10[31:0])", + "index_int": "0x0035", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x04000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse53-bits-0-31", + "name": "GP10[31:0]", + "description": "General Purpose Fuse 10 (GP10[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse54", + "name": "GP11", + "description": "General Purpose Fuse 11 (GP11[31:0])", + "index_int": "0x0036", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x04000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse54-bits-0-31", + "name": "GP11[31:0]", + "description": "General Purpose Fuse 11 (GP11[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse55", + "name": "GP12", + "description": "General Purpose Fuse 12 (GP12[31:0])", + "index_int": "0x0037", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse55-bits-0-31", + "name": "GP12[31:0]", + "description": "General Purpose Fuse 12 (GP12[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse56", + "name": "GP13", + "description": "General Purpose Fuse 13 (GP13[31:0])", + "index_int": "0x0038", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse56-bits-0-31", + "name": "GP13[31:0]", + "description": "General Purpose Fuse 13 (GP13[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse57", + "name": "GP14", + "description": "General Purpose Fuse 14 (GP14[31:0])", + "index_int": "0x0039", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse57-bits-0-31", + "name": "GP14[31:0]", + "description": "General Purpose Fuse 14 (GP14[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse58", + "name": "GP15", + "description": "General Purpose Fuse 15 (GP15[31:0])", + "index_int": "0x003A", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse58-bits-0-31", + "name": "GP15[31:0]", + "description": "General Purpose Fuse 15 (GP15[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse59", + "name": "GP16", + "description": "General Purpose Fuse 16 (GP16[31:0])", + "index_int": "0x003B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse59-bits-0-31", + "name": "GP16[31:0]", + "description": "General Purpose Fuse 16 (GP16[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse60", + "name": "GP17", + "description": "General Purpose Fuse 17 (GP17[31:0])", + "index_int": "0x003C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse60-bits-0-31", + "name": "GP17[31:0]", + "description": "General Purpose Fuse 17 (GP17[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse61", + "name": "GP18", + "description": "General Purpose Fuse 18 (GP18[31:0])", + "index_int": "0x003D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse61-bits-0-31", + "name": "GP18[31:0]", + "description": "General Purpose Fuse 18 (GP18[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse62", + "name": "GP19", + "description": "General Purpose Fuse 19 (GP19[31:0])", + "index_int": "0x003E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse62-bits-0-31", + "name": "GP19[31:0]", + "description": "General Purpose Fuse 19 (GP19[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse63", + "name": "GP20", + "description": "General Purpose Fuse 20 (GP20[31:0])", + "index_int": "0x003F", + "bitfields": [ + { + "width": 32, + "id": "fuse63-bits-0-31", + "name": "GP20[31:0]", + "description": "General Purpose Fuse 20 (GP20[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse64", + "name": "GP21", + "description": "General Purpose Fuse 21 (GP21[31:0])", + "index_int": "0x0040", + "bitfields": [ + { + "width": 32, + "id": "fuse64-bits-0-31", + "name": "GP21[31:0]", + "description": "General Purpose Fuse 21 (GP21[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse65", + "name": "GP22", + "description": "General Purpose Fuse 22 (GP22[31:0])", + "index_int": "0x0041", + "bitfields": [ + { + "width": 32, + "id": "fuse65-bits-0-31", + "name": "GP22[31:0]", + "description": "General Purpose Fuse 22 (GP22[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse66", + "name": "GP23", + "description": "General Purpose Fuse 23 (GP23[31:0])", + "index_int": "0x0042", + "bitfields": [ + { + "width": 32, + "id": "fuse66-bits-0-31", + "name": "GP23[31:0]", + "description": "General Purpose Fuse 23 (GP23[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse67", + "name": "GP24", + "description": "General Purpose Fuse 24 (GP24[31:0])", + "index_int": "0x0043", + "bitfields": [ + { + "width": 32, + "id": "fuse67-bits-0-31", + "name": "GP24[31:0]", + "description": "General Purpose Fuse 24 (GP24[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse68", + "name": "GP25", + "description": "General Purpose Fuse 25 (GP25[31:0])", + "index_int": "0x0044", + "bitfields": [ + { + "width": 32, + "id": "fuse68-bits-0-31", + "name": "GP25[31:0]", + "description": "General Purpose Fuse 25 (GP25[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse69", + "name": "GP26", + "description": "General Purpose Fuse 26 (GP26[31:0])", + "index_int": "0x0045", + "bitfields": [ + { + "width": 32, + "id": "fuse69-bits-0-31", + "name": "GP26[31:0]", + "description": "General Purpose Fuse 26 (GP26[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse70", + "name": "GP27", + "description": "General Purpose Fuse 27 (GP27[31:0])", + "index_int": "0x0046", + "bitfields": [ + { + "width": 32, + "id": "fuse70-bits-0-31", + "name": "GP27[31:0]", + "description": "General Purpose Fuse 27 (GP27[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse71", + "name": "GP28", + "description": "General Purpose Fuse 28(GP28[31:0])", + "index_int": "0x0047", + "bitfields": [ + { + "width": 32, + "id": "fuse71-bits-0-31", + "name": "GP28[31:0]", + "description": "General Purpose Fuse 28(GP28[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse72", + "name": "GP29", + "description": "General Purpose Fuse 29 (GP29[31:0])", + "index_int": "0x0048", + "bitfields": [ + { + "width": 32, + "id": "fuse72-bits-0-31", + "name": "GP29[31:0]", + "description": "General Purpose Fuse 29 (GP29[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse73", + "name": "GP30", + "description": "General Purpose Fuse 30 (GP30[31:0])", + "index_int": "0x0049", + "bitfields": [ + { + "width": 32, + "id": "fuse73-bits-0-31", + "name": "GP30[31:0]", + "description": "General Purpose Fuse 30 (GP30[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse74", + "name": "GP31", + "description": "General Purpose Fuse 31 (GP31[31:0])", + "index_int": "0x004A", + "bitfields": [ + { + "width": 32, + "id": "fuse74-bits-0-31", + "name": "GP31[31:0]", + "description": "General Purpose Fuse 31 (GP31[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse75", + "name": "GP32", + "description": "General Purpose Fuse 32 (GP32[31:0])", + "index_int": "0x004B", + "bitfields": [ + { + "width": 32, + "id": "fuse75-bits-0-31", + "name": "GP32[31:0]", + "description": "General Purpose Fuse 32 (GP32[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse76", + "name": "GP33", + "description": "General Purpose Fuse 33 (GP33[31:0])", + "index_int": "0x004C", + "bitfields": [ + { + "width": 32, + "id": "fuse76-bits-0-31", + "name": "GP33[31:0]", + "description": "General Purpose Fuse 33 (GP33[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse77", + "name": "GP34", + "description": "General Purpose Fuse 34 (GP34[31:0])", + "index_int": "0x004D", + "bitfields": [ + { + "width": 32, + "id": "fuse77-bits-0-31", + "name": "GP34[31:0]", + "description": "General Purpose Fuse 34 (GP34[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse78", + "name": "GP35", + "description": "General Purpose Fuse 35 (GP35[31:0])", + "index_int": "0x004E", + "bitfields": [ + { + "width": 32, + "id": "fuse78-bits-0-31", + "name": "GP35[31:0]", + "description": "General Purpose Fuse 35 (GP35[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse79", + "name": "GP36", + "description": "General Purpose Fuse 36 (GP36[31:0])", + "index_int": "0x004F", + "bitfields": [ + { + "width": 32, + "id": "fuse79-bits-0-31", + "name": "GP36[31:0]", + "description": "General Purpose Fuse 36 (GP36[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse80", + "name": "GP37", + "description": "General Purpose Fuse 37 (GP37[31:0])", + "index_int": "0x0050", + "bitfields": [ + { + "width": 32, + "id": "fuse80-bits-0-31", + "name": "GP37[31:0]", + "description": "General Purpose Fuse 37 (GP37[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse81", + "name": "GP38", + "description": "General Purpose Fuse 38 (GP38[31:0])", + "index_int": "0x0051", + "bitfields": [ + { + "width": 32, + "id": "fuse81-bits-0-31", + "name": "GP38[31:0]", + "description": "General Purpose Fuse 38 (GP38[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/pfr_cfpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/pfr_cfpa.json new file mode 100644 index 0000000..452c39e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/pfr_cfpa.json @@ -0,0 +1,4377 @@ +{ + "cpu": "mcxn236", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "Header", + "description": "CFPA Header", + "offset_int": "0", + "default_value_int": "0x96350000", + "bitfields": [ + { + "width": 8, + "id": "field000-bits0-7", + "name": "CFPA_LC_STATE", + "description": "Life cycle state. This field can be used to advance life cycle state to 0x7, 0xF or 0xCF during development (OTP_LC_STATE = 0x3) for testing deployed states without programming OTP fuse. For actual mass production, be sure to modify the lifecycle through OTP/efuse rather than through CFPA_LC_STATE field. When CFPA is used to advance LC state, then application code should implement hooks, to revert CFPA_LC_STATE field to 0x3 to bring the device back to OEM_DEVELOP state (0x03). One such example is a GPIO interrupt handler invoked on a button press which modified the CFPA_LC_STATE to 0x3. Customer can use the CFPA_LC_STATE to advance the LC to Develop2 (0x7), In-field (0xF) and In-field Locked (0xCF) when the current efuse lifecycle is Develop (0x3). After the CFPA_LC_STATE has been set as advanced lifecycle, the CFPA_LC_STATE will be functional after warming reset the device, not the POR and wakeup reset type. But for the debug port, the following steps are required to make CFPA_LC_STATE effective for the debug port: 1.\tPerform a Power-on Reset while pulling down the ISP pin, to ensure that it directly enters ISP mode after POR. 2.\tThen perform a warm reset, such as a pin reset. Below are the allowed values for this field. Use of other values may lead to bricked state", + "values": [ + { + "name": "USE_LC_STATE_OTP", + "value": 0, + "description": "Use LC state from OTP" + }, + { + "name": "DEVELOP", + "value": 3, + "description": "Develop state" + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Develop 2 state" + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "field state" + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "field locked state" + } + ] + }, + { + "width": 8, + "id": "field000-bits8-15", + "name": "INV_CFPA_LC_STATE", + "description": "Inverted value of CFPA_LC_STATE. This INV_CPFA_LC_STATE ^ CFPA_LC_STATE[7:0] should be 0xFF, otherwise the CPFA_LC_STATE will not be valid", + "calculated": "INVERSE" + }, + { + "width": 16, + "id": "field000-bits16-31", + "name": "CFPA_HEADER", + "description": "CFPA Header marker should be set to 0x9635. After this header is set, all non-zero values will take effect; leaving all values set to 0xff will cause undefined behavior. It is recommended to set all values to 0x00 before setting the CFPA header" + } + ] + }, + { + "id": "field004", + "name": "CFPA_PAGE_VERSION", + "description": "CFPA Page Version.", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 24, + "id": "field004-bits0-23", + "name": "CFPA_page_version", + "description": "CFPA page version. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped. CFPA_PAGE_VERSION may begin at 0x1 and user may manually increment the value by 1 or use value 0xFF_FFFF and ROM will auto-increment this field" + }, + { + "width": 2, + "id": "field004-bits24-25", + "name": "IMG_UPD", + "description": "Image updated. Note: CMAC boot is only supported for internal flash. If using a FlexSPI flash XIP image, then this field should always be left as zero", + "values": [ + { + "name": "NOTHING_CHANGED", + "value": 0, + "description": "No action" + }, + { + "name": "IMAGE0_CMAC_UPDATE", + "value": 1, + "description": "Update image 0 CMAC" + }, + { + "name": "IMAGE1_CMAC_UPDATE", + "value": 2, + "description": "Update image 1 CMAC" + }, + { + "name": "SBL_IMG_CMAC_UPDATE", + "value": 3, + "description": "Update SBL image CMAC (image in IFR0 0x0100_8000). Value written in IMG0_CMAC field" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field004-bits27-29", + "name": "CMPA_UPD", + "description": "CMPA page updated through ROM API. Thus compute CMAC on sub-sequent boot. This field is checked only in Develop (0x3) LC state. All other combinations update CMAC field in CMPA page", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "UPDATE_IN_CMPA", + "value": 2, + "description": "Update CMAC field in CMPA page" + }, + { + "name": "TO_OEM_SECURE", + "value": 3, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to Develop2 (0x7)" + }, + { + "name": "TO_OEM_CLOSED", + "value": 5, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to In-Field (0xF)" + }, + { + "name": "TO_OEM_LOCKED", + "value": 6, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to In-Field Locked (0xCF)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field004-bit31", + "name": "DICE_UPD", + "description": "Update DICE certificate during next boot", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "GENERATE_CERTIFICATE", + "value": 1, + "description": "Generate certificate" + } + ] + } + ] + }, + { + "id": "field008", + "name": "Secure_FW_Version", + "description": "Secure Firmware version. This monotonic counter field tracks the firmware version of secure partition. ROM uses this field to enforce anti-rollback checking during secure boot and secure update (SB3 header). For image authentication pass during secure boot the FW version in image manifest must be equal or greater than this value. During secure update and recovery boot the version number in SB3 header Must be equal or greater than the value in this field. Apart from SB3 header check, user can enforce anti-rollback check during SB3 processing by using 'kSB3_COMMAND_fwVersionCheck' SB command with 'kNBOOT_CNT_secure' counter ID parameter, in SB3 file.", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "Secure_firmware_version", + "description": "Secure Firmware version. This monotonic counter field tracks the firmware version of secure partition. ROM uses this field to enforce anti-rollback checking during secure boot and secure update (SB3 header). For image authentication pass during secure boot the FW version in image manifest must be equal or greater than this value. During secure update & recovery boot the version number in SB3 header Must be equal or greater than the value in this field. Apart from SB3 header check, user can enforce anti-rollback check during SB3 processing by using \"kSB3_COMMAND_fwVersionCheck\" SB command with 'kNBOOT_CNT_secure' counter ID parameter, in SB3 file" + }, + { + "width": 16 + } + ] + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure Firmware version. This monotonic counter field can be used to track the firmware version of non-secure partition. An anti-rollback check can be enforced during update by using this field and 'kSB3_COMMAND_fwVersionCheck' SB command with 'kNBOOT_CNT_nonsecure' counter ID parameter, in SB3 file.", + "offset_int": "0x000C", + "default_value_int": "0" + }, + { + "id": "Reserved00010", + "name": "Reserved 0x00010", + "description": "This field is reserved for internal use", + "offset_int": "0x0010", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field014", + "name": "SECBOOT_FLAGS", + "description": "Secure BOOT Flags.", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field014-bits0-1", + "name": "RoTK0_EN", + "description": "Root of Trust Key 0 Enable. Determines if ROTK0 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits2-3", + "name": "RoTK1_EN", + "description": "Root of Trust Key 1 Enable. Determines if ROTK1 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits4-5", + "name": "RoTK2_EN", + "description": "Root of Trust Key 2 Enable. Determines if ROTK2 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits6-7", + "name": "RoTK3_EN", + "description": "Root of Trust Key 3 Enable. Determines if ROTK3 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 20 + }, + { + "width": 4, + "id": "field014-bits28-31", + "name": "OEM_RETURN_ERASE_DONE", + "description": "OEM assets erase done flag. ROM sets this field to 0xA after erasing the user flash and OEM assets. This operation is done on first boot after OTP_LC_STATE is advanced to 0x1F or higher states. On every boot ROM checks if LC_STATE is greater or equal to 0x1F and this field is empty in active CFPA page, then it erases OEM assets and updates this field in CFPA before freezing CFPA pages and enabling debug access. If the field is already set to 0xA then it proceeds without erasing user flash area" + } + ] + }, + { + "id": "field018", + "name": "IMAGE_KEY_REVOKE", + "description": "Image Key Revoke", + "offset_int": "0x0018", + "default_value_int": "0", + "bitfields": [ + { + "width": 24, + "id": "field018-bits0-23", + "name": "Image_key_revocation_ID", + "description": "Image signing key revocation counter. This monotonically increasing unary encode counter (e.g., 0x0, 0x1, 0x3, 0x7, 0xF...) field is used by boot ROM to enforce image signing key (ISK) certificate revocation policy. Boot ROM accepts an ISK certificate as valid only if the \"constraint\" field in ISK certificate is the same or greater than the ISK revocation counter. The 32-bit ISK revocation counter is formed using 8 bits of IMAGE_KEY_REVOKE[7:0] field in OTP as MSB bits and lower 24 bits from this field. ISK certificate validation is done as part of boot, FW update (SB3) and recovery (SB3) image authentication" + }, + { + "width": 8 + } + ] + }, + { + "id": "field01C", + "name": "LP_VECTOR_ADDR", + "description": "Vector address when waking from power-down and deep power down states when CMPA.LP_SEC_BOOT is set to 2b'10.", + "offset_int": "0x001C", + "default_value_int": "0" + }, + { + "id": "field020", + "name": "DBG_REVOKE_VU", + "description": "Debug Revoke Vendor Usage.", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field020-bits0-15", + "name": "Debug_certificate_revocation_counter", + "deprecated_names": [ + "FIELD" + ], + "description": "Debug certificate revocation counter. This monotonic counter field is used for revoking debug certificates. As part of debug authentication, CC_VU field in debug certificate/credential is checked against DCFG_VENDOR_USAGE value. The 32-bit DCFG_VENDOR_USAGE is formed using upper 16 bit of CMPA.VENDOR_USAGE and lower 16 bits of this field" + }, + { + "width": 16, + "id": "field020-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value of [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field024", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned", + "offset_int": "0x0024", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit6", + "name": "ISP_CMD_EN", + "description": "ISP boot command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Debug certificate can be used with all devices" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Debug certificate per device with matching UUID is needed" + } + ] + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value of Bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field028", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter", + "offset_int": "0x0028", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field028-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit1", + "name": "DBGEN", + "description": "Non Secure debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field028-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit8", + "name": "ME_CMD_EN", + "description": "Mass erase flash command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 16, + "id": "field028-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value of [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field030", + "name": "MCTR_NPX_CTX0", + "description": "Erase counter for Prince region 0. Monotonic erase counter for NPX region 0. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by NPX for encryption/decryption is computed by ROM bootloader and incorporates device UUID, NPX region number and MCTR_NPX_CTX0. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0030", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field034", + "name": "MCTR_NPX_CTX1", + "description": "Erase counter for Prince region 1. Monotonic erase counter for NPX region 1. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by NPX for encryption/decryption is computed by ROM bootloader and incorporates device UUID, NPX region number and MCTR_NPX_CTX1. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0034", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field038", + "name": "MCTR_NPX_CTX2", + "description": "Erase counter for Prince region 2. Monotonic erase counter for NPX region 2. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by NPX for encryption/decryption is computed by ROM bootloader and incorporates device UUID, NPX region number and MCTR_NPX_CTX2. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0038", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field03C", + "name": "MCTR_NPX_CTX3", + "description": "Erase counter for Prince region 3. Monotonic erase counter for NPX region 3. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by NPX for encryption/decryption is computed by ROM bootloader and incorporates device UUID, NPX region number and MCTR_NPX_CTX3. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x003C", + "default_value_int": "0" + }, + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field060", + "name": "ERR_AUTH_FAIL_COUNT", + "description": "Authentication failure counter. This monotonic counter field is incremented by boot ROM on authentication failure during boot, SB3, or debug authentication (Monotonic counter).", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "ERR_ITRC_COUNT", + "description": "Tamper event counter. This monotonic counter field is incremented by boot ROM whenever the reset cause during boot is detected as - ITRC reset caused by security sensors or - WDT 0/1 reset or - Tamper pin reset.", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00068-0007C", + "description": "Reserved 00068-0007C" + }, + "registers": [ + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined monotonic counters configuration" + }, + "registers": [ + { + "id": "field080", + "name": "MCTR_CUST_CTR0", + "description": "Customer defined Monotonic counter 0 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0080", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "MCTR_CUST_CTR1", + "description": "Customer defined Monotonic counter 1 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0084", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "MCTR_CUST_CTR2", + "description": "Customer defined Monotonic counter 2 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0088", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "MCTR_CUST_CTR3", + "description": "Customer defined Monotonic counter 3 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x008C", + "default_value_int": "0" + }, + { + "id": "field090", + "name": "MCTR_CUST_CTR4", + "description": "Customer defined Monotonic counter 4 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0090", + "default_value_int": "0" + }, + { + "id": "field094", + "name": "MCTR_CUST_CTR5", + "description": "Customer defined Monotonic counter 5 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0094", + "default_value_int": "0" + }, + { + "id": "field098", + "name": "MCTR_CUST_CTR6", + "description": "Customer defined Monotonic counter 6 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "field09C", + "name": "MCTR_CUST_CTR7", + "description": "Customer defined Monotonic counter 7 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x009C", + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "MFLAG_CUST_0", + "description": "Customer defined Monotonic flags 0 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00A0", + "default_value_int": "0" + }, + { + "id": "field0A4", + "name": "MFLAG_CUST_1", + "description": "Customer defined Monotonic flags 1 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00A4", + "default_value_int": "0" + }, + { + "id": "field0A8", + "name": "MFLAG_CUST_2", + "description": "Customer defined Monotonic flags 2 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00A8", + "default_value_int": "0" + }, + { + "id": "field0AC", + "name": "MFLAG_CUST_3", + "description": "Customer defined Monotonic flags 3 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00AC", + "default_value_int": "0" + }, + { + "id": "field0B0", + "name": "MFLAG_CUST_4", + "description": "Customer defined Monotonic flags 4 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00B0", + "default_value_int": "0" + }, + { + "id": "field0B4", + "name": "MFLAG_CUST_5", + "description": "Customer defined Monotonic flags 5 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00B4", + "default_value_int": "0" + }, + { + "id": "field0B8", + "name": "MFLAG_CUST_6", + "description": "Customer defined Monotonic flags 6 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00B8", + "default_value_int": "0" + }, + { + "id": "field0BC", + "name": "MFLAG_CUST_7", + "description": "Customer defined Monotonic flags 7 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00BC", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Flash access control", + "description": "Flash access control" + }, + "registers": [ + { + "id": "field0C0", + "name": "FLASH_ACL_0_7", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00C0", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0C0-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector (offset range 0x00_0000 - 0x00_7FFF). Select one of the 8 pre-defined access control attributes for the given Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector (offset range 0x00_8000 - 0x00_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector (offset range 0x01_0000 - 0x01_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector. (offset range 0x01_8000 - 0x01_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector (offset range 0x02_0000 - 0x02_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector (offset range 0x02_8000 - 0x02_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector (offset range 0x03_0000 - 0x03_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector (offset range 0x03_8000 - 0x03_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0C4", + "name": "FLASH_ACL_8_15", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00C4", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0C4-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector (offset range 0x04_0000 - 0x04_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector (offset range 0x04_8000 - 0x04_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector (offset range 0x05_0000 - 0x05_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector. (offset range 0x05_8000 - 0x05_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector (offset range 0x06_0000 - 0x06_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector (offset range 0x06_8000 - 0x06_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector (offset range 0x07_0000 - 0x07_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector (offset range 0x07_8000 - 0x07_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0C8", + "name": "FLASH_ACL_16_23", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00C8", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0C8-bits0-2", + "name": "ACL_SEC_16", + "description": "Access control for flash sector (offset range 0x08_0000 - 0x08_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits4-6", + "name": "ACL_SEC_17", + "description": "Access control for flash sector (offset range 0x08_8000 - 0x08_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits8-10", + "name": "ACL_SEC_18", + "description": "Access control for flash sector (offset range 0x09_0000 - 0x09_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits12-14", + "name": "ACL_SEC_19", + "description": "Access control for flash sector. (offset range 0x09_8000 - 0x09_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits16-18", + "name": "ACL_SEC_20", + "description": "Access control for flash sector (offset range 0x0A_0000 - 0x0A_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits20-22", + "name": "ACL_SEC_21", + "description": "Access control for flash sector (offset range 0x0A_8000 - 0x0A_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits24-26", + "name": "ACL_SEC_22", + "description": "Access control for flash sector (offset range 0x0B_0000 - 0x0B_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits28-30", + "name": "ACL_SEC_23", + "description": "Access control for flash sector (offset range 0x0B_8000 - 0x0B_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0CC", + "name": "FLASH_ACL_24_31", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00CC", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0CC-bits0-2", + "name": "ACL_SEC_24", + "description": "Access control for flash sector (offset range 0x0C_0000 - 0x0C_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits4-6", + "name": "ACL_SEC_25", + "description": "Access control for flash sector (offset range 0x0C_8000 - 0x0C_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits8-10", + "name": "ACL_SEC_26", + "description": "Access control for flash sector (offset range 0x0D_0000 - 0x0D_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits12-14", + "name": "ACL_SEC_27", + "description": "Access control for flash sector. (offset range 0x0D_8000 - 0x0D_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits16-18", + "name": "ACL_SEC_28", + "description": "Access control for flash sector (offset range 0x0E_0000 - 0x0E_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits20-22", + "name": "ACL_SEC_29", + "description": "Access control for flash sector (offset range 0x0E_8000 - 0x0E_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits24-26", + "name": "ACL_SEC_30", + "description": "Access control for flash sector (offset range 0x0F_0000 - 0x0F_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits28-30", + "name": "ACL_SEC_31", + "description": "Access control for flash sector (offset range 0x0F_8000 - 0x0F_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W/X unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "R + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 000D0-000DC", + "description": "Reserved 000D0-000DC" + }, + "registers": [ + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CMAC", + "description": "CMAC fields" + }, + "registers": [ + { + "id": "field0E0", + "name": "IMG0_CMAC0", + "description": "Die unique CMAC[31:0] of image 0. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 0 range when IMG_UPD field is set to 2b'01. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00E0", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0E4", + "name": "IMG0_CMAC1", + "description": "Die unique CMAC[63:32] of image 0. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 0 range when IMG_UPD field is set to 2b'01. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00E4", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0E8", + "name": "IMG0_CMAC2", + "description": "Die unique CMAC[95:64] of image 0. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 0 range when IMG_UPD field is set to 2b'01. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00E8", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0EC", + "name": "IMG0_CMAC3", + "description": "Die unique CMAC[127:96] of image 0. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 0 range when IMG_UPD field is set to 2b'01. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00EC", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0F0", + "name": "IMG1_CMAC0", + "description": "Die unique CMAC[31:0] of image 1. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 1 range when IMG_UPD field is set to 2b'10. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00F0", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0F4", + "name": "IMG1_CMAC1", + "description": "Die unique CMAC[63:32] of image 1. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 1 range when IMG_UPD field is set to 2b'10. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00F4", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0F8", + "name": "IMG1_CMAC2", + "description": "Die unique CMAC[95:64] of image 1. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 1 range when IMG_UPD field is set to 2b'10. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00F8", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0FC", + "name": "IMG1_CMAC3", + "description": "Die unique CMAC[127:96] of image 1. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 1 range when IMG_UPD field is set to 2b'10. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00FC", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "DICE", + "description": "DICE certificate configuration" + }, + "registers": [ + { + "id": "field100", + "name": "DICE_Certificate0", + "description": "DICE Certificate register", + "offset_int": "0x0100", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits0-7", + "name": "X_coordinate_of_public_key_Qx[31]", + "deprecated_names": [ + "X coordinate of public key Qx[31]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field100-bits8-15", + "name": "X_coordinate_of_public_key_Qx[30]", + "deprecated_names": [ + "X coordinate of public key Qx[30]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field100-bits16-23", + "name": "X_coordinate_of_public_key_Qx[29]", + "deprecated_names": [ + "X coordinate of public key Qx[29]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field100-bits24-31", + "name": "X_coordinate_of_public_key_Qx[28]", + "deprecated_names": [ + "X coordinate of public key Qx[28]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field104", + "name": "DICE_Certificate1", + "description": "DICE Certificate register", + "offset_int": "0x0104", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits0-7", + "name": "X_coordinate_of_public_key_Qx[27]", + "deprecated_names": [ + "X coordinate of public key Qx[27]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field104-bits8-15", + "name": "X_coordinate_of_public_key_Qx[26]", + "deprecated_names": [ + "X coordinate of public key Qx[26]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field104-bits16-23", + "name": "X_coordinate_of_public_key_Qx[25]", + "deprecated_names": [ + "X coordinate of public key Qx[25]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field104-bits24-31", + "name": "X_coordinate_of_public_key_Qx[24]", + "deprecated_names": [ + "X coordinate of public key Qx[24]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field108", + "name": "DICE_Certificate2", + "description": "DICE Certificate register", + "offset_int": "0x0108", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits0-7", + "name": "X_coordinate_of_public_key_Qx[23]", + "deprecated_names": [ + "X coordinate of public key Qx[23]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field108-bits8-15", + "name": "X_coordinate_of_public_key_Qx[22]", + "deprecated_names": [ + "X coordinate of public key Qx[22]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field108-bits16-23", + "name": "X_coordinate_of_public_key_Qx[21]", + "deprecated_names": [ + "X coordinate of public key Qx[21]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field108-bits24-31", + "name": "X_coordinate_of_public_key_Qx[20]", + "deprecated_names": [ + "X coordinate of public key Qx[20]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field10C", + "name": "DICE_Certificate3", + "description": "DICE Certificate register", + "offset_int": "0x010C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits0-7", + "name": "X_coordinate_of_public_key_Qx[19]", + "deprecated_names": [ + "X coordinate of public key Qx[19]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field10C-bits8-15", + "name": "X_coordinate_of_public_key_Qx[18]", + "deprecated_names": [ + "X coordinate of public key Qx[18]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field10C-bits16-23", + "name": "X_coordinate_of_public_key_Qx[17]", + "deprecated_names": [ + "X coordinate of public key Qx[17]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field10C-bits24-31", + "name": "X_coordinate_of_public_key_Qx[16]", + "deprecated_names": [ + "X coordinate of public key Qx[16]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field110", + "name": "DICE_Certificate4", + "description": "DICE Certificate register", + "offset_int": "0x0110", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits0-7", + "name": "X_coordinate_of_public_key_Qx[15]", + "deprecated_names": [ + "X coordinate of public key Qx[15]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field110-bits8-15", + "name": "X_coordinate_of_public_key_Qx[14]", + "deprecated_names": [ + "X coordinate of public key Qx[14]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field110-bits16-23", + "name": "X_coordinate_of_public_key_Qx[13]", + "deprecated_names": [ + "X coordinate of public key Qx[13]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field110-bits24-31", + "name": "X_coordinate_of_public_key_Qx[12]", + "deprecated_names": [ + "X coordinate of public key Qx[12]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field114", + "name": "DICE_Certificate5", + "description": "DICE Certificate register", + "offset_int": "0x0114", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits0-7", + "name": "X_coordinate_of_public_key_Qx[11]", + "deprecated_names": [ + "X coordinate of public key Qx[11]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field114-bits8-15", + "name": "X_coordinate_of_public_key_Qx[10]", + "deprecated_names": [ + "X coordinate of public key Qx[10]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field114-bits16-23", + "name": "X_coordinate_of_public_key_Qx[9]", + "deprecated_names": [ + "X coordinate of public key Qx[9]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field114-bits24-31", + "name": "X_coordinate_of_public_key_Qx[8]", + "deprecated_names": [ + "X coordinate of public key Qx[8]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field118", + "name": "DICE_Certificate6", + "description": "DICE Certificate register", + "offset_int": "0x0118", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits0-7", + "name": "X_coordinate_of_public_key_Qx[7]", + "deprecated_names": [ + "X coordinate of public key Qx[7]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field118-bits8-15", + "name": "X_coordinate_of_public_key_Qx[6]", + "deprecated_names": [ + "X coordinate of public key Qx[6]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field118-bits16-23", + "name": "X_coordinate_of_public_key_Qx[5]", + "deprecated_names": [ + "X coordinate of public key Qx[5]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field118-bits24-31", + "name": "X_coordinate_of_public_key_Qx[4]", + "deprecated_names": [ + "X coordinate of public key Qx[4]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field11C", + "name": "DICE_Certificate7", + "description": "DICE Certificate register", + "offset_int": "0x011C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits0-7", + "name": "X_coordinate_of_public_key_Qx[3]", + "deprecated_names": [ + "X coordinate of public key Qx[3]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field11C-bits8-15", + "name": "X_coordinate_of_public_key_Qx[2]", + "deprecated_names": [ + "X coordinate of public key Qx[2]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field11C-bits16-23", + "name": "X_coordinate_of_public_key_Qx[1]", + "deprecated_names": [ + "X coordinate of public key Qx[1]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field11C-bits24-31", + "name": "X_coordinate_of_public_key_Qx[0]", + "deprecated_names": [ + "X coordinate of public key Qx[0]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field120", + "name": "DICE_Certificate8", + "description": "DICE Certificate register", + "offset_int": "0x0120", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits0-7", + "name": "Y_coordinate_of_public_key_Qy[31]", + "deprecated_names": [ + "Y coordinate of public key Qy[31]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field120-bits8-15", + "name": "Y_coordinate_of_public_key_Qy[30]", + "deprecated_names": [ + "Y coordinate of public key Qy[30]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field120-bits16-23", + "name": "Y_coordinate_of_public_key_Qy[29]", + "deprecated_names": [ + "Y coordinate of public key Qy[29]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field120-bits24-31", + "name": "Y_coordinate_of_public_key_Qy[28]", + "deprecated_names": [ + "Y coordinate of public key Qy[28]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field124", + "name": "DICE_Certificate9", + "description": "DICE Certificate register", + "offset_int": "0x0124", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits0-7", + "name": "Y_coordinate_of_public_key_Qy[27]", + "deprecated_names": [ + "Y coordinate of public key Qy[27]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field124-bits8-15", + "name": "Y_coordinate_of_public_key_Qy[26]", + "deprecated_names": [ + "Y coordinate of public key Qy[26]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field124-bits16-23", + "name": "Y_coordinate_of_public_key_Qy[25]", + "deprecated_names": [ + "Y coordinate of public key Qy[25]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field124-bits24-31", + "name": "Y_coordinate_of_public_key_Qy[24]", + "deprecated_names": [ + "Y coordinate of public key Qy[24]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field128", + "name": "DICE_Certificate10", + "description": "DICE Certificate register", + "offset_int": "0x0128", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits0-7", + "name": "Y_coordinate_of_public_key_Qy[23]", + "deprecated_names": [ + "Y coordinate of public key Qy[23]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field128-bits8-15", + "name": "Y_coordinate_of_public_key_Qy[22]", + "deprecated_names": [ + "Y coordinate of public key Qy[22]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field128-bits16-23", + "name": "Y_coordinate_of_public_key_Qy[21]", + "deprecated_names": [ + "Y coordinate of public key Qy[21]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field128-bits24-31", + "name": "Y_coordinate_of_public_key_Qy[20]", + "deprecated_names": [ + "Y coordinate of public key Qy[20]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field12C", + "name": "DICE_Certificate11", + "description": "DICE Certificate register", + "offset_int": "0x012C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits0-7", + "name": "Y_coordinate_of_public_key_Qy[19]", + "deprecated_names": [ + "Y coordinate of public key Qy[19]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field12C-bits8-15", + "name": "Y_coordinate_of_public_key_Qy[18]", + "deprecated_names": [ + "Y coordinate of public key Qy[18]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field12C-bits16-23", + "name": "Y_coordinate_of_public_key_Qy[17]", + "deprecated_names": [ + "Y coordinate of public key Qy[17]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field12C-bits24-31", + "name": "Y_coordinate_of_public_key_Qy[16]", + "deprecated_names": [ + "Y coordinate of public key Qy[16]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field130", + "name": "DICE_Certificate12", + "description": "DICE Certificate register", + "offset_int": "0x0130", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits0-7", + "name": "Y_coordinate_of_public_key_Qy[15]", + "deprecated_names": [ + "Y coordinate of public key Qy[15]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field130-bits8-15", + "name": "Y_coordinate_of_public_key_Qy[14]", + "deprecated_names": [ + "Y coordinate of public key Qy[14]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field130-bits16-23", + "name": "Y_coordinate_of_public_key_Qy[13]", + "deprecated_names": [ + "Y coordinate of public key Qy[13]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field130-bits24-31", + "name": "Y_coordinate_of_public_key_Qy[12]", + "deprecated_names": [ + "Y coordinate of public key Qy[12]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field134", + "name": "DICE_Certificate13", + "description": "DICE Certificate register", + "offset_int": "0x0134", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits0-7", + "name": "Y_coordinate_of_public_key_Qy[11]", + "deprecated_names": [ + "Y coordinate of public key Qy[11]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field134-bits8-15", + "name": "Y_coordinate_of_public_key_Qy[10]", + "deprecated_names": [ + "Y coordinate of public key Qy[10]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field134-bits16-23", + "name": "Y_coordinate_of_public_key_Qy[9]", + "deprecated_names": [ + "Y coordinate of public key Qy[9]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field134-bits24-31", + "name": "Y_coordinate_of_public_key_Qy[8]", + "deprecated_names": [ + "Y coordinate of public key Qy[8]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field138", + "name": "DICE_Certificate14", + "description": "DICE Certificate register", + "offset_int": "0x0138", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits0-7", + "name": "Y_coordinate_of_public_key_Qy[7]", + "deprecated_names": [ + "Y coordinate of public key Qy[7]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field138-bits8-15", + "name": "Y_coordinate_of_public_key_Qy[6]", + "deprecated_names": [ + "Y coordinate of public key Qy[6]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field138-bits16-23", + "name": "Y_coordinate_of_public_key_Qy[5]", + "deprecated_names": [ + "Y coordinate of public key Qy[5]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field138-bits24-31", + "name": "Y_coordinate_of_public_key_Qy[4]", + "deprecated_names": [ + "Y coordinate of public key Qy[4]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field13C", + "name": "DICE_Certificate15", + "description": "DICE Certificate register", + "offset_int": "0x013C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits0-7", + "name": "Y_coordinate_of_public_key_Qy[3]", + "deprecated_names": [ + "Y coordinate of public key Qy[3]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field13C-bits8-15", + "name": "Y_coordinate_of_public_key_Qy[2]", + "deprecated_names": [ + "Y coordinate of public key Qy[2]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field13C-bits16-23", + "name": "Y_coordinate_of_public_key_Qy[1]", + "deprecated_names": [ + "Y coordinate of public key Qy[1]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field13C-bits24-31", + "name": "Y_coordinate_of_public_key_Qy[0]", + "deprecated_names": [ + "Y coordinate of public key Qy[0]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field140", + "name": "DICE_Certificate16", + "description": "DICE Certificate register", + "offset_int": "0x0140", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits0-7", + "name": "ECDSA_SIG_R[31]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field140-bits8-15", + "name": "ECDSA_SIG_R[30]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field140-bits16-23", + "name": "ECDSA_SIG_R[29]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field140-bits24-31", + "name": "ECDSA_SIG_R[28]", + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field144", + "name": "DICE_Certificate17", + "description": "DICE Certificate register", + "offset_int": "0x0144", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits0-7", + "name": "ECDSA_SIG_R[27]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field144-bits8-15", + "name": "ECDSA_SIG_R[26]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field144-bits16-23", + "name": "ECDSA_SIG_R[25]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field144-bits24-31", + "name": "ECDSA_SIG_R[24]", + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field148", + "name": "DICE_Certificate18", + "description": "DICE Certificate register", + "offset_int": "0x0148", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits0-7", + "name": "ECDSA_SIG_R[23]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field148-bits8-15", + "name": "ECDSA_SIG_R[22]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field148-bits16-23", + "name": "ECDSA_SIG_R[21]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field148-bits24-31", + "name": "ECDSA_SIG_R[20]", + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field14C", + "name": "DICE_Certificate19", + "description": "DICE Certificate register", + "offset_int": "0x014C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits0-7", + "name": "ECDSA_SIG_R[19]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field14C-bits8-15", + "name": "ECDSA_SIG_R[18]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field14C-bits16-23", + "name": "ECDSA_SIG_R[17]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field14C-bits24-31", + "name": "ECDSA_SIG_R[16]", + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field150", + "name": "DICE_Certificate20", + "description": "DICE Certificate register", + "offset_int": "0x0150", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits0-7", + "name": "ECDSA_SIG_R[15]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field150-bits8-15", + "name": "ECDSA_SIG_R[14]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field150-bits16-23", + "name": "ECDSA_SIG_R[13]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field150-bits24-31", + "name": "ECDSA_SIG_R[12]", + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field154", + "name": "DICE_Certificate21", + "description": "DICE Certificate register", + "offset_int": "0x0154", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits0-7", + "name": "ECDSA_SIG_R[11]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field154-bits8-15", + "name": "ECDSA_SIG_R[10]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field154-bits16-23", + "name": "ECDSA_SIG_R[9]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field154-bits24-31", + "name": "ECDSA_SIG_R[8]", + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field158", + "name": "DICE_Certificate22", + "description": "DICE Certificate register", + "offset_int": "0x0158", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits0-7", + "name": "ECDSA_SIG_R[7]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field158-bits8-15", + "name": "ECDSA_SIG_R[6]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field158-bits16-23", + "name": "ECDSA_SIG_R[5]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field158-bits24-31", + "name": "ECDSA_SIG_R[4]", + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field15C", + "name": "DICE_Certificate23", + "description": "DICE Certificate register", + "offset_int": "0x015C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits0-7", + "name": "ECDSA_SIG_R[3]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field15C-bits8-15", + "name": "ECDSA_SIG_R[2]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field15C-bits16-23", + "name": "ECDSA_SIG_R[1]", + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field15C-bits24-31", + "name": "ECDSA_SIG_R[0]", + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field160", + "name": "DICE_Certificate24", + "description": "DICE Certificate register", + "offset_int": "0x0160", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits0-7", + "name": "ECDSA_SIG_S[31]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field160-bits8-15", + "name": "ECDSA_SIG_S[30]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field160-bits16-23", + "name": "ECDSA_SIG_S[29]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field160-bits24-31", + "name": "ECDSA_SIG_S[28]", + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field164", + "name": "DICE_Certificate25", + "description": "DICE Certificate register", + "offset_int": "0x0164", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits0-7", + "name": "ECDSA_SIG_S[27]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field164-bits8-15", + "name": "ECDSA_SIG_S[26]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field164-bits16-23", + "name": "ECDSA_SIG_S[25]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field164-bits24-31", + "name": "ECDSA_SIG_S[24]", + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field168", + "name": "DICE_Certificate26", + "description": "DICE Certificate register", + "offset_int": "0x0168", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits0-7", + "name": "ECDSA_SIG_S[23]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field168-bits8-15", + "name": "ECDSA_SIG_S[22]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field168-bits16-23", + "name": "ECDSA_SIG_S[21]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field168-bits24-31", + "name": "ECDSA_SIG_S[20]", + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field16C", + "name": "DICE_Certificate27", + "description": "DICE Certificate register", + "offset_int": "0x016C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits0-7", + "name": "ECDSA_SIG_S[19]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field16C-bits8-15", + "name": "ECDSA_SIG_S[18]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field16C-bits16-23", + "name": "ECDSA_SIG_S[17]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field16C-bits24-31", + "name": "ECDSA_SIG_S[16]", + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field170", + "name": "DICE_Certificate28", + "description": "DICE Certificate register", + "offset_int": "0x0170", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits0-7", + "name": "ECDSA_SIG_S[15]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field170-bits8-15", + "name": "ECDSA_SIG_S[14]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field170-bits16-23", + "name": "ECDSA_SIG_S[13]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field170-bits24-31", + "name": "ECDSA_SIG_S[12]", + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field174", + "name": "DICE_Certificate29", + "description": "DICE Certificate register", + "offset_int": "0x0174", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits0-7", + "name": "ECDSA_SIG_S[11]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field174-bits8-15", + "name": "ECDSA_SIG_S[10]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field174-bits16-23", + "name": "ECDSA_SIG_S[9]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field174-bits24-31", + "name": "ECDSA_SIG_S[8]", + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field178", + "name": "DICE_Certificate30", + "description": "DICE Certificate register", + "offset_int": "0x0178", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits0-7", + "name": "ECDSA_SIG_S[7]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field178-bits8-15", + "name": "ECDSA_SIG_S[6]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field178-bits16-23", + "name": "ECDSA_SIG_S[5]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field178-bits24-31", + "name": "ECDSA_SIG_S[4]", + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field17C", + "name": "DICE_Certificate31", + "description": "DICE Certificate register", + "offset_int": "0x017C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits0-7", + "name": "ECDSA_SIG_S[3]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field17C-bits8-15", + "name": "ECDSA_SIG_S[2]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field17C-bits16-23", + "name": "ECDSA_SIG_S[1]", + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field17C-bits24-31", + "name": "ECDSA_SIG_S[0]", + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "Reserved00180", + "name": "Reserved 0x00180", + "description": "This field is reserved for internal use", + "offset_int": "0x0180", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00184", + "name": "Reserved 0x00184", + "description": "This field is reserved for internal use", + "offset_int": "0x0184", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00188", + "name": "Reserved 0x00188", + "description": "This field is reserved for internal use", + "offset_int": "0x0188", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0018C", + "name": "Reserved 0x0018C", + "description": "This field is reserved for internal use", + "offset_int": "0x018C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00190-001E8", + "description": "Reserved 00190-001E8" + }, + "registers": [ + { + "id": "Reserved00190", + "name": "Reserved 0x00190", + "description": "This field is reserved for internal use", + "offset_int": "0x0190", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00194", + "name": "Reserved 0x00194", + "description": "This field is reserved for internal use", + "offset_int": "0x0194", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00198", + "name": "Reserved 0x00198", + "description": "This field is reserved for internal use", + "offset_int": "0x0198", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0019C", + "name": "Reserved 0x0019C", + "description": "This field is reserved for internal use", + "offset_int": "0x019C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A0", + "name": "Reserved 0x001A0", + "description": "This field is reserved for internal use", + "offset_int": "0x01A0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A4", + "name": "Reserved 0x001A4", + "description": "This field is reserved for internal use", + "offset_int": "0x01A4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A8", + "name": "Reserved 0x001A8", + "description": "This field is reserved for internal use", + "offset_int": "0x01A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001AC", + "name": "Reserved 0x001AC", + "description": "This field is reserved for internal use", + "offset_int": "0x01AC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CRC32", + "description": "CRC32 fields" + }, + "registers": [ + { + "id": "field1EC", + "name": "CFPA_CRC32", + "description": "CRC32 of CFPA page data from offset . ROM updates this field along with CFPA_CMAC on subsequent boot after page update. ROM uses this field based on CMPA.LP_SEC_BOOT field option.", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F0", + "name": "CFPA0_CMAC0", + "description": "CMAC[31:0] of CFPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F4", + "name": "CFPA0_CMAC1", + "description": "CMAC[31:0] of CFPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F8", + "name": "CFPA0_CMAC2", + "description": "CMAC[31:0] of CFPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1FC", + "name": "CFPA0_CMAC3", + "description": "CMAC[31:0] of CFPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0" + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/pfr_cmpa.json new file mode 100644 index 0000000..f39dbc2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/pfr_cmpa.json @@ -0,0 +1,3393 @@ +{ + "cpu": "mcxn236", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0x59630000", + "bitfields": [ + { + "width": 2, + "id": "field000-bits0-1", + "name": "BOOT_SRC", + "description": "Primary boot source", + "values": [ + { + "name": "INTERNAL_FLASH_0B00", + "value": 0, + "description": "Internal flash" + }, + { + "name": "SECONDARY_BOOTLOADER", + "value": 2, + "description": "Secondary Boot loader in Bank1 IFR0 (32KB)" + }, + { + "name": "INTERNAL_FLASH_0B11", + "value": 3, + "description": "Internal flash" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_IF", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "SPI_SLAVE", + "value": 2, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_SLAVE", + "value": 3, + "description": "I2C slave ISP" + }, + { + "name": "USB0_HID", + "value": 4, + "description": "USB0 HID" + }, + { + "name": "USB1_HID", + "value": 5, + "description": "USB1 HID" + }, + { + "name": "CAN_ISP", + "value": 6, + "description": "CAN ISP" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field000-bits8-9", + "name": "REC_BOOT_SRC", + "description": "Recovery boot source", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Recovery boot disabled" + }, + { + "name": "XIP_IMAGE", + "value": 1, + "description": "XIP image in Bank1 IFR0 (32KB)" + }, + { + "name": "SB3_IMAGE", + "value": 2, + "description": "SB3 image in 1-bit SPI flash connected to FlexComm. FC7 used for this function by default" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "BOOT_SPEED", + "description": "Boot speed. Selects the core frequency and voltage to use during ROM execution", + "values": [ + { + "name": "FRO_48_MHZ", + "value": 0, + "description": "48 MHz FRO @ 1.0V" + }, + { + "name": "FRO_72_MHZ", + "value": 1, + "description": "72 MHz FRO @ 1.1V" + }, + { + "name": "FRO_144_MHZ", + "value": 2, + "description": "144 MHz FRO @ 1.2V" + }, + { + "name": "PLL_150_MHZ", + "value": 3, + "description": "150 MHz PLL @ 1.2V" + } + ] + }, + { + "width": 2 + }, + { + "width": 16, + "id": "field000-bits16-31", + "name": "CMPA_HEADER", + "deprecated_names": [ + "HEADER" + ], + "description": "CMPA Header marker should be set to 0x5963. After this header is set, all non-zero values will take effect; leaving all settings at 0xff will cause undefined behavior. It is recommended to set all values to 0x00 before setting the CMPA header value" + } + ] + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "FLASH_REMAP_SIZE", + "description": "Flash remap size. FLASH_REMAP_SIZE defines the size of the secondary boot image (the range of flash addresses that will be remapped)in internal flash, where remapped address end = (FLASH_REMAP_SIZE + 1)" + }, + { + "width": 3, + "id": "field004-bits5-7", + "name": "OEM_BANK1_IFR0_PROT", + "description": "Defines flash protection of Bank1_IFR0 area based on usage. The MBC module is used to configure the access protections as readable (R), writeable (W), and/or executable (X). The access protections can also be configured as locked (L) which prevents later application code from changing the access protection configuration. The final MBC protection bits used for Bank1_IFR0 depend on the boot mode configuration, the boot path that is selected and the device life cycle state. The access This field will only modify the MBC protection bits for the Bank1_IFR0 area after the life cycle is advanced out of Develop. In the Develop life cycle state this field has no effect. For example, if using the In-Field life cycle and Bank1_IFR0 is being used as a recovery boot image (REC_BOOT_SRC = 1) and OEM_BANK1_IFR0_PROT value = 5 is selected), then for a regular boot using the primary image Bank1_IFR0 is mapped to GLBAC2. If the primary boot fails, and the recovery path is taken, then Bank1_IFR0 is mapped to GLBAC4 instead. Note: Settings 5-7 should not be used if Bank1_IFR0 is used as OEM_SBL (BOOT_SRC = 2). In Develop life cycle - All settings: MBC protection bits set as RWXL = 1110 (GLBAC0) In other life cycles –", + "values": [ + { + "name": "OEM_ROM_RWXL_CODE", + "value": 0, + "description": "Not determined by ROM (MBC fields are modified by OEM code)" + }, + { + "name": "OEM_ROOT_RWXL_1010", + "value": 1, + "description": "Used as OEM Root of Trust image, in other words secondary boot loader (OEM_SBL). MBC protection bits set as RWXL = 1010. Updatable by OEM code later" + }, + { + "name": "OEM_SBL_RWXL_1011", + "value": 2, + "description": "Used as OEM_SBL. MBC protection bits set as RWXL = 1011" + }, + { + "name": "OEM_SBL_RWXL_0011", + "value": 3, + "description": "Used as OEM_SBL. MBC protection bits set as RWXL = 0011" + }, + { + "name": "OEM_REC_RWXL_1010", + "value": 4, + "description": "Used as OEM recovery boot image with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 1010 on ROM exiting to user image" + }, + { + "name": "OEM_REC_RWXL_1011", + "value": 5, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 1011 on ROM exiting to user image" + }, + { + "name": "OEM_REC_RWXL_0011", + "value": 6, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 0011 on ROM exiting to user image" + }, + { + "name": "OEM_REC_RWXL_0001", + "value": 7, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 0001 on ROM exiting to user image" + } + ] + }, + { + "width": 2, + "id": "field004-bits8-9", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0B10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0B11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0B10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0B11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_API_ENTRY", + "description": "Disable ISP mode entry through ROM API call. ISP mode can be entered through ROM API invocation", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0B10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0B11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits14-15", + "name": "ISP_FT_ENTRY", + "description": "Disable ISP mode entry through image authentication failure", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0B10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0B11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 16 + } + ] + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "Boot LED Status", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field008-bits0-7", + "name": "REC_BOOT_LED", + "description": "Assert on recovery boot. ROM drives the GPIO pin high, identified by this field whenever primary boot fails and fall through to recovery boot source. [4:0] GPIO Pin number. P0_0 and P0_1 are not supported. [7:5] GPIO port number. Only 0 - 4 ports are allowed. If this feature is not use then set this field to 0x00. If this feature is not use then set this field to 0x00" + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "ISP_BOOT_LED", + "description": "Assert on ISP fall through. ROM drives the GPIO pin high identified by this field whenever primary boot fails and execution falls through to ISP mode. [[4:0] GPIO Pin number. P0_0 and P0_1 are not supported. [7:5] GPIO port number. Only 0 - 4 ports are allowed. If this feature is not use then set this field to 0x00. If this feature is not use then set this field to 0x00" + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "BOOT_FAIL_LED", + "description": "Assert on fatal errors during boot. ROM drives the GPIO pin high identified by this field whenever primary boot fails due to fatal errors before locking-up/reset. [4:0] GPIO Pin number. P0_0 and P0_1 are not supported. [7:5] GPIO port number. Only 0 - 4 ports are allowed. If this feature is not use then set this field to 0x00. If this feature is not use then set this field to 0x00" + }, + { + "width": 8 + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "Boot Timers", + "offset_int": "0x000C", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout: ISP mode peripheral detection timeout value in seconds. If a non-zero value is program and peripheral activity is not detected within the number of seconds specified here, then the device will go to power down mode to conserve power" + }, + { + "width": 16, + "id": "field00C-bits16-31", + "name": "WDOG_TIMEOUT_COUNT", + "description": "WDOG timeout: Upper 16 bits of 24-bit count value in WWDT0_TC register Timeout value in seconds. The lower 8 bits of WWDT0_TC are set to 0. When a non-zero value is programmed in this field ROM configures the watch dog timer to reset the device on timeout before passing execution control to user code" + } + ] + }, + { + "id": "Reserved00010", + "name": "Reserved 0x00010", + "description": "This field is reserved for internal use", + "offset_int": "0x0010", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field018", + "name": "REC_SPI_FLASH_CFG0", + "description": "Recovery SPI Flash Configuration 0", + "offset_int": "0x0018", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field018-bits0-7", + "name": "REC_SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field018-bits8-11", + "name": "REC_SPI_SCK_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_SCK_PIN" + }, + { + "width": 4, + "id": "field018-bits12-15", + "name": "REC_SPI_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field018-bits16-23", + "name": "REC_SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field018-bits24-27", + "name": "REC_SPI_MOSI_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_MOSI_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field01C", + "name": "REC_SPI_FLASH_CFG1", + "description": "Recovery SPI Flash Configuration 1", + "offset_int": "0x001C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "REC_SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "REC_SPI_MISO_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_MISO_PIN" + }, + { + "width": 4 + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "REC_SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "REC_SPI_SSEL_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_SSEL_PIN" + }, + { + "width": 2, + "id": "field01C-bits28-29", + "name": "REC_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 2, + "id": "field01C-bits30-31", + "name": "REC_BOOT_PIN_CUST", + "description": "Use customer defined pins for 1-bit SPI recovery boot pins", + "values": [ + { + "name": "DEFAULT_ROM_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUSTOMER_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_ROM_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_ROM_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + } + ] + }, + { + "id": "field020", + "name": "ISP_UART_CFG", + "description": "ISP UART Configuration", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by UART_RX_PIN" + }, + { + "width": 4, + "id": "field020-bits12-15", + "name": "UART_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode" + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by UART_TX_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field024", + "name": "ISP_I2C_CFG", + "description": "ISP I2C Configuration", + "offset_int": "0x0024", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field024-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default I2C SCL ISP pin. Identifies the pin to be used as I2C_SCL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field024-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by I2C_SCL_PIN" + }, + { + "width": 4, + "id": "field024-bits12-15", + "name": "I2C_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for I2C ISP mode" + }, + { + "width": 8, + "id": "field024-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default I2C SDA ISP pin. Identifies the pin to be used as I2C_SDA pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field024-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by I2C_SDA_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field028", + "name": "ISP_CAN_CFG", + "description": "ISP CAN Configuration", + "offset_int": "0x0028", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field028-bits0-7", + "name": "CAN_RX_PIN", + "description": "Override default CAN RX ISP pin. Identifies the pin to be used as CAN_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field028-bits8-11", + "name": "CAN_RX_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by CAN_RX_PIN" + }, + { + "width": 4, + "id": "field028-bits12-15", + "name": "CAN_ISP_INST", + "description": "Identifies the instance used for CAN ISP mode" + }, + { + "width": 8, + "id": "field028-bits16-23", + "name": "CAN_TX_PIN", + "description": "Override default CAN TX ISP pin. Identifies the pin to be used as CAN_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field028-bits24-27", + "name": "CAN_TX_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by CAN_TX_PIN" + }, + { + "width": 4, + "id": "field028-bits28-31", + "name": "CAN_BAUD_RATE", + "description": "CAN baud rate. Baud rate configured during CAN ISP mode", + "values": [ + { + "name": "AUTO_DETECT", + "value": 0, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "KBPS_AUTO_0B0101", + "value": 5, + "description": "1000 kbps and auto baud detection" + }, + { + "name": "KBPS_AUTO_0B0110", + "value": 6, + "description": "1000 kbps and auto baud detection" + }, + { + "name": "KBPS_AUTO_0B0111", + "value": 7, + "description": "1000 kbps and auto baud detection" + }, + { + "name": "KBPS_AUTO_0B1000", + "value": 8, + "description": "1000 kbps and auto baud detection" + }, + { + "name": "KBPS_AUTO_0B1001", + "value": 9, + "description": "1000 kbps and auto baud detection" + }, + { + "name": "KBPS_AUTO_0B1010", + "value": 10, + "description": "1000 kbps and auto baud detection" + }, + { + "name": "KBPS_AUTO_0B1011", + "value": 11, + "description": "1000 kbps and auto baud detection" + }, + { + "name": "KBPS_AUTO_0B1100", + "value": 12, + "description": "1000 kbps and auto baud detection" + }, + { + "name": "KBPS_AUTO_0B1101", + "value": 13, + "description": "1000 kbps and auto baud detection" + }, + { + "name": "KBPS_AUTO_0B1110", + "value": 14, + "description": "1000 kbps and auto baud detection" + }, + { + "name": "KBPS_AUTO_0B1111", + "value": 15, + "description": "1000 kbps and auto baud detection" + } + ] + } + ] + }, + { + "id": "field02C", + "name": "ISP_SPI_CFG0", + "description": "ISP SPI Configuration 0", + "offset_int": "0x002C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field02C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field02C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_SCK_PIN" + }, + { + "width": 4, + "id": "field02C-bits12-15", + "name": "SPI_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field02C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field02C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_MOSI_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field030", + "name": "ISP_SPI_CFG1", + "description": "ISP SPI Configuration 1", + "offset_int": "0x0030", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field030-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field030-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_MISO_PIN" + }, + { + "width": 4 + }, + { + "width": 8, + "id": "field030-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field030-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_SSEL_PIN" + }, + { + "width": 2, + "id": "field030-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 2 + } + ] + }, + { + "id": "field034", + "name": "ISP_USB_ID", + "description": "ISP USB Identification", + "offset_int": "0x0034", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field034-bits0-15", + "name": "USB_Vendor_ID", + "description": "Customer defined USB vendor ID used during USB-ISP mode device enumeration" + }, + { + "width": 16, + "id": "field034-bits16-31", + "name": "USB_Product_ID", + "description": "Customer defined USB product ID used during USB-ISP mode device enumeration" + } + ] + }, + { + "id": "field038", + "name": "ISP_USB_CFG", + "description": "ISP USB Configuration", + "offset_int": "0x0038", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field038-bits0-7", + "name": "USBx_VBUS_PIN", + "description": "Override default USBx_VBUS_DETECT ISP pin. Identifies the pin to be used as USBx_VBUS detect pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field038-bits8-11", + "name": "USBx_VBUS_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by USBx_VBUS_PIN" + }, + { + "width": 4 + }, + { + "width": 3, + "id": "field038-bits16-18", + "name": "EXT_XTAL_CLK", + "description": "USB PHY input clock frequency. For USB high speed PHY external XTAL input is needed. This field specifies the frequency of XTAL used on board. • 000 - 24MHz input clock (Divide by 20) • 001 - 30MHz input clock (Divide by 16) • 010 - 32MHz input clock (Divide by 15) • 011 - Reserved • 100 - 20MHz input clock (Divide by 24) • 101 - 19.2MHz input clock (Divide by 25) • 110 - 16MHz input clock (Divide by 30) - Default option when CMPA is blank. • 111 - 12MHz input clock (Divide by 40)", + "values": [ + { + "name": "XTAL_24MHZ", + "value": 0, + "description": "24MHz input clock (Divide by 20)" + }, + { + "name": "XTAL_30MHZ", + "value": 1, + "description": "30MHz input clock (Divide by 16)" + }, + { + "name": "XTAL_32MHZ", + "value": 2, + "description": "32MHz input clock (Divide by 15)" + }, + { + "name": "XTAL_20MHZ", + "value": 4, + "description": "20MHz input clock (Divide by 24)" + }, + { + "name": "XTAL_19_2MHZ", + "value": 5, + "description": "19.2MHz input clock (Divide by 25)" + }, + { + "name": "XTAL_16MHZ", + "value": 6, + "description": "16MHz input clock (Divide by 30) - Default option when CMPA is blank" + }, + { + "name": "XTAL_12MHZ", + "value": 7, + "description": "12MHz input clock (Divide by 40)" + } + ] + }, + { + "width": 1, + "id": "field038-bit19", + "name": "PRE_DIV", + "description": "Enable Pre-divider. Needed to support 48MHz and other high speed crystals", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 12 + } + ] + }, + { + "id": "field03C", + "name": "ISP_MISC_CFG", + "description": "ISP Miscellaneous Configuration", + "offset_int": "0x003C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field03C-bits0-7", + "name": "I2C_SLAVE_ADDR", + "description": "I2C slave address A 7-bit Address used for selecting our device on shared I2C bus system. By default ROM uses 0x10 as slave address. If this address conflicts with another slave on board customer could use this field to override the address" + }, + { + "width": 14 + }, + { + "width": 2, + "id": "field03C-bits22-23", + "name": "ISP_USB_CUST", + "description": "Use customer defined GPIO for USB VBUS detect function during ISP mode", + "values": [ + { + "name": "DEDICATED", + "value": 0, + "description": "Use dedicated VBUS pins" + }, + { + "name": "USB0_VBUS", + "value": 1, + "description": "Customer defined GPIO for USB0_VBUS detect" + }, + { + "name": "USB1_VBUS", + "value": 2, + "description": "Customer defined GPIO for USB1_VBUS detect" + }, + { + "name": "VDD_USB", + "value": 3, + "description": "Use VDD_USB for VBUS presence. On board regulator should generate VDD_USB voltage using 5V input fo VBUS pin on connector" + } + ] + }, + { + "width": 2, + "id": "field03C-bits24-25", + "name": "ISP_CAN_CUST", + "description": "Use customer defined CAN ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field03C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field03C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field03C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + } + ] + }, + { + "id": "field040", + "name": "CC_SOCU_PIN", + "description": "Credential Constraints for SoC specific Use Pinned", + "offset_int": "0x0040", + "deprecated_names": [ + "DCFG_CC_SOCU_PIN" + ], + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field040-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field040-bit6", + "name": "ISP_CMD_EN", + "description": "ISP boot command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4 + }, + { + "width": 1, + "id": "field040-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Debug certificate can be used with all devices" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Debug certificate per device with matching UUID is needed" + } + ] + }, + { + "width": 16, + "id": "field040-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field044", + "name": "CC_SOCU_DFLT", + "description": "Credential Constraints for SoC specific Use Debug Filter", + "offset_int": "0x0044", + "deprecated_names": [ + "DCFG_CC_SOCU_DFLT" + ], + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field044-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit1", + "name": "DBGEN", + "description": "Non Secure debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field044-bit6", + "name": "ISP_CMD_EN", + "description": "ISP command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit8", + "name": "ME_CMD_EN", + "description": "Mass erase flash command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 5 + }, + { + "width": 16, + "id": "field044-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field048", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0048", + "default_value_int": "0", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field048-bits16-31", + "name": "VENDOR_USAGE", + "description": "Vendor Usage [31:16]. Upper 16 bits of vendor usage field defined in DAP. Lower 16-bits come from customer field area (CFPA.DBG_REVOKE_VU)" + } + ] + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field050", + "name": "SECURE_BOOT_CFG", + "description": "Secure Boot Configuration", + "offset_int": "0x0050", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field050-bits0-1", + "name": "SEC_BOOT_EN", + "description": "Secure boot enforcement. This field defines the minimum image verification procedure (CRC32, CMAC, ECDSA sign). The Image type field in header indicates the type of verification data (checksum or signature) included in it. Note: Plain < CRC32 < CMAC < ECDSA", + "values": [ + { + "name": "ALL_IMAGES", + "value": 0, + "description": "All Image types are allowed" + }, + { + "name": "CRC32_IMAGES", + "value": 1, + "description": "Only CRC32 or signed (CMAC or ECDSA) images are allowed" + }, + { + "name": "SIGNED_IMAGES", + "value": 2, + "description": "Only Signed (CMAC or ECDSA) images are allowed" + }, + { + "name": "ECDSA_SIGNED", + "value": 3, + "description": "Only ECDSA signed images are allowed" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field050-bits3-4", + "name": "LP_SEC_BOOT", + "description": "Secure boot option for low-power wake from power-down and deep-powerdown. For CFPA/CMPA do CRC check always", + "values": [ + { + "name": "COLD_BOOT", + "value": 0, + "description": "Same as cold boot" + }, + { + "name": "CHECK_CRC32", + "value": 1, + "description": "CRC check for CFPA/CMPA & CRC32 check of active image" + }, + { + "name": "CHECK_JUMP", + "value": 2, + "description": "CRC check for CFPA/CMPA & jump to vector address specified in CFPA" + }, + { + "name": "CMAC_CHECK", + "value": 3, + "description": "CRC check for CFPA/CMPA & CMAC check of active image" + } + ] + }, + { + "width": 3 + }, + { + "width": 2, + "id": "field050-bits8-9", + "name": "ENF_CNSA", + "description": "Enforce CNSA suite approved algorithms for secure boot, secure update and debug authentication. Note, CMAC image authentication is only allowed in 2b'00 setting", + "values": [ + { + "name": "ALL_ALLOWED_0B00", + "value": 0, + "description": "All algorithm allowed" + }, + { + "name": "LIMITED_0B01", + "value": 1, + "description": "384 keys, SHA384 & AES256 algorithms are used" + }, + { + "name": "LIMITED_0B10", + "value": 2, + "description": "384 keys, SHA384 & AES256 algorithms are used" + }, + { + "name": "LIMITED_0B11", + "value": 3, + "description": "384 keys, SHA384 & AES256 algorithms are used" + } + ] + }, + { + "width": 2, + "id": "field050-bits10-11", + "name": "ENF_TZM_PRESET", + "description": "Enforce TrustZone-M mode", + "values": [ + { + "name": "IGNORE_0B00", + "value": 0, + "description": "Ignored" + }, + { + "name": "ENFORCE_0B01", + "value": 1, + "description": "Enforce preset TZM data in image manifest" + }, + { + "name": "ENFORCE_0B10", + "value": 2, + "description": "Enforce preset TZM data in image manifest" + }, + { + "name": "ENFORCE_0B11", + "value": 3, + "description": "Enforce preset TZM data in image manifest" + } + ] + }, + { + "width": 2, + "id": "field050-bits12-13", + "name": "ITRC_ZEROIZE", + "description": "RAM zeroize on ITRC event. Zeroize long-term storage RAM (RAMA) on subsequent boot when Intrusion and Tamper control signals an intrusion event (ITRC_OUT3). Note, when ITRC is re-configured in application then ITRC_OUT4 (CHIP_RESET) should be triggered with at least same events as ITRC_OUT3 (RAM_ZEROIZE)", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "PKC_RAM_ON_ITRC", + "value": 1, + "description": "Always Zeroize PKC RAM on ITRC event only" + }, + { + "name": "PKC_RAMA_ON_ITRC", + "value": 2, + "description": "Zeroize PKC & RAMA on ITRC event only" + }, + { + "name": "PKC_RAMA_ALL_RESET", + "value": 3, + "description": "Always Zeroize PKC & RAMA on all reset boot" + } + ] + }, + { + "width": 2, + "id": "field050-bits14-15", + "name": "ACTIVE_IMG_PROT", + "description": "Protection of active image. This field defines protection of flash area occupied by the active image. Only applicable to internal flash", + "values": [ + { + "name": "FLASH_ACL_PROTECTION", + "value": 0, + "description": "Protection is defined using the CFPA FLASH_ACL settings" + }, + { + "name": "WITH_STICKY_LOCK", + "value": 1, + "description": "Write protect active image area with sticky lock. GLBAC2 is used. FLASH_ACL settings are ignored" + }, + { + "name": "NO_STICKY_LOCK", + "value": 2, + "description": "Write protect active image area without sticky lock. GLBAC4 is used. FLASH_ACL settings are ignored" + }, + { + "name": "XOM_PROTECTION", + "value": 3, + "description": "XOM protect active image area with sticky lock. GLBAC6 is used. FLASH_ACL settings are ignored" + } + ] + }, + { + "width": 2, + "id": "field050-bits16-17", + "name": "FIPS_SHA_STEN", + "description": "Enable self-test for SHA2 block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits18-19", + "name": "FIPS_AES_STEN", + "description": "Enable self-test for AES block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits20-21", + "name": "FIPS_ECDSA_STEN", + "description": "Enable self-test for ECDSA block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits22-23", + "name": "FIPS_DRBG_STEN", + "description": "Enable self-test for DRBG block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits24-25", + "name": "FIPS_CMAC_STEN", + "description": "Enable self-test for CMAC block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits26-27", + "name": "FIPS_KDF_STEN", + "description": "Enable self-test for KDF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits28-29", + "name": "FIPS_PUF_STEN", + "description": "Enable self-test for PUF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "cycle" + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "field054", + "name": "RoTK_USAGE", + "description": "Root of Trust Key Usage", + "offset_int": "0x0054", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field054-bits0-2", + "name": "RoTK0_Usage", + "description": "RoT key 0 usage properties", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA" + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field054-bits3-5", + "name": "RoTK1_Usage", + "description": "RoT key 1 usage properties", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA" + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field054-bits6-8", + "name": "RoTK2_Usage", + "description": "RoT key 2 usage properties", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA" + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field054-bits9-11", + "name": "RoTK3_Usage", + "description": "RoT key 3 usage properties", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA" + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 1, + "id": "field054-bit12", + "name": "SKIP_DICE", + "description": "Skip DICE computation", + "values": [ + { + "name": "ENABLE_DICE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_DICE", + "value": 1, + "description": "Disable DICE" + } + ] + }, + { + "width": 1, + "id": "field054-bit13", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area (IFR1) containing specific part configuration data defined during chip manufacturing process in DICE computation", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 1, + "id": "field054-bit14", + "name": "DICE_INC_CUST_CFG", + "description": "Include data from CMPA page (512 bytes) in DICE computation", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field054-bits16-17", + "name": "REG0_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 0. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Erase check is disabled" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Erase check is disabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Erase check is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Erase check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits18-19", + "name": "REG1_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 1. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Erase check is disabled" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Erase check is disabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Erase check is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Erase check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits20-21", + "name": "REG2_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 2. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Erase check is disabled" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Erase check is disabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Erase check is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Erase check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits22-23", + "name": "REG3_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 3. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Erase check is disabled" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Erase check is disabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Erase check is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Erase check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits24-25", + "name": "NPX_LOCK_CTX0", + "description": "Lock on-chip flash NPX PRINCE context 0 settings. Note: when locking a region recommendation is to also enable erase checking using the REG0_ERASE_CHECK_EN field", + "values": [ + { + "name": "NOT_LOCKED_0B00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0B01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field054-bits26-27", + "name": "NPX_LOCK_CTX1", + "description": "Lock on-chip flash NPX PRINCE context 1 settings. Note: when locking a region recommendation is to also enable erase checking using the REG1_ERASE_CHECK_EN field", + "values": [ + { + "name": "NOT_LOCKED_0B00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0B01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field054-bits28-29", + "name": "NPX_LOCK_CTX2", + "description": "Lock on-chip flash NPX PRINCE context 2 settings. Note: when locking a region recommendation is to also enable erase checking using the REG2_ERASE_CHECK_EN field", + "values": [ + { + "name": "NOT_LOCKED_0B00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0B01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field054-bits30-31", + "name": "NPX_LOCK_CTX3", + "description": "Lock on-chip flash NPX PRINCE context 3 settings. Note: when locking a region recommendation is to also enable erase checking using the REG3_ERASE_CHECK_EN field", + "values": [ + { + "name": "NOT_LOCKED_0B00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0B01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B11", + "value": 3, + "description": "Region is locked" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00058-0005C", + "description": "Reserved 00058-0005C" + }, + "registers": [ + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field060", + "name": "ROTKH0", + "description": "Root of Trust Key Hash 0", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "ROTKH1", + "description": "Root of Trust Key Hash 1", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field068", + "name": "ROTKH2", + "description": "Root of Trust Key Hash 2", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field06C", + "name": "ROTKH3", + "description": "Root of Trust Key Hash 3", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field070", + "name": "ROTKH4", + "description": "Root of Trust Key Hash 4", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field074", + "name": "ROTKH5", + "description": "Root of Trust Key Hash 5", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field078", + "name": "ROTKH6", + "description": "Root of Trust Key Hash 6", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field07C", + "name": "ROTKH7", + "description": "Root of Trust Key Hash 7", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field080", + "name": "ROTKH8", + "description": "Root of Trust Key Hash 8", + "offset_int": "0x0080", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "ROTKH9", + "description": "Root of Trust Key Hash 9", + "offset_int": "0x0084", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "ROTKH10", + "description": "Root of Trust Key Hash 10", + "offset_int": "0x0088", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "ROTKH11", + "description": "Root of Trust Key Hash 11", + "offset_int": "0x008C", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "NPX_CTX", + "description": "NPX_CTX fields" + }, + "registers": [ + { + "id": "field090", + "name": "NPX_CTX0_WD0", + "description": "Bitmap mask for NPX Prince context 0 (sectors", + "offset_int": "0x0090", + "default_value_int": "0" + }, + { + "id": "Reserved00094", + "name": "Reserved 0x00094", + "description": "This field is reserved for internal use", + "offset_int": "0x0094", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field098", + "name": "NPX_CTX1_WD0", + "description": "Bitmap mask for NPX Prince context 1 (sectors", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "Reserved0009C", + "name": "Reserved 0x0009C", + "description": "This field is reserved for internal use", + "offset_int": "0x009C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "NPX_CTX2_WD0", + "description": "Bitmap mask for NPX Prince context 2 (sectors", + "offset_int": "0x00A0", + "default_value_int": "0" + }, + { + "id": "Reserved000A4", + "name": "Reserved 0x000A4", + "description": "This field is reserved for internal use", + "offset_int": "0x00A4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field0A8", + "name": "NPX_CTX3_WD0", + "description": "Bitmap mask for NPX Prince context 3 (sectors", + "offset_int": "0x00A8", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 000AC-000EC", + "description": "Reserved 000AC-000EC" + }, + "registers": [ + { + "id": "Reserved000AC", + "name": "Reserved 0x000AC", + "description": "This field is reserved for internal use", + "offset_int": "0x00AC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B0", + "name": "Reserved 0x000B0", + "description": "This field is reserved for internal use", + "offset_int": "0x00B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B4", + "name": "Reserved 0x000B4", + "description": "This field is reserved for internal use", + "offset_int": "0x00B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000B8", + "name": "Reserved 0x000B8", + "description": "This field is reserved for internal use", + "offset_int": "0x00B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000BC", + "name": "Reserved 0x000BC", + "description": "This field is reserved for internal use", + "offset_int": "0x00BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C0", + "name": "Reserved 0x000C0", + "description": "This field is reserved for internal use", + "offset_int": "0x00C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C4", + "name": "Reserved 0x000C4", + "description": "This field is reserved for internal use", + "offset_int": "0x00C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000C8", + "name": "Reserved 0x000C8", + "description": "This field is reserved for internal use", + "offset_int": "0x00C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000CC", + "name": "Reserved 0x000CC", + "description": "This field is reserved for internal use", + "offset_int": "0x00CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D0", + "name": "Reserved 0x000D0", + "description": "This field is reserved for internal use", + "offset_int": "0x00D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D4", + "name": "Reserved 0x000D4", + "description": "This field is reserved for internal use", + "offset_int": "0x00D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000D8", + "name": "Reserved 0x000D8", + "description": "This field is reserved for internal use", + "offset_int": "0x00D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000DC", + "name": "Reserved 0x000DC", + "description": "This field is reserved for internal use", + "offset_int": "0x00DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E0", + "name": "Reserved 0x000E0", + "description": "This field is reserved for internal use", + "offset_int": "0x00E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E4", + "name": "Reserved 0x000E4", + "description": "This field is reserved for internal use", + "offset_int": "0x00E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000E8", + "name": "Reserved 0x000E8", + "description": "This field is reserved for internal use", + "offset_int": "0x00E8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000EC", + "name": "Reserved 0x000EC", + "description": "This field is reserved for internal use", + "offset_int": "0x00EC", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "REC_IMG", + "description": "Recovery image extended sectors configuration" + }, + "registers": [ + { + "id": "field0F0", + "name": "REC_IMG_EXT0", + "description": "Bitmap mask to indicate sectors included in recovery image (sectors .Recovery image is programmed in BANK1_IFR0. But if the image size is more than 32KB, this field can be used to indicate sectors to include in recovery image.ROM will configure flash protection setting for these sectors the same as BANK1_IFR0 before exiting to user code. The protection settings are managed through CMPA.OEM_BANK1_IFR0_PROT. The lower 8 sectors are excluded from this mask to avoid conflicts with dual image boot feature.", + "offset_int": "0x00F0", + "default_value_int": "0", + "bitfields": [ + { + "width": 8 + }, + { + "width": 1, + "id": "field0F0-bit8", + "name": "REC_IMG_EXT0_SEC8", + "description": "REC_IMG_EXT0_SEC set protection for memory in range 0x40000:0x47FFF" + }, + { + "width": 1, + "id": "field0F0-bit9", + "name": "REC_IMG_EXT0_SEC9", + "description": "REC_IMG_EXT0_SEC9 set protection for memory in range 0x48000:0x4FFFF" + }, + { + "width": 1, + "id": "field0F0-bit10", + "name": "REC_IMG_EXT0_SEC10", + "description": "REC_IMG_EXT0_SEC10 set protection for memory in range 0x50000:0x57FFF" + }, + { + "width": 1, + "id": "field0F0-bit11", + "name": "REC_IMG_EXT0_SEC11", + "description": "REC_IMG_EXT0_SEC11 set protection for memory in range 0x58000:0x5FFFF" + }, + { + "width": 1, + "id": "field0F0-bit12", + "name": "REC_IMG_EXT0_SEC12", + "description": "REC_IMG_EXT0_SEC12 set protection for memory in range 0x60000:0x67FFF" + }, + { + "width": 1, + "id": "field0F0-bit13", + "name": "REC_IMG_EXT0_SEC13", + "description": "REC_IMG_EXT0_SEC13 set protection for memory in range 0x68000:0x6FFFF" + }, + { + "width": 1, + "id": "field0F0-bit14", + "name": "REC_IMG_EXT0_SEC14", + "description": "REC_IMG_EXT0_SEC14 set protection for memory in range 0x70000:0x77FFF" + }, + { + "width": 1, + "id": "field0F0-bit15", + "name": "REC_IMG_EXT0_SEC15", + "description": "REC_IMG_EXT0_SEC15 set protection for memory in range 0x78000:0x7FFFF" + }, + { + "width": 1, + "id": "field0F0-bit16", + "name": "REC_IMG_EXT0_SEC16", + "description": "REC_IMG_EXT0_SEC16 set protection for memory in range 0x80000:0x87FFF" + }, + { + "width": 1, + "id": "field0F0-bit17", + "name": "REC_IMG_EXT0_SEC17", + "description": "REC_IMG_EXT0_SEC17 set protection for memory in range 0x88000:0x8FFFF" + }, + { + "width": 1, + "id": "field0F0-bit18", + "name": "REC_IMG_EXT0_SEC18", + "description": "REC_IMG_EXT0_SEC18 set protection for memory in range 0x90000:0x97FFF" + }, + { + "width": 1, + "id": "field0F0-bit19", + "name": "REC_IMG_EXT0_SEC19", + "description": "REC_IMG_EXT0_SEC19 set protection for memory in range 0x98000:0x9FFFF" + }, + { + "width": 1, + "id": "field0F0-bit20", + "name": "REC_IMG_EXT0_SEC20", + "description": "REC_IMG_EXT0_SEC20 set protection for memory in range 0xA0000:0xA7FFF" + }, + { + "width": 1, + "id": "field0F0-bit21", + "name": "REC_IMG_EXT0_SEC21", + "description": "REC_IMG_EXT0_SEC21 set protection for memory in range 0xA8000:0xAFFFF" + }, + { + "width": 1, + "id": "field0F0-bit22", + "name": "REC_IMG_EXT0_SEC22", + "description": "REC_IMG_EXT0_SEC22 set protection for memory in range 0xB0000:0xB7FFF" + }, + { + "width": 1, + "id": "field0F0-bit23", + "name": "REC_IMG_EXT0_SEC23", + "description": "REC_IMG_EXT0_SEC23 set protection for memory in range 0xB8000:0xBFFFF" + }, + { + "width": 1, + "id": "field0F0-bit24", + "name": "REC_IMG_EXT0_SEC24", + "description": "REC_IMG_EXT0_SEC24 set protection for memory in range 0xC0000:0xC7FFF" + }, + { + "width": 1, + "id": "field0F0-bit25", + "name": "REC_IMG_EXT0_SEC25", + "description": "REC_IMG_EXT0_SEC25 set protection for memory in range 0xC8000:0xCFFFF" + }, + { + "width": 1, + "id": "field0F0-bit26", + "name": "REC_IMG_EXT0_SEC26", + "description": "REC_IMG_EXT0_SEC26 set protection for memory in range 0xD0000:0xD7FFF" + }, + { + "width": 1, + "id": "field0F0-bit27", + "name": "REC_IMG_EXT0_SEC27", + "description": "REC_IMG_EXT0_SEC27 set protection for memory in range 0xD8000:0xDFFFF" + }, + { + "width": 1, + "id": "field0F0-bit28", + "name": "REC_IMG_EXT0_SEC28", + "description": "REC_IMG_EXT0_SEC28 set protection for memory in range 0xE0000:0xE7FFF" + }, + { + "width": 1, + "id": "field0F0-bit29", + "name": "REC_IMG_EXT0_SEC29", + "description": "REC_IMG_EXT0_SEC29 set protection for memory in range 0xE8000:0xEFFFF" + }, + { + "width": 1, + "id": "field0F0-bit30", + "name": "REC_IMG_EXT0_SEC30", + "description": "REC_IMG_EXT0_SEC30 set protection for memory in range 0xF0000:0xF7FFF" + }, + { + "width": 1, + "id": "field0F0-bit31", + "name": "REC_IMG_EXT0_SEC31", + "description": "REC_IMG_EXT0_SEC31 set protection for memory in range 0xF8000:0xFFFFF" + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 000F4-0011C", + "description": "Reserved 000F4-0011C" + }, + "registers": [ + { + "id": "Reserved000F4", + "name": "Reserved 0x000F4", + "description": "This field is reserved for internal use", + "offset_int": "0x00F4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00100", + "name": "Reserved 0x00100", + "description": "This field is reserved for internal use", + "offset_int": "0x0100", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00104", + "name": "Reserved 0x00104", + "description": "This field is reserved for internal use", + "offset_int": "0x0104", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00108", + "name": "Reserved 0x00108", + "description": "This field is reserved for internal use", + "offset_int": "0x0108", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00110", + "name": "Reserved 0x00110", + "description": "This field is reserved for internal use", + "offset_int": "0x0110", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field120", + "name": "QUICK_SET_GPIO_0", + "description": "Drive GPIO 0 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_0 and QUICK_CLR_GPIO_0 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0120", + "default_value_int": "0" + }, + { + "id": "field124", + "name": "QUICK_CLR_GPIO_0", + "description": "Drive GPIO 0 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_0 and QUICK_CLR_GPIO_0 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0124", + "default_value_int": "0" + }, + { + "id": "field128", + "name": "QUICK_SET_GPIO_1", + "description": "Drive GPIO 1 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_1 and QUICK_CLR_GPIO_1 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0128", + "default_value_int": "0" + }, + { + "id": "field12C", + "name": "QUICK_CLR_GPIO_1", + "description": "Drive GPIO 1 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_1 and QUICK_CLR_GPIO_1 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x012C", + "default_value_int": "0" + }, + { + "id": "field130", + "name": "QUICK_SET_GPIO_2", + "description": "Drive GPIO 2 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_2 and QUICK_CLR_GPIO_2 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0130", + "default_value_int": "0" + }, + { + "id": "field134", + "name": "QUICK_CLR_GPIO_2", + "description": "Drive GPIO 2 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_2 and QUICK_CLR_GPIO_2 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0134", + "default_value_int": "0" + }, + { + "id": "field138", + "name": "QUICK_SET_GPIO_3", + "description": "Drive GPIO 3 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_3 and QUICK_CLR_GPIO_3 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0138", + "default_value_int": "0" + }, + { + "id": "field13C", + "name": "QUICK_CLR_GPIO_3", + "description": "Drive GPIO 3 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_3 and QUICK_CLR_GPIO_3 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x013C", + "default_value_int": "0" + }, + { + "id": "field140", + "name": "QUICK_SET_GPIO_4", + "description": "Drive GPIO 4 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_4 and QUICK_CLR_GPIO_4 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0140", + "default_value_int": "0" + }, + { + "id": "field144", + "name": "QUICK_CLR_GPIO_4", + "description": "Drive GPIO 4 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_4 and QUICK_CLR_GPIO_4 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0144", + "default_value_int": "0" + }, + { + "id": "field148", + "name": "QUICK_SET_GPIO_5", + "description": "Drive GPIO 5 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_5 and QUICK_CLR_GPIO_5 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0148", + "default_value_int": "0" + }, + { + "id": "field14C", + "name": "QUICK_CLR_GPIO_5", + "description": "Drive GPIO 5 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_5 and QUICK_CLR_GPIO_5 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x014C", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00150-0015C", + "description": "Reserved 00150-0015C" + }, + "registers": [ + { + "id": "Reserved00150", + "name": "Reserved 0x00150", + "description": "This field is reserved for internal use", + "offset_int": "0x0150", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00154", + "name": "Reserved 0x00154", + "description": "This field is reserved for internal use", + "offset_int": "0x0154", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00158", + "name": "Reserved 0x00158", + "description": "This field is reserved for internal use", + "offset_int": "0x0158", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0015C", + "name": "Reserved 0x0015C", + "description": "This field is reserved for internal use", + "offset_int": "0x015C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CUST_MK_SK", + "description": "CUST_MK_SK key blob" + }, + "registers": [ + { + "id": "field160", + "name": "CUST_MK_SK0", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x0160", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB0" + ], + "default_value_int": "0" + }, + { + "id": "field164", + "name": "CUST_MK_SK1", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x0164", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB1" + ], + "default_value_int": "0" + }, + { + "id": "field168", + "name": "CUST_MK_SK2", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x0168", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB2" + ], + "default_value_int": "0" + }, + { + "id": "field16C", + "name": "CUST_MK_SK3", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x016C", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB3" + ], + "default_value_int": "0" + }, + { + "id": "field170", + "name": "CUST_MK_SK4", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x0170", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB4" + ], + "default_value_int": "0" + }, + { + "id": "field174", + "name": "CUST_MK_SK5", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x0174", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB5" + ], + "default_value_int": "0" + }, + { + "id": "field178", + "name": "CUST_MK_SK6", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x0178", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB6" + ], + "default_value_int": "0" + }, + { + "id": "field17C", + "name": "CUST_MK_SK7", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x017C", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB7" + ], + "default_value_int": "0" + }, + { + "id": "field180", + "name": "CUST_MK_SK8", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x0180", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB8" + ], + "default_value_int": "0" + }, + { + "id": "field184", + "name": "CUST_MK_SK9", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x0184", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB9" + ], + "default_value_int": "0" + }, + { + "id": "field188", + "name": "CUST_MK_SK10", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x0188", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB10" + ], + "default_value_int": "0" + }, + { + "id": "field18C", + "name": "CUST_MK_SK11", + "description": "CUST_MK_SK key blob 0", + "offset_int": "0x018C", + "deprecated_names": [ + "CUST_MK_SK_KEY_BLOB11" + ], + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00190-001E8", + "description": "Reserved 00190-001E8" + }, + "registers": [ + { + "id": "Reserved00190", + "name": "Reserved 0x00190", + "description": "This field is reserved for internal use", + "offset_int": "0x0190", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00194", + "name": "Reserved 0x00194", + "description": "This field is reserved for internal use", + "offset_int": "0x0194", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00198", + "name": "Reserved 0x00198", + "description": "This field is reserved for internal use", + "offset_int": "0x0198", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0019C", + "name": "Reserved 0x0019C", + "description": "This field is reserved for internal use", + "offset_int": "0x019C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A0", + "name": "Reserved 0x001A0", + "description": "This field is reserved for internal use", + "offset_int": "0x01A0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A4", + "name": "Reserved 0x001A4", + "description": "This field is reserved for internal use", + "offset_int": "0x01A4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A8", + "name": "Reserved 0x001A8", + "description": "This field is reserved for internal use", + "offset_int": "0x01A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001AC", + "name": "Reserved 0x001AC", + "description": "This field is reserved for internal use", + "offset_int": "0x01AC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CRC32", + "description": "CRC32 fields" + }, + "registers": [ + { + "id": "field1EC", + "name": "CMPA_CRC32", + "description": "CRC32 of CMPA page data from offset . ROM updates this field along with CMPA_CMAC. ROM uses this field based on CMPA.LP_SEC_BOOT field option.", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CMAC", + "description": "CMAC fields" + }, + "registers": [ + { + "id": "field1F0", + "name": "CMPA_CMAC0", + "description": "CMAC[31:0] of CMPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F4", + "name": "CMPA_CMAC1", + "description": "CMAC[31:0] of CMPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F8", + "name": "CMPA_CMAC2", + "description": "CMAC[31:0] of CMPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1FC", + "name": "CMPA_CMAC3", + "description": "CMAC[31:0] of CMPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0" + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/tz.json new file mode 100644 index 0000000..f0d63f3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn236/tz.json @@ -0,0 +1,1661 @@ +{ + "cpu": "mcxn236", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Start of block (tzm_magic)", + "description": "TrustZone register - Start of block (tzm_magic)", + "default_value_int": "0x4d2d5a54" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 3 (cm33_nvic_itns3)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 3 (cm33_nvic_itns3)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 4 (cm33_nvic_itns4)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 4 (cm33_nvic_itns4)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "Miscellaneous CM33 settings (cm33_misc_ctrl)", + "description": "TrustZone register - Miscellaneous CM33 settings (cm33_misc_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "CM33 Non-secure Access Control Register (cm33_nsacr)", + "description": "TrustZone register - CM33 Non-secure Access Control Register (cm33_nsacr)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "CM33 Coprocessor Power Control Register (cm33_cppwr)", + "description": "TrustZone register - CM33 Coprocessor Power Control Register (cm33_cppwr)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "CM33 Coprocessor Access Control Register (cm33_cpacr)", + "description": "TrustZone register - CM33 Coprocessor Access Control Register (cm33_cpacr)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Control Register (cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Control Register (cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register (cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 0 (flash00_mem_rule0)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 0 (flash00_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 1 (flash00_mem_rule1)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 1 (flash00_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 2 (flash00_mem_rule2)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 2 (flash00_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 3 (flash00_mem_rule3)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 3 (flash00_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "FLASH 02 Memory Rule Register (flash02_mem_rule)", + "description": "TrustZone register - FLASH 02 Memory Rule Register (flash02_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "FLASH 03 Memory Rule Register (flash03_mem_rule)", + "description": "TrustZone register - FLASH 03 Memory Rule Register (flash03_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "RAMX Memory Rule Register 0 (ramx_mem_rule0)", + "description": "TrustZone register - RAMX Memory Rule Register 0 (ramx_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "RAMX Memory Rule Register 1 (ramx_mem_rule1)", + "description": "TrustZone register - RAMX Memory Rule Register 1 (ramx_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "RAMX Memory Rule Register 2 (ramx_mem_rule2)", + "description": "TrustZone register - RAMX Memory Rule Register 2 (ramx_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "RAMX Memory Rule Register 3 (ramx_mem_rule3)", + "description": "TrustZone register - RAMX Memory Rule Register 3 (ramx_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "RAMA Memory Rule Register (rama_mem_rule)", + "description": "TrustZone register - RAMA Memory Rule Register (rama_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "RAMB Memory Rule Register (ramb_mem_rule)", + "description": "TrustZone register - RAMB Memory Rule Register (ramb_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "RAMC Memory Rule Register 0 (ramc_mem_rule0)", + "description": "TrustZone register - RAMC Memory Rule Register 0 (ramc_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "RAMC Memory Rule Register 1 (ramc_mem_rule1)", + "description": "TrustZone register - RAMC Memory Rule Register 1 (ramc_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "RAMD Memory Rule Register 0 (ramd_mem_rule0)", + "description": "TrustZone register - RAMD Memory Rule Register 0 (ramd_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "RAMD Memory Rule Register 1 (ramd_mem_rule1)", + "description": "TrustZone register - RAMD Memory Rule Register 1 (ramd_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "RAME Memory Rule Register 0 (rame_mem_rule0)", + "description": "TrustZone register - RAME Memory Rule Register 0 (rame_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "RAME Memory Rule Register 1 (rame_mem_rule1)", + "description": "TrustZone register - RAME Memory Rule Register 1 (rame_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 0 (apb_bridge0_mem_rule0)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 0 (apb_bridge0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 1 (apb_bridge0_mem_rule1)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 1 (apb_bridge0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 2 (apb_bridge0_mem_rule2)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 2 (apb_bridge0_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 3 (apb_bridge0_mem_rule3)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 3 (apb_bridge0_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "APB Bridge 1 Memory Rule Register 0 (apb_bridge1_mem_rule0)", + "description": "TrustZone register - APB Bridge 1 Memory Rule Register 0 (apb_bridge1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "APB Bridge 1 Memory Rule Register 1 (apb_bridge1_mem_rule1)", + "description": "TrustZone register - APB Bridge 1 Memory Rule Register 1 (apb_bridge1_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "APB Bridge 1 Memory Rule Register 2 (apb_bridge1_mem_rule2)", + "description": "TrustZone register - APB Bridge 1 Memory Rule Register 2 (apb_bridge1_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 2 (aips_bridge0_mem_rule2)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 2 (aips_bridge0_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 3 (aips_bridge0_mem_rule3)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 3 (aips_bridge0_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "AHB Peripherals 0 Memory Rule Register 0 (ahb_periph0_mem_rule0)", + "description": "TrustZone register - AHB Peripherals 0 Memory Rule Register 0 (ahb_periph0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "AHB Peripherals 0 Memory Rule Register 1 (ahb_periph0_mem_rule1)", + "description": "TrustZone register - AHB Peripherals 0 Memory Rule Register 1 (ahb_periph0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "AHB Peripherals 0 Memory Rule Register 2 (ahb_periph0_mem_rule2)", + "description": "TrustZone register - AHB Peripherals 0 Memory Rule Register 2 (ahb_periph0_mem_rule2)", + "default_value_int": "0x3" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "AIPS BRIDGE 1 Peripherals Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 1 Peripherals Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "AIPS BRIDGE 1 Peripherals Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 1 Peripherals Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "AHB Peripherals 1 Memory Rule Register 0 (ahb_periph1_mem_rule0)", + "description": "TrustZone register - AHB Peripherals 1 Memory Rule Register 0 (ahb_periph1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "AHB Peripherals 1 Memory Rule Register 1 (ahb_periph1_mem_rule1)", + "description": "TrustZone register - AHB Peripherals 1 Memory Rule Register 1 (ahb_periph1_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "AHB Peripherals 1 Memory Rule Register 2 (ahb_periph1_mem_rule2)", + "description": "TrustZone register - AHB Peripherals 1 Memory Rule Register 2 (ahb_periph1_mem_rule2)", + "default_value_int": "0x3" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "AIPS BRIDGE 2 Peripherals Memory Rule Register 0 (aips_bridge2_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 2 Peripherals Memory Rule Register 0 (aips_bridge2_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "AIPS BRIDGE 2 Peripherals Memory Rule Register 1 (aips_bridge2_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 2 Peripherals Memory Rule Register 1 (aips_bridge2_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 0 (aips_bridge3_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 0 (aips_bridge3_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 1 (aips_bridge3_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 1 (aips_bridge3_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 2 (aips_bridge3_mem_rule2)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 2 (aips_bridge3_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 3 (aips_bridge3_mem_rule3)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 3 (aips_bridge3_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 0 (aips_bridge4_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 0 (aips_bridge4_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 1 (aips_bridge4_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 1 (aips_bridge4_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 2 (aips_bridge4_mem_rule2)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 2 (aips_bridge4_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 3 (aips_bridge4_mem_rule3)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 3 (aips_bridge4_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "AHB Secure Controller Peripheral Rule Register (ahb_sec_ctrl_periph_rule)", + "description": "TrustZone register - AHB Secure Controller Peripheral Rule Register (ahb_sec_ctrl_periph_rule)", + "default_value_int": "0x3333" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "Secure GPIO Mask Register 0 (sec_gpio_mask0)", + "description": "TrustZone register - Secure GPIO Mask Register 0 (sec_gpio_mask0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "Secure GPIO Mask Register 1 (sec_gpio_mask1)", + "description": "TrustZone register - Secure GPIO Mask Register 1 (sec_gpio_mask1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "Secure GPIO Mask Lock Register 2 (sec_mask_lock)", + "description": "TrustZone register - Secure GPIO Mask Lock Register 2 (sec_mask_lock)", + "default_value_int": "0x2aaaaa" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "CM33 Lock Control Register 0 (cm33_lock_reg0)", + "description": "TrustZone register - CM33 Lock Control Register 0 (cm33_lock_reg0)", + "default_value_int": "0x800002aa" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0x86aa" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0x86aa" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "MBC Global Access Control Register 0 (mbc0_memn_glbac0)", + "description": "TrustZone register - MBC Global Access Control Register 0 (mbc0_memn_glbac0)", + "default_value_int": "0x7777" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "MBC Global Access Control Register 4 (mbc0_memn_glbac4)", + "description": "TrustZone register - MBC Global Access Control Register 4 (mbc0_memn_glbac4)", + "default_value_int": "0x5500" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "MBC Global Access Control Register 5 (mbc0_memn_glbac5)", + "description": "TrustZone register - MBC Global Access Control Register 5 (mbc0_memn_glbac5)", + "default_value_int": "0x1100" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 0 (mbc0_dom0_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC Memory Block Configuration Word 0 (mbc0_dom0_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 1 (mbc0_dom0_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC Memory Block Configuration Word 1 (mbc0_dom0_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 2 (mbc0_dom0_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC Memory Block Configuration Word 2 (mbc0_dom0_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 3 (mbc0_dom0_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC Memory Block Configuration Word 3 (mbc0_dom0_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_1)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_1)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_1)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_1)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_2)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_2)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_2)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_2)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_2)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_2)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_2)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_2)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_2)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_2)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "GPIO0 Pin Control Non-Secure (gpio0_pcns)", + "description": "TrustZone register - GPIO0 Pin Control Non-Secure (gpio0_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "GPIO0 Pin Control Non-Privilege (gpio0_pcnp)", + "description": "TrustZone register - GPIO0 Pin Control Non-Privilege (gpio0_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "GPIO0 Interrupt Control Non-Secure (gpio0_icns)", + "description": "TrustZone register - GPIO0 Interrupt Control Non-Secure (gpio0_icns)", + "default_value_int": "0x0" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "GPIO0 Interrupt Control Non-Privilege (gpio0_icnp)", + "description": "TrustZone register - GPIO0 Interrupt Control Non-Privilege (gpio0_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "GPIO0 Lock Register (gpio0_lock)", + "description": "TrustZone register - GPIO0 Lock Register (gpio0_lock)", + "default_value_int": "0x0" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "GPIO1 Pin Control Non-Secure (gpio1_pcns)", + "description": "TrustZone register - GPIO1 Pin Control Non-Secure (gpio1_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "GPIO1 Pin Control Non-Privilege (gpio1_pcnp)", + "description": "TrustZone register - GPIO1 Pin Control Non-Privilege (gpio1_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "GPIO1 Interrupt Control Non-Secure (gpio1_icns)", + "description": "TrustZone register - GPIO1 Interrupt Control Non-Secure (gpio1_icns)", + "default_value_int": "0x0" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "GPIO1 Interrupt Control Non-Privilege (gpio1_icnp)", + "description": "TrustZone register - GPIO1 Interrupt Control Non-Privilege (gpio1_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "GPIO1 Lock Register (gpio1_lock)", + "description": "TrustZone register - GPIO1 Lock Register (gpio1_lock)", + "default_value_int": "0x0" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "GPIO2 Pin Control Non-Secure (gpio2_pcns)", + "description": "TrustZone register - GPIO2 Pin Control Non-Secure (gpio2_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "GPIO2 Pin Control Non-Privilege (gpio2_pcnp)", + "description": "TrustZone register - GPIO2 Pin Control Non-Privilege (gpio2_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "GPIO2 Interrupt Control Non-Secure (gpio2_icns)", + "description": "TrustZone register - GPIO2 Interrupt Control Non-Secure (gpio2_icns)", + "default_value_int": "0x0" + }, + { + "id": "field2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "GPIO2 Interrupt Control Non-Privilege (gpio2_icnp)", + "description": "TrustZone register - GPIO2 Interrupt Control Non-Privilege (gpio2_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "GPIO2 Lock Register (gpio2_lock)", + "description": "TrustZone register - GPIO2 Lock Register (gpio2_lock)", + "default_value_int": "0x0" + }, + { + "id": "field2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "GPIO3 Pin Control Non-Secure (gpio3_pcns)", + "description": "TrustZone register - GPIO3 Pin Control Non-Secure (gpio3_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field300", + "offset_int": "0x300", + "reg_width": 32, + "name": "GPIO3 Pin Control Non-Privilege(gpio3_pcnp)", + "description": "TrustZone register - GPIO3 Pin Control Non-Privilege(gpio3_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field304", + "offset_int": "0x304", + "reg_width": 32, + "name": "GPIO3 Interrupt Control Non-Secure (gpio3_icns)", + "description": "TrustZone register - GPIO3 Interrupt Control Non-Secure (gpio3_icns)", + "default_value_int": "0x0" + }, + { + "id": "field308", + "offset_int": "0x308", + "reg_width": 32, + "name": "GPIO3 Interrupt Control Non-Privilege (gpio3_icnp)", + "description": "TrustZone register - GPIO3 Interrupt Control Non-Privilege (gpio3_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field30C", + "offset_int": "0x30c", + "reg_width": 32, + "name": "GPIO3 Lock Register (gpio3_lock)", + "description": "TrustZone register - GPIO3 Lock Register (gpio3_lock)", + "default_value_int": "0x0" + }, + { + "id": "field310", + "offset_int": "0x310", + "reg_width": 32, + "name": "GPIO4 Pin Control Non-Secure (gpio4_pcns)", + "description": "TrustZone register - GPIO4 Pin Control Non-Secure (gpio4_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field314", + "offset_int": "0x314", + "reg_width": 32, + "name": "GPIO4 Pin Control Non-Privilege (gpio4_pcnp)", + "description": "TrustZone register - GPIO4 Pin Control Non-Privilege (gpio4_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field318", + "offset_int": "0x318", + "reg_width": 32, + "name": "GPIO4 Interrupt Control Non-Secure (gpio4_icns)", + "description": "TrustZone register - GPIO4 Interrupt Control Non-Secure (gpio4_icns)", + "default_value_int": "0x0" + }, + { + "id": "field31C", + "offset_int": "0x31c", + "reg_width": 32, + "name": "GPIO4 Interrupt Control Non-Privilege (gpio4_icnp)", + "description": "TrustZone register - GPIO4 Interrupt Control Non-Privilege (gpio4_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field320", + "offset_int": "0x320", + "reg_width": 32, + "name": "GPIO4 Lock Register (gpio4_lock)", + "description": "TrustZone register - GPIO4 Lock Register (gpio4_lock)", + "default_value_int": "0x0" + }, + { + "id": "field324", + "offset_int": "0x324", + "reg_width": 32, + "name": "GPIO5 Pin Control Non-Secure (gpio5_pcns)", + "description": "TrustZone register - GPIO5 Pin Control Non-Secure (gpio5_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field328", + "offset_int": "0x328", + "reg_width": 32, + "name": "GPIO5 Pin Control Non-Privilege (gpio5_pcnp)", + "description": "TrustZone register - GPIO5 Pin Control Non-Privilege (gpio5_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field32C", + "offset_int": "0x32c", + "reg_width": 32, + "name": "GPIO5 Interrupt Control Non-Secure (gpio5_icns)", + "description": "TrustZone register - GPIO5 Interrupt Control Non-Secure (gpio5_icns)", + "default_value_int": "0x0" + }, + { + "id": "field330", + "offset_int": "0x330", + "reg_width": 32, + "name": "GPIO5 Interrupt Control Non-Privilege (gpio5_icnp)", + "description": "TrustZone register - GPIO5 Interrupt Control Non-Privilege (gpio5_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field334", + "offset_int": "0x334", + "reg_width": 32, + "name": "GPIO5 Lock Register (gpio5_lock)", + "description": "TrustZone register - GPIO5 Lock Register (gpio5_lock)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn247/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn247/database.yaml new file mode 100644 index 0000000..f80b10f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn247/database.yaml @@ -0,0 +1,6 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxn947 + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn526/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn526/database.yaml new file mode 100644 index 0000000..f80b10f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn526/database.yaml @@ -0,0 +1,6 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxn947 + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn527/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn527/database.yaml new file mode 100644 index 0000000..f80b10f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn527/database.yaml @@ -0,0 +1,6 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxn947 + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn536/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn536/database.yaml new file mode 100644 index 0000000..f80b10f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn536/database.yaml @@ -0,0 +1,6 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxn947 + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn537/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn537/database.yaml new file mode 100644 index 0000000..f80b10f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn537/database.yaml @@ -0,0 +1,6 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxn947 + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn546/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn546/database.yaml new file mode 100644 index 0000000..f2c5725 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn546/database.yaml @@ -0,0 +1,8 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxn946 + +info: + spsdk_predecessor_name: mcxn54x diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn547/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn547/database.yaml new file mode 100644 index 0000000..e8384af --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn547/database.yaml @@ -0,0 +1,8 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxn947 + +info: + spsdk_predecessor_name: mcxn54x diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/database.yaml new file mode 100644 index 0000000..2913cdc --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/database.yaml @@ -0,0 +1,396 @@ +# Copyright 2025-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + +latest: a0 + +# General MCU information +info: + use_in_doc: True + purpose: MCX Series + # Web page of MCU representative + web: https://www.nxp.com + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x100000" + external: false + sram: + start_int: "0x20000000" + size_int: "0x40000" + external: false + non_xip_type: int_ram + isp: + rom: + protocol: mboot + interfaces: ["usb", "uart", "spi", "i2c", "can"] + usb: + - vid: 0x1FC9 + pid: 0x014F + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2002_8000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_ahab_v2_48_bytes" + + ahab: &ahab_common_config + sub_features: [certificate_supported] + container_types: [2] # Supported container types + containers_max_cnt: 1 + image_types_mapping: {} + certificate_type: 32bit_fuse_version # The certificate with full 32-bit fuse version support + allow_empty_hash: False # Some chips allow empty image hash in OEM Open LC + core_ids: + CORTEX_M33: [1, "cortex-m33", "Cortex M33 - Boot core"] + + valid_offset_minimal_alignment: 4 + extra_containers: [] + image_hash_types: [sha384] # Supported image hash types + iae_has_signed_offsets: True # There is a special cases when the Container is after images + + # ======== DAT section ======== + dat: + socc: 0x4D430007 # SOCC identification + auth_beacon_length: 2 # The length in bytes of authentication beacon + based_on_ele: True # Flag if the implementation of DAT is based on EdgeLock Enclave + dat_is_using_sha256_always: True # Flag to indicate SHA256 is always used for DAT + used_beacons_on_ele: True # The DAT ELE implementation is using certificate and authentication beacons + vu_instead_fuse_version: True # The DAT ELE implementation is using Vendor usage name instead of Fuse Version + ele_cnt_version: 2 # DAT container is based on New AHAB container version 2 + sub_features: ["ele_pqc", "ssf_cert"] + dac_rot_type: ecc_pqc_sha521_truncated # The Dac packet is using truncated SHA512 hash and in case of 2 signatures + test_address: 0x2002_8000 + dmbox_ap_ix: 2 + command_delays: # Additional standard command delays per individual DM commands [seconds] + ERASE_FLASH: 0.5 + DBG_AUTH_START: 1.0 + # Memory addresses for SSF certificate data + ssf_cert: + ecdsa_puk_address: 0x3002_2000 # Address for ECDSA PUK + ecdsa_puk_size: 0x60 # Size for ECDSA PUK (96 bytes) + hybrid_puk_address: 0x3002_2100 # Address for Hybrid PUK + hybrid_puk_size: 0xA80 # Size for Hybrid PUK (2688 bytes) + ahab: *ahab_common_config + + # ======== Fuses description section ======== + fuses: + grouped_registers: + - uid: rkth + name: RKTH + width: 384 + config_as_hexstring: true + reversed: true + alternative_widths: [256] + description: + ROTKH field is compounded by 12 32-bit fields and contains Root key + table hash. For ECC P-256 keys RKTH is a 32-byte SHA-256 digest of four + SHA-256 digests computed over four OEM public keys (OEM has four + private-public key pairs in case one of its private keys becomes + compromised) or in case that ECC P-384 keys are used, RKTH is 48-byte + SHA-384 digest. + sub_regs: + - fuse11 + - fuse12 + - fuse13 + - fuse14 + - fuse15 + - fuse16 + - fuse17 + - fuse18 + - fuse19 + - fuse20 + - fuse21 + - fuse22 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneV2 + - Mbi_MixinLoadAddress + - Mbi_MixinFwVersionHiddenImageVersion + - Mbi_ExportMixinAppTrustZoneV2 + plain_ram: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneV2 + - Mbi_MixinLoadAddress + - Mbi_MixinFwVersionHiddenImageVersion + - Mbi_ExportMixinAppTrustZoneV2 + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneV2 + - Mbi_MixinLoadAddress + - Mbi_MixinFwVersionHiddenImageVersion + - Mbi_ExportMixinAppTrustZoneV2 + - Mbi_ExportMixinCrcSignEnd + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZoneV2 + - Mbi_MixinFwVersionHiddenImageVersion + - Mbi_ExportMixinAppTrustZoneV2 + - Mbi_ExportMixinCrcSignEnd + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinTrustZoneV2 + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinFwVersionHiddenImageVersion + - Mbi_MixinAppCrc + - Mbi_MixinAhab + - Mbi_ExportMixinAppTzCrcAhab + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + plain: plain_ram + crc: crc_ram + ahab: + <<: *ahab_common_config + oem_images_max_cnt: 3 + image_types: + application: + CRC_CHECK: [0x01, crc_check, CRC fast data check] + EXECUTABLE: [0x03, executable, Executable Image] + TZ_DATA: [0x05, tz_data, Trust Zone Preset data] + + # ======== Secure binary v4.0 section ======== + sb40: + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - copy + - loadHashLocking + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + - reset + + variable_block_length: true + commands_block_length: 4096 + supports_compression: true + + ahab: + <<: *ahab_common_config + oem_images_max_cnt: 1 + image_types: + application: + SB40_DESCRIPTOR: [0x0f, secure_binary_4, Secure binary 4.0] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 + + # ======== TrustZone section ======== + tz: + version: v2 # TrustZone configuration version v2.0 + + # ======== DICE configuration ======== + dice: + buffer_address: 0x2000_2000 + buffer_size: 0x1000 + rkth_length: 64 + rkth_truncated_length: 48 + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsmSB4] + key_blob_offset: 0 + key_blob_command_position: -1 + key_wraps_version: 2 + devbuff_wrapped_cust_mk_sk_key_size: 0x30 + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - copy + - loadHashLocking + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + - reset + + # ======== PFR section ======== + pfr: + sub_features: [ifr, cmpa, cfpa] + ifr: + address: 0x10000000 + reg_spec: ifr0.json + reg_spec_modification: + field100: # CFPA IMG_CMAC_CACHE + reverse: True + config_as_hexstring: True + field110: # CFPA NBU_IMG_CMAC_CACHE + reverse: True + config_as_hexstring: True + field260: # CMPA ROTKH + reverse: True + config_as_hexstring: True + field290: # CMPA CUST_MK_SK_KEY_BLOB + reverse: True + config_as_hexstring: True + field2c0: # CMPA PQC_ROTKH + reverse: True + config_as_hexstring: True + cmpa: + address: 0x100_4000 + reg_spec: pfr_cmpa.json + reg_spec_modification: + field260: # CMPA ROTKH + reverse: True + config_as_hexstring: True + field290: # CMPA CUST_MK_SK_KEY_BLOB + reverse: True + config_as_hexstring: True + field2c0: # CMPA PQC_ROTKH + reverse: True + config_as_hexstring: True + grouped_registers: + - uid: cmpa_rotkh + name: ROTKH + width: 384 + reversed: true + config_as_hexstring: true + alternative_widths: [256] + description: + ROTKH field is compounded by 12 32-bit fields and contains Root key table hash. + Root of Trust Key Hash is SHA256 or SHA384 of RoTK public. Hash algorithm is selected + based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). + Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates + container and signed boot image based on CMPA.RoTKx_Usage. + sub_regs: + - field060 + - field064 + - field068 + - field06C + - field070 + - field074 + - field078 + - field07C + - field080 + - field084 + - field088 + - field08C + - uid: cmpa_keyblob + name: CUST_MK_SK_KEY_BLOB + width: 384 + reversed: false + config_as_hexstring: true + description: CUST_MK_SK key blob. + CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. + CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. + To store this key into CMPA, SB_STORE_KEY command should be used. + sub_regs: + - field160 + - field164 + - field168 + - field16C + - field170 + - field174 + - field178 + - field17C + - field180 + - field184 + - field188 + - field18C + - uid: cmpa_pqc_rotkh + name: PQC_ROTKH + width: 384 + reversed: true + config_as_hexstring: true + description: + PQC_ROTKH field is compounded by 12 32-bit fields and contains Root key table hash. + Root of Trust Key Hash is SHA256 or SHA384 of RoTK public. Same RoTKs and RoTKTH values are shared between debug authentication, SB4 firmware updates + container and signed boot image based on CMPA.RoTKx_Usage. + sub_regs: + - field190 + - field194 + - field198 + - field19C + - field1A0 + - field1A4 + - field1A8 + - field1AC + - field1B0 + - field1B4 + - field1B8 + - field1BC + computed_fields: + field040: # DCFG_CC_SOCU_PIN + field040-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field044: # DCFG_CC_SOCU_DFLT + field044-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + + cfpa: + address: 0x100_0000 + reg_spec: pfr_cfpa.json + reg_spec_modification: + field0E0: # CFPA IMG0 CMAC + reverse: True + config_as_hexstring: True + field0F0: # CFPA IMG1 CMAC + reverse: True + config_as_hexstring: True + field1F0: # CFPA CMAC + reverse: True + config_as_hexstring: True + computed_fields: + field000: # HEADER + field000-bits8-15: pfr_reg_inverse_lower_8_bits # INV_CFPA_LC_STATE + field020: # DBG_REVOKE_VU + field020-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field024: # DCFG_CC_SOCU_NS_PIN + field024-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field028: # DCFG_CC_SOCU_NS_DFLT + field028-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + + # ======== EL2GO TP section ======== + el2go_tp: + el2go_name: MCXN + prov_method: dispatch_fw + dispatch_method: sb_only + use_additional_data: true + fw_read_address: 0x2000_0100 + ignored_otp_ranges: [11, 22] + validation_method: max_count=16;max_total_size=16384 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/fuses.json new file mode 100644 index 0000000..f56dff9 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/fuses.json @@ -0,0 +1,3186 @@ +{ + "cpu": "mcxn556s", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Boot configuration locks" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCKS", + "description": "Boot configuration locks", + "index_int": "0", + "bitfields": [ + { + "width": 9 + }, + { + "width": 3, + "id": "fuse0-bits-9-11", + "name": "BOOT_CFG_LOCK[2:0]", + "description": "Boot config Lock\nConfigures the locking of EFUSE bits in the address range 800 to 1439.\n• bit 0: When set, blocks programming.\n• bit 1: Reserved\n• bit 2: Reserved.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "PRINCE_CFG_LOCK[2:0]", + "description": "Prince Config Lock\nConfigures the locking of EFUSE bits in the address range 1440 to 1951.\n• bit 0: When set, blocks programming.\n• bit 1: Reserved\n• bit 2: Reserved", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse0-bits-18-20", + "name": "CUST_LOCK0[2:0]", + "description": "CUST Lock 0\nConfigures the locking of EFUSE bits in the address range 2080 to 2207.\n• bit 0: When set, blocks programming.\n• bit 1: Reserved\n• bit 2: Reserved", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-21-23", + "name": "CUST_LOCK1[2:0]", + "description": "CUST Lock 1\nConfigures the locking of EFUSE bits in the address range 2208 to 2335.\n• bit 0: When set, blocks programming.\n• bit 1: Reserved\n• bit 2: Reserved", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-24-26", + "name": "CUST_LOCK2[2:0]", + "description": "CUST Lock 2\nConfigures the locking of EFUSE bits in the address range 2336 to 2463.\n• bit 0: When set, blocks programming.\n• bit 1: Reserved\n• bit 2: Reserved", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-27-29", + "name": "CUST_LOCK3[2:0]", + "description": "CUST Lock 3\nConfigures the locking of EFUSE bits in the address range 2464 to 2719.\n• bit 0: When set, blocks programming.\n• bit 1: Reserved\n• bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 2 + } + ] + } + ] + }, + { + "group": { + "name": "Configurations", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse1", + "name": "LIFE_CYCLE", + "description": "Boot configuration", + "index_int": "0x0001", + "bitfields": [ + { + "width": 8, + "id": "fuse1-bits-0-7", + "name": "LIFECYCLE[7:0]", + "description": "Life cycle state.\nThis field can be used to advance life cycle state.\n\nBelow are the allowed values for this field. Use of other values may lead to bricked state.", + "values": [ + { + "name": "BLANK", + "value": 0, + "description": "Blank state" + }, + { + "name": "DEVELOP", + "value": 3, + "description": "Develop state" + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Develop 2 state" + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field state" + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "In-field locked state" + }, + { + "name": "FIELD_RETURN_OEM", + "value": 31, + "description": "Field return OEM state" + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "Failure Analysis state" + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked state" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-8", + "name": "NIDEN_dis", + "description": "Non-secure non-invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-9", + "name": "DBGEN_dis", + "description": "Non-secure invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-10", + "name": "SPIDEN_dis", + "description": "Secure invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-11", + "name": "SPNIDEN_dis", + "description": "Secure non-invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-12", + "name": "CPU1_NIDEN_dis", + "description": "CPU1 non-invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-13", + "name": "CPU1_DBG_dis", + "description": "CPU1 invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-14", + "name": "DSP_DBGEN_dis", + "description": "DSP debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-15", + "name": "ISP_CMD_dis", + "description": "Enter ISP Debug mailbox command.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-16", + "name": "FA_CMD_dis", + "description": "Set FA mode Debug mailbox command.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-17", + "name": "ME_CMD_dis", + "description": "Mass erase Debug mailbox command.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-18", + "name": "UUID_CHECK_ENF", + "description": "Enforce UUID checking during debug authentication.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Enable", + "value": 1, + "description": "Always enabled." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse1-bit-20", + "name": "RoTK0_dis", + "description": "Revoke Root of Trust key 0.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-21", + "name": "RoTK1_dis", + "description": "Revoke Root of Trust key 1.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-22", + "name": "RoTK2_dis", + "description": "Revoke Root of Trust key 2.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-23", + "name": "RoTK3_dis", + "description": "Revoke Root of Trust key 3.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 8, + "id": "fuse1-bits-24-31", + "name": "LIFECYCLE_DP[7:0]", + "description": "Duplicate of the LIFECYCLE fuse value. Should be same with LIFECYCLE.\n\nBelow are the allowed values for this field. Use of other values may lead to bricked state.", + "values": [ + { + "name": "BLANK", + "value": 0, + "description": "Blank state" + }, + { + "name": "DEVELOP", + "value": 3, + "description": "Develop state" + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Develop 2 state" + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field state" + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "In-field locked state" + }, + { + "name": "FIELD_RETURN_OEM", + "value": 31, + "description": "Field return OEM state" + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "Failure Analysis state" + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked state" + } + ] + } + ] + }, + { + "id": "fuse2", + "name": "KEY_REVOKE", + "description": "Boot configuration", + "index_int": "0x0002", + "bitfields": [ + { + "width": 8, + "id": "fuse2-bits-0-7", + "name": "DBG_KEY_REVOKE[7:0]", + "description": "Debug key revoke.\nThis field is combined with\nCFPA.DBG_REVOKE_VU and CMPA.VENDOR_USAGE fields to form a 32-bit value which is compared with vendor usage field in debug credential certificate. Only if the values match debug access is granted.\nCC_VENDOR_USAGE = { CMPA.VENDOR_USAGE[31:16],\nCFPA.DBG_REVOKE_VU[15:8],\n(CFPA.DBG_REVOKE_VU[7:0] | OTP.DBG_KEY_REVOKE[7:0]) };" + }, + { + "width": 8, + "id": "fuse2-bits-8-15", + "name": "IMAGE_KEY_REVOKE[7:0]", + "description": "Image signing key revoke.\nThis field is combined with\nCFPA.IMAGE_KEY_REVOKE field to form a 32-bit value which is compared with IskCertificate.constraints field during image authentication. If the values don't match image authentication fails.\n\nISK_CONSTRAINT[31:0] = {CFPA.IMAGE_KEY_REVOKE_VU[23:0], OTP.IMAGE_KEY_REVOKE[7:0] };" + }, + { + "width": 4 + }, + { + "width": 1, + "id": "fuse2-bit-20", + "name": "PUF_ENROLL_DIS", + "description": "Block PUF enrollment.", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "Allow PUF enroll operation" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable PUF enroll operation" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse2-bit-23", + "name": "DIS_NXP_FW", + "description": "Block NXP signed SB3 loading.", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "Allow NXP signed SB3 FW" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable NXP signed SB3 FW" + } + ] + }, + { + "width": 8 + } + ] + }, + { + "id": "fuse3", + "name": "BOOT_CFG", + "description": "Boot configuration", + "index_int": "0x0003", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse3-bit-0", + "name": "Boot_FlexSPI_Dis", + "description": "ROM code will not manage these fields, but SDK driver can manage these.\n\nFlexSPI boot disable.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "FlexSPI boot is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "FlexSPI boot is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-1", + "name": "Boot_flash_Dis", + "description": "Boot from internal flash.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Boot from internal flash enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "Boot from internal flash disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-2", + "name": "Boot_IFR0_Dis", + "description": "Boot from IFR0 (as SBL).", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Boot from IFR0 enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "Boot from IFR0 disabled." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse3-bit-5", + "name": "Rec_Boot_SPI_Dis", + "description": "Recovery boot from external 1-bit SPI flash connected to FlexComm ports.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-6", + "name": "Rec_Boot_IFR0_Dis", + "description": "Recovery boot from IFR0 area( 0x0100_8000 to 0x0100_FFFF).", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-7", + "name": "PinSel_SPI_Rec_Boot_Dis", + "description": "Disable logic related to forcing recovery boot based on ISP pin state.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-8", + "name": "ISP_UART_Dis", + "description": "Disable UART interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "UART ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "UART ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-9", + "name": "ISP_I2C_Dis", + "description": "Disable I2C interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "I2C ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "I2C ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-10", + "name": "ISP_SPI_Dis", + "description": "Disable SPI interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "SPI ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "SPI ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-11", + "name": "ISP_USB0_Dis", + "description": "Disable USB0 interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "USB0 ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "USB0 ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-12", + "name": "ISP_USB1_Dis", + "description": "Disable USB1 interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "USB1 ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "USB1 ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-13", + "name": "ISP_CAN_Dis", + "description": "Disable CAN interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "CAN ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "CAN ISP is disabled." + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "fuse3-bits-16-17", + "name": "ISP_DISABLE", + "description": "Disable ISP mode entry points\nISP mode can be entered through pin assertion, debug mailbox command, image verification failure and ROM API invocation", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "All entry point allowed." + }, + { + "name": "Disable_ISP_pin", + "value": 1, + "description": "Entry by ISP Pin assertion disabled." + }, + { + "name": "Disable", + "value": 2, + "description": "Entry by ISP Pin assertion and debug mailbox command disabled." + }, + { + "name": "Disable_0", + "value": 3, + "description": "Entry by ISP Pin assertion and debug mailbox command disabled." + } + ] + }, + { + "width": 4 + }, + { + "width": 2, + "id": "fuse3-bits-22-23", + "name": "BOOT_SPEED[1:0]", + "description": "Boot speed. Selects the core frequency and voltage to use during ROM execution.", + "values": [ + { + "name": "CMPA_BOOT_SPEED", + "value": 0, + "description": "Use value from CMPA.BOOT_SPEED" + }, + { + "name": "72MHz FRO", + "value": 1, + "description": "72 MHz FRO @ 1.1V" + }, + { + "name": "144MHz FRO", + "value": 2, + "description": "144 MHz FRO @ 1.2V" + }, + { + "name": "150MHz PLL", + "value": 3, + "description": "150 MHz PLL @ 1.2V" + } + ] + }, + { + "width": 5, + "id": "fuse3-bits-24-28", + "name": "FLASH_REMAP_SZ[4:0]", + "description": "Flash remap size.\nFLASH_REMAP_SZ defines the size of the secondary boot image\n(the range of flash addresses that will be remapped)in internal flash, where remapped\naddress end = (FLASH_REMAP_SZ + 1) * 32 KB. For example, if FLASH_REMAP_SZ = 2,\nthen the first 96KB of addresses will be remapped to flash bank1 instead of flash bank0\nwhen remap is active. Set this field to 0 if you do not want to use the flash remap feature" + }, + { + "width": 3, + "id": "fuse3-bits-29-31", + "name": "OEM_BANK1_IFR0_USAGE", + "description": "Defines flash protection of Bank1_IFR0 area based on usage.\n\nNote, if the SBL / Recovery image size is more than IFR0 size of 32KB then sectors from user flash can be associated for extended image size using CMPA.REC_IMG_EXT0/1.", + "values": [ + { + "name": "000", + "value": 0, + "description": "Not determined by ROM (MBC fields are modified by OEM code)" + }, + { + "name": "001", + "value": 1, + "description": "Used as OEM Root of Trust image, in other words secondary boot loader (OEM_SBL). MBC protection bits set as RWXL = 1010. Updatable by OEM code later." + }, + { + "name": "010", + "value": 2, + "description": "Used as OEM_SBL. MBC protection bits set as RWXL = 1011." + }, + { + "name": "011", + "value": 3, + "description": "Used as OEM_SBL. MBC protection bits set as RWXL = 0011." + }, + { + "name": "100", + "value": 4, + "description": "Used as OEM recovery boot image with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 1010 on ROM exiting to user image." + }, + { + "name": "101", + "value": 5, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 1011 on ROM exiting to user image." + }, + { + "name": "110", + "value": 6, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 0011 on ROM exiting to user image." + }, + { + "name": "111", + "value": 7, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 0001 on ROM exiting to user image." + } + ] + } + ] + }, + { + "id": "fuse4", + "name": "FLEXSPI_BOOT_CFG0", + "description": "Boot configuration", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse4-bit-0", + "name": "FLEXSPI_AUTO_PROBE_EN", + "description": "Quad/Octal-SPI flash auto probe feature enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 3, + "id": "fuse4-bits-1-3", + "name": "FLEXSPI_PROBE_TYPE", + "description": "Quad/Octal-SPI flash probe type.\nNote, this field is used when FLEXSPI_AUTO_PROBE_EN is set.", + "values": [ + { + "name": "QuadSPI NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "Macronix Octal", + "value": 1, + "description": "Macronix Octal FLASH" + }, + { + "name": "Micron Octal", + "value": 2, + "description": "Micron Octal FLASH" + }, + { + "name": "Adesto Octal", + "value": 3, + "description": "Adesto Octal FLASH" + } + ] + }, + { + "width": 3, + "id": "fuse4-bits-4-6", + "name": "FLEXSPI_FLASH_TYPE", + "description": "Define typical Serial NOR Flash types\n\n\nThis field is always used irrespective of FLEXSPI_AUTO_PROBE_EN value.", + "values": [ + { + "name": "QSPI_ADDR_3B", + "value": 0, + "description": "QSPI_ADDR_3B" + }, + { + "name": "HYPER_1V8", + "value": 2, + "description": "HYPER_1V8" + }, + { + "name": "HYPER_3V3", + "value": 3, + "description": "HYPER_3V3" + }, + { + "name": "FlexSPI_DDR_MXIC", + "value": 4, + "description": "FlexSPI_DDR_MXIC" + }, + { + "name": "FlexSPI_DDR_MICRON", + "value": 5, + "description": "FlexSPI_DDR_MICRON" + } + ] + }, + { + "width": 4, + "id": "fuse4-bits-7-10", + "name": "FLEXSPI_DUMMY_CYCLES[3:0]", + "description": "Quad/Octal-SPI dummy cycles for read command.\n\nIf a non-zero value is programmed in this field, then the value is used to override the default number of dummy cycles for a fast read command read from the serial flash’s SFDP information.\n\nNote: this field is only used if FLEXSPI_AUTO_PROBE_EN is set." + }, + { + "width": 3, + "id": "fuse4-bits-11-13", + "name": "FLEXSPI_FREQUENCY", + "description": "Q/O-SPI flash interface frequency.\nNote, this field is used when FLEXSPI_AUTO_PROBE_EN is set.", + "values": [ + { + "name": "75Mhz", + "value": 0, + "description": "75Mhz" + }, + { + "name": "60Mhz", + "value": 1, + "description": "60Mhz" + }, + { + "name": "50Mhz", + "value": 2, + "description": "50Mhz" + }, + { + "name": "100Mhz", + "value": 3, + "description": "100Mhz" + } + ] + }, + { + "width": 1, + "id": "fuse4-bit-14", + "name": "FLEXSPI_RESET_ENABLE", + "description": "Use O/QSPI_RESET_PIN to reset the flash device.", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "NO_RESET(O/QSPI device reset pin is not connected or available.)" + }, + { + "name": "EN_RESET", + "value": 1, + "description": "EN_RESET(O/QSPI device reset pin is connected to a GPIO (QSPI_RESET_PIN).)" + } + ] + }, + { + "width": 3, + "id": "fuse4-bits-15-17", + "name": "FLEXSPI_RESET_GPIO_PORT[2:0]", + "description": "When FLEXSPI_RESET_ENABLE = 1, this field determines the GPIO port number to use for O/QSPI reset function." + }, + { + "width": 5, + "id": "fuse4-bits-18-22", + "name": "FLEXSPI_RESET_GPIO_PIN", + "description": "GPIO pin number to use for O/QSPI reset function." + }, + { + "width": 2, + "id": "fuse4-bits-23-24", + "name": "FLEXSPI_HOLD_TIME[1:0]", + "description": "Delay after reset before accessing Quad/Octal-SPI flash devices.\nNote, for POR in addition to this wait time FLEXSPI_PWR_HOLD_TIME is added.", + "values": [ + { + "name": "500us", + "value": 0, + "description": "Wait for 500 microseconds." + }, + { + "name": "1ms", + "value": 1, + "description": "Wait for 1 millisecond." + }, + { + "name": "3ms", + "value": 2, + "description": "Wait for 3 milliseconds." + }, + { + "name": "10ms", + "value": 3, + "description": "Wait for 10 milliseconds." + } + ] + }, + { + "width": 4, + "id": "fuse4-bits-25-28", + "name": "FLEXSPI_PWR_HOLD_TIME", + "description": "Delay after POR before accessing Quad/Octal-SPI flash devices in addition to delay defined by FLEXSPI_HOLD TIME field.", + "values": [ + { + "name": "No delay", + "value": 0, + "description": "No delay" + }, + { + "name": "100us", + "value": 1, + "description": "Waits additional 100 microseconds." + }, + { + "name": "500us", + "value": 2, + "description": "Waits additional 500 microseconds." + }, + { + "name": "1ms", + "value": 3, + "description": "Waits additional 1 millisecond." + }, + { + "name": "10ms", + "value": 4, + "description": "Waits additional 10 milliseconds." + }, + { + "name": "20ms", + "value": 5, + "description": "Waits additional 20 milliseconds." + }, + { + "name": "40ms", + "value": 6, + "description": "Waits additional 40 milliseconds." + }, + { + "name": "60ms", + "value": 7, + "description": "Waits additional 60 milliseconds." + }, + { + "name": "80ms", + "value": 8, + "description": "Waits additional 80 milliseconds." + }, + { + "name": "100ms", + "value": 9, + "description": "Waits additional 100 milliseconds." + }, + { + "name": "120ms", + "value": 10, + "description": "Waits additional 120 milliseconds." + }, + { + "name": "140ms", + "value": 11, + "description": "Waits additional 140 milliseconds." + }, + { + "name": "160ms", + "value": 12, + "description": "Waits additional 160 milliseconds." + }, + { + "name": "180ms", + "value": 13, + "description": "Waits additional 180 milliseconds." + }, + { + "name": "200ms", + "value": 14, + "description": "Waits additional 200 milliseconds." + }, + { + "name": "220ms", + "value": 15, + "description": "Waits additional 220 milliseconds." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse4-bit-31", + "name": "PORT_SEL", + "description": "Defines which FlexSPI portA/B is used for boot.", + "values": [ + { + "name": "Port A", + "value": 0, + "description": "Port A" + }, + { + "name": "Port B", + "value": 1, + "description": "Port B" + } + ] + } + ] + }, + { + "id": "fuse5", + "name": "FLEXSPI_BOOT_CFG1", + "description": "Boot configuration", + "index_int": "0x0005", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 7, + "id": "fuse5-bits-0-6", + "name": "FLEXSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for Flash read sampling via DQS (either internal loopback or external DQS).\nThe value provided here is loaded into the FLEXSPIn_DLLnCR." + }, + { + "width": 10, + "id": "fuse5-bits-7-16", + "name": "FLEXSPI_IMAGE_OFFSET[9:0]", + "description": "Any offset in memory mapped FlexSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset.\nThis allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset.\n\nFlLEXSPI_IMAGE_OFFSET field specifies the offset location of the second image. FLEXSPI_REMAP_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped.\nIf this field is left blank boot ROM will not enable FlexSPI remap feature.\n\nThe physical flash offset is computed as below:\n\nphysical offset = FLEXSPI_IMAGE_OFFSET * 256KByte;" + }, + { + "width": 4, + "id": "fuse5-bits-17-20", + "name": "FLEXSPI_REMAP_IMAGE_SIZE", + "description": "Any offset in memory mapped FlexSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. FLEXSPI_IMAGE_OFFSET field specifies the offset location of second image. FLEXSPI_REMAP_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped.\n\n\nb'0000 Remap size = FLEXSPI_IMAGE_OFFSET * 256KByte;\" SIZE_OFFSET \"Size of the remapped area (aka second half) is same as first half. It is determined by FLEXSPI_IMAGE_OFFSET Field.\nb'0001 SIZE_1MB Size of remapped area is 1MByte.\nb'0010 SIZE_2MB Size of remapped area is 2MByte.\nb'0011 SIZE_3MB Size of remapped area is 3MByte.\nb'0100 SIZE_4MB Size of remapped area is 4MByte.\nb'0101 SIZE_5MB Size of remapped area is 5MByte.\nb'0110 SIZE_6MB Size of remapped area is 6MByte.\nb'0111 SIZE_7MB Size of remapped area is 7MByte.\nb'1000 SIZE_8MB Size of remapped area is 8MByte.\nb'1001 SIZE_9MB Size of remapped area is 9MByte.\nb'1010 SIZE_10MB Size of remapped area is 10MByte.\nb'1011 SIZE_11MB Size of remapped area is 11MByte.\nb'1100 SIZE_12MB Size of remapped area is 12MByte.\nb'1101 SIZE_256KB Size of remapped area is 256KByte.\nb'1110 SIZE_512KB Size of remapped area is 512KByte.\nb'1111 SIZE_768KB Size of remapped area is 768KByte.\n\nNOTE: FlexSPI remap size cannot exceed the start address of boot image 1." + }, + { + "width": 11 + } + ] + }, + { + "id": "fuse6", + "name": "SEC_BOOT_CFG", + "description": "Boot configuration", + "index_int": "0x0006", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse6-bits-0-1", + "name": "SEC_BOOT_EN", + "description": "Secure boot enforcement.\nThis field defines the minimum image verification procedure (CRC32, CMAC, ECDSA sign).\nThe Image type field in header indicates the type of verification data (checksum or signature) included in it.\n\nPlain < CRC32 < CMAC < ECDSA", + "values": [ + { + "name": "ALL_IMAGES", + "value": 0, + "description": "All Image types are allowed." + }, + { + "name": "CRC32_IMAGES", + "value": 1, + "description": "Only CRC32 or signed (CMAC or ECDSA) images are allowed." + }, + { + "name": "SIGNED_IMAGES", + "value": 2, + "description": "Only Signed (CMAC or ECDSA) images are allowed." + }, + { + "name": "ECDSA_SIGNED", + "value": 3, + "description": "Only ECDSA signed images are allowed." + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse6-bits-3-4", + "name": "LP_SEC_BOOT", + "description": "Secure boot option for low-power wake from power-down & deep-powerdown.\nFor CFPA/CMPA do CRC check always.", + "values": [ + { + "name": "COLD_BOOT", + "value": 0, + "description": "Same as cold boot" + }, + { + "name": "CHECK_CRC32", + "value": 1, + "description": "CRC check for CFPA/CMPA & CRC32 check of active image" + }, + { + "name": "CHECK_JUMP", + "value": 2, + "description": "CRC check for CFPA/CMPA & jump to vector address specified in CFPA." + }, + { + "name": "CHECK_CMAC", + "value": 3, + "description": "CRC check for CFPA/CMPA & CMAC check of active image" + } + ] + }, + { + "width": 3 + }, + { + "width": 2, + "id": "fuse6-bits-8-9", + "name": "ENF_CNSA", + "description": "Enforce CNSA suite approved algorithms for secure boot, secure update and debug authentication.\nNote, CMAC image authentication is only allowed in 2b'00 setting.", + "values": [ + { + "name": "ALL_ALLOWED", + "value": 0, + "description": "All algorithm allowed." + }, + { + "name": "LIMITED", + "value": 1, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used." + }, + { + "name": "LIMITED_0", + "value": 2, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used." + }, + { + "name": "LIMITED_1", + "value": 3, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-10-11", + "name": "ENF_TZM_PRESET", + "description": "TrustZone-M mode.", + "values": [ + { + "name": "IGNORE", + "value": 0, + "description": "Ignored." + }, + { + "name": "ENFORCE", + "value": 1, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_0", + "value": 2, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_1", + "value": 3, + "description": "Enforce preset TZM data in image manifest." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-12-13", + "name": "ITRC_ZEROIZE", + "description": "RAM zeroize on ITRC event.\nZeroize long-term storage RAM (RAMA) on subsequent boot when Intrusion & Tamper control signals an intrusion event (ITRC_OUT3).\nNote, when ITRC is re-configured in application then ITRC_OUT4 (CHIP_RESET) should be triggered with at least same events as ITRC_OUT3 (RAM_ZEROIZE) .", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action." + }, + { + "name": "PKC_RAM_ON_ITRC", + "value": 1, + "description": "Always Zeroize PKC RAM on ITRC event only." + }, + { + "name": "PKC_RAMA_ON_ITRC", + "value": 2, + "description": "Zeroize PKC & RAMA on ITRC event only." + }, + { + "name": "PKC_RAMA_ALL_RESET", + "value": 3, + "description": "Always Zeroize PKC & RAMA on all reset boot." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-14-15", + "name": "ACTIVE_IMG_PROT", + "description": "Protection of active image.\nThis field defines protection of flash area occupied by the active image. Only applicable to internal flash.", + "values": [ + { + "name": "FLASH_ACL_PROTECTION", + "value": 0, + "description": "Protection is defined using the CFPA FLASH_ACL settings." + }, + { + "name": "WITH_STICKY_LOCK", + "value": 1, + "description": "Write protect active image area with sticky lock. GLBAC2 is used. FLASH_ACL settings are ignored." + }, + { + "name": "NO_STICKY_LOCK", + "value": 2, + "description": "Write protect active image area without sticky lock. GLBAC4 is used. FLASH_ACL settings are ignored." + }, + { + "name": "XOM_PROTECTION", + "value": 3, + "description": "protect active image area with sticky lock. GLBAC6 is used. FLASH_ACL settings are ignored." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-16-17", + "name": "FIPS_SHA_STEN", + "description": "Enable self-test for SHA2 block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-18-19", + "name": "FIPS_AES_STEN", + "description": "Enable self-test for AES block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-20-21", + "name": "FIPS_ECDSA_STEN", + "description": "Enable self-test for ECDSA block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-22-23", + "name": "FIPS_DRBG_STEN", + "description": "Enable self-test for DRBG block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-24-25", + "name": "FIPS_CMAC_STEN", + "description": "Enable self-test for CMAC block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-26-27", + "name": "FIPS_KDF_STEN", + "description": "Enable self-test for KDF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-28-29", + "name": "FIPS_PUF_STEN", + "description": "Enable self-test for PUF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "fuse7", + "name": "RotK_USAGE", + "description": "Boot configuration", + "index_int": "0x0007", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 3, + "id": "fuse7-bits-0-2", + "name": "RoTK0_Usage[2:0]", + "description": "RoT key 0 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, boot image CA, FW update CA, boot image and FW update key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as boot image and FW update CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot image, and FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as boot image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-3-5", + "name": "RoTK1_Usage[2:0]", + "description": "RoT key 1 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, boot image CA, FW update CA, boot image and FW update key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as boot image and FW update CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot image, and FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as boot image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-6-8", + "name": "RoTK2_Usage[2:0]", + "description": "RoT key 2 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, boot image CA, FW update CA, boot image and FW update key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW_IMG", + "value": 2, + "description": "Usable as boot image and FW update CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot image, and FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as boot image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-9-11", + "name": "RoTK3_Usage[2:0]", + "description": "RoT key 3 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, boot image CA, FW update CA, boot image and FW update key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as boot image and FW update CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot image, and FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as boot image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-12", + "name": "SKIP_DICE", + "description": "Skip DICE computation.", + "values": [ + { + "name": "Enable DICE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "Disable DICE", + "value": 1, + "description": "Disable DICE" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-13", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area (IFR1) containing specific part configuration data defined during chip manufacturing process in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-14", + "name": "DICE_INC_CUST_CFG", + "description": "Include data from CMPA page (512 bytes) in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 9 + }, + { + "width": 2, + "id": "fuse7-bits-24-25", + "name": "NPX_LOCK_CTX0", + "description": "Lock on-chip flash NPX PRINCE context 0 settings.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-26-27", + "name": "NPX_LOCK_CTX1", + "description": "Lock on-chip flash NPX PRINCE context 1 settings.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-28-29", + "name": "NPX_LOCK_CTX2", + "description": "Lock on-chip flash NPX PRINCE context 2 settings.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bit" + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-30-31", + "name": "NPX_LOCK_CTX3", + "description": "Lock on-chip flash NPX PRINCE context 3 settings.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + } + ] + } + ] + }, + { + "id": "Reserved8", + "name": "Reserved 0x8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0008", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved9", + "name": "Reserved 0x9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0009", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved10", + "name": "Reserved 0xA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000A", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "Root of trust keys configuration" + }, + "registers": [ + { + "id": "fuse11", + "name": "ROTKH[31:0]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x000B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse12", + "name": "ROTKH[63:32]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x000C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse13", + "name": "ROTKH[95:64]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x000D", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse14", + "name": "ROTKH[127:96]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x000E", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse15", + "name": "ROTKH[159:128]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x000F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse16", + "name": "ROTKH[191:160]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x0010", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse17", + "name": "ROTKH[223:192]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x0011", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse18", + "name": "ROTKH[255:224]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x0012", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse19", + "name": "ROTKH[287:256]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x0013", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse20", + "name": "ROTKH[319:288]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x0014", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse21", + "name": "ROTKH[351:320]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x0015", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + }, + { + "id": "fuse22", + "name": "ROTKH[383:352]", + "description": "Root of trust keys configuration. Root of Trust Key Hash is SHA256 or SHA384 of RoTKpublic. Hash algorithm is selected based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates container and signed boot image based on CMPA.RoTKx_Usage.", + "index_int": "0x0016", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200" + } + } + ] + }, + { + "group": { + "name": "PRINCE", + "description": "Prince Context configuration" + }, + "registers": [ + { + "id": "fuse23", + "name": "NPX_CTX0_WD0", + "description": "Prince Context configuration", + "index_int": "0x0017", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse23-bits-0-31", + "name": "NPX_CTX0_WD0[31:0]", + "description": "ROM copies this value to NPX->VMAPCTX0_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX0 key & IV." + } + ] + }, + { + "id": "fuse24", + "name": "NPX_CTX0_WD1", + "description": "Prince Context configuration", + "index_int": "0x0018", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse24-bits-0-31", + "name": "NPX_CTX0_WD1[31:0]", + "description": "ROM copies this value to NPX->VMAPCTX0_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX0 key & IV." + } + ] + }, + { + "id": "fuse25", + "name": "NPX_CTX1_WD0", + "description": "Prince Context configuration", + "index_int": "0x0019", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse25-bits-0-31", + "name": "NPX_CTX1_WD0[31:0]", + "description": "ROM copies this value to NPX->VMAPCTX1_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX1 key & IV." + } + ] + }, + { + "id": "fuse26", + "name": "NPX_CTX1_WD1", + "description": "Prince Context configuration", + "index_int": "0x001A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse26-bits-0-31", + "name": "NPX_CTX1_WD1[31:0]", + "description": "ROM copies this value to NPX->VMAPCTX1_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX1 key & IV." + } + ] + }, + { + "id": "fuse27", + "name": "NPX_CTX2_WD0", + "description": "Prince Context configuration", + "index_int": "0x001B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse27-bits-0-31", + "name": "NPX_CTX2_WD0[31:0]", + "description": "ROM copies this value to NPX->VMAPCTX2_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX2 key & IV." + } + ] + }, + { + "id": "fuse28", + "name": "NPX_CTX2_WD1", + "description": "Prince Context configuration", + "index_int": "0x001C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse28-bits-0-31", + "name": "NPX_CTX2_WD1[31:0]", + "description": "ROM copies this value to NPX->VMAPCTX2_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX2 key & IV." + } + ] + }, + { + "id": "fuse29", + "name": "NPX_CTX3_WD0", + "description": "Prince Context configuration", + "index_int": "0x001D", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse29-bits-0-31", + "name": "NPX_CTX3_WD0[31:0]", + "description": "ROM copies this value to NPX->VMAPCTX3_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX3 key & IV." + } + ] + }, + { + "id": "fuse30", + "name": "NPX_CTX3_WD1", + "description": "Prince Context configuration", + "index_int": "0x001E", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse30-bits-0-31", + "name": "NPX_CTX3_WD1[31:0]", + "description": "ROM copies this value to NPX->VMAPCTX3_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX3 key & IV." + } + ] + }, + { + "id": "fuse31", + "name": "IPED_CTX_CRC32", + "description": "Prince Context configuration", + "index_int": "0x001F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse31-bits-0-31", + "name": "IPED_CTX_CRC32[31:0]", + "description": "User has to program CRC32 of IPED context configuration data present in CMPA (0x0100_40B0 - 0x0100_40EF) to have ROM do integrity check of IPED configuration data before using. This check is done only when this field is non-zero." + } + ] + }, + { + "id": "fuse32", + "name": "IPED_GP1", + "description": "Prince Context configuration", + "index_int": "0x0020", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse32-bits-0-31", + "name": "IPED_GP1[31:0]", + "description": "General purpose fuse words available for customer use which are locked by PRINCE_CFG_LOCK." + } + ] + }, + { + "id": "fuse33", + "name": "IPED_GP2", + "description": "Prince Context configuration", + "index_int": "0x0021", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse33-bits-0-31", + "name": "IPED_GP2[31:0]", + "description": "General purpose fuse words available for customer use which are locked by PRINCE_CFG_LOCK." + } + ] + }, + { + "id": "fuse34", + "name": "IPED_GP3", + "description": "Prince Context configuration", + "index_int": "0x0022", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse34-bits-0-31", + "name": "IPED_GP3[31:0]", + "description": "General purpose fuse words available for customer use which are locked by PRINCE_CFG_LOCK." + } + ] + }, + { + "id": "fuse35", + "name": "IPED_GP4", + "description": "Prince Context configuration", + "index_int": "0x0023", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse35-bits-0-31", + "name": "IPED_GP4[31:0]", + "description": "General purpose fuse words available for customer use which are locked by PRINCE_CFG_LOCK." + } + ] + }, + { + "id": "fuse36", + "name": "IPED_GP5", + "description": "Prince Context configuration", + "index_int": "0x0024", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse36-bits-0-31", + "name": "IPED_GP5[31:0]", + "description": "General purpose fuse words available for customer use which are locked by PRINCE_CFG_LOCK." + } + ] + }, + { + "id": "fuse37", + "name": "IPED_GP6", + "description": "Prince Context configuration", + "index_int": "0x0025", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse37-bits-0-31", + "name": "IPED_GP6[31:0]", + "description": "General purpose fuse words available for customer use which are locked by PRINCE_CFG_LOCK." + } + ] + }, + { + "id": "fuse38", + "name": "IPED_GP7", + "description": "Prince Context configuration", + "index_int": "0x0026", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse38-bits-0-31", + "name": "IPED_GP7[31:0]", + "description": "General purpose fuse words available for customer use which are locked by PRINCE_CFG_LOCK." + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x27-0x2a", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved39", + "name": "Reserved 0x27", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0027", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved40", + "name": "Reserved 0x28", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0028", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved41", + "name": "Reserved 0x29", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0029", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved42", + "name": "Reserved 0x2A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002A", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "CUST", + "description": "Customer fuses configuration" + }, + "registers": [ + { + "id": "fuse43", + "name": "GP0", + "description": "Customer fuses configuration", + "index_int": "0x002B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse43-bits-0-31", + "name": "GP0[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse44", + "name": "GP1", + "description": "Customer fuses configuration", + "index_int": "0x002C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse44-bits-0-31", + "name": "GP1[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse45", + "name": "GP2", + "description": "Customer fuses configuration", + "index_int": "0x002D", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse45-bits-0-31", + "name": "GP2[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse46", + "name": "GP3", + "description": "Customer fuses configuration", + "index_int": "0x002E", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse46-bits-0-31", + "name": "GP3[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse47", + "name": "GP4", + "description": "Customer fuses configuration", + "index_int": "0x002F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse47-bits-0-31", + "name": "GP4[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse48", + "name": "GP5", + "description": "Customer fuses configuration", + "index_int": "0x0030", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse48-bits-0-31", + "name": "GP5[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse49", + "name": "GP6", + "description": "Customer fuses configuration", + "index_int": "0x0031", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse49-bits-0-31", + "name": "GP6[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse50", + "name": "GP7", + "description": "Customer fuses configuration", + "index_int": "0x0032", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse50-bits-0-31", + "name": "GP7[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse51", + "name": "GP8", + "description": "Customer fuses configuration", + "index_int": "0x0033", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse51-bits-0-31", + "name": "GP8[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse52", + "name": "GP9", + "description": "Customer fuses configuration", + "index_int": "0x0034", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse52-bits-0-31", + "name": "GP9[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse53", + "name": "GP10", + "description": "Customer fuses configuration", + "index_int": "0x0035", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse53-bits-0-31", + "name": "GP10[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse54", + "name": "GP11", + "description": "Customer fuses configuration", + "index_int": "0x0036", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse54-bits-0-31", + "name": "GP11[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse55", + "name": "GP12", + "description": "Customer fuses configuration", + "index_int": "0x0037", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse55-bits-0-31", + "name": "GP12[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse56", + "name": "GP13", + "description": "Customer fuses configuration", + "index_int": "0x0038", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse56-bits-0-31", + "name": "GP13[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse57", + "name": "GP14", + "description": "Customer fuses configuration", + "index_int": "0x0039", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse57-bits-0-31", + "name": "GP14[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse58", + "name": "GP15", + "description": "Customer fuses configuration", + "index_int": "0x003A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse58-bits-0-31", + "name": "GP15[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse59", + "name": "GP16", + "description": "Customer fuses configuration", + "index_int": "0x003B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse59-bits-0-31", + "name": "GP16[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse60", + "name": "GP17", + "description": "Customer fuses configuration", + "index_int": "0x003C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse60-bits-0-31", + "name": "GP17[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse61", + "name": "GP18", + "description": "Customer fuses configuration", + "index_int": "0x003D", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse61-bits-0-31", + "name": "GP18[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse62", + "name": "GP19", + "description": "Customer fuses configuration", + "index_int": "0x003E", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse62-bits-0-31", + "name": "GP19[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse63", + "name": "GP20", + "description": "Customer fuses configuration", + "index_int": "0x003F", + "bitfields": [ + { + "width": 32, + "id": "fuse63-bits-0-31", + "name": "GP20[31:0]", + "description": "General purpose fuse bits available for customer use." + } + ] + }, + { + "id": "fuse64", + "name": "GP21", + "description": "Customer fuses configuration", + "index_int": "0x0040", + "bitfields": [ + { + "width": 32, + "id": "fuse64-bits-0-31", + "name": "GP21[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse65", + "name": "GP22", + "description": "Customer fuses configuration", + "index_int": "0x0041", + "bitfields": [ + { + "width": 32, + "id": "fuse65-bits-0-31", + "name": "GP22[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse66", + "name": "GP23", + "description": "Customer fuses configuration", + "index_int": "0x0042", + "bitfields": [ + { + "width": 32, + "id": "fuse66-bits-0-31", + "name": "GP23[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse67", + "name": "GP24", + "description": "Customer fuses configuration", + "index_int": "0x0043", + "bitfields": [ + { + "width": 32, + "id": "fuse67-bits-0-31", + "name": "GP24[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse68", + "name": "GP25", + "description": "Customer fuses configuration", + "index_int": "0x0044", + "bitfields": [ + { + "width": 32, + "id": "fuse68-bits-0-31", + "name": "GP25[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse69", + "name": "GP26", + "description": "Customer fuses configuration", + "index_int": "0x0045", + "bitfields": [ + { + "width": 32, + "id": "fuse69-bits-0-31", + "name": "GP26[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse70", + "name": "GP27", + "description": "Customer fuses configuration", + "index_int": "0x0046", + "bitfields": [ + { + "width": 32, + "id": "fuse70-bits-0-31", + "name": "GP27[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse71", + "name": "GP28", + "description": "Customer fuses configuration", + "index_int": "0x0047", + "bitfields": [ + { + "width": 32, + "id": "fuse71-bits-0-31", + "name": "GP28[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse72", + "name": "GP29", + "description": "Customer fuses configuration", + "index_int": "0x0048", + "bitfields": [ + { + "width": 32, + "id": "fuse72-bits-0-31", + "name": "GP29[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse73", + "name": "GP30", + "description": "Customer fuses configuration", + "index_int": "0x0049", + "bitfields": [ + { + "width": 32, + "id": "fuse73-bits-0-31", + "name": "GP30[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse74", + "name": "GP31", + "description": "Customer fuses configuration", + "index_int": "0x004A", + "bitfields": [ + { + "width": 32, + "id": "fuse74-bits-0-31", + "name": "GP31[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse75", + "name": "GP32", + "description": "Customer fuses configuration", + "index_int": "0x004B", + "bitfields": [ + { + "width": 32, + "id": "fuse75-bits-0-31", + "name": "GP32[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse76", + "name": "GP33", + "description": "Customer fuses configuration", + "index_int": "0x004C", + "bitfields": [ + { + "width": 32, + "id": "fuse76-bits-0-31", + "name": "GP33[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse77", + "name": "GP34", + "description": "Customer fuses configuration", + "index_int": "0x004D", + "bitfields": [ + { + "width": 32, + "id": "fuse77-bits-0-31", + "name": "GP34[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse78", + "name": "GP35", + "description": "Customer fuses configuration", + "index_int": "0x004E", + "bitfields": [ + { + "width": 32, + "id": "fuse78-bits-0-31", + "name": "GP35[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse79", + "name": "GP36", + "description": "Customer fuses configuration", + "index_int": "0x004F", + "bitfields": [ + { + "width": 32, + "id": "fuse79-bits-0-31", + "name": "GP36[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse80", + "name": "GP37", + "description": "Customer fuses configuration", + "index_int": "0x0050", + "bitfields": [ + { + "width": 32, + "id": "fuse80-bits-0-31", + "name": "GP37[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse81", + "name": "GP38", + "description": "Customer fuses configuration", + "index_int": "0x0051", + "bitfields": [ + { + "width": 32, + "id": "fuse81-bits-0-31", + "name": "GP38[31:0]", + "description": "General purpose fuse words available for customer use." + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/pfr_cfpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/pfr_cfpa.json new file mode 100644 index 0000000..f5fa07a --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/pfr_cfpa.json @@ -0,0 +1,5119 @@ +{ + "cpu": "mcxn556s", + "groups": [ + { + "group": { + "name": "CFPA", + "description": "Customer In-Field Configuration Area." + }, + "registers": [ + { + "id": "field000", + "name": "Header", + "description": "header", + "offset_int": "0", + "default_value_int": "0x96350000", + "bitfields": [ + { + "width": 8, + "id": "field000-bits0-7", + "name": "CFPA_LC_STATE", + "description": "Life cycle state. This field can be used to advance life cycle state to 0x7, 0xF or 0xCF during development (OTP_LC_STATE = 0x3) for testing deployed states without programming OTP fuse. For actual mass production, be sure to modify the lifecycle through OTP/efuse rather than through CFPA_LC_STATE field. When CFPA is used to advance LC state, then application code should implement hooks, to revert CFPA_LC_STATE field to 0x3 to bring the device back to OEM_DEVELOP state (0x03). One such example is a GPIO interrupt handler invoked on a button press which modified the CFPA_LC_STATE to 0x3. Customer can use the CFPA_LC_STATE to advance the LC to Develop2 (0x7), In-field (0xF) and In-field Locked (0xCF) when the current efuse lifecycle is Develop (0x3). After the CFPA_LC_STATE has been set as advanced lifecycle, the CFPA_LC_STATE will be functional after warming reset the device, not the POR and wakeup reset type. But for the debug port, the following steps are required to make CFPA_LC_STATE effective for the debug port: 1.\tPerform a Power-on Reset while pulling down the ISP pin, to ensure that it directly enters ISP mode after POR. 2.\tThen perform a warm reset, such as a pin reset. Below are the allowed values for this field. Use of other values may lead to bricked state", + "values": [ + { + "name": "USE_LC_STATE_FROM_OTP", + "value": 0, + "description": "Use LC state from OTP" + }, + { + "name": "DEVELOP__STATE", + "value": 3, + "description": "Develop state" + }, + { + "name": "DEVELOP_2_STATE", + "value": 7, + "description": "Develop 2 state" + }, + { + "name": "IN-FIELD_STATE", + "value": 15, + "description": "In-field state" + }, + { + "name": "IN-FIELD_LOCKED_STATE", + "value": 207, + "description": "In-field locked state" + } + ] + }, + { + "width": 8, + "id": "field000-bits8-15", + "name": "INV_CFPA_LC_STATE", + "description": "Inverted value of CFPA_LC_STATE. This INV_CPFA_LC_STATE ^ CFPA_LC_STATE[7:0] should be 0xFF, otherwise the CPFA_LC_STATE will not be valid", + "calculated": "INVERSE" + }, + { + "width": 16, + "id": "field000-bits16-31", + "name": "Header", + "description": "After this header is set, all non-zero values will take effect; leaving all values set to 0xff will cause undefined behavior. It is recommended to set all values to 0x00 before setting the CFPA header", + "values": [ + { + "name": "DEFAULT", + "value": 38453, + "description": "CFPA Header marker should be set to 0x9635" + } + ] + } + ] + }, + { + "id": "field004", + "name": "CFPA_PAGE_VERSION", + "description": "cfpa page version", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 24, + "id": "field004-bits0-23", + "name": "CFPA_page_version", + "description": "CFPA page version. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped. CFPA_PAGE_VERSION may begin at 0x1 and user may manually increment the value by 1 or use value 0xFF_FFFF and ROM will auto-increment this field" + }, + { + "width": 2, + "id": "field004-bits24-25", + "name": "IMG_UPD", + "description": "Image updated", + "values": [ + { + "name": "No action", + "value": 0, + "description": "No action" + }, + { + "name": "Update Img 0 CMAC", + "value": 1, + "description": "Update image 0 CMAC" + }, + { + "name": "Update Img 1 CMAC", + "value": 2, + "description": "Update image 1 CMAC" + }, + { + "name": "Update SBL Img CMAC", + "value": 3, + "description": "Update SBL image CMAC (image in IFR0 0x0100_8000). Value written in IMG0_CMAC field" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field004-bits27-29", + "name": "CMPA_UPD", + "description": "CMPA page updated through ROM API. Thus compute CMAC on sub-sequent boot. This field is checked only in Develop (0x3) LC state" + }, + { + "width": 1, + "id": "field004-bit30", + "name": "DICE_KEY_UPD_ALIAS", + "description": "Update DICE key during next boot", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "GENERATE_DICE_KEY", + "value": 1, + "description": "Generate DICE key" + } + ] + }, + { + "width": 1, + "id": "field004-bit31", + "name": "DICE_UPD", + "description": "Update DICE certificate during next boot", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "GENERATE_CERTIFICATE", + "value": 1, + "description": "Generate certificate" + } + ] + } + ] + }, + { + "id": "field008", + "name": "Secure_FW_Version", + "description": "secure fw version", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "Secure_firmware_version", + "description": "Secure Firmware version. This monotonic counter field tracks the firmware version of secure partition. ROM uses this field to enforce anti-rollback checking during secure boot and secure update (SB3 header). For image authentication pass during secure boot the FW version in image manifest must be equal or greater than this value. During secure update & recovery boot the version number in SB3 header Must be equal or greater than the value in this field. Apart from SB3 header check, user can enforce anti-rollback check during SB3 processing by using \"kSB3_COMMAND_fwVersionCheck\" SB command with 'kNBOOT_CNT_secure' counter ID parameter, in SB3 file" + }, + { + "width": 16 + } + ] + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure Firmware version. This monotonic counter field can be used to track the firmware version of non-secure partition. An anti-rollback check can be enforced during update by using this field and \"kSB3_COMMAND_fwVersionCheck\" SB command with 'kNBOOT_CNT_nonsecure' counter ID parameter, in SB3 file.", + "offset_int": "0x000C", + "default_value_int": "0" + }, + { + "id": "Reserved00010", + "name": "Reserved 0x00010", + "description": "This field is reserved for internal use", + "offset_int": "0x0010", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field014", + "name": "SECBOOT_FLAGS", + "description": "secboot flags", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field014-bits0-1", + "name": "RoTK0_EN", + "description": "RoT Key 0 enable. Determines if ROTK0 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits2-3", + "name": "RoTK1_EN", + "description": "RoT Key 1 enable. Determines if ROTK1 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits4-5", + "name": "RoTK2_EN", + "description": "RoT Key 2 enable. Determines if ROTK2 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits6-7", + "name": "RoTK3_EN", + "description": "RoT Key 3 enable. Determines if ROTK3 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits8-9", + "name": "PQC_RoTK0_EN", + "description": "RoT Key 0 enable. Determines if ROTK0 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits10-11", + "name": "PQC_RoTK1_EN", + "description": "RoT Key 1 enable. Determines if ROTK1 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits12-13", + "name": "PQC_RoTK2_EN", + "description": "RoT Key 2 enable. Determines if ROTK2 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits14-15", + "name": "PQC_RoTK3_EN", + "description": "RoT Key 3 enable. Determines if ROTK3 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "field014-bits28-31", + "name": "OEM_RETURN_ERASE_DONE", + "description": "OEM assets erase done flag. ROM sets this field to 0xA after erasing the user flash and OEM assets. This operation is done on first boot after OTP_LC_STATE is advanced to 0x1F or higher states. On every boot ROM checks if LC_STATE is greater or equal to 0x1F and this field is empty in active CFPA page, then it erases OEM assets and updates this field in CFPA before freezing CFPA pages and enabling debug access. If the field is already set to 0xA then it proceeds without erasing user flash area" + } + ] + }, + { + "id": "field018", + "name": "IMAGE_KEY_REVOKE", + "description": "image key revoke", + "offset_int": "0x0018", + "default_value_int": "0", + "bitfields": [ + { + "width": 24, + "id": "field018-bits0-23", + "name": "Image_key_revocation_ID", + "description": "Image signing key revocation counter. This monotonically increasing unary encode counter (e.g., 0x0, 0x1, 0x3, 0x7, 0xF...) field is used by boot ROM to enforce image signing key (ISK) certificate revocation policy. Boot ROM accepts an ISK certificate as valid only if the \"constraint\" field in ISK certificate is the same or greater than the ISK revocation counter. The 32-bit ISK revocation counter is formed using 8 bits of IMAGE_KEY_REVOKE[7:0] field in OTP as MSB bits and lower 24 bits from this field. ISK certificate validation is done as part of boot, FW update (SB3) and recovery (SB3) image authentication" + }, + { + "width": 8 + } + ] + }, + { + "id": "field01C", + "name": "LP_VECTOR_ADDR", + "description": "lp vector addr", + "offset_int": "0x001C", + "default_value_int": "0" + }, + { + "id": "field020", + "name": "DBG_REVOKE_VU", + "description": "dbg revoke vu", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field020-bits0-15", + "name": "Debug_certificate_revocation_counter", + "description": "Debug certificate revocation counter. This monotonic counter field is used for revoking debug certificates. As part of debug authentication, CC_VU field in debug certificate/credential is checked against DCFG_VENDOR_USAGE value. The 32-bit DCFG_VENDOR_USAGE is formed using upper 16 bit of CMPA.VENDOR_USAGE and lower 16 bits of this field" + }, + { + "width": 16, + "id": "field020-bits16-31", + "name": "Inverse_value", + "description": "inverse value of [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field024", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "With TZ-M, the part can be sold by level 1 customers (secure code developer) to level-2 customers who develops non-secure code only. - In this scenario, for ease of development, Level 1 customer releases the part to always allow non-secure debug. - To allow level-2 customers to further seal the part DCFG_CC_SOCU_NS is used. - ROM will use this word to further restrict the debug access.", + "offset_int": "0x0024", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit5", + "name": "DSP_DBGEN", + "description": "DSP debug enable CoolFlex debug", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit6", + "name": "ISP_CMD_EN", + "description": "ISP boot command enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase cmd enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 non-invasive debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication", + "values": [ + { + "name": "All Devices", + "value": 0, + "description": "Debug certificate can be used with all devices" + }, + { + "name": "Matching UUID", + "value": 1, + "description": "Debug certificate per device with matching UUID is needed" + } + ] + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "Inverse_value", + "description": "inverse value of [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field028", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "With TZ-M, the part can be sold by level 1 customers (secure code developer) to level-2 customers who develops non-secure code only. - In this scenario, or easy of development, Level-I customer releases the part to always allow non-secure debug. - To allow level-2 customers to further seal the part DCFG_CC_SOCU_NS is used. - ROM will use this word to further restrict the debug access.", + "offset_int": "0x0028", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field028-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit1", + "name": "DBGEN", + "description": "Non Secure debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field028-bit5", + "name": "DSP_DBGEN", + "description": "DSP debug. Enable CoolFlux debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit6", + "name": "ISP_CMD_EN", + "description": "ISP command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit8", + "name": "ME_CMD_EN", + "description": "Mass erase flash command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 16, + "id": "field028-bits16-31", + "name": "Inverse_value", + "description": "inverse value of [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field030", + "name": "MCTR_NPX_CTX0", + "description": "mctr npx ctx0", + "offset_int": "0x0030", + "default_value_int": "0" + }, + { + "id": "field034", + "name": "MCTR_NPX_CTX1", + "description": "MCTR NPX CTX1", + "offset_int": "0x0034", + "default_value_int": "0" + }, + { + "id": "field038", + "name": "MCTR_NPX_CTX2", + "description": "mctr npx ctx2", + "offset_int": "0x0038", + "default_value_int": "0" + }, + { + "id": "field03C", + "name": "MCTR_NPX_CTX3", + "description": "mctr npx ctx3", + "offset_int": "0x003C", + "default_value_int": "0" + }, + { + "id": "field040", + "name": "MCTR_IPED_CTX0", + "description": "ROM code will not manage these fields, but SDK driver can manage these.", + "offset_int": "0x0040", + "default_value_int": "0" + }, + { + "id": "field044", + "name": "MCTR_IPED_CTX1", + "description": "MCTR IPED CTX1", + "offset_int": "0x0044", + "default_value_int": "0" + }, + { + "id": "field048", + "name": "MCTR_IPED_CTX2", + "description": "mctr iped ctx2", + "offset_int": "0x0048", + "default_value_int": "0" + }, + { + "id": "field04C", + "name": "MCTR_IPED_CTX3", + "description": "mctr iped ctx3", + "offset_int": "0x004C", + "default_value_int": "0" + }, + { + "id": "field050", + "name": "MCTR_IPED_CTX4", + "description": "mctr iped ctx4", + "offset_int": "0x0050", + "default_value_int": "0" + }, + { + "id": "field054", + "name": "MCTR_IPED_CTX5", + "description": "mctr iped ctx5", + "offset_int": "0x0054", + "default_value_int": "0" + }, + { + "id": "field058", + "name": "MCTR_IPED_CTX6", + "description": "mctr iped ctx6", + "offset_int": "0x0058", + "default_value_int": "0" + }, + { + "id": "field05C", + "name": "MCTR_IPED_CTX7", + "description": "mctr iped ctx7", + "offset_int": "0x005C", + "default_value_int": "0" + }, + { + "id": "field060", + "name": "ERR_AUTH_FAIL_COUNT", + "description": "err auth fail count", + "offset_int": "0x0060", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "ERR_ITRC_COUNT", + "description": "err itrc count", + "offset_int": "0x0064", + "default_value_int": "0" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field080", + "name": "MCTR_CUST_CTR0", + "description": "mctr cust ctr0", + "offset_int": "0x0080", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "MCTR_CUST_CTR1", + "description": "MCTR CUST CTR1", + "offset_int": "0x0084", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "MCTR_CUST_CTR2", + "description": "mctr cust ctr2", + "offset_int": "0x0088", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "MCTR_CUST_CTR3", + "description": "mctr cust ctr3", + "offset_int": "0x008C", + "default_value_int": "0" + }, + { + "id": "field090", + "name": "MCTR_CUST_CTR4", + "description": "mctr cust ctr4", + "offset_int": "0x0090", + "default_value_int": "0" + }, + { + "id": "field094", + "name": "MCTR_CUST_CTR5", + "description": "mctr cust ctr5", + "offset_int": "0x0094", + "default_value_int": "0" + }, + { + "id": "field098", + "name": "MCTR_CUST_CTR6", + "description": "mctr cust ctr6", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "field09C", + "name": "MCTR_CUST_CTR7", + "description": "mctr cust ctr7", + "offset_int": "0x009C", + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "MFLAG_CUST_0", + "description": "mflag cust 0", + "offset_int": "0x00A0", + "default_value_int": "0" + }, + { + "id": "field0A4", + "name": "MFLAG_CUST_1", + "description": "MFLAG CUST 1", + "offset_int": "0x00A4", + "default_value_int": "0" + }, + { + "id": "field0A8", + "name": "MFLAG_CUST_2", + "description": "mflag cust 2", + "offset_int": "0x00A8", + "default_value_int": "0" + }, + { + "id": "field0AC", + "name": "MFLAG_CUST_3", + "description": "mflag cust 3", + "offset_int": "0x00AC", + "default_value_int": "0" + }, + { + "id": "field0B0", + "name": "MFLAG_CUST_4", + "description": "mflag cust 4", + "offset_int": "0x00B0", + "default_value_int": "0" + }, + { + "id": "field0B4", + "name": "MFLAG_CUST_5", + "description": "mflag cust 5", + "offset_int": "0x00B4", + "default_value_int": "0" + }, + { + "id": "field0B8", + "name": "MFLAG_CUST_6", + "description": "mflag cust 6", + "offset_int": "0x00B8", + "default_value_int": "0" + }, + { + "id": "field0BC", + "name": "MFLAG_CUST_7", + "description": "mflag cust 7", + "offset_int": "0x00BC", + "default_value_int": "0" + }, + { + "id": "field0C0", + "name": "FLASH_ACL_0_7", + "description": "flash acl 0 7", + "offset_int": "0x00C0", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0C0-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector (offset range 0x00_0000 - 0x00_7FFF). Select one of the 8 pre-defined access control attributes for the given Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector (offset range 0x00_8000 - 0x00_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector (offset range 0x01_0000 - 0x01_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector. (offset range 0x01_8000 - 0x01_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector (offset range 0x02_0000 - 0x02_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector (offset range 0x02_8000 - 0x02_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector (offset range 0x03_0000 - 0x03_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector (offset range 0x03_8000 - 0x03_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0C4", + "name": "FLASH_ACL_8_15", + "description": "flash acl 8 15", + "offset_int": "0x00C4", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0C4-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector (offset range 0x04_0000 - 0x04_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector (offset range 0x04_8000 - 0x04_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector (offset range 0x05_0000 - 0x05_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector. (offset range 0x05_8000 - 0x05_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector (offset range 0x06_0000 - 0x06_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector (offset range 0x06_8000 - 0x06_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector (offset range 0x07_0000 - 0x07_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector (offset range 0x07_8000 - 0x07_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0C8", + "name": "FLASH_ACL_16_23", + "description": "flash acl 16 23", + "offset_int": "0x00C8", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0C8-bits0-2", + "name": "ACL_SEC_16", + "description": "Access control for flash sector (offset range 0x08_0000 - 0x08_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits4-6", + "name": "ACL_SEC_17", + "description": "Access control for flash sector (offset range 0x08_8000 - 0x08_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits8-10", + "name": "ACL_SEC_18", + "description": "Access control for flash sector (offset range 0x09_0000 - 0x09_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits12-14", + "name": "ACL_SEC_19", + "description": "Access control for flash sector. (offset range 0x09_8000 - 0x09_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits16-18", + "name": "ACL_SEC_20", + "description": "Access control for flash sector (offset range 0x0A_0000 - 0x0A_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits20-22", + "name": "ACL_SEC_21", + "description": "Access control for flash sector (offset range 0x0A_8000 - 0x0A_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits24-26", + "name": "ACL_SEC_22", + "description": "Access control for flash sector (offset range 0x0B_0000 - 0x0B_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits28-30", + "name": "ACL_SEC_23", + "description": "Access control for flash sector (offset range 0x0B_8000 - 0x0B_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0CC", + "name": "FLASH_ACL_24_31", + "description": "FLASH ACL 24 31", + "offset_int": "0x00CC", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0CC-bits0-2", + "name": "ACL_SEC_24", + "description": "Access control for flash sector (offset range 0x0C_0000 - 0x0C_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits4-6", + "name": "ACL_SEC_25", + "description": "Access control for flash sector (offset range 0x0C_8000 - 0x0C_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits8-10", + "name": "ACL_SEC_26", + "description": "Access control for flash sector (offset range 0x0D_0000 - 0x0D_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits12-14", + "name": "ACL_SEC_27", + "description": "Access control for flash sector. (offset range 0x0D_8000 - 0x0D_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits16-18", + "name": "ACL_SEC_28", + "description": "Access control for flash sector (offset range 0x0E_0000 - 0x0E_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits20-22", + "name": "ACL_SEC_29", + "description": "Access control for flash sector (offset range 0x0E_8000 - 0x0E_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits24-26", + "name": "ACL_SEC_30", + "description": "Access control for flash sector (offset range 0x0F_0000 - 0x0F_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits28-30", + "name": "ACL_SEC_31", + "description": "Access control for flash sector (offset range 0x0F_8000 - 0x0F_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0D0", + "name": "FLASH_ACL_32_39", + "description": "flash acl 32 39", + "offset_int": "0x00D0", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0D0-bits0-2", + "name": "ACL_SEC_32", + "description": "Access control for flash sector (offset range 0x10_0000 - 0x10_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits4-6", + "name": "ACL_SEC_33", + "description": "Access control for flash sector (offset range 0x10_8000 - 0x10_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits8-10", + "name": "ACL_SEC_34", + "description": "Access control for flash sector (offset range 0x11_0000 - 0x11_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits12-14", + "name": "ACL_SEC_35", + "description": "Access control for flash sector. (offset range 0x11_8000 - 0x11_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits16-18", + "name": "ACL_SEC_36", + "description": "Access control for flash sector (offset range 0x12_0000 - 0x12_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits20-22", + "name": "ACL_SEC_37", + "description": "Access control for flash sector (offset range 0x12_8000 - 0x12_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits24-26", + "name": "ACL_SEC_38", + "description": "Access control for flash sector (offset range 0x13_0000 - 0x13_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits28-30", + "name": "ACL_SEC_39", + "description": "Access control for flash sector (offset range 0x13_8000 - 0x13_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0D4", + "name": "FLASH_ACL_40_47", + "description": "flash acl 40 47", + "offset_int": "0x00D4", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0D4-bits0-2", + "name": "ACL_SEC_40", + "description": "Access control for flash sector (offset range 0x14_0000 - 0x14_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits4-6", + "name": "ACL_SEC_41", + "description": "Access control for flash sector (offset range 0x14_8000 - 0x14_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits8-10", + "name": "ACL_SEC_42", + "description": "Access control for flash sector (offset range 0x15_0000 - 0x15_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits12-14", + "name": "ACL_SEC_43", + "description": "Access control for flash sector. (offset range 0x15_8000 - 0x15_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits16-18", + "name": "ACL_SEC_44", + "description": "Access control for flash sector (offset range 0x16_0000 - 0x16_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits20-22", + "name": "ACL_SEC_45", + "description": "Access control for flash sector (offset range 0x16_8000 - 0x16_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits24-26", + "name": "ACL_SEC_46", + "description": "Access control for flash sector (offset range 0x17_0000 - 0x17_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits28-30", + "name": "ACL_SEC_47", + "description": "Access control for flash sector (offset range 0x17_8000 - 0x17_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0D8", + "name": "FLASH_ACL_48_55", + "description": "flash acl 48 55", + "offset_int": "0x00D8", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0D8-bits0-2", + "name": "ACL_SEC_48", + "description": "Access control for flash sector (offset range 0x18_0000 - 0x18_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits4-6", + "name": "ACL_SEC_49", + "description": "Access control for flash sector (offset range 0x18_8000 - 0x18_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits8-10", + "name": "ACL_SEC_50", + "description": "Access control for flash sector (offset range 0x19_0000 - 0x19_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits12-14", + "name": "ACL_SEC_51", + "description": "Access control for flash sector. (offset range 0x19_8000 - 0x19_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits16-18", + "name": "ACL_SEC_52", + "description": "Access control for flash sector (offset range 0x1A_0000 - 0x1A_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits20-22", + "name": "ACL_SEC_53", + "description": "Access control for flash sector (offset range 0x1A_8000 - 0x1A_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits24-26", + "name": "ACL_SEC_54", + "description": "Access control for flash sector (offset range 0x1B_0000 - 0x1B_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits28-30", + "name": "ACL_SEC_55", + "description": "Access control for flash sector (offset range 0x1B_8000 - 0x1B_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0DC", + "name": "FLASH_ACL_55_63", + "description": "flash acl 55 63", + "offset_int": "0x00DC", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field0DC-bits0-2", + "name": "ACL_SEC_56", + "description": "Access control for flash sector (offset range 0x1C_0000 - 0x1C_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits4-6", + "name": "ACL_SEC_57", + "description": "Access control for flash sector (offset range 0x1C_8000 - 0x1C_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits8-10", + "name": "ACL_SEC_58", + "description": "Access control for flash sector (offset range 0x1D_0000 - 0x1D_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits12-14", + "name": "ACL_SEC_59", + "description": "Access control for flash sector. (offset range 0x1D_8000 - 0x1D_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits16-18", + "name": "ACL_SEC_60", + "description": "Access control for flash sector (offset range 0x1E_0000 - 0x1E_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits20-22", + "name": "ACL_SEC_61", + "description": "Access control for flash sector (offset range 0x1E_8000 - 0x1E_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits24-26", + "name": "ACL_SEC_62", + "description": "Access control for flash sector (offset range 0x1F_0000 - 0x1F_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits28-30", + "name": "ACL_SEC_63", + "description": "Access control for flash sector (offset range 0x1F_8000 - 0x1F_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. • If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. ○ 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) • If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "FLASH_RW_LOCKED", + "value": 1, + "description": "Data flash memory with this setting: R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "ROM with this setting: RX + locked" + }, + { + "name": "DROM_LOCKED", + "value": 3, + "description": "Data read-only memory (DROM) with this setting: ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "ROM with this setting: RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM with this setting: XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM with this setting: XOM + locked" + }, + { + "name": "HIDDEN", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0E0", + "name": "IMG0_CMAC0", + "description": "img0 cmac", + "offset_int": "0x00E0", + "default_value_int": "0" + }, + { + "id": "field0E4", + "name": "IMG0_CMAC1", + "description": "img0 cmac", + "offset_int": "0x00E4", + "default_value_int": "0" + }, + { + "id": "field0E8", + "name": "IMG0_CMAC2", + "description": "img0 cmac", + "offset_int": "0x00E8", + "default_value_int": "0" + }, + { + "id": "field0EC", + "name": "IMG0_CMAC3", + "description": "img0 cmac", + "offset_int": "0x00EC", + "default_value_int": "0" + }, + { + "id": "field0F0", + "name": "IMG1_CMAC0", + "description": "img1 cmac", + "offset_int": "0x00F0", + "default_value_int": "0" + }, + { + "id": "field0F4", + "name": "IMG1_CMAC1", + "description": "img1 cmac", + "offset_int": "0x00F4", + "default_value_int": "0" + }, + { + "id": "field0F8", + "name": "IMG1_CMAC2", + "description": "img1 cmac", + "offset_int": "0x00F8", + "default_value_int": "0" + }, + { + "id": "field0FC", + "name": "IMG1_CMAC3", + "description": "img1 cmac", + "offset_int": "0x00FC", + "default_value_int": "0" + }, + { + "id": "Reserved00100", + "name": "Reserved 0x00100", + "description": "This field is reserved for internal use", + "offset_int": "0x0100", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00104", + "name": "Reserved 0x00104", + "description": "This field is reserved for internal use", + "offset_int": "0x0104", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00108", + "name": "Reserved 0x00108", + "description": "This field is reserved for internal use", + "offset_int": "0x0108", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00110", + "name": "Reserved 0x00110", + "description": "This field is reserved for internal use", + "offset_int": "0x0110", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00120", + "name": "Reserved 0x00120", + "description": "This field is reserved for internal use", + "offset_int": "0x0120", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00130", + "name": "Reserved 0x00130", + "description": "This field is reserved for internal use", + "offset_int": "0x0130", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00134", + "name": "Reserved 0x00134", + "description": "This field is reserved for internal use", + "offset_int": "0x0134", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00138", + "name": "Reserved 0x00138", + "description": "This field is reserved for internal use", + "offset_int": "0x0138", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0013C", + "name": "Reserved 0x0013C", + "description": "This field is reserved for internal use", + "offset_int": "0x013C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00140", + "name": "Reserved 0x00140", + "description": "This field is reserved for internal use", + "offset_int": "0x0140", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00144", + "name": "Reserved 0x00144", + "description": "This field is reserved for internal use", + "offset_int": "0x0144", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00148", + "name": "Reserved 0x00148", + "description": "This field is reserved for internal use", + "offset_int": "0x0148", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0014C", + "name": "Reserved 0x0014C", + "description": "This field is reserved for internal use", + "offset_int": "0x014C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00150", + "name": "Reserved 0x00150", + "description": "This field is reserved for internal use", + "offset_int": "0x0150", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00154", + "name": "Reserved 0x00154", + "description": "This field is reserved for internal use", + "offset_int": "0x0154", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00158", + "name": "Reserved 0x00158", + "description": "This field is reserved for internal use", + "offset_int": "0x0158", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0015C", + "name": "Reserved 0x0015C", + "description": "This field is reserved for internal use", + "offset_int": "0x015C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00160", + "name": "Reserved 0x00160", + "description": "This field is reserved for internal use", + "offset_int": "0x0160", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00164", + "name": "Reserved 0x00164", + "description": "This field is reserved for internal use", + "offset_int": "0x0164", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00168", + "name": "Reserved 0x00168", + "description": "This field is reserved for internal use", + "offset_int": "0x0168", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0016C", + "name": "Reserved 0x0016C", + "description": "This field is reserved for internal use", + "offset_int": "0x016C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00170", + "name": "Reserved 0x00170", + "description": "This field is reserved for internal use", + "offset_int": "0x0170", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00174", + "name": "Reserved 0x00174", + "description": "This field is reserved for internal use", + "offset_int": "0x0174", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00178", + "name": "Reserved 0x00178", + "description": "This field is reserved for internal use", + "offset_int": "0x0178", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0017C", + "name": "Reserved 0x0017C", + "description": "This field is reserved for internal use", + "offset_int": "0x017C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00180", + "name": "Reserved 0x00180", + "description": "This field is reserved for internal use", + "offset_int": "0x0180", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00184", + "name": "Reserved 0x00184", + "description": "This field is reserved for internal use", + "offset_int": "0x0184", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00188", + "name": "Reserved 0x00188", + "description": "This field is reserved for internal use", + "offset_int": "0x0188", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0018C", + "name": "Reserved 0x0018C", + "description": "This field is reserved for internal use", + "offset_int": "0x018C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field190", + "name": "IPED_GCM_AAD_CTX0", + "description": "ROM code will not manage these fields, but SDK driver can manage these.", + "offset_int": "0x0190", + "default_value_int": "0" + }, + { + "id": "field194", + "name": "IPED_GCM_AAD_CTX1", + "description": "IPED GCM AAD CTX1", + "offset_int": "0x0194", + "default_value_int": "0" + }, + { + "id": "field198", + "name": "IPED_GCM_AAD_CTX2", + "description": "iped gcm aad ctx2", + "offset_int": "0x0198", + "default_value_int": "0" + }, + { + "id": "field19C", + "name": "IPED_GCM_AAD_CTX3", + "description": "iped gcm aad ctx3", + "offset_int": "0x019C", + "default_value_int": "0" + }, + { + "id": "field1A0", + "name": "IPED_GCM_AAD_CTX4", + "description": "iped gcm aad ctx4", + "offset_int": "0x01A0", + "default_value_int": "0" + }, + { + "id": "field1A4", + "name": "IPED_GCM_AAD_CTX5", + "description": "iped gcm aad ctx5", + "offset_int": "0x01A4", + "default_value_int": "0" + }, + { + "id": "field1A8", + "name": "IPED_GCM_AAD_CTX6", + "description": "iped gcm aad ctx6", + "offset_int": "0x01A8", + "default_value_int": "0" + }, + { + "id": "field1AC", + "name": "IPED_GCM_AAD_CTX7", + "description": "iped gcm aad ctx7", + "offset_int": "0x01AC", + "default_value_int": "0" + }, + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field1EC", + "name": "CFPA_CRC32", + "description": "cfpa crc32", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F0", + "name": "CFPA0_CMAC0", + "description": "cfpa0 cmac", + "offset_int": "0x01F0", + "default_value_int": "0" + }, + { + "id": "field1F4", + "name": "CFPA0_CMAC1", + "description": "CFPA0 CMAC1", + "offset_int": "0x01F4", + "default_value_int": "0" + }, + { + "id": "field1F8", + "name": "CFPA0_CMAC2", + "description": "CFPA0 CMAC2", + "offset_int": "0x01F8", + "default_value_int": "0" + }, + { + "id": "field1FC", + "name": "CFPA0_CMAC3", + "description": "CFPA0 CMAC3", + "offset_int": "0x01FC", + "default_value_int": "0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/pfr_cmpa.json new file mode 100644 index 0000000..411a341 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn556s/pfr_cmpa.json @@ -0,0 +1,3674 @@ +{ + "cpu": "mcxn556s", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "boot cfg", + "offset_int": "0", + "default_value_int": "0x59630000", + "bitfields": [ + { + "width": 2, + "id": "field000-bits0-1", + "name": "BOOT_SRC", + "description": "Primary boot source", + "values": [ + { + "name": "INTERNAL_FLASH_0", + "value": 0, + "description": "Internal flash" + }, + { + "name": "SECONDARY_BOOTLOADER", + "value": 2, + "description": "Secondary Boot loader in Bank1 IFR0 (32KB)" + }, + { + "name": "INTERNAL_FLASH_3", + "value": 3, + "description": "Internal flash" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_IF", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "SPI_SLAVE_ISP", + "value": 2, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_SLAVE_ISP", + "value": 3, + "description": "I2C slave ISP" + }, + { + "name": "USB0_HID", + "value": 4, + "description": "USB0 HID" + }, + { + "name": "USB1_HID", + "value": 5, + "description": "USB1 HID" + }, + { + "name": "CAN_ISP", + "value": 6, + "description": "CAN ISP" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field000-bits8-9", + "name": "REC_BOOT_SRC", + "description": "Recovery boot source", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Recovery boot disabled" + }, + { + "name": "XIP img", + "value": 1, + "description": "XIP image in Bank1 IFR0 (32KB)" + }, + { + "name": "SB3 img", + "value": 2, + "description": "SB3 image in 1-bit SPI flash connected to default FlexComm. FC7" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "BOOT_SPEED", + "description": "Boot speed. Selects the core frequency and voltage to use during ROM execution", + "values": [ + { + "name": "48_MHZ_FRO_@_1.0V", + "value": 0, + "description": "48 MHz FRO @ 1.0V" + }, + { + "name": "72_MHZ_FRO_@_1.1V", + "value": 1, + "description": "72 MHz FRO @ 1.1V" + }, + { + "name": "144_MHZ_FRO_@_1.2V", + "value": 2, + "description": "144 MHz FRO @ 1.2V" + }, + { + "name": "150_MHZ_PLL_@_1.2V", + "value": 3, + "description": "150 MHz PLL @ 1.2V" + } + ] + }, + { + "width": 2 + }, + { + "width": 16, + "id": "field000-bits16-31", + "name": "Header", + "description": "After this header is set, all non-zero values will take effect; leaving all settings at 0xff will cause undefined behavior. It is recommended to set all values to 0x00 before setting the CMPA header value", + "values": [ + { + "name": "DEFAULT", + "value": 22883, + "description": "CMPA Header marker should be set to 0x9635" + } + ] + } + ] + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "flash cfg", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "FLASH_REMAP_SIZE", + "description": "Flash remap size. FLASH_REMAP_SIZE defines the size of the secondary boot image (the range of flash addresses that will be remapped)in internal flash, where remapped address end = (FLASH_REMAP_SIZE + 1)" + }, + { + "width": 3, + "id": "field004-bits5-7", + "name": "OEM_BANK1_IFR0_PROT", + "description": "Defines flash protection of Bank1_IFR0 area based on usage. The MBC module is used to configure the access protections as readable (R), writeable (W), and/or executable (X). The access protections can also be configured as locked (L) which prevents later application code from changing the access protection configuration. The final MBC protection bits used for Bank1_IFR0 depend on the boot mode configuration, the boot path that is selected and the device life cycle state. The access This field will only modify the MBC protection bits for the Bank1_IFR0 area after the life cycle is advanced out of Develop. In the Develop life cycle state this field has no effect. For example, if using the In-Field life cycle and Bank1_IFR0 is being used as a recovery boot image (REC_BOOT_SRC = 1) and OEM_BANK1_IFR0_PROT value = 5 is selected), then for a regular boot using the primary image Bank1_IFR0 is mapped to GLBAC2. If the primary boot fails, and the recovery path is taken, then Bank1_IFR0 is mapped to GLBAC4 instead. Note: Settings 5-7 should not be used if Bank1_IFR0 is used as OEM_SBL (BOOT_SRC = 2). In Develop life cycle - All settings: MBC protection bits set as RWXL = 1110 (GLBAC0) In other life cycles –" + }, + { + "width": 2, + "id": "field004-bits8-9", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion", + "values": [ + { + "name": "ISP_ENTRY_ALLOWED_0", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "ISP_ENTRY_DISABLED", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ISP_ENTRY_ALLOWED_2", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ISP_ENTRY_ALLOWED_3", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command", + "values": [ + { + "name": "ISP_ENTRY_ALLOWED_0", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "ISP_ENTRY_DISABLED", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ISP_ENTRY_ALLOWED_2", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ISP_ENTRY_ALLOWED_3", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_API_ENTRY", + "description": "Disable ISP mode entry through ROM API call. ISP mode can be entered through ROM API invocation", + "values": [ + { + "name": "ISP_ENTRY_ALLOWED_0", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "ISP_ENTRY_DISABLED", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ISP_ENTRY_ALLOWED_2", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ISP_ENTRY_ALLOWED_3", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits14-15", + "name": "ISP_FT_ENTRY", + "description": "Disable ISP mode entry on image authentication failure", + "values": [ + { + "name": "ISP_ENTRY_ALLOWED_0", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "ISP_ENTRY_DISABLED", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ISP_ENTRY_ALLOWED_2", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ISP_ENTRY_ALLOWED_3", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 16 + } + ] + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "boot led status", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field008-bits0-7", + "name": "REC_BOOT_LED", + "description": "Assert on recovery boot. ROM drives the GPIO pin high, identified by this field whenever primary boot fails and fall through to recovery boot source. [4:0] GPIO Pin number. P0_0 and P0_1 are not supported. [7:5] GPIO port number. Only 0 - 4 ports are allowed. If this feature is not use then set this field to 0x00" + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "ISP_BOOT_LED", + "description": "Assert on ISP fall through. ROM drives the GPIO pin high identified by this field whenever primary boot fails and execution falls through to ISP mode. [[4:0] GPIO Pin number. P0_0 and P0_1 are not supported. [7:5] GPIO port number. Only 0 - 4 ports are allowed. If this feature is not use then set this field to 0x00" + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "BOOT_FAIL_LED", + "description": "Assert on fatal errors during boot. ROM drives the GPIO pin high identified by this field whenever primary boot fails due to fatal errors before locking-up/reset. [4:0] GPIO Pin number. P0_0 and P0_1 are not supported. [7:5] GPIO port number. Only 0 - 4 ports are allowed. If this feature is not use then set this field to 0x00" + }, + { + "width": 8 + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "boot timers", + "offset_int": "0x000C", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout: ISP mode peripheral detection timeout value in seconds. If a non-zero value is program and peripheral activity is not detected within the number of seconds specified here, then the device will go to power down mode to conserve power" + }, + { + "width": 16, + "id": "field00C-bits16-31", + "name": "WDOG_TIMEOUT_COUNT", + "description": "WDOG timeout: Upper 16 bits of 24-bit count value in WWDT0_TC register Timeout value in seconds. The lower 8 bits of WWDT0_TC are set to 0. When a non-zero value is programmed in this field ROM configures the watch dog timer to reset the device on timeout before passing execution control to user code" + } + ] + }, + { + "id": "field010", + "name": "FLEXSPI_CFG0", + "description": "ROM code will not manage these fields, but SDK driver can manage these.", + "offset_int": "0x0010", + "default_value_int": "0", + "deprecated_names": ["FLEXSPI_BOOT_CFG0"], + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "FLEXSPI_AUTO_PROBE_EN", + "description": "Quad/Octal-SPI flash auto probe feature enable" + }, + { + "width": 3, + "id": "field010-bits1-3", + "name": "FLEXSPI_PROBE_TYPE", + "description": "Quad/Octal-SPI flash probe type" + }, + { + "width": 3, + "id": "field010-bits4-6", + "name": "FLEXSPI_FLASH_TYPE", + "description": "Define typical Serial NOR Flash types" + }, + { + "width": 4, + "id": "field010-bits7-10", + "name": "FLEXSPI_DUMMY_CYCLES", + "description": "Quad/Octal-SPI dummy cycles for read command. If a non-zero value is programmed in this field, then the value is used to override the default number of dummy cycles for a fast read command read from the serial flash’s SFDP information. Note: this field is only used if FLEXSPI_AUTO_PROBE_EN is set" + }, + { + "width": 3, + "id": "field010-bits11-13", + "name": "FLEXSPI_FREQUENCY", + "description": "Q/O-SPI flash interface frequency" + }, + { + "width": 1, + "id": "field010-bit14", + "name": "FLEXSPI_RESET_ENABLE", + "description": "Use O/QSPI_RESET_PIN to reset the flash device" + }, + { + "width": 3, + "id": "field010-bits15-17", + "name": "FLEXSPI_RESET_GPIO_PORT", + "description": "When FLEXSPI_RESET_ENABLE = 1, this field determines the GPIO port number to use for O/QSPI reset function" + }, + { + "width": 5, + "id": "field010-bits18-22", + "name": "FLEXSPI_RESET_GPIO_PIN", + "description": "When FLEXSPI_RESET_ENABLE = 1, this field determines the GPIO pin number to use for O/QSPI reset function" + }, + { + "width": 2, + "id": "field010-bits23-24", + "name": "FLEXSPI_HOLD_TIME", + "description": "Delay after reset before accessing Quad/Octal-SPI flash devices. Note, for POR in addition to this wait time FLEXSPI_PWR_HOLD_TIME is added" + }, + { + "width": 4, + "id": "field010-bits25-28", + "name": "FLEXSPI_PWR_HOLD_TIME", + "description": "Delay after POR before accessing Quad/Octal-SPI flash devices in addition to delay defined by FLEXSPI_HOLD TIME field" + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field010-bit31", + "name": "PORT_SEL", + "description": "Defines which FlexSPI portA/B is used for boot", + "values": [ + { + "name": "PORT_A", + "value": 0, + "description": "Port A" + }, + { + "name": "PORT_B", + "value": 1, + "description": "Port B" + } + ] + } + ] + }, + { + "id": "field014", + "name": "FLEXSPI_CFG1", + "description": "ROM code will not manage these fields, but SDK driver can manage these.", + "offset_int": "0x0014", + "default_value_int": "0", + "deprecated_names": ["FLEXSPI_BOOT_CFG1"], + "bitfields": [ + { + "width": 7, + "id": "field014-bits0-6", + "name": "FLEXSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for Flash read sampling via DQS (either internal loopback or external DQS). The value provided here is loaded into the FLEXSPIn_DLLnCR" + }, + { + "width": 10, + "id": "field014-bits7-16", + "name": "FLEXSPI_IMAGE_OFFSET", + "description": "Any offset in memory mapped FlexSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. FlLEXSPI_IMAGE_OFFSET field specifies the offset location of the second image. FLEXSPI_REMAP_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped. If this field is left blank boot ROM will not enable FlexSPI remap feature. The physical flash offset is computed as below: physical offset = FLEXSPI_IMAGE_OFFSET" + }, + { + "width": 4, + "id": "field014-bits17-20", + "name": "FLEXSPI_REMAP_IMAGE_SIZE", + "description": "Any offset in memory mapped FlexSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. FLEXSPI_IMAGE_OFFSET field specifies the offset location of second image. FLEXSPI_REMAP_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped. b'0000 Remap size = FLEXSPI_IMAGE_OFFSET" + }, + { + "width": 11 + } + ] + }, + { + "id": "field018", + "name": "REC_SPI_FLASH_CFG0", + "description": "rec spi flash cfg0", + "offset_int": "0x0018", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field018-bits0-7", + "name": "REC_SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field018-bits8-11", + "name": "REC_SPI_SCK_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_SCK_PIN" + }, + { + "width": 4, + "id": "field018-bits12-15", + "name": "REC_SPI_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field018-bits16-23", + "name": "REC_SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field018-bits24-27", + "name": "REC_SPI_MOSI_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_MOSI_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field01C", + "name": "REC_SPI_FLASH_CFG1", + "description": "REC SPI FLASH CFG1", + "offset_int": "0x001C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "REC_SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "REC_SPI_MISO_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_MISO_PIN" + }, + { + "width": 4 + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "REC_SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "REC_SPI_SSEL_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_SSEL_PIN" + }, + { + "width": 2, + "id": "field01C-bits28-29", + "name": "REC_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 2, + "id": "field01C-bits30-31", + "name": "REC_BOOT_PIN_CUST", + "description": "Use customer defined pins for 1-bit SPI recovery boot pins" + } + ] + }, + { + "id": "field020", + "name": "ISP_UART_CFG", + "description": "isp uart cfg", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by UART_RX_PIN" + }, + { + "width": 4, + "id": "field020-bits12-15", + "name": "UART_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode" + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by UART_TX_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field024", + "name": "ISP_I2C_CFG", + "description": "isp i2c cfg", + "offset_int": "0x0024", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field024-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default I2C SCL ISP pin. Identifies the pin to be used as I2C_SCL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field024-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by I2C_SCL_PIN" + }, + { + "width": 4, + "id": "field024-bits12-15", + "name": "I2C_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for I2C ISP mode" + }, + { + "width": 8, + "id": "field024-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default I2C SDA ISP pin. Identifies the pin to be used as I2C_SDA pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field024-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by I2C_SDA_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved00028", + "name": "Reserved 0x00028", + "description": "This field is reserved for internal use", + "offset_int": "0x0028", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field02C", + "name": "ISP_SPI_CFG0", + "description": "isp spi cfg0", + "offset_int": "0x002C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field02C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field02C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_SCK_PIN" + }, + { + "width": 4, + "id": "field02C-bits12-15", + "name": "SPI_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field02C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field02C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_MOSI_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field030", + "name": "ISP_SPI_CFG1", + "description": "ISP SPI CFG1", + "offset_int": "0x0030", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field030-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field030-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_MISO_PIN" + }, + { + "width": 4 + }, + { + "width": 8, + "id": "field030-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field030-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_SSEL_PIN" + }, + { + "width": 2, + "id": "field030-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 2 + } + ] + }, + { + "id": "field034", + "name": "ISP_USB_ID", + "description": "isp usb id", + "offset_int": "0x0034", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field034-bits0-15", + "name": "USB_Vendor_ID", + "description": "Customer defined USB vendor ID used during USB-ISP mode device enumeration" + }, + { + "width": 16, + "id": "field034-bits16-31", + "name": "USB_Product_ID", + "description": "Customer defined USB product ID used during USB-ISP mode device enumeration" + } + ] + }, + { + "id": "field038", + "name": "ISP_USB_CFG", + "description": "isp usb cfg", + "offset_int": "0x0038", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field038-bits0-7", + "name": "USBx_VBUS_PIN", + "description": "Override default USBx_VBUS_DETECT ISP pin. Identifies the pin to be used as USBx_VBUS detect pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field038-bits8-11", + "name": "USBx_VBUS_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by USBx_VBUS_PIN" + }, + { + "width": 4 + }, + { + "width": 3, + "id": "field038-bits16-18", + "name": "EXT_XTAL_CLK", + "description": "USB PHY input clock frequency. For USB high speed PHY external XTAL input is needed. This field specifies the frequency of XTAL used on board. • 000 - 24MHz input clock (Divide by 20) - Default option when CMPA is blank. • 001 - 30MHz input clock (Divide by 16) • 010 - 32MHz input clock (Divide by 15) • 011 - Reserved • 100 - 20MHz input clock (Divide by 24) • 101 - 19.2MHz input clock (Divide by 25) • 110 - 16MHz input clock (Divide by 30) • 111 - 12MHz input clock (Divide by 40)" + }, + { + "width": 1, + "id": "field038-bit19", + "name": "PRE_DIV", + "description": "Enable Pre-divider. Needed to support 48MHz and other high speed crystals" + }, + { + "width": 12 + } + ] + }, + { + "id": "field03C", + "name": "ISP_MISC_CFG", + "description": "isp misc cfg", + "offset_int": "0x003C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field03C-bits0-7", + "name": "I2C_SLAVE_ADDR", + "description": "I2C slave address A 7-bit Address used for selecting our device on shared I2C bus system. By default ROM uses 0x10 as slave address. If this address conflicts with another slave on board customer could use this field to override the address" + }, + { + "width": 14 + }, + { + "width": 2, + "id": "field03C-bits22-23", + "name": "ISP_USB_CUST", + "description": "Use customer defined GPIO for USB VBUS detect function during ISP mode" + }, + { + "width": 2, + "id": "field03C-bits24-25", + "name": "ISP_CAN_CUST", + "description": "Use customer defined CAN ISP pins" + }, + { + "width": 2, + "id": "field03C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins" + }, + { + "width": 2, + "id": "field03C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins" + }, + { + "width": 2, + "id": "field03C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins" + } + ] + }, + { + "id": "field040", + "name": "CC_SOCU_PIN", + "description": "cc socu pin", + "offset_int": "0x0040", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field040-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field040-bit5", + "name": "DSP_DBGEN", + "description": "DSP debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit6", + "name": "ISP_CMD_EN", + "description": "ISP boot command enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit7", + "name": "FA_CMD_EN", + "description": "FA cmd enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase cmd enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 debug enable", + "values": [ + { + "name": "USE_DAP_TO_ENABLE", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 4 + }, + { + "width": 1, + "id": "field040-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication", + "values": [ + { + "name": "All devices", + "value": 0, + "description": "Debug certificate can be used with all devices" + }, + { + "name": "Matching UUID", + "value": 1, + "description": "Debug certificate per device with matching UUID is needed" + } + ] + }, + { + "width": 16, + "id": "field040-bits16-31", + "name": "Inverse_value", + "description": "inverse value of [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field044", + "name": "CC_SOCU_DFLT", + "description": "cc socu dflt", + "offset_int": "0x0044", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field044-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit1", + "name": "DBGEN", + "description": "Non Secure debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field044-bit5", + "name": "DSP_DBGEN", + "description": "DSP debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit6", + "name": "ISP_CMD_EN", + "description": "ISP command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit8", + "name": "ME_CMD_EN", + "description": "Mass erase flash command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 5 + }, + { + "width": 16, + "id": "field044-bits16-31", + "name": "Inverse_value", + "description": "inverse value of [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field048", + "name": "VENDOR_USAGE", + "description": "vendor usage", + "offset_int": "0x0048", + "default_value_int": "0", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field048-bits16-31", + "name": "VENDOR_USAGE", + "description": "Upper 16 bits of vendor usage field defined in DAP. Lower 16-bits come from customer field area (CFPA.DBG_REVOKE_VU)" + } + ] + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field050", + "name": "SECURE_BOOT_CFG", + "description": "secure boot cfg", + "offset_int": "0x0050", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field050-bits0-1", + "name": "SEC_BOOT_EN", + "description": "Secure boot enforcement. This field defines the minimum image verification procedure (CRC32, CMAC, ECDSA sign). The Image type field in header indicates the type of verification data (checksum or signature) included in it", + "values": [ + { + "name": "All", + "value": 0, + "description": "All Image types are allowed" + }, + { + "name": "CRC32 or signed", + "value": 1, + "description": "Only CRC32 or cryptographically signed (CMAC or ECDSA or MLDSA) images are allowed" + }, + { + "name": "Signed only", + "value": 2, + "description": "Only cryptographically Signed (CMAC or ECDSA or MLDSA) images are allowed" + }, + { + "name": "PKI signed only", + "value": 3, + "description": "Only PKI signed (ECDSA or MLDSA) images are allowed" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field050-bits3-4", + "name": "LP_SEC_BOOT", + "description": "LP_SEC_BOOT: Secure boot option for low-power wake from power-down & deep-power down. For CFPA/CMPA do CRC check always", + "values": [ + { + "name": "Same as cold boot", + "value": 0, + "description": "Same as cold boot" + }, + { + "name": "CFPA-CMPA & CRC32", + "value": 1, + "description": "CRC check for CFPA/CMPA & CRC32 check of active image. Uses AHB_CRC image type to check image CRC and loads TZ-M preset data if present before jumping to the image" + }, + { + "name": "CFPA-CMPA & vector addr", + "value": 2, + "description": "CRC check for CFPA/CMPA & jump to vector address specified in CFPA" + }, + { + "name": "CFPA-CMPA & CMAC", + "value": 3, + "description": "CRC check for CFPA/CMPA & CMAC check of active image. Uses AHB_CRC image type to check image CRC and loads TZ-M preset data if present before jumping to the image" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field050-bits6-7", + "name": "DICE_CSR_KEY_TYPE", + "description": "Define the DICE csr and key generation type", + "values": [ + { + "name": "ECC_P384_KEYS_0", + "value": 0, + "description": "Generate DICE ECC P-384 keys" + }, + { + "name": "ECC_P384_KEYS_1", + "value": 1, + "description": "Generate DICE ECC P-384 keys" + }, + { + "name": "SHA384_AND_MLDSA_KEYS_2", + "value": 2, + "description": "Generate DICE SHA384 & MLDSA keys" + }, + { + "name": "SHA384_AND_MLDSA_KEYS_3", + "value": 3, + "description": "Generate DICE SHA384 & MLDSA keys" + } + ] + }, + { + "width": 2, + "id": "field050-bits8-9", + "name": "ENF_CNSA", + "description": "Enforce CNSA suite approved algorithms for secure boot, secure update and debug authentication", + "values": [ + { + "name": "AT_LEAST_CNSA10_0", + "value": 0, + "description": "At least CNSA 1.0 algorithms are used. (ECC P-384, SHA384 & AES256)" + }, + { + "name": "AT_LEAST_CNSA10_1", + "value": 1, + "description": "At least CNSA 1.0 algorithms are used. (ECC P-384, SHA384 & AES256)" + }, + { + "name": "ONLY_CNSA20_2", + "value": 2, + "description": "Only CNSA 2.0 algorithms are used.(ECDSA P-384 + MLDSA-87, ML-KEM, SHA384 & AES256)" + }, + { + "name": "ONLY_CNSA20_3", + "value": 3, + "description": "Only CNSA 2.0 algorithms are used.(ECDSA P-384 + MLDSA-87, ML-KEM, SHA384 & AES256)" + } + ] + }, + { + "width": 2, + "id": "field050-bits10-11", + "name": "ENF_TZM_PRESET", + "description": "TrustZone-M mode", + "values": [ + { + "name": "IGNORED", + "value": 0, + "description": "Ignored" + }, + { + "name": "ENFORCED_1", + "value": 1, + "description": "Enforce preset TZM data in image manifest" + }, + { + "name": "ENFORCED_2", + "value": 2, + "description": "Enforce preset TZM data in image manifest" + }, + { + "name": "ENFORCED_3", + "value": 3, + "description": "Enforce preset TZM data in image manifest" + } + ] + }, + { + "width": 2, + "id": "field050-bits12-13", + "name": "ITRC_ZEROIZE", + "description": "RAM zeroize on ITRC event. Zeroize long-term storage RAM (RAMA) on subsequent boot when Intrusion & Tamper control signals an intrusion event (ITRC_OUT3)", + "values": [ + { + "name": "No action", + "value": 0, + "description": "No action" + }, + { + "name": "Always on ITRC", + "value": 1, + "description": "Always Zeroize PKC RAM on ITRC event only" + }, + { + "name": "On ITRC", + "value": 2, + "description": "Zeroize PKC & RAMA on ITRC event only" + }, + { + "name": "Always on all reset boot", + "value": 3, + "description": "Always Zeroize PKC & RAMA on all reset boot" + } + ] + }, + { + "width": 2, + "id": "field050-bits14-15", + "name": "ACTIVE_IMG_PROT", + "description": "Protection of active image. This field defines protection of flash area occupied by the active image. Only applicable to internal flash", + "values": [ + { + "name": "CFPA Flash", + "value": 0, + "description": "Protection is defined using the CFPA FLASH_ACL settings" + }, + { + "name": "Write with sticky lock", + "value": 1, + "description": "Write protect active image area with sticky lock. GLBAC2 is used. FLASH_ACL settings are ignored" + }, + { + "name": "Write without sticky lock", + "value": 2, + "description": "Write protect active image area without sticky lock. GLBAC4 is used. FLASH_ACL settings are ignored" + }, + { + "name": "XOM with sticky lock", + "value": 3, + "description": "XOM protect active image area with sticky lock. GLBAC6 is used. FLASH_ACL settings are ignored" + } + ] + }, + { + "width": 2, + "id": "field050-bits16-17", + "name": "FIPS_SHA_STEN", + "description": "Enable self-test for SHA2 block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "Not included", + "value": 0, + "description": "not included" + }, + { + "name": "Boot on failure", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "ISP on failure", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "Lock on failure", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits18-19", + "name": "FIPS_AES_STEN", + "description": "Enable self-test for AES block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "Not included", + "value": 0, + "description": "not included" + }, + { + "name": "Boot on failure", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "ISP on failure", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "Lock on failure", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits20-21", + "name": "FIPS_ECDSA_STEN", + "description": "Enable self-test for ECDSA block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "Not included", + "value": 0, + "description": "not included" + }, + { + "name": "Boot on failure", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "ISP on failure", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "Lock on failure", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits22-23", + "name": "FIPS_DRBG_STEN", + "description": "Enable self-test for DRBG block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "Not included", + "value": 0, + "description": "not included" + }, + { + "name": "Boot on failure", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "ISP on failure", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "Lock on failure", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits24-25", + "name": "FIPS_HMAC_STEN", + "description": "Enable self-test for HMAC block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "Not included", + "value": 0, + "description": "not included" + }, + { + "name": "Boot on failure", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "ISP on failure", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "Lock on failure", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits26-27", + "name": "FIPS_KDF_STEN", + "description": "Enable self-test for KDF & CMAC blocks on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "Not included", + "value": 0, + "description": "not included" + }, + { + "name": "Boot on failure", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "ISP on failure", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "Lock on failure", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits28-29", + "name": "FIPS_PUF_STEN", + "description": "Enable self-test for PUF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "Not included", + "value": 0, + "description": "not included" + }, + { + "name": "Boot on failure", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "ISP on failure", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "Lock on failure", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "field054", + "name": "RoTK_USAGE", + "description": "rotk usage", + "offset_int": "0x0054", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field054-bits0-2", + "name": "RoTK0_Usage", + "description": "RoT key 0 usage properties", + "values": [ + { + "name": "Usable", + "value": 0, + "description": "Usable as debug CA, boot image CA, FW update CA, boot image and FW update key" + }, + { + "name": "Debug", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "Img boot fw", + "value": 2, + "description": "Usable as boot image and FW update CA only" + }, + { + "name": "Debug boot fw img", + "value": 3, + "description": "Usable as debug, boot image, and FW image CA" + }, + { + "name": "Img fw update key", + "value": 4, + "description": "Usable as boot image key and FW update key only" + }, + { + "name": "Boot image key", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "Fw update img key", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "Key slot not used", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field054-bits3-5", + "name": "RoTK1_Usage", + "description": "RoT key 1 usage properties", + "values": [ + { + "name": "Usable", + "value": 0, + "description": "Usable as debug CA, boot image CA, FW update CA, boot image and FW update key" + }, + { + "name": "Debug", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "Img boot fw", + "value": 2, + "description": "Usable as boot image and FW update CA only" + }, + { + "name": "Debug boot fw img", + "value": 3, + "description": "Usable as debug, boot image, and FW image CA" + }, + { + "name": "Img fw update key", + "value": 4, + "description": "Usable as boot image key and FW update key only" + }, + { + "name": "Boot image key", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "Fw update img key", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "Key slot not used", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field054-bits6-8", + "name": "RoTK2_Usage", + "description": "RoT key 2 usage properties", + "values": [ + { + "name": "Usable", + "value": 0, + "description": "Usable as debug CA, boot image CA, FW update CA, boot image and FW update key" + }, + { + "name": "Debug", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "Img boot fw", + "value": 2, + "description": "Usable as boot image and FW update CA only" + }, + { + "name": "Debug boot fw img", + "value": 3, + "description": "Usable as debug, boot image, and FW image CA" + }, + { + "name": "Img fw update key", + "value": 4, + "description": "Usable as boot image key and FW update key only" + }, + { + "name": "Boot image key", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "Fw update img key", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "Key slot not used", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field054-bits9-11", + "name": "RoTK3_Usage", + "description": "RoT key 3 usage properties", + "values": [ + { + "name": "Usable", + "value": 0, + "description": "Usable as debug CA, boot image CA, FW update CA, boot image and FW update key" + }, + { + "name": "Debug", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "Img boot fw", + "value": 2, + "description": "Usable as boot image and FW update CA only" + }, + { + "name": "Debug boot fw img", + "value": 3, + "description": "Usable as debug, boot image, and FW image CA" + }, + { + "name": "Img fw update key", + "value": 4, + "description": "Usable as boot image key and FW update key only" + }, + { + "name": "Boot image key", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "Fw update img key", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "Key slot not used", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 1, + "id": "field054-bit12", + "name": "SKIP_DICE", + "description": "Skip DICE computation", + "values": [ + { + "name": "ENABLE_DICE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_DICE", + "value": 1, + "description": "Disable DICE" + } + ] + }, + { + "width": 1, + "id": "field054-bit13", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area (IFR1) containing specific part configuration data defined during chip manufacturing process in DICE computation", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 1, + "id": "field054-bit14", + "name": "DICE_INC_CUST_CFG", + "description": "Include data from CMPA page (512 bytes) in DICE computation", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field054-bits16-17", + "name": "REG0_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 0. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check" + }, + { + "width": 2, + "id": "field054-bits18-19", + "name": "REG1_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 2. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check" + }, + { + "width": 2, + "id": "field054-bits20-21", + "name": "REG2_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 2. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check" + }, + { + "width": 2, + "id": "field054-bits22-23", + "name": "REG3_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 3. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check" + }, + { + "width": 2, + "id": "field054-bits24-25", + "name": "NPX_LOCK_CTX0", + "description": "Lock on-chip flash NPX PRINCE context 0 settings", + "values": [ + { + "name": "REGION_IS_NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "REGION_IS_LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "REGION_IS_LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "REGION_IS_LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field054-bits26-27", + "name": "NPX_LOCK_CTX1", + "description": "Lock on-chip flash NPX PRINCE context 1 settings", + "values": [ + { + "name": "REGION_IS_NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "REGION_IS_LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "REGION_IS_LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "REGION_IS_LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field054-bits28-29", + "name": "NPX_LOCK_CTX2", + "description": "Lock on-chip flash NPX PRINCE context 2 settings", + "values": [ + { + "name": "REGION_IS_NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "REGION_IS_LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "REGION_IS_LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "REGION_IS_LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field054-bits30-31", + "name": "NPX_LOCK_CTX3", + "description": "Lock on-chip flash NPX PRINCE context 3 settings", + "values": [ + { + "name": "REGION_IS_NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "REGION_IS_LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "REGION_IS_LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "REGION_IS_LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + } + ] + }, + { + "id": "field058", + "name": "DICE_CSR_SRAM_ADDR", + "description": "dice csr sram addr", + "offset_int": "0x0058", + "default_value_int": "0" + }, + { + "id": "field05C", + "name": "DICE_ALIAS_KEY_SRAM_ADDR", + "description": "dice alias key sram addr", + "offset_int": "0x005C", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field060", + "name": "ROTKH0", + "description": "rotkh[383:352]", + "offset_int": "0x0060", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "ROTKH1", + "description": "rotkh[351:320]", + "offset_int": "0x0064", + "default_value_int": "0" + }, + { + "id": "field068", + "name": "ROTKH2", + "description": "rotkh[319:288]", + "offset_int": "0x0068", + "default_value_int": "0" + }, + { + "id": "field06C", + "name": "ROTKH3", + "description": "rotkh[287:256]", + "offset_int": "0x006C", + "default_value_int": "0" + }, + { + "id": "field070", + "name": "ROTKH4", + "description": "rotkh[255:224]", + "offset_int": "0x0070", + "default_value_int": "0" + }, + { + "id": "field074", + "name": "ROTKH5", + "description": "rotkh[223:192]", + "offset_int": "0x0074", + "default_value_int": "0" + }, + { + "id": "field078", + "name": "ROTKH6", + "description": "rotkh[191:160]", + "offset_int": "0x0078", + "default_value_int": "0" + }, + { + "id": "field07C", + "name": "ROTKH7", + "description": "rotkh[159:128]", + "offset_int": "0x007C", + "default_value_int": "0" + }, + { + "id": "field080", + "name": "ROTKH8", + "description": "rotkh[127:96]", + "offset_int": "0x0080", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "ROTKH9", + "description": "rotkh[95:64]", + "offset_int": "0x0084", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "ROTKH10", + "description": "rotkh[63:32]", + "offset_int": "0x0088", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "ROTKH11", + "description": "rotkh[31:0]", + "offset_int": "0x008C", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Prince", + "description": "Prince configuration" + }, + "registers": [ + { + "id": "field090", + "name": "NPX_CTX0_WD0", + "description": "npx ctx0 wd0", + "offset_int": "0x0090", + "default_value_int": "0" + }, + { + "id": "field094", + "name": "NPX_CTX0_WD1", + "description": "NPX CTX0 WD1", + "offset_int": "0x0094", + "default_value_int": "0" + }, + { + "id": "field098", + "name": "NPX_CTX1_WD0", + "description": "npx ctx1 wd0", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "field09C", + "name": "NPX_CTX1_WD1", + "description": "NPX CTX1 WD1", + "offset_int": "0x009C", + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "NPX_CTX2_WD0", + "description": "npx ctx2 wd0", + "offset_int": "0x00A0", + "default_value_int": "0" + }, + { + "id": "field0A4", + "name": "NPX_CTX2_WD1", + "description": "NPX CTX2 WD1", + "offset_int": "0x00A4", + "default_value_int": "0" + }, + { + "id": "field0A8", + "name": "NPX_CTX3_WD0", + "description": "npx ctx3 wd0", + "offset_int": "0x00A8", + "default_value_int": "0" + }, + { + "id": "field0AC", + "name": "NPX_CTX3_WD1", + "description": "NPX CTX3 WD1", + "offset_int": "0x00AC", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "IPED", + "description": "IPED" + }, + "registers": [ + { + "id": "field0B0", + "name": "IPED0_START", + "description": "ROM code will not manage these fields, but SDK driver can manage these.", + "offset_int": "0x00B0", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0B0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0B0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "BUS_ERROR_ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "BUS_ERROR_DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0B0-bits8-31", + "name": "IPED_CTX0_START_ADDR", + "description": "Upper 24-bits of IPED region 0 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0B4", + "name": "IPED0_END", + "description": "iped0 end", + "offset_int": "0x00B4", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0B4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the IPED context settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0B4-bits8-31", + "name": "IPED_CTX0_END_ADDR", + "description": "Upper 24-bits of IPED region 0 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0B8", + "name": "IPED1_START", + "description": "iped1 start", + "offset_int": "0x00B8", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0B8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0B8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "BUS_ERROR_ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "BUS_ERROR_DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0B8-bits8-31", + "name": "IPED_CTX1_START_ADDR", + "description": "Upper 24-bits of IPED region 1 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0BC", + "name": "IPED1_END", + "description": "iped1 end", + "offset_int": "0x00BC", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0BC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the IPED context settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0BC-bits8-31", + "name": "IPED_CTX1_END_ADDR", + "description": "Upper 24-bits of IPED region 1 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0C0", + "name": "IPED2_START", + "description": "iped2 start", + "offset_int": "0x00C0", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0C0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0C0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "BUS_ERROR_ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "BUS_ERROR_DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0C0-bits8-31", + "name": "IPED_CTX2_START_ADDR", + "description": "Upper 24-bits of IPED region 2 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0C4", + "name": "IPED2_END", + "description": "iped2 end", + "offset_int": "0x00C4", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0C4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the IPED context settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0C4-bits8-31", + "name": "IPED_CTX2_END_ADDR", + "description": "Upper 24-bits of IPED region 2 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0C8", + "name": "IPED3_START", + "description": "iped3 start", + "offset_int": "0x00C8", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0C8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0C8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "BUS_ERROR_ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "BUS_ERROR_DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0C8-bits8-31", + "name": "IPED_CTX3_START_ADDR", + "description": "Upper 24-bits of IPED region 3 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0CC", + "name": "IPED3_END", + "description": "iped3 end", + "offset_int": "0x00CC", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0CC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the IPED context settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0CC-bits8-31", + "name": "IPED_CTX3_END_ADDR", + "description": "Upper 24-bits of IPED region 3 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0D0", + "name": "IPED4_START", + "description": "iped4 start", + "offset_int": "0x00D0", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0D0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0D0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "BUS_ERROR_ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "BUS_ERROR_DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0D0-bits8-31", + "name": "IPED_CTX4_START_ADDR", + "description": "Upper 24-bits of IPED region 4 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0D4", + "name": "IPED4_END", + "description": "iped4 end", + "offset_int": "0x00D4", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0D4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the IPED context settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0D4-bits8-31", + "name": "IPED_CTX4_END_ADDR", + "description": "Upper 24-bits of IPED region 4 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0D8", + "name": "IPED5_START", + "description": "iped5 start", + "offset_int": "0x00D8", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0D8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0D8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "BUS_ERROR_ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "BUS_ERROR_DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0D8-bits8-31", + "name": "IPED_CTX5_START_ADDR", + "description": "Upper 24-bits of IPED region 5 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0DC", + "name": "IPED5_END", + "description": "iped5 end", + "offset_int": "0x00DC", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0DC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the IPED context settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0DC-bits8-31", + "name": "IPED_CTX5_END_ADDR", + "description": "Upper 24-bits of IPED region 5 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0E0", + "name": "IPED6_START", + "description": "iped6 start", + "offset_int": "0x00E0", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0E0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0E0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "BUS_ERROR_ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "BUS_ERROR_DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0E0-bits8-31", + "name": "IPED_CTX6_START_ADDR", + "description": "Upper 24-bits of IPED region 6 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0E4", + "name": "IPED6_END", + "description": "iped6 end", + "offset_int": "0x00E4", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0E4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the IPED context settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0E4-bits8-31", + "name": "IPED_CTX6_END_ADDR", + "description": "Upper 24-bits of IPED region 6 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0E8", + "name": "IPED7_START", + "description": "iped7 start", + "offset_int": "0x00E8", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0E8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0E8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "BUS_ERROR_ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "BUS_ERROR_DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0E8-bits8-31", + "name": "IPED_CTX7_START_ADDR", + "description": "Upper 24-bits of IPED region 7 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0EC", + "name": "IPED7_END", + "description": "iped7 end", + "offset_int": "0x00EC", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0EC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the IPED context settings", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_1", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_2", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_3", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0EC-bits8-31", + "name": "IPED_CTX7_END_ADDR", + "description": "Upper 24-bits of IPED region 7 end address. Lower 8 address bits are always 0" + } + ] + } + ] + }, + { + "group": { + "name": "Recovery Image", + "description": "Recovery Image" + }, + "registers": [ + { + "id": "field0F0", + "name": "REC_IMG_EXT0", + "description": "rec img ext0", + "offset_int": "0x00F0", + "default_value_int": "0", + "bitfields": [ + { + "width": 8 + }, + { + "width": 24, + "id": "field0F0-bits8-31", + "name": "REC_IMG_EXT0", + "description": "Bitmap mask to indicate sectors included in recovery image. Recovery image is programmed in BANK1_IFR0. But if the image size is more than 32KB, this field can be used to indicate sectors to include in recovery image. ROM will configure flash protection setting for these sectors the same as BANK1_IFR0 before exiting to user code. The protection settings are managed through CMPA.OEM_BANK1_IFR0_PROT. The lower 8 sectors are excluded from this mask to avoid conflicts with dual image boot feature" + } + ] + }, + { + "id": "field0F4", + "name": "REC_IMG_EXT1", + "description": "REC IMG EXT1", + "offset_int": "0x00F4", + "default_value_int": "0", + "bitfields": [ + { + "width": 8 + }, + { + "width": 24, + "id": "field0F4-bits8-31", + "name": "REC_IMG_EXT1", + "description": "rec img ext1 (bitmap mask for recovery image extended sectors 40 -63)" + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 000F8-00011C", + "description": "Reserved 000F8-00011C" + }, + "registers": [ + { + "id": "field0F8", + "name": "PROV_FW_SRAM_ADDR", + "description": "prov fw sram addr", + "offset_int": "0x00F8", + "default_value_int": "0" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00100", + "name": "Reserved 0x00100", + "description": "This field is reserved for internal use", + "offset_int": "0x0100", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00104", + "name": "Reserved 0x00104", + "description": "This field is reserved for internal use", + "offset_int": "0x0104", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00108", + "name": "Reserved 0x00108", + "description": "This field is reserved for internal use", + "offset_int": "0x0108", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00110", + "name": "Reserved 0x00110", + "description": "This field is reserved for internal use", + "offset_int": "0x0110", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field120", + "name": "QUICK_SET_GPIO_0", + "description": "quick set gpio 0", + "offset_int": "0x0120", + "default_value_int": "0" + }, + { + "id": "field124", + "name": "QUICK_CLR_GPIO_0", + "description": "quick clr gpio 0", + "offset_int": "0x0124", + "default_value_int": "0" + }, + { + "id": "field128", + "name": "QUICK_SET_GPIO_1", + "description": "QUICK SET GPIO 1", + "offset_int": "0x0128", + "default_value_int": "0" + }, + { + "id": "field12C", + "name": "QUICK_CLR_GPIO_1", + "description": "QUICK CLR GPIO 1", + "offset_int": "0x012C", + "default_value_int": "0" + }, + { + "id": "field130", + "name": "QUICK_SET_GPIO_2", + "description": "quick set gpio 2", + "offset_int": "0x0130", + "default_value_int": "0" + }, + { + "id": "field134", + "name": "QUICK_CLR_GPIO_2", + "description": "quick clr gpio 2", + "offset_int": "0x0134", + "default_value_int": "0" + }, + { + "id": "field138", + "name": "QUICK_SET_GPIO_3", + "description": "quick set gpio 3", + "offset_int": "0x0138", + "default_value_int": "0" + }, + { + "id": "field13C", + "name": "QUICK_CLR_GPIO_3", + "description": "quick clr gpio 3", + "offset_int": "0x013C", + "default_value_int": "0" + }, + { + "id": "field140", + "name": "QUICK_SET_GPIO_4", + "description": "quick set gpio 4", + "offset_int": "0x0140", + "default_value_int": "0" + }, + { + "id": "field144", + "name": "QUICK_CLR_GPIO_4", + "description": "quick clr gpio 4", + "offset_int": "0x0144", + "default_value_int": "0" + }, + { + "id": "field148", + "name": "QUICK_SET_GPIO_5", + "description": "quick set gpio 5", + "offset_int": "0x0148", + "default_value_int": "0" + }, + { + "id": "field14C", + "name": "QUICK_CLR_GPIO_5", + "description": "quick clr gpio 5", + "offset_int": "0x014C", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Challenge", + "description": "Challenge" + }, + "registers": [ + { + "id": "field150", + "name": "CHALLENGE_0", + "description": "challenge 0", + "offset_int": "0x0150", + "default_value_int": "0" + }, + { + "id": "field154", + "name": "CHALLENGE_1", + "description": "CHALLENGE 1", + "offset_int": "0x0154", + "default_value_int": "0" + }, + { + "id": "field158", + "name": "CHALLENGE_2", + "description": "challenge 2", + "offset_int": "0x0158", + "default_value_int": "0" + }, + { + "id": "field15C", + "name": "CHALLENGE_3", + "description": "challenge 3", + "offset_int": "0x015C", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CUST_MK_SK", + "description": "CUST_MK_SK key blob" + }, + "registers": [ + { + "id": "field160", + "name": "CUST_MK_SK0", + "description": "cust mk sk key blob", + "offset_int": "0x0160", + "default_value_int": "0" + }, + { + "id": "field164", + "name": "CUST_MK_SK1", + "description": "cust mk sk key blob", + "offset_int": "0x0164", + "default_value_int": "0" + }, + { + "id": "field168", + "name": "CUST_MK_SK2", + "description": "cust mk sk key blob", + "offset_int": "0x0168", + "default_value_int": "0" + }, + { + "id": "field16C", + "name": "CUST_MK_SK3", + "description": "cust mk sk key blob", + "offset_int": "0x016C", + "default_value_int": "0" + }, + { + "id": "field170", + "name": "CUST_MK_SK4", + "description": "cust mk sk key blob", + "offset_int": "0x0170", + "default_value_int": "0" + }, + { + "id": "field174", + "name": "CUST_MK_SK5", + "description": "cust mk sk key blob", + "offset_int": "0x0174", + "default_value_int": "0" + }, + { + "id": "field178", + "name": "CUST_MK_SK6", + "description": "cust mk sk key blob", + "offset_int": "0x0178", + "default_value_int": "0" + }, + { + "id": "field17C", + "name": "CUST_MK_SK7", + "description": "cust mk sk key blob", + "offset_int": "0x017C", + "default_value_int": "0" + }, + { + "id": "field180", + "name": "CUST_MK_SK8", + "description": "cust mk sk key blob", + "offset_int": "0x0180", + "default_value_int": "0" + }, + { + "id": "field184", + "name": "CUST_MK_SK9", + "description": "cust mk sk key blob", + "offset_int": "0x0184", + "default_value_int": "0" + }, + { + "id": "field188", + "name": "CUST_MK_SK10", + "description": "cust mk sk key blob", + "offset_int": "0x0188", + "default_value_int": "0" + }, + { + "id": "field18C", + "name": "CUST_MK_SK11", + "description": "cust mk sk key blob", + "offset_int": "0x018C", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "PQC RoTKH", + "description": "PQC Root of Trust Keys Table hash" + }, + "registers": [ + { + "id": "field190", + "name": "PQC_ROTKH0", + "description": "pqc rotkh[383:352]", + "offset_int": "0x0190", + "default_value_int": "0" + }, + { + "id": "field194", + "name": "PQC_ROTKH1", + "description": "pqc rotkh[351:320]", + "offset_int": "0x0194", + "default_value_int": "0" + }, + { + "id": "field198", + "name": "PQC_ROTKH2", + "description": "pqc rotkh[319:288]", + "offset_int": "0x0198", + "default_value_int": "0" + }, + { + "id": "field19C", + "name": "PQC_ROTKH3", + "description": "pqc rotkh[287:256]", + "offset_int": "0x019C", + "default_value_int": "0" + }, + { + "id": "field1A0", + "name": "PQC_ROTKH4", + "description": "pqc rotkh[255:224]", + "offset_int": "0x01A0", + "default_value_int": "0" + }, + { + "id": "field1A4", + "name": "PQC_ROTKH5", + "description": "pqc rotkh[223:192]", + "offset_int": "0x01A4", + "default_value_int": "0" + }, + { + "id": "field1A8", + "name": "PQC_ROTKH6", + "description": "pqc rotkh[191:160]", + "offset_int": "0x01A8", + "default_value_int": "0" + }, + { + "id": "field1AC", + "name": "PQC_ROTKH7", + "description": "pqc rotkh[159:128]", + "offset_int": "0x01AC", + "default_value_int": "0" + }, + { + "id": "field1B0", + "name": "PQC_ROTKH8", + "description": "pqc rotkh[127:96]", + "offset_int": "0x01B0", + "default_value_int": "0" + }, + { + "id": "field1B4", + "name": "PQC_ROTKH9", + "description": "pqc rotkh[95:64]", + "offset_int": "0x01B4", + "default_value_int": "0" + }, + { + "id": "field1B8", + "name": "PQC_ROTKH10", + "description": "pqc rotkh[63:32]", + "offset_int": "0x01B8", + "default_value_int": "0" + }, + { + "id": "field1BC", + "name": "PQC_ROTKH11", + "description": "pqc rotkh[31:0]", + "offset_int": "0x01BC", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 001C0-0001E8", + "description": "Reserved 001C0-0001E8" + }, + "registers": [ + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CMPA CRC32", + "description": "CMPA CRC32" + }, + "registers": [ + { + "id": "field1EC", + "name": "CMPA_CRC32", + "description": "cmpa crc32", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CMPA CMAC", + "description": "CMPA CMAC" + }, + "registers": [ + { + "id": "field1F0", + "name": "CMPA_CMAC0", + "description": "cmpa cmac", + "offset_int": "0x01F0", + "default_value_int": "0" + }, + { + "id": "field1F4", + "name": "CMPA_CMAC1", + "description": "CMPA CMAC1", + "offset_int": "0x01F4", + "default_value_int": "0" + }, + { + "id": "field1F8", + "name": "CMPA_CMAC2", + "description": "CMPA CMAC2", + "offset_int": "0x01F8", + "default_value_int": "0" + }, + { + "id": "field1FC", + "name": "CMPA_CMAC3", + "description": "CMPA CMAC3", + "offset_int": "0x01FC", + "default_value_int": "0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn557s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn557s/database.yaml new file mode 100644 index 0000000..8e05918 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn557s/database.yaml @@ -0,0 +1,13 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxn556s + +# General MCU information +info: + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x200000" + external: false \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/database.yaml new file mode 100644 index 0000000..1a1a9fe --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/database.yaml @@ -0,0 +1,487 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: + features: + dat: + socc: 6 + pfr: + cfpa: + reg_spec: pfr_cfpa_a0.json + cmpa: + reg_spec: pfr_cmpa_a0.json + tz: + reg_spec: tz_a0.json + a1: + features: + pfr: + cfpa: + reg_spec: pfr_cfpa_a1.json + cmpa: + reg_spec: pfr_cmpa_a1.json + tz: + reg_spec: tz_a1.json + dice: + reg_spec: dice_had_a1.json +latest: a1 + +# General MCU information +info: + use_in_doc: True + purpose: MCX Series + spsdk_predecessor_name: mcxn9xx + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/mcx-arm-cortex-m/mcx-n-series/mcx-n94x-and-n54x-mcus-with-dual-core-arm-cortex-m33-edgelock-secure-subsystem-and-neural-processing-unit:MCX-N94X-N54X + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x100000" + external: false + flexspi_ns: + start_int: "0x80000000" + size_int: "0x8000000" + external: true + flexspi_s: + start_int: "0x90000000" + size_int: "0x8000000" + external: true + mirror_of: flexspi_ns + internal-flash_s: + start_int: "0x10000000" + size_int: "0x100000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x40000" + external: false + non_xip_type: int_ram + sramx: + start_int: "0x4000000" + size_int: "0x18000" + external: false + __comment: Does not work as target `onchip RAM` memory + ifr-bank1_ns: + start_int: "0x1008000" + size_int: "0x8000" + external: false + ifr-bank1_s: + start_int: "0x11008000" + size_int: "0x8000" + external: false + isp: + rom: + protocol: mboot + interfaces: ["usb", "uart", "spi", "i2c", "can"] + usb: + - vid: 0x1FC9 + pid: 0x014F + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x20007000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert21] + rot_type: "cert_block_21" + + # ======== DAT section ======== + dat: + socc: 7 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + plain_ram: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestCrc + - Mbi_MixinImageSubType + - Mbi_MixinImageVersion + - Mbi_MixinFwVersion + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + plain: plain_ram + crc: crc_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0x100_0000 + size: 512 + seal_start: field1EC # CFPA_CRC32 + seal_count: 1 + grouped_registers: + - uid: cfpa_dice_cert + name: DICE_Certificate + width: 1152 + config_as_hexstring: true + description: + DICE Certificate field is compounded by 36 32-bit fields and contains + value of DICE Certificate generated by ROM + sub_regs: + - field100 + - field104 + - field108 + - field10C + - field110 + - field114 + - field118 + - field11C + - field120 + - field124 + - field128 + - field12C + - field130 + - field134 + - field138 + - field13C + - field140 + - field144 + - field148 + - field14C + - field150 + - field154 + - field158 + - field15C + - field160 + - field164 + - field168 + - field16C + - field170 + - field174 + - field178 + - field17C + - Reserved00180 + - Reserved00184 + - Reserved00188 + - Reserved0018C + computed_fields: + field000: # HEADER + field000-bits8-15: pfr_reg_inverse_lower_8_bits # INV_CFPA_LC_STATE + field020: # DBG_REVOKE_VU + field020-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field024: # DCFG_CC_SOCU_NS_PIN + field024-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field028: # DCFG_CC_SOCU_NS_DFLT + field028-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + cmpa: # CMPA description + address: 0x0100_4000 + size: 512 + seal_start: field1F0 # CMPA_CMAC0 + seal_count: 4 + grouped_registers: + - uid: cmpa_rotkh + name: ROTKH + width: 384 + reversed: true + config_as_hexstring: true + alternative_widths: [256] + description: + ROTKH field is compounded by 12 32-bit fields and contains Root key table hash. + Root of Trust Key Hash is SHA256 or SHA384 of RoTK public. Hash algorithm is selected + based on RoTK EC type (secp256r1 -> SHA256 or secp384r1 -> SHA384). + Same RoTKs and RoTKTH values are shared between debug authentication, SB3.1 firmware updates + container and signed boot image based on CMPA.RoTKx_Usage. + sub_regs: + - field060 + - field064 + - field068 + - field06C + - field070 + - field074 + - field078 + - field07C + - field080 + - field084 + - field088 + - field08C + - uid: cmpa_keyblob + name: CUST_MK_SK_KEY_BLOB + width: 384 + reversed: false + config_as_hexstring: true + description: CUST_MK_SK key blob. + CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. + CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. + To store this key into CMPA, SB_STORE_KEY command should be used. + sub_regs: + - field160 + - field164 + - field168 + - field16C + - field170 + - field174 + - field178 + - field17C + - field180 + - field184 + - field188 + - field18C + computed_fields: + field040: # DCFG_CC_SOCU_PIN + field040-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field044: # DCFG_CC_SOCU_DFLT + field044-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + reg_spec_modification: + field0B0: + bitfields: + field0B0-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0B4: + bitfields: + field0B4-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0B8: + bitfields: + field0B8-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0BC: + bitfields: + field0BC-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0C0: + bitfields: + field0C0-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0C4: + bitfields: + field0C4-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0C8: + bitfields: + field0C8-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0CC: + bitfields: + field0CC-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0D0: + bitfields: + field0D0-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0D4: + bitfields: + field0D4-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0D8: + bitfields: + field0D8-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0DC: + bitfields: + field0DC-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0E0: + bitfields: + field0E0-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0E4: + bitfields: + field0E4-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0E8: + bitfields: + field0E8-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + field0EC: + bitfields: + field0EC-bits8-31: + config_processor: + SHIFT_RIGHT:COUNT=8;DESC=ROM only uses upper 24bits to address + IPED region. In config file use full 32b address. + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== Bootable image section ======== + bootable_image: + mem_types: + flexspi_nor: + image_pattern: ones + segments: + fcb: 0x0400 + image_version_ap: 0x0600 + mbi: 0x1000 + recovery_spi_sb31: + segments: + sb31: 0x00 + recovery_spi_mbi: + segments: + mbi: 0x00 + internal: + segments: + mbi: 0x00 + + # ======== Secure binary v3.1 section ======== + sb31: + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - copy + - loadHashLocking + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + key_wraps_version: 2 + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsmSB31] + key_blob_offset: 0x0 + key_blob_command_position: -1 + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - loadCMAC + - copy + - loadHashLocking + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + recommended_flow: + - programLifeCycleFuse: + address: 1 + value: 0x03000003 + - loadCMPA: + address: 0x0100_4000 + - loadCFPA: + address: 0x100_0000 + - loadKeyBlob: + offset: 0x0 + + # ======== TrustZone section ======== + tz: {} + + # ======== DICE configuration ======== + dice: + buffer_address: 0x2002_0050 + buffer_size: 0x1000 + csr_address: 0x0100_0100 + csr_length: 208 + response_length: 324 + rkth_length: 32 + rkth_truncated_length: 32 + need_reset: true + + # ======== EL2GO TP section ======== + el2go_tp: + el2go_name: MCXN + prov_method: dispatch_fw + dispatch_method: sb_only + use_additional_data: true + fw_read_address: 0x2000_0100 + ignored_otp_ranges: [11, 22] + clean_method: erase_cmpa + validation_method: max_count=16;max_total_size=16384 + + # ======== Memory configuration ======== + memcfg: + peripherals: + flexspi_nor: + instances: [0] + spi_nor: + instances: [0] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/dice_had_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/dice_had_a1.json new file mode 100644 index 0000000..b18114b --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/dice_had_a1.json @@ -0,0 +1,1068 @@ +{ + "cpu": "MCXN946", + "groups": [ + { + "group": { + "name": "DICE HAD registers", + "description": "Registers used by DICE attestation." + }, + "registers": [ + { + "id": "field9D0", + "offset_int": "0x000", + "reg_width": 32, + "name": "ELS_AS_CFG0", + "description": "ELS AS Configuration", + "default_value_int": "0xc0255", + "bitfields": [ + { + "id": "field9D0-bits0-7", + "width": 8, + "name": "CFG_LC_STATE", + "access": "RO", + "description": "LC state configuration bit" + }, + { + "width": 1 + }, + { + "id": "field9D0-bit9", + "width": 1, + "name": "CFG_LVD_CORE_RESET_ENABLED", + "access": "RO", + "description": "When SPC CORE LVD analog detector are turned on, and CORE LVD reset are enabled, this bit indicates state 1." + }, + { + "width": 1 + }, + { + "id": "field9D0-bit11", + "width": 1, + "name": "CFG_LVD_CORE_IRQ_ENABLED", + "access": "RO", + "description": "When SPC CORE LVD analog detector are turned on, and CORE LVD IRQ are enabled, this bit indicates state 1." + }, + { + "id": "field9D0-bit12", + "width": 1, + "name": "CFG_WDT0_ENABLED", + "access": "RO", + "description": "When WatchDog Timer 0 is activated, this bit indicates state 1" + }, + { + "id": "field9D0-bit13", + "width": 1, + "name": "CFG_CWDT0_ENABLED", + "access": "RO", + "description": "When Code WatchDog Timer 0 is activated, this bit indicates state 1" + }, + { + "id": "field9D0-bit14", + "width": 1, + "name": "CFG_ELS_GDET_ENABLED", + "access": "RO", + "description": "When either GDET is enabled, this bit indicates state 1." + }, + { + "id": "field9D0-bit15", + "width": 1, + "name": "CFG_ANA_GDET_RESET_ENABLED", + "access": "RO", + "description": "When SPC analog glitch detect reset is enabled, this bit indicates state 1" + }, + { + "id": "field9D0-bit16", + "width": 1, + "name": "CFG_ANA_GDET_IRQ_ENABLED", + "access": "RO", + "description": "When SPC analog glitch detect IRQ is enabled, this bit indicates state 1" + }, + { + "id": "field9D0-bit17", + "width": 1, + "name": "CFG_TAMPER_DET_ENABLED", + "access": "RO", + "description": "When tamper detector is enabled in TDET, this bit indicates state 1." + }, + { + "id": "field9D0-bit18", + "width": 1, + "name": "CFG_LVD_VSYS_RESET_ENABLED", + "access": "RO", + "description": "When SPC VSYS LVD analog detector are turned on and VSYS LVD reset are enabled, this bit indicates state 1." + }, + { + "id": "field9D0-bit19", + "width": 1, + "name": "CFG_LVD_VDDIO_RESET_ENABLED", + "access": "RO", + "description": "When SPC VDDIO LVD analog detector are turned on and VDDIO LVD reset are enabled, this bit indicates state 1." + }, + { + "id": "field9D0-bit20", + "width": 1, + "name": "CFG_LVD_VSYS_IRQ_ENABLED", + "access": "RO", + "description": "When SPC VSYS LVD analog detector are turned on and VSYS LVD irq are enabled, this bit indicates state 1." + }, + { + "id": "field9D0-bit21", + "width": 1, + "name": "CFG_LVD_VDDIO_IRQ_ENABLED", + "access": "RO", + "description": "When SPC VDDIO LVD analog detector are turned on and VDDIO LVD irq are enabled, this bit indicates state 1." + }, + { + "id": "field9D0-bit22", + "width": 1, + "name": "CFG_WDT1_ENABLED", + "access": "RO", + "description": "When WatchDog Timer 1 is activated, this bit indicates state 1." + }, + { + "id": "field9D0-bit23", + "width": 1, + "name": "CFG_CWDT1_ENABLED", + "access": "RO", + "description": "When Code WatchDog Timer 1 is activated, this bit indicates state 1." + }, + { + "id": "field9D0-bit24", + "width": 1, + "name": "CFG_TEMPTAMPER_DET_ENABLED", + "access": "RO", + "description": "When temperature tamper detector is enabled in VBAT, this bit indicates state 1." + }, + { + "id": "field9D0-bit25", + "width": 1, + "name": "CFG_VOLTAMPER_DET_ENABLED", + "access": "RO", + "description": "When voltage tamper detector is enabled in VBAT, this bit indicates state 1." + }, + { + "id": "field9D0-bit26", + "width": 1, + "name": "CFG_LHTTAMPER_DET_ENABLED", + "access": "RO", + "description": "When light tamper detector is enabled in VBAT, this bit indicates state 1." + }, + { + "id": "field9D0-bit27", + "width": 1, + "name": "CFG_CLKTAMPER_DET_ENABLED", + "access": "RO", + "description": "When clk tamper detector is enabled in VBAT, this bit indicates state 1." + }, + { + "id": "field9D0-bit28", + "width": 1, + "name": "CFG_QK_DISABLE_ENROLL", + "access": "RO", + "description": "When QK PUF \"qk_disable_enroll\" input is driven 1, this bit indicates state 1" + }, + { + "id": "field9D0-bit29", + "width": 1, + "name": "CFG_QK_DISABLE_WRAP", + "access": "RO", + "description": "When QK PUF \"qk_disable_wrap\" input is driven 1, this bit indicates state 1" + }, + { + "width": 2 + } + ] + }, + { + "id": "field9D4", + "offset_int": "0x004", + "reg_width": 32, + "name": "ELS_AS_CFG1", + "description": "ELS AS Configuration1", + "default_value_int": "0x140002", + "bitfields": [ + { + "width": 1 + }, + { + "id": "field9D4-bit1", + "width": 1, + "name": "CFG_SEC_DIS_STRICT_MODE", + "access": "RO", + "description": "When CFG_SEC_ENA_SEC_CHK indicates state 0 or when DISABLE_STRICT_MODE bits in MISC_CTRL_REG and MISC_CTRL_DP_REG on the AHB secure controller are equal to 01, this bit indicates state 1" + }, + { + "id": "field9D4-bit2", + "width": 1, + "name": "CFG_SEC_DIS_VIOL_ABORT", + "access": "RO", + "description": "When the DISABLE_VIOLATION_ABORT bits in MISC_CTRL_REG and MISC_CTRL_DP_REG on the AHB secure controller are not equal to 10, this bit indicates state 1" + }, + { + "id": "field9D4-bit3", + "width": 1, + "name": "CFG_SEC_ENA_NS_PRIV_CHK", + "access": "RO", + "description": "When the ENABLE_NS_PRIV_CHECK bits in MISC_CTRL_REG and MISC_CTRL_DP_REG on the AHB secure controller are not equal to 10, this bit indicates state 1" + }, + { + "id": "field9D4-bit4", + "width": 1, + "name": "CFG_SEC_ENA_S_PRIV_CHK", + "access": "RO", + "description": "When the ENABLE_S_PRIV_CHECK bits in MISC_CTRL_REG and MISC_CTRL_DP_REG on the AHB secure controller are not equal to 10, this bit indicates state 1" + }, + { + "id": "field9D4-bit5", + "width": 1, + "name": "CFG_SEC_ENA_SEC_CHK", + "access": "RO", + "description": "When the ENABLE_SECURE_CHECKING bits in MISC_CTRL_REG and MISC_CTRL_DP_REG on the AHB secure controller are not equal to 10, this bit indicates state 1" + }, + { + "id": "field9D4-bit6", + "width": 1, + "name": "CFG_SEC_IDAU_ALLNS", + "access": "RO", + "description": "When the IDAU_ALL_NS bits in MISC_CTRL_REG and MISC_CTRL_DP_REG on the AHB secure controller are equal to 01, this bit indicates state 1" + }, + { + "width": 1 + }, + { + "id": "field9D4-bit8", + "width": 1, + "name": "CFG_SEC_LOCK_NS_MPU", + "access": "RO", + "description": "When the LOCK_NS_MPU bits in CPU0_LOCK_REG on the AHB secure controller are not equal to 10, this bit indicates state 1" + }, + { + "id": "field9D4-bit9", + "width": 1, + "name": "CFG_SEC_LOCK_NS_VTOR", + "access": "RO", + "description": "When the LOCK_NS_VTOR bits in CPU0_LOCK_REG on the AHB secure controller are not equal to 10, this bit indicates state 1" + }, + { + "id": "field9D4-bit10", + "width": 1, + "name": "CFG_SEC_LOCK_S_MPU", + "access": "RO", + "description": "When the LOCK_S_MPU bits in CPU0_LOCK_REG on the AHB secure controller are not equal to 10, this bit indicates state 1" + }, + { + "id": "field9D4-bit11", + "width": 1, + "name": "CFG_SEC_LOCK_S_VTAIRCR", + "access": "RO", + "description": "When the LOCK_S_VTAIRCR bits in CPU0_LOCK_REG on the AHB secure controller are not equal to 10, this bit indicates state 1" + }, + { + "id": "field9D4-bit12", + "width": 1, + "name": "CFG_SEC_LOCK_SAU", + "access": "RO", + "description": "When the LOCK_SAU bits in CPU0_LOCK_REG on the AHB secure controller are not equal to 10, this bit indicates state 1" + }, + { + "id": "field9D4-bits13-20", + "width": 8, + "name": "METAL_VERSION", + "access": "RO", + "description": "metal version" + }, + { + "id": "field9D4-bits21-24", + "width": 4, + "name": "ROM_PATCH_VERSION", + "access": "RO", + "description": "ROM patch version" + }, + { + "width": 1 + }, + { + "id": "field9D4-bit26", + "width": 1, + "name": "CFG_HVD_CORE_RESET_ENABLED", + "access": "RO", + "description": "When SPC CORE HVD analog detector are turned on, and CORE HVD reset are enabled, this bit indicates state 1." + }, + { + "id": "field9D4-bit27", + "width": 1, + "name": "CFG_HVD_CORE_IRQ_ENABLED", + "access": "RO", + "description": "When SPC CORE HVD analog detector are turned on, and CORE HVD IRQ are enabled, this bit indicates state 1." + }, + { + "id": "field9D4-bit28", + "width": 1, + "name": "CFG_HVD_VSYS_RESET_ENABLED", + "access": "RO", + "description": "When SPC VSYS HVD analog detector are turned on and VSYS HVD reset are enabled, this bit indicates state 1." + }, + { + "id": "field9D4-bit29", + "width": 1, + "name": "CFG_HVD_VDDIO_RESET_ENABLED", + "access": "RO", + "description": "When SPC VDDIO HVD analog detector are turned on and VDDIO HVD reset are enabled, this bit indicates state 1." + }, + { + "id": "field9D4-bit30", + "width": 1, + "name": "CFG_HVD_VSYS_IRQ_ENABLED", + "access": "RO", + "description": "When SPC VSYS HVD analog detector are turned on and VSYS HVD irq are enabled, this bit indicates state 1." + }, + { + "id": "field9D4-bit31", + "width": 1, + "name": "CFG_HVD_VDDIO_IRQ_ENABLED", + "access": "RO", + "description": "When SPC VDDIO HVD analog detector are turned on and VDDIO HVD irq are enabled, this bit indicates state 1." + } + ] + }, + { + "id": "field9D8", + "offset_int": "0x008", + "reg_width": 32, + "name": "ELS_AS_CFG2", + "description": "ELS configuration command enable bit", + "default_value_int": "0xffffffff" + }, + { + "id": "field9E0", + "offset_int": "0x010", + "reg_width": 32, + "name": "ELS_AS_ST0", + "description": "ELS AS State Register", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field9E0-bits0-3", + "width": 4, + "name": "ST_TEMPORAL_STATE", + "access": "RO", + "description": "TEMPORAL_STATE[3:0] in the ELS_TEMPORAL_STATE register reflects this register" + }, + { + "id": "field9E0-bit4", + "width": 1, + "name": "ST_CPU0_DBGEN", + "access": "RO", + "description": "When CPU0 (CM33) \"dbgen\" input is state 1, this bit indicates state 1" + }, + { + "id": "field9E0-bit5", + "width": 1, + "name": "ST_CPU0_NIDEN", + "access": "RO", + "description": "When CPU0 (CM33) \"niden\" input is state 1, this bit indicates state 1" + }, + { + "id": "field9E0-bit6", + "width": 1, + "name": "ST_CPU0_SPIDEN", + "access": "RO", + "description": "When CPU0 (CM33) \"spiden\" input is state 1, this bit indicates state 1" + }, + { + "id": "field9E0-bit7", + "width": 1, + "name": "ST_CPU0_SPNIDEN", + "access": "RO", + "description": "When CPU0 (CM33) \"spniden\" input is state 1, this bit indicates state 1" + }, + { + "id": "field9E0-bit8", + "width": 1, + "name": "ST_CPU1_DBGEN", + "access": "RO", + "description": "When CPU1 (CM33) \"dbgen\" input is state 1, this bit indicates state 1." + }, + { + "id": "field9E0-bit9", + "width": 1, + "name": "ST_CPU1_NIDEN", + "access": "RO", + "description": "When CPU1 (CM33) \"niden\" input is state 1, this bit indicates state 1." + }, + { + "id": "field9E0-bit10", + "width": 1, + "name": "ST_DAP_ENABLE_CPU0", + "access": "RO", + "description": "When DAP to AP0 for CPU0 (CM33) debug access is allowed, this bit indicates state 1" + }, + { + "id": "field9E0-bit11", + "width": 1, + "name": "ST_DAP_ENABLE_CPU1", + "access": "RO", + "description": "When DAP to AP1 for CPU1 (CM33) debug access is allowed, this bit indicates state 1." + }, + { + "id": "field9E0-bit12", + "width": 1, + "name": "ST_DAP_ENABLE_DSP", + "access": "RO", + "description": "When DAP to AP3 for DSP (CoolFlux) debug access is allowed, this bit indicates state 1" + }, + { + "width": 1 + }, + { + "id": "field9E0-bit14", + "width": 1, + "name": "ST_ALLOW_TEST_ACCESS", + "access": "RO", + "description": "When JTAG TAP access is allowed, this bit indicates state 1." + }, + { + "id": "field9E0-bit15", + "width": 1, + "name": "ST_XO32K_FAILED", + "access": "RO", + "description": "When XO32K oscillation fail flag is state 1, this bit indicates state 1" + }, + { + "id": "field9E0-bit16", + "width": 1, + "name": "ST_XO40M_FAILED", + "access": "RO", + "description": "When XO40M oscillation fail flag is state 1, this bit indicates state 1" + }, + { + "id": "field9E0-bit17", + "width": 1, + "name": "ST_IFR_LOAD_FAILED", + "access": "RO", + "description": "When IFR load fail flag is state 1, this bit indicates state 1" + }, + { + "id": "field9E0-bits18-21", + "width": 4, + "name": "ST_GLITCH_DETECT_FLAG", + "access": "RO", + "description": "GLITCH_DETECT_FLAG is state of 4-bit Glitch Ripple Counter output." + }, + { + "width": 10 + } + ] + }, + { + "id": "field9E4", + "offset_int": "0x014", + "reg_width": 32, + "name": "ELS_AS_ST1", + "description": "ELS AS State1", + "default_value_int": "0x5024f", + "bitfields": [ + { + "id": "field9E4-bits0-3", + "width": 4, + "name": "ST_QK_PUF_SCORE", + "access": "RO", + "description": "These register bits indicate the state of \"qk_puf_score[3:0]\" outputs from QK PUF block" + }, + { + "id": "field9E4-bit4", + "width": 1, + "name": "ST_QK_ZEROIZED", + "access": "RO", + "description": "This register bit indicates the state of \"qk_zeroized\" output from QK PUF block" + }, + { + "id": "field9E4-bit5", + "width": 1, + "name": "ST_MAIN_CLK_IS_EXT", + "access": "RO", + "description": "When MAIN_CLK is running from external clock source either XO32M, XO32K or GPIO CLKIN, this bit indicates state 1" + }, + { + "id": "field9E4-bits6-7", + "width": 2, + "name": "ST_DCDC_VOUT", + "access": "RO", + "description": "VOUT[1:0] setting on DCDC0 register in SPC block will reflect to this register. Default is 1.0V" + }, + { + "id": "field9E4-bits8-9", + "width": 2, + "name": "ST_DCDC_DS", + "access": "RO", + "description": "DCDC drive strength setting. Default is normal drive." + }, + { + "id": "field9E4-bits10-11", + "width": 2, + "name": "ST_BOOT_MODE", + "access": "RO", + "description": "ISP pin status during boot. By default ISP pin is pulled up. If want to enter ISP mode during boot, ISP pin should be pull down when out of reset." + }, + { + "id": "field9E4-bits12-15", + "width": 4, + "name": "ST_BOOT_RETRY_CNT", + "access": "RO", + "description": "BOOT_RETRY_CNT[3:0] in the ELS_BOOT_RETRY_CNT register reflects this register" + }, + { + "id": "field9E4-bits16-17", + "width": 2, + "name": "ST_LDO_CORE_VOUT", + "access": "RO", + "description": "VOUT[1:0] setting on LDO Core register in SPC block will reflect to this register. Default is 1.0V" + }, + { + "id": "field9E4-bits18-19", + "width": 2, + "name": "ST_LDO_CORE_DS", + "access": "RO", + "description": "LDO_CORE drive strength setting. Default is normal drive." + }, + { + "width": 12 + } + ] + }, + { + "id": "field9F8", + "offset_int": "0x028", + "reg_width": 32, + "name": "ELS_AS_FLAG0", + "description": "ELS AS Flag0", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field9F8-bit0", + "width": 1, + "name": "FLAG_AP_ENABLE_CPU0", + "access": "RO", + "description": "This flag bit is set as 1 when DAP enables AP0 for CPU0 (CM33) debug access. The register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit1", + "width": 1, + "name": "FLAG_AP_ENABLE_CPU1", + "access": "RO", + "description": "This flag bit is set as 1 when DAP enables AP1 for CPU1 (CM33) debug access. The register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit2", + "width": 1, + "name": "FLAG_AP_ENABLE_DSP", + "access": "RO", + "description": "This flag bit is set as 1 when DAP enables AP3 for DSP (CoolFlux) debug access. The register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit3", + "width": 1, + "name": "EFUSE_ATTACK_DETECT", + "access": "RO", + "description": "OTPC can output attack_detect signal when it detects attack when load shadow registers. The output will be cleared by reset. ELS_AS_FLAG is reset by PoR, so the status can be recorded.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "width": 1 + }, + { + "id": "field9F8-bit5", + "width": 1, + "name": "FLAG_LVD_CORE_OCCURRED", + "access": "RO", + "description": "This flag register is set 1 when VDD_CORE LVD event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "width": 2 + }, + { + "id": "field9F8-bit8", + "width": 1, + "name": "FLAG_WDT0_RESET_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when WatchDog Timer 0 reset is enabled and reset event is triggered. This register is cleared 0 by AO domain POR.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit9", + "width": 1, + "name": "FLAG_CWDT0_RESET_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when Code WatchDog Timer 0 reset is enabled and reset event is triggered. This register is cleared 0 by AO domain POR.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit10", + "width": 1, + "name": "FLAG_WDT0_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when WatchDog Timer 0 IRQ is enabled and IRQ event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit11", + "width": 1, + "name": "FLAG_CWDT0_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when Code WatchDog Timer 0 IRQ is enabled and IRQ event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit12", + "width": 1, + "name": "FLAG_QK_ERROR", + "access": "RO", + "description": "This flag bit is set as 1 when QK_ERROR is flagged from QK PUF block. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit13", + "width": 1, + "name": "FLAG_ELS_GLITCH_DETECTED", + "access": "RO", + "description": "This flag bit is set as 1 when GDET error is flagged. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit14", + "width": 1, + "name": "FLAG_ANA_GLITCH_DETECTED", + "access": "RO", + "description": "This flag bit is set as 1 when ANALOG GDET error is flagged in SYSCON block. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit15", + "width": 1, + "name": "FLAG_TAMPER_EVENT_DETECTED", + "access": "RO", + "description": "This flag bit is set as 1 when tamper event is flagged from TDET. This register is cleared 0 by AO domain POR or by PMC reset event, if tamper detection event is cleared by software.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit16", + "width": 1, + "name": "FLAG_FLASH_ECC_INVALID", + "access": "RO", + "description": "This flag bit is set as 1 when FLASH controller indicates ECC error. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit17", + "width": 1, + "name": "FLAG_SEC_VIOL_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when security violation is indicated from FLASH sub-system or AHB bus matrix.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit18", + "width": 1, + "name": "FLAG_CPU0_NS_C_ACC_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when CPU0 (CM33) makes non-secure code transactions. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit19", + "width": 1, + "name": "FLAG_CPU0_NS_D_ACC_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when CPU0 (CM33) makes non-secure data transactions. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit20", + "width": 1, + "name": "FLAG_LVD_VSYS_OCCURRED", + "access": "RO", + "description": "This flag register is set 1 when VDD_SYS LVD event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit21", + "width": 1, + "name": "FLAG_LVD_VDDIO_OCCURRED", + "access": "RO", + "description": "This flag register is set 1 when VDD LVD event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit22", + "width": 1, + "name": "FLAG_WDT1_RESET_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when WatchDog Timer 1 reset is enabled and reset event is triggered. This register is cleared 0 by AO domain POR.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit23", + "width": 1, + "name": "FLAG_CWDT1_RESET_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when Code WatchDog Timer 1 reset is enabled and reset event is triggered. This register is cleared 0 by AO domain POR.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit24", + "width": 1, + "name": "FLAG_WDT1_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when WatchDog Timer 1 IRQ is enabled and IRQ event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit25", + "width": 1, + "name": "FLAG_CWDT1_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when Code WatchDog Timer 1 IRQ is enabled and IRQ event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit26", + "width": 1, + "name": "FLAG_TEMPTAMPER_DET_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when temperature temper IRQ is enabled and IRQ event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit27", + "width": 1, + "name": "FLAG_VOLTAMPER_DET_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when voltage temper IRQ is enabled and IRQ event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit28", + "width": 1, + "name": "FLAG_LHTTAMPER_DET_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when light temper IRQ is enabled and IRQ event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "id": "field9F8-bit29", + "width": 1, + "name": "FLAG_CLKTAMPER_DET_IRQ_OCCURRED", + "access": "RO", + "description": "This flag bit is set as 1 when clock temper IRQ is enabled and IRQ event is triggered. This register is cleared 0 by PMC reset event.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Not Triggered" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Triggered" + } + ] + }, + { + "width": 2 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/fcb_flexspi_nor.json new file mode 100644 index 0000000..3e03f7a --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/fcb_flexspi_nor.json @@ -0,0 +1,25587 @@ +{ + "cpu": "MCXN946", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL ", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix ", + "default_value_int": "0x56010400" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3 ", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet ", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc. ", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command ", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration ", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details ", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details ", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal ", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details ", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH ", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1 ", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2 ", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1 ", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2 ", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command ", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands ", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0" + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31 ", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy ", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command ", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same ", + "default_value_int": "0x0" + }, + { + "id": "field1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " Data order (D0, D1, D2, D3) is swapped (D1,D0, D3, D2) ", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3 ", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command ", + "default_value_int": "0x0" + }, + { + "id": "field1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false ", + "default_value_int": "0x0" + }, + { + "id": "field1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution ", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size ", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "flashStateCtx", + "description": " Flash State Context ", + "default_value_int": "0x0" + }, + { + "id": "Reserved1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "Reserved2_0", + "deprecated_names": ["reserve2_0"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "Reserved2_1", + "deprecated_names": ["reserve2_1"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "Reserved2_2", + "deprecated_names": ["reserve2_2"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "Reserved2_3", + "deprecated_names": ["reserve2_3"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "Reserved2_4", + "deprecated_names": ["reserve2_4"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "Reserved2_5", + "deprecated_names": ["reserve2_5"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "Reserved2_6", + "deprecated_names": ["reserve2_6"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "Reserved2_7", + "deprecated_names": ["reserve2_7"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "Reserved2_8", + "deprecated_names": ["reserve2_8"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "Reserved2_9", + "deprecated_names": ["reserve2_9"], + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/fuses.json new file mode 100644 index 0000000..582277e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/fuses.json @@ -0,0 +1,3341 @@ +{ + "cpu": "MCXN946", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Boot configuration locks" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCKS", + "description": "Boot Configuration Locks", + "index_int": "0", + "bitfields": [ + { + "width": 9 + }, + { + "width": 3, + "id": "fuse0-bits-9-11", + "name": "BOOT_CFG_LOCK[2:0]", + "description": "Boot config lock\nConfigures the locking of EFUSE bits for fuse #3, #4, #5, #6, #7 and fuses #11 - #22. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "PRINCE_CFG_LOCK[2:0]", + "description": "Prince Config Lock\nConfigures the locking EFUSE bits for fuses #23 - #38. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse0-bits-18-20", + "name": "CUST_LOCK0[2:0]", + "description": "CUST Lock 0\nConfigures the locking of EFUSE bits for fuses #43, #44, #45 and #46. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-21-23", + "name": "CUST_LOCK1[2:0]", + "description": "CUST Lock 1\nConfigures the locking of EFUSE bits for fuses #47, #48, #49 and #50. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-24-26", + "name": "CUST_LOCK2[2:0]", + "description": "CUST Lock 2\nConfigures the locking of EFUSE bits for fuses #51, #52, #53 and #54. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-27-29", + "name": "CUST_LOCK3[2:0]", + "description": "CUST Lock 3\nConfigures the locking EFUSE bits for fuses #55 - #62. - bit 0: When set, blocks programming. - bit 1: Reserved. - bit 2: When set, blocks reading.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WriteLocked", + "value": 1, + "description": "Locked for programming [WP]" + }, + { + "name": "ReadLocked", + "value": 4, + "description": "Locked for reading [RP]" + }, + { + "name": "ReadWriteLocked", + "value": 5, + "description": "Locked for reading and programming [RP+WP]" + } + ] + }, + { + "width": 2 + } + ] + } + ] + }, + { + "group": { + "name": "Configurations", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse1", + "name": "LIFE_CYCLE", + "description": "Life cycle state, debug setting, and ROTK setting", + "index_int": "0x0001", + "bitfields": [ + { + "width": 8, + "id": "fuse1-bits-0-7", + "name": "LIFECYCLE[7:0]", + "description": "Life cycle state.\nThis field can be used to advance life cycle state. Below are the allowed values for this field. Use of other values may lead to bricked state.", + "values": [ + { + "name": "BLANK", + "value": 0, + "description": "Blank" + }, + { + "name": "DEVELOP", + "value": 3, + "description": "Develop state" + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Develop 2 state" + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field state" + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "In-field locked state" + }, + { + "name": "FIELD_RETURN_OEM", + "value": 31, + "description": "Field return OEM state" + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "Failure Analysis state" + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked state" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-8", + "name": "NIDEN_dis", + "description": "Disable Non-secure non-invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-9", + "name": "DBGEN_dis", + "description": "Disable Non-secure invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-10", + "name": "SPIDEN_dis", + "description": "Disable Secure invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-11", + "name": "SPNIDEN_dis", + "description": "Disable Secure non-invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-12", + "name": "CPU1_NIDEN_dis", + "description": "Disable CPU1 non-invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-13", + "name": "CPU1_DBG_dis", + "description": "Disable CPU1 invasive debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-14", + "name": "DSP_DBGEN_dis", + "description": "Disable DSP debug.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-15", + "name": "ISP_CMD_dis", + "description": "Disable Enter ISP Debug mailbox command.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-16", + "name": "FA_CMD_dis", + "description": "Disable Set FA mode Debug mailbox command.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-17", + "name": "ME_CMD_dis", + "description": "Disable Mass erase Debug mailbox command.", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Disable", + "value": 1, + "description": "Disabled permanently" + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-18", + "name": "UUID_CHECK_ENF", + "description": "Enforce UUID checking during debug authentication", + "values": [ + { + "name": "Check CMPA", + "value": 0, + "description": "Check CMPA.CC_SOCU_xxx fields." + }, + { + "name": "Enable", + "value": 1, + "description": "Always enabled." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse1-bit-20", + "name": "RoTK0_dis", + "description": "Revoke Root of Trust key 0.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-21", + "name": "RoTK1_dis", + "description": "Revoke Root of Trust key 1.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-22", + "name": "RoTK2_dis", + "description": "Revoke Root of Trust key 2.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse1-bit-23", + "name": "RoTK3_dis", + "description": "Revoke Root of Trust key 3.", + "values": [ + { + "name": "Check CFPA", + "value": 0, + "description": "Check CFPA." + }, + { + "name": "Revoke", + "value": 1, + "description": "Key is revoked." + } + ] + }, + { + "width": 8, + "id": "fuse1-bits-24-31", + "name": "LIFECYCLE_DP[7:0]", + "description": "Duplicate of the LIFECYCLE fuse value.", + "values": [ + { + "name": "BLANK", + "value": 0, + "description": "Blank" + }, + { + "name": "DEVELOP", + "value": 3, + "description": "Develop state" + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Develop 2 state" + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field state" + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "In-field locked state" + }, + { + "name": "FIELD_RETURN_OEM", + "value": 31, + "description": "Field return OEM state" + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "Failure Analysis state" + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked state" + } + ] + } + ] + }, + { + "id": "fuse2", + "name": "KEY_REVOKE", + "description": "Image key revoke and PRINCE, PUF, and NXP provisioning firmware setting", + "index_int": "0x0002", + "bitfields": [ + { + "width": 8, + "id": "fuse2-bits-0-7", + "name": "DBG_KEY_REVOKE[7:0]", + "description": "Debug key revoke.\nThis field is combined with\nCFPA.DBG_REVOKE_VU and CMPA.VENDOR_USAGE fields to form a 32-bit value which is compared with vendor usage field in debug credential certificate. Only if the values match debug access is granted.\nCC_VENDOR_USAGE = { CMPA.VENDOR_USAGE[31:16],\nCFPA.DBG_REVOKE_VU[15:8],\n(CFPA.DBG_REVOKE_VU[7:0] | OTP.DBG_KEY_REVOKE[7:0]) }" + }, + { + "width": 8, + "id": "fuse2-bits-8-15", + "name": "IMAGE_KEY_REVOKE[7:0]", + "description": "Image signing key revoke.\nThis field is combined with\nCFPA.IMAGE_KEY_REVOKE field to form a 32-bit value which is compared with IskCertificate.constraints field during image authentication. If the values don't match image authentication fails.\nISK_CONSTRAINT[31:0] = {CFPA.IMAGE_KEY_REVOKE_VU[23:0], OTP.IMAGE_KEY_REVOKE[7:0] }" + }, + { + "width": 4 + }, + { + "width": 1, + "id": "fuse2-bit-20", + "name": "PUF_ENROLL_DIS", + "description": "Block PUF enrollment.", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "Allow PUF enroll operation" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable PUF enroll operation" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse2-bit-23", + "name": "DIS_NXP_FW", + "description": "Block NXP signed SB3 loading.", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "Allow NXP signed SB3 FW" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable NXP signed SB3 FW" + } + ] + }, + { + "width": 8 + } + ] + }, + { + "id": "fuse3", + "name": "BOOT_CFG", + "description": "ISP pin selection setting and boot configuration setting", + "index_int": "0x0003", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse3-bit-0", + "name": "Boot_FlexSPI_Dis", + "description": "FlexSPI boot disable.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "FlexSPI boot is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "FlexSPI boot is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-1", + "name": "Boot_flash_Dis", + "description": "Disable boot from internal flash.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Boot from internal flash enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "Boot from internal flash disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-2", + "name": "Boot_IFR0_Dis", + "description": "Disable boot from IFR0 (as SBL).", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Boot from IFR0 enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "Boot from IFR0 disabled." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse3-bit-5", + "name": "Rec_Boot_SPI_Dis", + "description": "Disable recovery boot from external 1-bit SPI flash connected to FlexComm ports.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-6", + "name": "Rec_Boot_IFR0_Dis", + "description": "Disable recovery boot from IFR0 area( 0x0100_8000 to 0x0100_FFFF).", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-7", + "name": "PinSel_SPI_Rec_Boot_Dis", + "description": "Disable logic related to forcing recovery boot based on ISP pin state.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-8", + "name": "ISP_UART_Dis", + "description": "Disable UART interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "UART ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "UART ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-9", + "name": "ISP_I2C_Dis", + "description": "Disable I2C interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "I2C ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "I2C ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-10", + "name": "ISP_SPI_Dis", + "description": "Disable SPI interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "SPI ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "SPI ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-11", + "name": "ISP_USB0_Dis", + "description": "Disable USB0 interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "USB0 ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "USB0 ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-12", + "name": "ISP_USB1_Dis", + "description": "Disable USB0 interface in ISP mode", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "USB0 ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "USB0 ISP is disabled." + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-13", + "name": "ISP_CAN_Dis", + "description": "Disable CAN interface in ISP mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "CAN ISP is enabled." + }, + { + "name": "Disable", + "value": 1, + "description": "CAN ISP is disabled." + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "fuse3-bits-16-17", + "name": "ISP_DISABLE[1:0]", + "description": "Disable ISP mode entry points.\nISP mode can be entered through pin assertion, debug mailbox command, image verification failure and ROM API invocation", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "All entry point allowed." + }, + { + "name": "Disable_ISP_pin", + "value": 1, + "description": "Entry by ISP Pin assertion disabled." + }, + { + "name": "Disable", + "value": 2, + "description": "Entry by ISP Pin assertion and debug mailbox command disabled." + }, + { + "name": "Disable_0", + "value": 3, + "description": "Entry by ISP Pin assertion and debug mailbox command disabled." + } + ] + }, + { + "width": 4 + }, + { + "width": 2, + "id": "fuse3-bits-22-23", + "name": "BOOT_SPEED[1:0]", + "description": "Boot speed. Selects the core frequency and voltage to use during ROM execution.", + "values": [ + { + "name": "CMPA_BOOT_SPEED", + "value": 0, + "description": "Use value from CMPA.BOOT_SPEED" + }, + { + "name": "72MHz FRO", + "value": 1, + "description": "72 MHz FRO @ 1.1V" + }, + { + "name": "144MHz FRO", + "value": 2, + "description": "144 MHz FRO @ 1.2V" + }, + { + "name": "150MHz PLL", + "value": 3, + "description": "150 MHz PLL @ 1.2V" + } + ] + }, + { + "width": 5, + "id": "fuse3-bits-24-28", + "name": "FLASH_REMAP_SZ[4:0]", + "description": "Flash remap size.\nFLASH_REMAP_SZ defines the size of the secondary boot image\n(the range of flash addresses that will be remapped)in internal flash, where remapped\naddress end = (FLASH_REMAP_SZ + 1) * 32 KB. For example, if FLASH_REMAP_SZ = 2,\nthen the first 96KB of addresses will be remapped to flash bank1 instead of flash bank0\nwhen remap is active. Set this field to 0 if you do not want to use the flash remap feature" + }, + { + "width": 3, + "id": "fuse3-bits-29-31", + "name": "OEM_BANK1_IFR0_USAGE[2:0]", + "description": "Defines flash protection of Bank1_IFR0 area based on usage.\nNote, if the SBL / Recovery image size is more than IFR0 size of 32KB then sectors from user flash can be associated for extended image size using CMPA.REC_IMG_EXT0/1.", + "values": [ + { + "name": "000", + "value": 0, + "description": "Not determined by ROM (MBC fields are modified by OEM code)" + }, + { + "name": "001", + "value": 1, + "description": "Used as OEM Root of Trust image, in other words secondary boot loader (OEM_SBL). MBC protection bits set as RWXL = 1010. Updatable by OEM code later." + }, + { + "name": "010", + "value": 2, + "description": "Used as OEM_SBL. MBC protection bits set as RWXL = 1011." + }, + { + "name": "011", + "value": 3, + "description": "Used as OEM_SBL. MBC protection bits set as RWXL = 0011." + }, + { + "name": "100", + "value": 4, + "description": "Used as OEM recovery boot image with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 1010 on ROM exiting to user image." + }, + { + "name": "101", + "value": 5, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 1011 on ROM exiting to user image." + }, + { + "name": "110", + "value": 6, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 0011 on ROM exiting to user image." + }, + { + "name": "111", + "value": 7, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 0001 on ROM exiting to user image." + } + ] + } + ] + }, + { + "id": "fuse4", + "name": "FLEXSPI_BOOT_CFG0", + "description": "FlexSPI Boot Configuration 0", + "index_int": "0x0004", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse4-bit-0", + "name": "FLEXSPI_AUTO_PROBE_EN", + "description": "Quad/Octal-SPI flash auto probe feature enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 3, + "id": "fuse4-bits-1-3", + "name": "FLEXSPI_PROBE_TYPE[2:0]", + "description": "Quad/Octal-SPI flash probe type.\nNote, this field is used when FLEXSPI_AUTO_PROBE_EN is set.", + "values": [ + { + "name": "QuadSPI NOR", + "value": 0, + "description": "QuadSpi NOR" + }, + { + "name": "Macronix Octal", + "value": 1, + "description": "Macronix Octal FLASH" + }, + { + "name": "Micron Octal", + "value": 2, + "description": "Micron Octal FLASH" + }, + { + "name": "Adesto Octal", + "value": 3, + "description": "Adesto Octal FLASH" + } + ] + }, + { + "width": 3, + "id": "fuse4-bits-4-6", + "name": "FLEXSPI_FLASH_TYPE[2:0]", + "description": "Define typical Serial NOR Flash types\nThis field is always used irrespective of FLEXSPI_AUTO_PROBE_EN value.", + "values": [ + { + "name": "QSPI_ADDR_3B", + "value": 0, + "description": "QSPI_ADDR_3B" + }, + { + "name": "HYPER_1V8", + "value": 2, + "description": "HYPER_1V8" + }, + { + "name": "HYPER_3V3", + "value": 3, + "description": "HYPER_3V3" + }, + { + "name": "FlexSPI_DDR_MXIC", + "value": 4, + "description": "FlexSPI_DDR_MXIC" + }, + { + "name": "FlexSPI_DDR_MICRON", + "value": 5, + "description": "FlexSPI_DDR_MICRON" + } + ] + }, + { + "width": 4, + "id": "fuse4-bits-7-10", + "name": "FLEXSPI_DUMMY_CYCLES[3:0]", + "description": "Quad/Octal-SPI dummy cycles for read command.\nIf a non-zero value is programmed in this field, then the value is used to override the default number of dummy cycles for a fast read command read from the serial flash's SFDP information.\nNote: this field is only used if FLEXSPI_AUTO_PROBE_EN is set." + }, + { + "width": 3, + "id": "fuse4-bits-11-13", + "name": "FLEXSPI_FREQUENCY[2:0]", + "description": "Q/O-SPI flash interface frequency.\nNote, this field is used when FLEXSPI_AUTO_PROBE_EN is set.", + "values": [ + { + "name": "75Mhz", + "value": 0, + "description": "75Mhz" + }, + { + "name": "60Mhz", + "value": 1, + "description": "60Mhz" + }, + { + "name": "50Mhz", + "value": 2, + "description": "50Mhz" + }, + { + "name": "100Mhz", + "value": 3, + "description": "100Mhz" + } + ] + }, + { + "width": 1, + "id": "fuse4-bit-14", + "name": "FLEXSPI_RESET_ENABLE", + "description": "Use O/QSPI_RESET_PIN to reset the flash device.", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "NO_RESET(O/QSPI device reset pin is not connected or available.)" + }, + { + "name": "EN_RESET", + "value": 1, + "description": "EN_RESET(O/QSPI device reset pin is connected to a GPIO (QSPI_RESET_PIN).)" + } + ] + }, + { + "width": 3, + "id": "fuse4-bits-15-17", + "name": "FLEXSPI_RESET_GPIO_PORT[2:0]", + "description": "When FLEXSPI_RESET_ENABLE = 1, this field determines the GPIO port number to use for O/QSPI reset function." + }, + { + "width": 5, + "id": "fuse4-bits-18-22", + "name": "FLEXSPI_RESET_GPIO_PIN[4:0]", + "description": "GPIO pin number to use for O/QSPI reset function." + }, + { + "width": 2, + "id": "fuse4-bits-23-24", + "name": "FLEXSPI_HOLD_TIME[1:0]", + "description": "Delay after reset before accessing Quad/Octal-SPI flash devices.\nNote, for POR in addition to this wait time FLEXSPI_PWR_HOLD_TIME is added.", + "values": [ + { + "name": "500us", + "value": 0, + "description": "Wait for 500 microseconds." + }, + { + "name": "1ms", + "value": 1, + "description": "Wait for 1 millisecond." + }, + { + "name": "3ms", + "value": 2, + "description": "Wait for 3 milliseconds." + }, + { + "name": "10ms", + "value": 3, + "description": "Wait for 10 milliseconds." + } + ] + }, + { + "width": 4, + "id": "fuse4-bits-25-28", + "name": "FLEXSPI_PWR_HOLD_TIME[3:0]", + "description": "Delay after POR before accessing Quad/Octal-SPI flash devices in addition to delay defined by FLEXSPI_HOLD TIME field.", + "values": [ + { + "name": "No delay", + "value": 0, + "description": "No delay" + }, + { + "name": "100us", + "value": 1, + "description": "Waits additional 100 microseconds." + }, + { + "name": "500us", + "value": 2, + "description": "Waits additional 500 microseconds." + }, + { + "name": "1ms", + "value": 3, + "description": "Waits additional 1 millisecond." + }, + { + "name": "10ms", + "value": 4, + "description": "Waits additional 10 milliseconds." + }, + { + "name": "20ms", + "value": 5, + "description": "Waits additional 20 milliseconds." + }, + { + "name": "40ms", + "value": 6, + "description": "Waits additional 40 milliseconds." + }, + { + "name": "60ms", + "value": 7, + "description": "Waits additional 60 milliseconds." + }, + { + "name": "80ms", + "value": 8, + "description": "Waits additional 80 milliseconds." + }, + { + "name": "100ms", + "value": 9, + "description": "Waits additional 100 milliseconds." + }, + { + "name": "120ms", + "value": 10, + "description": "Waits additional 120 milliseconds." + }, + { + "name": "140ms", + "value": 11, + "description": "Waits additional 140 milliseconds." + }, + { + "name": "160ms", + "value": 12, + "description": "Waits additional 160 milliseconds." + }, + { + "name": "180ms", + "value": 13, + "description": "Waits additional 180 milliseconds." + }, + { + "name": "200ms", + "value": 14, + "description": "Waits additional 200 milliseconds." + }, + { + "name": "220ms", + "value": 15, + "description": "Waits additional 220 milliseconds." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse4-bit-31", + "name": "PORT_SEL", + "description": "Defines which FlexSPI portA/B is used for boot.", + "values": [ + { + "name": "Port A", + "value": 0, + "description": "Port A" + }, + { + "name": "Port B", + "value": 1, + "description": "Port B" + } + ] + } + ] + }, + { + "id": "fuse5", + "name": "FLEXSPI_BOOT_CFG1", + "description": "FlexSPI Boot Configuration 1", + "index_int": "0x0005", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 7, + "id": "fuse5-bits-0-6", + "name": "FLEXSPI_DELAY_CELL_NUM[6:0]", + "description": "Delay cell numbers for Flash read sampling via DQS (either internal loopback or external DQS).\nThe value provided here is loaded into the FLEXSPIn_DLLnCR." + }, + { + "width": 10, + "id": "fuse5-bits-7-16", + "name": "FLEXSPI_IMAGE_OFFSET[9:0]", + "description": "Any offset in memory mapped FlexSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset.\nThis allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset.\nFlLEXSPI_IMAGE_OFFSET field specifies the offset location of the second image. FLEXSPI_REMAP_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped.\nIf this field is left blank boot ROM will not enable FlexSPI remap feature.\nThe physical flash offset is computed as below:\nphysical offset = FLEXSPI_IMAGE_OFFSET * 256KByte" + }, + { + "width": 4, + "id": "fuse5-bits-17-20", + "name": "FLEXSPI_REMAP_IMAGE_SIZE[3:0]", + "description": "Any offset in memory mapped FlexSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. FLEXSPI_IMAGE_OFFSET field specifies the offset location of second image. FLEXSPI_REMAP_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped\nNOTE: FlexSPI remap size cannot exceed the start address of boot image 1.\nb'0000 Remap size = FLEXSPI_IMAGE_OFFSET * 256KByte\n\" SIZE_OFFSET \"Size of the remapped area (aka second half) is same as first half. It is determined by FLEXSPI_IMAGE_OFFSET Field.\nb'0001 SIZE_1MB Size of remapped area is 1MByte.\nb'0010 SIZE_2MB Size of remapped area is 2MByte.\nb'0011 SIZE_3MB Size of remapped area is 3MByte.\nb'0100 SIZE_4MB Size of remapped area is 4MByte.\nb'0101 SIZE_5MB Size of remapped area is 5MByte.\nb'0110 SIZE_6MB Size of remapped area is 6MByte.\nb'0111 SIZE_7MB Size of remapped area is 7MByte.\nb'1000 SIZE_8MB Size of remapped area is 8MByte.\nb'1001 SIZE_9MB Size of remapped area is 9MByte.\nb'1010 SIZE_10MB Size of remapped area is 10MByte.\nb'1011 SIZE_11MB Size of remapped area is 11MByte.\nb'1100 SIZE_12MB Size of remapped area is 12MByte.\nb'1101 SIZE_256KB Size of remapped area is 256KByte.\nb'1110 SIZE_512KB Size of remapped area is 512KByte.\nb'1111 SIZE_768KB Size of remapped area is 768KByte." + }, + { + "width": 11 + } + ] + }, + { + "id": "fuse6", + "name": "SECURE_BOOT_CFG", + "description": "Secure Boot Configuration 0", + "index_int": "0x0006", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse6-bits-0-1", + "name": "SEC_BOOT_EN[1:0]", + "description": "Secure boot enforcement.\nThis field defines the minimum image verification procedure (CRC32, CMAC, ECDSA sign).\nThe Image type field in header indicates the type of verification data (checksum or signature) included in it.\nPlain < CRC32 < CMAC < ECDSA", + "values": [ + { + "name": "ALL_IMAGES", + "value": 0, + "description": "All Image types are allowed." + }, + { + "name": "CRC32_IMAGES", + "value": 1, + "description": "Only CRC32 or signed (CMAC or ECDSA) images are allowed." + }, + { + "name": "SIGNED_IMAGES", + "value": 2, + "description": "Only Signed (CMAC or ECDSA) images are allowed." + }, + { + "name": "ECDSA_SIGNED", + "value": 3, + "description": "Only ECDSA signed images are allowed." + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse6-bits-3-4", + "name": "LP_SEC_BOOT[1:0]", + "description": "Secure boot option for low-power wake from power-down & deep-powerdown.\nFor CFPA/CMPA do CRC check always.", + "values": [ + { + "name": "COLD_BOOT", + "value": 0, + "description": "Same as cold boot" + }, + { + "name": "CHECK_CRC32", + "value": 1, + "description": "CRC check for CFPA/CMPA & CRC32 check of active image" + }, + { + "name": "CHECK_JUMP", + "value": 2, + "description": "CRC check for CFPA/CMPA & jump to vector address specified in CFPA." + }, + { + "name": "CHECK_CMAC", + "value": 3, + "description": "CRC check for CFPA/CMPA & CMAC check of active image" + } + ] + }, + { + "width": 3 + }, + { + "width": 2, + "id": "fuse6-bits-8-9", + "name": "ENF_CNSA[1:0]", + "description": "Enforce CNSA suite approved algorithms for secure boot, secure update and debug authentication.\nNote, CMAC image authentication is only allowed in 2b'00 setting.", + "values": [ + { + "name": "ALL_ALLOWED", + "value": 0, + "description": "All algorithm allowed." + }, + { + "name": "LIMITED", + "value": 1, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used." + }, + { + "name": "LIMITED_0", + "value": 2, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used." + }, + { + "name": "LIMITED_1", + "value": 3, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-10-11", + "name": "ENF_TZM_PRESET[1:0]", + "description": "TrustZone-M mode.", + "values": [ + { + "name": "IGNORE", + "value": 0, + "description": "Ignored." + }, + { + "name": "ENFORCE", + "value": 1, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_0", + "value": 2, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_1", + "value": 3, + "description": "Enforce preset TZM data in image manifest." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-12-13", + "name": "ITRC_ZEROIZE[1:0]", + "description": "RAM zeroize on ITRC event.\nZeroize long-term storage RAM (RAMA) on subsequent boot when Intrusion & Tamper control signals an intrusion event (ITRC_OUT3).\nNote, when ITRC is re-configured in application then ITRC_OUT4 (CHIP_RESET) should be triggered with at least same events as ITRC_OUT3 (RAM_ZEROIZE).", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action." + }, + { + "name": "PKC_RAM_ON_ITRC", + "value": 1, + "description": "Always Zeroize PKC RAM on ITRC event only." + }, + { + "name": "PKC_RAMA_ON_ITRC", + "value": 2, + "description": "Zeroize PKC & RAMA on ITRC event only." + }, + { + "name": "PKC_RAMA_ALL_RESET", + "value": 3, + "description": "Always Zeroize PKC & RAMA on all reset boot." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-14-15", + "name": "ACTIVE_IMG_PROT[1:0]", + "description": "Protection of active image.\nThis field defines protection of flash area occupied by the active image. Only applicable to internal flash.", + "values": [ + { + "name": "FLASH_ACL_PROTECTION", + "value": 0, + "description": "Protection is defined using the CFPA FLASH_ACL settings." + }, + { + "name": "WITH_STICKY_LOCK", + "value": 1, + "description": "Write protect active image area with sticky lock. GLBAC2 is used. FLASH_ACL settings are ignored." + }, + { + "name": "NO_STICKY_LOCK", + "value": 2, + "description": "Write protect active image area without sticky lock. GLBAC4 is used. FLASH_ACL settings are ignored." + }, + { + "name": "XOM_PROTECTION", + "value": 3, + "description": "XOM protect active image area with sticky lock. GLBAC6 is used. FLASH_ACL settings are ignored." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-16-17", + "name": "FIPS_SHA_STEN[1:0]", + "description": "Enable self-test for SHA2 block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-18-19", + "name": "FIPS_AES_STEN[1:0]", + "description": "Enable self-test for AES block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-20-21", + "name": "FIPS_ECDSA_STEN[1:0]", + "description": "Enable self-test for ECDSA block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-22-23", + "name": "FIPS_DRBG_STEN[1:0]", + "description": "Enable self-test for DRBG block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-24-25", + "name": "FIPS_CMAC_STEN[1:0]", + "description": "Enable self-test for CMAC block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-26-27", + "name": "FIPS_KDF_STEN[1:0]", + "description": "Enable self-test for KDF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-28-29", + "name": "FIPS_PUF_STEN[1:0]", + "description": "Enable self-test for PUF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS].", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "fuse7", + "name": "RoTK_USAGE", + "description": "Secure Boot Configuration 1", + "index_int": "0x0007", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 3, + "id": "fuse7-bits-0-2", + "name": "RoTK0_Usage[2:0]", + "description": "RoT key 0 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-3-5", + "name": "RoTK1_Usage[2:0]", + "description": "RoT key 1 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-6-8", + "name": "RoTK2_Usage[2:0]", + "description": "RoT key 2 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW_IMG", + "value": 2, + "description": "Usable as image (boot & FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-9-11", + "name": "RoTK3_Usage[2:0]", + "description": "RoT key 3 usage properties.", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-12", + "name": "SKIP_DICE", + "description": "Skip DICE computation.", + "values": [ + { + "name": "Enable DICE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "Disable DICE", + "value": 1, + "description": "Disable DICE" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-13", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area (IFR1) containing specific part configuration data defined during chip manufacturing process in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-14", + "name": "DICE_INC_CUST_CFG", + "description": "Include data from CMPA page (512 bytes) in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 9 + }, + { + "width": 2, + "id": "fuse7-bits-24-25", + "name": "NPX_LOCK_CTX0[1:0]", + "description": "Lock on-chip flash NPX PRINCE context 0 settings.\nFlash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled." + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-26-27", + "name": "NPX_LOCK_CTX1[1:0]", + "description": "Lock on-chip flash NPX PRINCE context 1 settings.\nFlash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled." + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-28-29", + "name": "NPX_LOCK_CTX2[1:0]", + "description": "Lock on-chip flash NPX PRINCE context 2 settings.\nFlash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled." + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-30-31", + "name": "NPX_LOCK_CTX3[1:0]", + "description": "Lock on-chip flash NPX PRINCE context 3 settings.\nFlash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked." + }, + { + "name": "LOCKED_NO_ERASE_CHECK", + "value": 1, + "description": "Region is locked. But no erase check." + }, + { + "name": "LOCKED", + "value": 2, + "description": "Region is locked. Erase check enabled." + }, + { + "name": "LOCKED_0", + "value": 3, + "description": "Region is locked. Erase check enabled." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "Root of trust keys configuration" + }, + "registers": [ + { + "id": "fuse11", + "name": "ROTKH0", + "description": "Root of Trust Keys Table Hash 0 (ROTKH[31:0])", + "index_int": "0x000B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse11-bits-0-31", + "name": "ROTKH[31:0]", + "description": "Root of Trust Keys Table Hash 0 (ROTKH[31:0])\nSHA384 ROTKH[383:352] / SHA56 ROTKH[255:224]" + } + ] + }, + { + "id": "fuse12", + "name": "ROTKH1", + "description": "Root of Trust Keys Table Hash 1 (ROTKH[63:32])", + "index_int": "0x000C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse12-bits-0-31", + "name": "ROTKH[63:32]", + "description": "Root of Trust Keys Table Hash 1 (ROTKH[63:32])\nSHA384 ROTKH[351:320] / SHA56 ROTKH[223:192]" + } + ] + }, + { + "id": "fuse13", + "name": "ROTKH2", + "description": "Root of Trust Keys Table Hash 2 (ROTKH[95:64])", + "index_int": "0x000D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse13-bits-0-31", + "name": "ROTKH[95:64]", + "description": "Root of Trust Keys Table Hash 2 (ROTKH[95:64])\nSHA384 ROTKH[319:288] / SHA56 ROTKH[191:160]" + } + ] + }, + { + "id": "fuse14", + "name": "ROTKH3", + "description": "Root of Trust Keys Table Hash 3 (ROTKH[127:96])", + "index_int": "0x000E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse14-bits-0-31", + "name": "ROTKH[127:96]", + "description": "Root of Trust Keys Table Hash 3 (ROTKH[127:96])\nSHA384 ROTKH[287:256] / SHA56 ROTKH[159:128]" + } + ] + }, + { + "id": "fuse15", + "name": "ROTKH4", + "description": "Root of Trust Keys Table Hash 4 (ROTKH[159:128])", + "index_int": "0x000F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse15-bits-0-31", + "name": "ROTKH[159:128]", + "description": "Root of Trust Keys Table Hash 4 (ROTKH[159:128])\nSHA384 ROTKH[255:224] / SHA56 ROTKH[127:96]" + } + ] + }, + { + "id": "fuse16", + "name": "ROTKH5", + "description": "Root of Trust Keys Table Hash 5 (ROTKH[191:160])", + "index_int": "0x0010", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse16-bits-0-31", + "name": "ROTKH[191:160]", + "description": "Root of Trust Keys Table Hash 5 (ROTKH[191:160])\nSHA384 ROTKH[223:192] / SHA56 ROTKH[95:64]" + } + ] + }, + { + "id": "fuse17", + "name": "ROTKH6", + "description": "Root of Trust Keys Table Hash 6 (ROTKH223:192])", + "index_int": "0x0011", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse17-bits-0-31", + "name": "ROTKH[223:192]", + "description": "Root of Trust Keys Table Hash 6 (ROTKH[223:192])\nSHA384 ROTKH[191:160] / SHA56 ROTKH[63:32]", + "deprecated_names": [ + "ROTKH[232:192]" + ] + } + ] + }, + { + "id": "fuse18", + "name": "ROTKH7", + "description": "Root of Trust Keys Table Hash 7 (ROTKH[255:224])", + "index_int": "0x0012", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse18-bits-0-31", + "name": "ROTKH[255:224]", + "description": "Root of Trust Keys Table Hash 7 (ROTKH[255:224])\nSHA384 ROTKH[159:128 / SHA56 ROTKH[31:0]" + } + ] + }, + { + "id": "fuse19", + "name": "ROTKH8", + "description": "Root of Trust Keys Table Hash 8 (ROTKH[287:256])", + "index_int": "0x0013", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse19-bits-0-31", + "name": "ROTKH[287:256]", + "description": "Root of Trust Keys Table Hash 8 (ROTKH[287:256])\nSHA384 ROTKH[127:96] / 0" + } + ] + }, + { + "id": "fuse20", + "name": "ROTKH9", + "description": "Root of Trust Keys Table Hash 9 (ROTKH[319:288])", + "index_int": "0x0014", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse20-bits-0-31", + "name": "ROTKH[319:288]", + "description": "Root of Trust Keys Table Hash 9 (ROTKH[319:288])\nSHA384 ROTKH[95:64] / 0" + } + ] + }, + { + "id": "fuse21", + "name": "ROTKH10", + "description": "Root of Trust Keys Table Hash 10 (ROTKH[351:320])", + "index_int": "0x0015", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse21-bits-0-31", + "name": "ROTKH[351:320]", + "description": "Root of Trust Keys Table Hash 10 (ROTKH[351:320])\nSHA384 ROTKH[63:32] / 0" + } + ] + }, + { + "id": "fuse22", + "name": "ROTKH11", + "description": "Root of Trust Keys Table Hash 11 (ROTKH[383:352])", + "index_int": "0x0016", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse22-bits-0-31", + "name": "ROTKH[383:352]", + "description": "Root of Trust Keys Table Hash 11 (ROTKH[383:352])\nSHA384 ROTKH[31:0] / 0" + } + ] + } + ] + }, + { + "group": { + "name": "PRINCE", + "description": "Prince Context configuration" + }, + "registers": [ + { + "id": "fuse23", + "name": "NPX_CTX0_WD0", + "description": "Bitmap mask for NPX Prince context 0 (sectors 0 - 31)", + "index_int": "0x0017", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse23-bits-0-31", + "name": "NPX_CTX0_WD0", + "description": "Bitmap mask for NPX Prince context 0 (sectors 0 - 31)\nROM copies this value to NPX->VMAPCTX0_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX0 key & IV. NPX_CTX0_WD0[31:0]" + } + ] + }, + { + "id": "fuse24", + "name": "NPX_CTX0_WD1", + "description": "Bitmap mask for NPX Prince context 0 (sectors 32 - 63)", + "index_int": "0x0018", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse24-bits-0-31", + "name": "NPX_CTX0_WD1", + "description": "Bitmap mask for NPX Prince context 0 (sectors 32 - 63)\nROM copies this value to NPX->VMAPCTX0_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX0 key & IV. NPX_CTX0_WD1[31:0]" + } + ] + }, + { + "id": "fuse25", + "name": "NPX_CTX1_WD0", + "description": "Bitmap mask for NPX Prince context 1 (sectors 0 - 31)", + "index_int": "0x0019", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse25-bits-0-31", + "name": "NPX_CTX1_WD0", + "description": "Bitmap mask for NPX Prince context 1 (sectors 0 - 31)\nROM copies this value to NPX->VMAPCTX1_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX1 key & IV. NPX_CTX1_WD0[31:0]" + } + ] + }, + { + "id": "fuse26", + "name": "NPX_CTX1_WD1", + "description": "Bitmap mask for NPX Prince context 1 (sectors 32 - 63)", + "index_int": "0x001A", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse26-bits-0-31", + "name": "NPX_CTX1_WD1", + "description": "Bitmap mask for NPX Prince context 1 (sectors 32 - 63)\nROM copies this value to NPX->VMAPCTX1_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX1 key & IV. NPX_CTX1_WD1[31:0]" + } + ] + }, + { + "id": "fuse27", + "name": "NPX_CTX2_WD0", + "description": "Bitmap mask for NPX Prince context 2 (sectors 0 - 31)", + "index_int": "0x001B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse27-bits-0-31", + "name": "NPX_CTX2_WD0", + "description": "Bitmap mask for NPX Prince context 2 (sectors 0 - 31)\nROM copies this value to NPX->VMAPCTX2_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX2 key & IV. NPX_CTX2_WD0[31:0]" + } + ] + }, + { + "id": "fuse28", + "name": "NPX_CTX2_WD1", + "description": "Bitmap mask for NPX Prince context 2 (sectors 32 - 63)", + "index_int": "0x001C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse28-bits-0-31", + "name": "NPX_CTX2_WD1", + "description": "Bitmap mask for NPX Prince context 2 (sectors 32 - 63)\nROM copies this value to NPX->VMAPCTX2_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX2 key & IV. NPX_CTX2_WD1[31:0]" + } + ] + }, + { + "id": "fuse29", + "name": "NPX_CTX3_WD0", + "description": "Bitmap mask for NPX Prince context 3 (sectors 0 - 31)", + "index_int": "0x001D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse29-bits-0-31", + "name": "NPX_CTX3_WD0", + "description": "Bitmap mask for NPX Prince context 3 (sectors 0 - 31)\nROM copies this value to NPX->VMAPCTX3_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX3 key & IV. NPX_CTX3_WD0[31:0]" + } + ] + }, + { + "id": "fuse30", + "name": "NPX_CTX3_WD1", + "description": "Bitmap mask for NPX Prince context 3 (sectors 32 - 63)", + "index_int": "0x001E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse30-bits-0-31", + "name": "NPX_CTX3_WD1", + "description": "Bitmap mask for NPX Prince context 3 (sectors 32 - 63)\nROM copies this value to NPX->VMAPCTX3_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX3 key & IV. NPX_CTX3_WD1[31:0]" + } + ] + }, + { + "id": "fuse31", + "name": "IPED_CTX_CRC32", + "description": "CRC-32/MPEG-2 value of the IPED regions start and end address setting", + "index_int": "0x001F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse31-bits-0-31", + "name": "IPED_CTX_CRC32", + "description": "CRC-32/MPEG-2 value of the IPED regions start and end address setting\nUser has to program CRC32 of IPED context configuration data present in CMPA (0x0100_40B0 - 0x0100_40EF) to have ROM do integrity check of IPED configuration data before using. This check is done only when this field is non-zero.IPED_CTX_CRC32[31:0]" + } + ] + }, + { + "id": "fuse32", + "name": "IPED_GP1", + "description": "General Purpose Fuse 1 (IPED_GP1[31:0])", + "index_int": "0x0020", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse32-bits-0-31", + "name": "IPED_GP1[31:0]", + "description": "General Purpose Fuse 1 (IPED_GP1[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse33", + "name": "IPED_GP2", + "description": "General Purpose Fuse 2 (IPED_GP2[31:0])", + "index_int": "0x0021", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse33-bits-0-31", + "name": "IPED_GP2[31:0]", + "description": "General Purpose Fuse 2 (IPED_GP2[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse34", + "name": "IPED_GP3", + "description": "General Purpose Fuse 3 (IPED_GP3[31:0])", + "index_int": "0x0022", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse34-bits-0-31", + "name": "IPED_GP3[31:0]", + "description": "General Purpose Fuse 3 (IPED_GP3[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse35", + "name": "IPED_GP4", + "description": "General Purpose Fuse 4 (IPED_GP4[31:0])", + "index_int": "0x0023", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse35-bits-0-31", + "name": "IPED_GP4[31:0]", + "description": "General Purpose Fuse 4 (IPED_GP4[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse36", + "name": "IPED_GP5", + "description": "General Purpose Fuse 5 (IPED_GP5[31:0])", + "index_int": "0x0024", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse36-bits-0-31", + "name": "IPED_GP5[31:0]", + "description": "General Purpose Fuse 5 (IPED_GP5[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse37", + "name": "IPED_GP6", + "description": "General Purpose Fuse 6 (IPED_GP6[31:0])", + "index_int": "0x0025", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse37-bits-0-31", + "name": "IPED_GP6[31:0]", + "description": "General Purpose Fuse 6 (IPED_GP6[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse38", + "name": "IPED_GP7", + "description": "General Purpose Fuse 7 (IPED_GP7[31:0])", + "index_int": "0x0026", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse38-bits-0-31", + "name": "IPED_GP7[31:0]", + "description": "General Purpose Fuse 7 (IPED_GP7[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + } + ] + }, + { + "group": { + "name": "CUST", + "description": "Customer fuses configuration" + }, + "registers": [ + { + "id": "fuse43", + "name": "GP0", + "description": "General Purpose Fuse 0 (GP0[31:0])", + "index_int": "0x002B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "read_lock_int": "0x00100000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse43-bits-0-31", + "name": "GP0[31:0]", + "description": "General Purpose Fuse 0 (GP0[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse44", + "name": "GP1", + "description": "General Purpose Fuse 1 (GP1[31:0])", + "index_int": "0x002C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "read_lock_int": "0x00100000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse44-bits-0-31", + "name": "GP1[31:0]", + "description": "General Purpose Fuse 1 (GP1[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse45", + "name": "GP2", + "description": "General Purpose Fuse 2 (GP2[31:0])", + "index_int": "0x002D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "read_lock_int": "0x00100000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse45-bits-0-31", + "name": "GP2[31:0]", + "description": "General Purpose Fuse 2 (GP2[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse46", + "name": "GP3", + "description": "General Purpose Fuse 3 (GP3[31:0])", + "index_int": "0x002E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "read_lock_int": "0x00100000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse46-bits-0-31", + "name": "GP3[31:0]", + "description": "General Purpose Fuse 3 (GP3[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse47", + "name": "GP4", + "description": "General Purpose Fuse 4 (GP4[31:0])", + "index_int": "0x002F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse47-bits-0-31", + "name": "GP4[31:0]", + "description": "General Purpose Fuse 4 (GP4[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse48", + "name": "GP5", + "description": "General Purpose Fuse 5 (GP5[31:0])", + "index_int": "0x0030", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse48-bits-0-31", + "name": "GP5[31:0]", + "description": "General Purpose Fuse 5 (GP5[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse49", + "name": "GP6", + "description": "General Purpose Fuse 6 (GP6[31:0])", + "index_int": "0x0031", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse49-bits-0-31", + "name": "GP6[31:0]", + "description": "General Purpose Fuse 6 (GP6[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse50", + "name": "GP7", + "description": "General Purpose Fuse 7 (GP7[31:0])", + "index_int": "0x0032", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse50-bits-0-31", + "name": "GP7[31:0]", + "description": "General Purpose Fuse 7 (GP7[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse51", + "name": "GP8", + "description": "General Purpose Fuse 8 (GP8[31:0])", + "index_int": "0x0033", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x04000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse51-bits-0-31", + "name": "GP8[31:0]", + "description": "General Purpose Fuse 8 (GP8[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse52", + "name": "GP9", + "description": "General Purpose Fuse 9 (GP9[31:0])", + "index_int": "0x0034", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x04000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse52-bits-0-31", + "name": "GP9[31:0]", + "description": "General Purpose Fuse 9 (GP9[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse53", + "name": "GP10", + "description": "General Purpose Fuse 10 (GP10[31:0])", + "index_int": "0x0035", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x04000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse53-bits-0-31", + "name": "GP10[31:0]", + "description": "General Purpose Fuse 10 (GP10[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse54", + "name": "GP11", + "description": "General Purpose Fuse 11 (GP11[31:0])", + "index_int": "0x0036", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x04000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse54-bits-0-31", + "name": "GP11[31:0]", + "description": "General Purpose Fuse 11 (GP11[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse55", + "name": "GP12", + "description": "General Purpose Fuse 12 (GP12[31:0])", + "index_int": "0x0037", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse55-bits-0-31", + "name": "GP12[31:0]", + "description": "General Purpose Fuse 12 (GP12[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse56", + "name": "GP13", + "description": "General Purpose Fuse 13 (GP13[31:0])", + "index_int": "0x0038", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse56-bits-0-31", + "name": "GP13[31:0]", + "description": "General Purpose Fuse 13 (GP13[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse57", + "name": "GP14", + "description": "General Purpose Fuse 14 (GP14[31:0])", + "index_int": "0x0039", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse57-bits-0-31", + "name": "GP14[31:0]", + "description": "General Purpose Fuse 14 (GP14[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse58", + "name": "GP15", + "description": "General Purpose Fuse 15 (GP15[31:0])", + "index_int": "0x003A", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse58-bits-0-31", + "name": "GP15[31:0]", + "description": "General Purpose Fuse 15 (GP15[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse59", + "name": "GP16", + "description": "General Purpose Fuse 16 (GP16[31:0])", + "index_int": "0x003B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse59-bits-0-31", + "name": "GP16[31:0]", + "description": "General Purpose Fuse 16 (GP16[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse60", + "name": "GP17", + "description": "General Purpose Fuse 17 (GP17[31:0])", + "index_int": "0x003C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse60-bits-0-31", + "name": "GP17[31:0]", + "description": "General Purpose Fuse 17 (GP17[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse61", + "name": "GP18", + "description": "General Purpose Fuse 18 (GP18[31:0])", + "index_int": "0x003D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse61-bits-0-31", + "name": "GP18[31:0]", + "description": "General Purpose Fuse 18 (GP18[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse62", + "name": "GP19", + "description": "General Purpose Fuse 19 (GP19[31:0])", + "index_int": "0x003E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x08000000", + "read_lock_int": "0x20000000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse62-bits-0-31", + "name": "GP19[31:0]", + "description": "General Purpose Fuse 19 (GP19[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse63", + "name": "GP20", + "description": "General Purpose Fuse 20 (GP20[31:0])", + "index_int": "0x003F", + "bitfields": [ + { + "width": 32, + "id": "fuse63-bits-0-31", + "name": "GP20[31:0]", + "description": "General Purpose Fuse 20 (GP20[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse64", + "name": "GP21", + "description": "General Purpose Fuse 21 (GP21[31:0])", + "index_int": "0x0040", + "bitfields": [ + { + "width": 32, + "id": "fuse64-bits-0-31", + "name": "GP21[31:0]", + "description": "General Purpose Fuse 21 (GP21[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse65", + "name": "GP22", + "description": "General Purpose Fuse 22 (GP22[31:0])", + "index_int": "0x0041", + "bitfields": [ + { + "width": 32, + "id": "fuse65-bits-0-31", + "name": "GP22[31:0]", + "description": "General Purpose Fuse 22 (GP22[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse66", + "name": "GP23", + "description": "General Purpose Fuse 23 (GP23[31:0])", + "index_int": "0x0042", + "bitfields": [ + { + "width": 32, + "id": "fuse66-bits-0-31", + "name": "GP23[31:0]", + "description": "General Purpose Fuse 23 (GP23[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse67", + "name": "GP24", + "description": "General Purpose Fuse 24 (GP24[31:0])", + "index_int": "0x0043", + "bitfields": [ + { + "width": 32, + "id": "fuse67-bits-0-31", + "name": "GP24[31:0]", + "description": "General Purpose Fuse 24 (GP24[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse68", + "name": "GP25", + "description": "General Purpose Fuse 25 (GP25[31:0])", + "index_int": "0x0044", + "bitfields": [ + { + "width": 32, + "id": "fuse68-bits-0-31", + "name": "GP25[31:0]", + "description": "General Purpose Fuse 25 (GP25[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse69", + "name": "GP26", + "description": "General Purpose Fuse 26 (GP26[31:0])", + "index_int": "0x0045", + "bitfields": [ + { + "width": 32, + "id": "fuse69-bits-0-31", + "name": "GP26[31:0]", + "description": "General Purpose Fuse 26 (GP26[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse70", + "name": "GP27", + "description": "General Purpose Fuse 27 (GP27[31:0])", + "index_int": "0x0046", + "bitfields": [ + { + "width": 32, + "id": "fuse70-bits-0-31", + "name": "GP27[31:0]", + "description": "General Purpose Fuse 27 (GP27[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse71", + "name": "GP28", + "description": "General Purpose Fuse 28(GP28[31:0])", + "index_int": "0x0047", + "bitfields": [ + { + "width": 32, + "id": "fuse71-bits-0-31", + "name": "GP28[31:0]", + "description": "General Purpose Fuse 28(GP28[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse72", + "name": "GP29", + "description": "General Purpose Fuse 29 (GP29[31:0])", + "index_int": "0x0048", + "bitfields": [ + { + "width": 32, + "id": "fuse72-bits-0-31", + "name": "GP29[31:0]", + "description": "General Purpose Fuse 29 (GP29[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse73", + "name": "GP30", + "description": "General Purpose Fuse 30 (GP30[31:0])", + "index_int": "0x0049", + "bitfields": [ + { + "width": 32, + "id": "fuse73-bits-0-31", + "name": "GP30[31:0]", + "description": "General Purpose Fuse 30 (GP30[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse74", + "name": "GP31", + "description": "General Purpose Fuse 31 (GP31[31:0])", + "index_int": "0x004A", + "bitfields": [ + { + "width": 32, + "id": "fuse74-bits-0-31", + "name": "GP31[31:0]", + "description": "General Purpose Fuse 31 (GP31[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse75", + "name": "GP32", + "description": "General Purpose Fuse 32 (GP32[31:0])", + "index_int": "0x004B", + "bitfields": [ + { + "width": 32, + "id": "fuse75-bits-0-31", + "name": "GP32[31:0]", + "description": "General Purpose Fuse 32 (GP32[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse76", + "name": "GP33", + "description": "General Purpose Fuse 33 (GP33[31:0])", + "index_int": "0x004C", + "bitfields": [ + { + "width": 32, + "id": "fuse76-bits-0-31", + "name": "GP33[31:0]", + "description": "General Purpose Fuse 33 (GP33[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse77", + "name": "GP34", + "description": "General Purpose Fuse 34 (GP34[31:0])", + "index_int": "0x004D", + "bitfields": [ + { + "width": 32, + "id": "fuse77-bits-0-31", + "name": "GP34[31:0]", + "description": "General Purpose Fuse 34 (GP34[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse78", + "name": "GP35", + "description": "General Purpose Fuse 35 (GP35[31:0])", + "index_int": "0x004E", + "bitfields": [ + { + "width": 32, + "id": "fuse78-bits-0-31", + "name": "GP35[31:0]", + "description": "General Purpose Fuse 35 (GP35[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse79", + "name": "GP36", + "description": "General Purpose Fuse 36 (GP36[31:0])", + "index_int": "0x004F", + "bitfields": [ + { + "width": 32, + "id": "fuse79-bits-0-31", + "name": "GP36[31:0]", + "description": "General Purpose Fuse 36 (GP36[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse80", + "name": "GP37", + "description": "General Purpose Fuse 37 (GP37[31:0])", + "index_int": "0x0050", + "bitfields": [ + { + "width": 32, + "id": "fuse80-bits-0-31", + "name": "GP37[31:0]", + "description": "General Purpose Fuse 37 (GP37[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + }, + { + "id": "fuse81", + "name": "GP38", + "description": "General Purpose Fuse 38 (GP38[31:0])", + "index_int": "0x0051", + "bitfields": [ + { + "width": 32, + "id": "fuse81-bits-0-31", + "name": "GP38[31:0]", + "description": "General Purpose Fuse 38 (GP38[31:0])\nGeneral purpose fuse words available for customer use." + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cfpa_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cfpa_a0.json new file mode 100644 index 0000000..2049992 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cfpa_a0.json @@ -0,0 +1,2399 @@ +{ + "cpu": "MCXN946", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "Description of Header register", + "offset_int": "0", + "default_value_int": "0x96350000", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field000-bits0-7", + "name": "CFPA_LC_STATE", + "description": "CFPA_LC_STATE." + }, + { + "width": 8, + "id": "field000-bits8-15", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + }, + { + "width": 16, + "access": "RO", + "id": "field000-bits16-31", + "name": "HEADER", + "description": "CFPA Header marker should be set to 0x9635" + } + ] + }, + { + "id": "field004", + "name": "CFPA_PAGE_VERSION", + "description": "Description of CFPA_PAGE_VERSION register", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 24, + "id": "field004-bits0-23", + "name": "CFPA_PAGE_VERSION", + "description": "CFPA page version" + }, + { + "width": 2, + "id": "field004-bits24-25", + "name": "IMG_UPD", + "description": "Image_updated", + "values": [ + { + "name": "NOTHING_CHANGED", + "value": 0, + "description": "No action" + }, + { + "name": "IMAGE0_CMAC_UPDATE", + "value": 1, + "description": "Update image 0 CMAC" + }, + { + "name": "IMAGE1_CMAC_UPDATE", + "value": 2, + "description": "Update image 1 CMAC" + }, + { + "name": "SBL_IMG_CMAC_UPDATE", + "value": 3, + "description": "Update SBL Image CMAC" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field004-bits27-29", + "name": "CMPA_UPD", + "description": "CMPA page updated through ROM API. Thus compute CMAC on sub-sequent boot. This field is checked only in OEM_OPEN (0x3) LC state.", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "UPDATE_IN_CMPA", + "value": 2, + "description": "Update CMAC field in CMPA page. " + }, + { + "name": "TO_OEM_SECURE", + "value": 3, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to OEM_SECURE (0x7)" + }, + { + "name": "TO_OEM_CLOSED", + "value": 5, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to OEM_CLOSED (0xF)." + }, + { + "name": "TO_OEM_LOCKED", + "value": 6, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to OEM_LOCKED (0xCF)." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field004-bit31", + "name": "DICE_UPD", + "description": "Update DICE certificate during next boot.", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "GENERATE_CERTIFICATE", + "value": 1, + "description": "Generate certificate. " + } + ] + } + ] + }, + { + "id": "field008", + "name": "Secure_FW_Version", + "description": "Description of Secure_FW_Version register", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Description of NS_FW_Version register", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "Recovery_FW_Version", + "description": "Description of Recovery_FW_Version register", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field014", + "name": "SECBOOT_FLAGS", + "description": "Description of SECBOOT_FLAGS register", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field014-bits0-1", + "name": "RoTK0_EN", + "description": "Root of Trust Key 0 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_2", + "value": 2, + "description": "Key Revoked" + }, + { + "name": "REVOKED_3", + "value": 3, + "description": "Key Revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits2-3", + "name": "RoTK1_EN", + "description": "Root of Trust Key 1 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_2", + "value": 2, + "description": "Key Revoked" + }, + { + "name": "REVOKED_3", + "value": 3, + "description": "Key Revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits4-5", + "name": "RoTK2_EN", + "description": "Root of Trust Key 2 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_2", + "value": 2, + "description": "Key Revoked" + }, + { + "name": "REVOKED_3", + "value": 3, + "description": "Key Revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits6-7", + "name": "RoTK3_EN", + "description": "Root of Trust Key 3 Enable", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_2", + "value": 2, + "description": "Key Revoked" + }, + { + "name": "REVOKED_3", + "value": 3, + "description": "Key Revoked" + } + ] + }, + { + "width": 20 + }, + { + "width": 4, + "id": "field014-bits28-31", + "name": "OEM_RETURN_ERASE_DONE", + "description": "OEM_RETURN_ERASE_DONE" + } + ] + }, + { + "id": "field018", + "name": "IMAGE_KEY_REVOKE", + "description": "Image Key Revoke", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 24, + "id": "field018-bits0-23", + "name": "IMAGE_KEY_REVOKE_ID", + "description": "Image Key Revocation ID (Monotonic counter)" + }, + { + "width": 8 + } + ] + }, + { + "id": "field01C", + "name": "LP_VECTOR_ADDR", + "description": "Vector address when waking from power-down and deep power down states.", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field020", + "name": "DBG_REVOKE_VU", + "description": "Debug Revoke Vendor Usage", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field020-bits0-15", + "name": "VENDOR_USAGE", + "description": "Debug Vendor Usage" + }, + { + "width": 16, + "id": "field020-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field024", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "NIDEN", + "description": "Non-secure Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "SPNIDEN", + "description": "Secure Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "SPIDEN", + "description": "Secure Invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Disable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 4 + }, + { + "width": 1, + "id": "field024-bit15", + "name": "UUID_CHECK", + "description": "UUID Check", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value of Bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field028", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field028-bit0", + "name": "NIDEN", + "description": "Non-secure Non-invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit2", + "name": "SPNIDEN", + "description": "Secure Non-invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit3", + "name": "SPIDEN", + "description": "Secure Invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field028-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 debug enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 5 + }, + { + "width": 16, + "id": "field028-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field030", + "name": "MCTR_NPX_CTX0", + "description": "Erase count for internal Prince region 0 (Monotonic counter)", + "offset_int": "0x0030", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field034", + "name": "MCTR_NPX_CTX1", + "description": "Erase count for internal Prince region 1 (Monotonic counter)", + "offset_int": "0x0034", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field038", + "name": "MCTR_NPX_CTX2", + "description": "Erase count for internal Prince region 2 (Monotonic counter)", + "offset_int": "0x0038", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field03C", + "name": "MCTR_NPX_CTX3", + "description": "Erase count for internal Prince region 3 (Monotonic counter)", + "offset_int": "0x003C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field040", + "name": "MCTR_IPED_CTX0", + "description": "Erase count for external Prince region 0 (Monotonic counter)", + "offset_int": "0x0040", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field044", + "name": "MCTR_IPED_CTX1", + "description": "Erase count for external Prince region 1 (Monotonic counter)", + "offset_int": "0x0044", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field048", + "name": "MCTR_IPED_CTX2", + "description": "Erase count for external Prince region 2 (Monotonic counter)", + "offset_int": "0x0048", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field04C", + "name": "MCTR_IPED_CTX3", + "description": "Erase count for external Prince region 3 (Monotonic counter)", + "offset_int": "0x004C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field050", + "name": "MCTR_IPED_CTX4", + "description": "Erase count for external Prince region 4 (Monotonic counter)", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "MCTR_IPED_CTX5", + "description": "Erase count for external Prince region 5 (Monotonic counter)", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field058", + "name": "MCTR_IPED_CTX6", + "description": "Erase count for external Prince region 6 (Monotonic counter)", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "MCTR_IPED_CTX7", + "description": "Erase count for external Prince region 7 (Monotonic counter)", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field060", + "name": "ERR_AUTH_FAIL_COUNT", + "description": "Authentication failure counter during boot, SB3, debug authentication (Monotonic counter)", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "ERR_ITRC_COUNT", + "description": "Tamper event counter (ITRC reset, WDT reset, WDT reset, GDET reset, Tamper pin) (Monotonic counter)", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "ERR_CFG_FAIL_COUNT", + "description": "Configuration check failure counter during CMPA, CFPA, ROM patch, TRNG, PUF start (Monotonic counter)", + "offset_int": "0x0068", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "ERR_CONT3", + "description": "Reserved error counter (Monotonic counter)", + "offset_int": "0x006C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field070", + "name": "ERR_CONT4", + "description": "Reserved error counter (Monotonic counter)", + "offset_int": "0x0070", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "ERR_CONT5", + "description": "Reserved error counter (Monotonic counter)", + "offset_int": "0x0074", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "ERR_CONT6", + "description": "Reserved error counter (Monotonic counter)", + "offset_int": "0x0078", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "ERR_CONT7", + "description": "Reserved error counter (Monotonic counter)", + "offset_int": "0x007C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field080", + "name": "MCTR_CUST_CTR0", + "description": "Customer defined Monotonic counter 0", + "offset_int": "0x0080", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "MCTR_CUST_CTR1", + "description": "Customer defined Monotonic counter 1", + "offset_int": "0x0084", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "MCTR_CUST_CTR2", + "description": "Customer defined Monotonic counter 2", + "offset_int": "0x0088", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "MCTR_CUST_CTR3", + "description": "Customer defined Monotonic counter 3", + "offset_int": "0x008C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field090", + "name": "MCTR_CUST_CTR4", + "description": "Customer defined Monotonic counter 4", + "offset_int": "0x0090", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field094", + "name": "MCTR_CUST_CTR5", + "description": "Customer defined Monotonic counter 5", + "offset_int": "0x0094", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field098", + "name": "MCTR_CUST_CTR6", + "description": "Customer defined Monotonic counter 6", + "offset_int": "0x0098", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field09C", + "name": "MCTR_CUST_CTR7", + "description": "Customer defined Monotonic counter 7", + "offset_int": "0x009C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A0", + "name": "MFLAG_CUST_0", + "description": "Customer defined Monotonic flags 0 (once a bit is set the newer version of the page should have the flag set.)", + "offset_int": "0x00A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A4", + "name": "MFLAG_CUST_1", + "description": "Customer defined Monotonic flags 1", + "offset_int": "0x00A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A8", + "name": "MFLAG_CUST_2", + "description": "Customer defined Monotonic flags 2", + "offset_int": "0x00A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0AC", + "name": "MFLAG_CUST_3", + "description": "Customer defined Monotonic flags 3", + "offset_int": "0x00AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B0", + "name": "MFLAG_CUST_4", + "description": "Customer defined Monotonic flags 4", + "offset_int": "0x00B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "MFLAG_CUST_5", + "description": "Customer defined Monotonic flags 5", + "offset_int": "0x00B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "MFLAG_CUST_6", + "description": "Customer defined Monotonic flags 6", + "offset_int": "0x00B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "MFLAG_CUST_7", + "description": "Customer defined Monotonic flags 7", + "offset_int": "0x00BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C0", + "name": "FLASH_ACL_0_7", + "description": "Description of FLASH_ACL_0_7 register", + "offset_int": "0x00C0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field0C0-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector." + }, + { + "width": 1 + } + ] + }, + { + "id": "field0C4", + "name": "FLASH_ACL_8_15", + "description": "Description of FLASH_ACL_8_15 register", + "offset_int": "0x00C4", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field0C4-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector." + }, + { + "width": 1 + } + ] + }, + { + "id": "field0C8", + "name": "FLASH_ACL_16_23", + "description": "Description of FLASH_ACL_16_23 register", + "offset_int": "0x00C8", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field0C8-bits0-2", + "name": "ACL_SEC_16", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits4-6", + "name": "ACL_SEC_17", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits8-10", + "name": "ACL_SEC_18", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits12-14", + "name": "ACL_SEC_19", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits16-18", + "name": "ACL_SEC_20", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits20-22", + "name": "ACL_SEC_21", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits24-26", + "name": "ACL_SEC_22", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits28-30", + "name": "ACL_SEC_23", + "description": "Access control for flash sector." + }, + { + "width": 1 + } + ] + }, + { + "id": "field0CC", + "name": "FLASH_ACL_24_31", + "description": "Description of FLASH_ACL_24_31 register", + "offset_int": "0x00CC", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field0CC-bits0-2", + "name": "ACL_SEC_24", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits4-6", + "name": "ACL_SEC_25", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits8-10", + "name": "ACL_SEC_26", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits12-14", + "name": "ACL_SEC_27", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits16-18", + "name": "ACL_SEC_28", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits20-22", + "name": "ACL_SEC_29", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits24-26", + "name": "ACL_SEC_30", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits28-30", + "name": "ACL_SEC_31", + "description": "Access control for flash sector." + }, + { + "width": 1 + } + ] + }, + { + "id": "field0D0", + "name": "FLASH_ACL_32_39", + "description": "Description of FLASH_ACL_32_39 register", + "offset_int": "0x00D0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field0D0-bits0-2", + "name": "ACL_SEC_32", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits4-6", + "name": "ACL_SEC_33", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits8-10", + "name": "ACL_SEC_34", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits12-14", + "name": "ACL_SEC_35", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits16-18", + "name": "ACL_SEC_36", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits20-22", + "name": "ACL_SEC_37", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits24-26", + "name": "ACL_SEC_38", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits28-30", + "name": "ACL_SEC_39", + "description": "Access control for flash sector." + }, + { + "width": 1 + } + ] + }, + { + "id": "field0D4", + "name": "FLASH_ACL_40_47", + "description": "Description of FLASH_ACL_40_47 register", + "offset_int": "0x00D4", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field0D4-bits0-2", + "name": "ACL_SEC_40", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits4-6", + "name": "ACL_SEC_41", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits8-10", + "name": "ACL_SEC_42", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits12-14", + "name": "ACL_SEC_43", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits16-18", + "name": "ACL_SEC_44", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits20-22", + "name": "ACL_SEC_45", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits24-26", + "name": "ACL_SEC_46", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits28-30", + "name": "ACL_SEC_47", + "description": "Access control for flash sector." + }, + { + "width": 1 + } + ] + }, + { + "id": "field0D8", + "name": "FLASH_ACL_48_55", + "description": "Description of FLASH_ACL_48_55 register", + "offset_int": "0x00D8", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field0D8-bits0-2", + "name": "ACL_SEC_48", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits4-6", + "name": "ACL_SEC_49", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits8-10", + "name": "ACL_SEC_50", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits12-14", + "name": "ACL_SEC_51", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits16-18", + "name": "ACL_SEC_52", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits20-22", + "name": "ACL_SEC_53", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits24-26", + "name": "ACL_SEC_54", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits28-30", + "name": "ACL_SEC_55", + "description": "Access control for flash sector." + }, + { + "width": 1 + } + ] + }, + { + "id": "field0DC", + "name": "FLASH_ACL_56_63", + "description": "Description of FLASH_ACL_55_63 register", + "offset_int": "0x00DC", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field0DC-bits0-2", + "name": "ACL_SEC_56", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits4-6", + "name": "ACL_SEC_57", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits8-10", + "name": "ACL_SEC_58", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits12-14", + "name": "ACL_SEC_59", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits16-18", + "name": "ACL_SEC_60", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits20-22", + "name": "ACL_SEC_61", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits24-26", + "name": "ACL_SEC_62", + "description": "Access control for flash sector." + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits28-30", + "name": "ACL_SEC_63", + "description": "Access control for flash sector." + }, + { + "width": 1 + } + ] + }, + { + "id": "field0E0", + "name": "SBL_IMG0_CMAC0", + "description": "Image 0 CMAC 0", + "offset_int": "0x00E0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E4", + "name": "SBL_IMG0_CMAC1", + "description": "Image 0 CMAC 1", + "offset_int": "0x00E4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E8", + "name": "SBL_IMG0_CMAC2", + "description": "Image 0 CMAC 2", + "offset_int": "0x00E8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0EC", + "name": "SBL_IMG0_CMAC3", + "description": "Image 0 CMAC 3", + "offset_int": "0x00EC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F0", + "name": "IMG1_CMAC0", + "description": "Image 1 CMAC 0", + "offset_int": "0x00F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F4", + "name": "IMG1_CMAC1", + "description": "Image 1 CMAC 1", + "offset_int": "0x00F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F8", + "name": "IMG1_CMAC2", + "description": "Image 1 CMAC 2", + "offset_int": "0x00F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0FC", + "name": "IMG1_CMAC3", + "description": "Image 1 CMAC 3", + "offset_int": "0x00FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field100", + "name": "DICE_Certificate", + "description": "DICE Certificate register", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00104-0018C", + "description": "Reserved 00104-0018C" + }, + "registers": [ + { + "id": "Reserved00104", + "name": "Reserved 0x00104", + "description": "This field is reserved for internal use", + "offset_int": "0x0104", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00108", + "name": "Reserved 0x00108", + "description": "This field is reserved for internal use", + "offset_int": "0x0108", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00110", + "name": "Reserved 0x00110", + "description": "This field is reserved for internal use", + "offset_int": "0x0110", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00120", + "name": "Reserved 0x00120", + "description": "This field is reserved for internal use", + "offset_int": "0x0120", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00124", + "name": "Reserved 0x00124", + "description": "This field is reserved for internal use", + "offset_int": "0x0124", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00128", + "name": "Reserved 0x00128", + "description": "This field is reserved for internal use", + "offset_int": "0x0128", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0012C", + "name": "Reserved 0x0012C", + "description": "This field is reserved for internal use", + "offset_int": "0x012C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00130", + "name": "Reserved 0x00130", + "description": "This field is reserved for internal use", + "offset_int": "0x0130", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00134", + "name": "Reserved 0x00134", + "description": "This field is reserved for internal use", + "offset_int": "0x0134", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00138", + "name": "Reserved 0x00138", + "description": "This field is reserved for internal use", + "offset_int": "0x0138", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0013C", + "name": "Reserved 0x0013C", + "description": "This field is reserved for internal use", + "offset_int": "0x013C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00140", + "name": "Reserved 0x00140", + "description": "This field is reserved for internal use", + "offset_int": "0x0140", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00144", + "name": "Reserved 0x00144", + "description": "This field is reserved for internal use", + "offset_int": "0x0144", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00148", + "name": "Reserved 0x00148", + "description": "This field is reserved for internal use", + "offset_int": "0x0148", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0014C", + "name": "Reserved 0x0014C", + "description": "This field is reserved for internal use", + "offset_int": "0x014C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00150", + "name": "Reserved 0x00150", + "description": "This field is reserved for internal use", + "offset_int": "0x0150", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00154", + "name": "Reserved 0x00154", + "description": "This field is reserved for internal use", + "offset_int": "0x0154", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00158", + "name": "Reserved 0x00158", + "description": "This field is reserved for internal use", + "offset_int": "0x0158", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0015C", + "name": "Reserved 0x0015C", + "description": "This field is reserved for internal use", + "offset_int": "0x015C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00160", + "name": "Reserved 0x00160", + "description": "This field is reserved for internal use", + "offset_int": "0x0160", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00164", + "name": "Reserved 0x00164", + "description": "This field is reserved for internal use", + "offset_int": "0x0164", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00168", + "name": "Reserved 0x00168", + "description": "This field is reserved for internal use", + "offset_int": "0x0168", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0016C", + "name": "Reserved 0x0016C", + "description": "This field is reserved for internal use", + "offset_int": "0x016C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00170", + "name": "Reserved 0x00170", + "description": "This field is reserved for internal use", + "offset_int": "0x0170", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00174", + "name": "Reserved 0x00174", + "description": "This field is reserved for internal use", + "offset_int": "0x0174", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00178", + "name": "Reserved 0x00178", + "description": "This field is reserved for internal use", + "offset_int": "0x0178", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0017C", + "name": "Reserved 0x0017C", + "description": "This field is reserved for internal use", + "offset_int": "0x017C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00180", + "name": "Reserved 0x00180", + "description": "This field is reserved for internal use", + "offset_int": "0x0180", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00184", + "name": "Reserved 0x00184", + "description": "This field is reserved for internal use", + "offset_int": "0x0184", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00188", + "name": "Reserved 0x00188", + "description": "This field is reserved for internal use", + "offset_int": "0x0188", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0018C", + "name": "Reserved 0x0018C", + "description": "This field is reserved for internal use", + "offset_int": "0x018C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "IPED_GCM_AAD_CTX0", + "description": "Additional Authentication Data for IPED context 0", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "IPED_GCM_AAD_CTX1", + "description": "Additional Authentication Data for IPED context 1", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "IPED_GCM_AAD_CTX2", + "description": "Additional Authentication Data for IPED context 2", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "IPED_GCM_AAD_CTX3", + "description": "Additional Authentication Data for IPED context 3", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "IPED_GCM_AAD_CTX4", + "description": "Additional Authentication Data for IPED context 4", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "IPED_GCM_AAD_CTX5", + "description": "Additional Authentication Data for IPED context 5", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "IPED_GCM_AAD_CTX6", + "description": "Additional Authentication Data for IPED context 6", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "IPED_GCM_AAD_CTX7", + "description": "Additional Authentication Data for IPED context 7", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 001B0-001E8", + "description": "Reserved 001B0-001E8" + }, + "registers": [ + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "CRC32", + "description": "CRC32 fields" + }, + "registers": [ + { + "id": "field1EC", + "name": "CFPA_CRC32", + "description": "CFPA _CRC[31:0] used during low-power wake.", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "CFPA0_CMAC0", + "description": "CFPA0 CMAC 0", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "CFPA0_CMAC1", + "description": "CFPA0 CMAC 1", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "CFPA0_CMAC2", + "description": "CFPA0 CMAC 2", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "CFPA0_CMAC3", + "description": "CFPA0 CMAC 3", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cfpa_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cfpa_a1.json new file mode 100644 index 0000000..d6a9308 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cfpa_a1.json @@ -0,0 +1,6300 @@ +{ + "cpu": "mcxn946", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "Header", + "description": "CFPA Header", + "offset_int": "0", + "default_value_int": "0x96350000", + "bitfields": [ + { + "width": 8, + "id": "field000-bits0-7", + "name": "CFPA_LC_STATE", + "description": "Life cycle state. This field can be used to advance life cycle state to 0x7, 0xF or 0xCF during development (OTP_LC_STATE = 0x3) for testing deployed states without programming OTP fuse. When CFPA is used to advance LC state, then application code should implement hooks, to revert CFPA_LC_STATE field to 0x3 to bring the device back to OEM_DEVELOP state (0x03). One such example is a GPIO interrupt handler invoked on a button press which modified the CFPA_LC_STATE to 0x3. Below are the allowed values for this field. Use of other values may lead to bricked state", + "values": [ + { + "name": "USE_LC_STATE_OTP", + "value": 0, + "description": "Use LC state from OTP" + }, + { + "name": "DEVELOP", + "value": 3, + "description": "Develop state" + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Develop 2 state" + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field state" + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "In-field locked state" + } + ] + }, + { + "width": 8, + "id": "field000-bits8-15", + "name": "INV_CFPA_LC_STATE", + "description": "Inverted value of CFPA_LC_STATE. This INV_CPFA_LC_STATE ^ CFPA_LC_STATE[7:0] should be 0xFF, otherwise the CPFA_LC_STATE will not be valid", + "calculated": "INVERSE" + }, + { + "width": 16, + "access": "WRITE_CONST", + "id": "field000-bits16-31", + "name": "CFPA_HEADER", + "description": "CFPA Header marker should be set to 0x9635. After this header is set, all non-zero values will take effect; leaving all values set to 0xff will cause undefined behavior. It is recommended to set all values to 0x00 before setting the CFPA header" + } + ] + }, + { + "id": "field004", + "name": "CFPA_PAGE_VERSION", + "description": "CFPA Page Version.", + "offset_int": "0x0004", + "default_value_int": "0x00FFFFFF", + "bitfields": [ + { + "width": 24, + "id": "field004-bits0-23", + "name": "CFPA_page_version", + "description": "CFPA page version. Boot ROM uses this field to determine the active CFPA page by comparing the values in this field for the two CFPA pages. The page with higher version number is picked as active page if it passes the CMAC authentication. This field is updated by ROM whenever CFPA page is updated. Write '0xFF_FFFF' to auto increment current CFPA page version value (by ROM)" + }, + { + "width": 2, + "id": "field004-bits24-25", + "name": "IMG_UPD", + "description": "Image updated. Note: CMAC boot is only supported for internal flash. If using a FlexSPI flash XIP image, then this field should always be left as zero", + "values": [ + { + "name": "NOTHING_CHANGED", + "value": 0, + "description": "No action" + }, + { + "name": "IMAGE0_CMAC_UPDATE", + "value": 1, + "description": "Update image 0 CMAC" + }, + { + "name": "IMAGE1_CMAC_UPDATE", + "value": 2, + "description": "Update image 1 CMAC" + }, + { + "name": "SBL_IMG_CMAC_UPDATE", + "value": 3, + "description": "Update SBL image CMAC (image in IFR0 0x0100_8000). Value written in IMG0_CMAC field" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field004-bits27-29", + "name": "CMPA_UPD", + "description": "CMPA page updated through ROM API. Thus compute CMAC on sub-sequent boot. This field is checked only in Develop (0x3) LC state. All other combinations update CMAC field in CMPA page", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "UPDATE_IN_CMPA", + "value": 2, + "description": "Update CMAC field in CMPA page" + }, + { + "name": "TO_OEM_SECURE", + "value": 3, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to Develop2 (0x7)" + }, + { + "name": "TO_OEM_CLOSED", + "value": 5, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to In-Field (0xF)" + }, + { + "name": "TO_OEM_LOCKED", + "value": 6, + "description": "Update CMAC field in CMPA page and OTP. Advance OTP_LC_STATE to In-Field Locked (0xCF)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field004-bit31", + "name": "DICE_UPD", + "description": "Update DICE certificate during next boot", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "GENERATE_CERTIFICATE", + "value": 1, + "description": "Generate certificate" + } + ] + } + ] + }, + { + "id": "field008", + "name": "Secure_FW_Version", + "description": "Secure Firmware version. This monotonic counter field tracks the firmware version of secure partition. ROM uses this field to enforce anti-rollback checking during secure boot and secure update (SB3 header). For image authentication pass during secure boot the FW version in image manifest must be equal or greater than this value. During secure update and recovery boot the version number in SB3 header Must be equal or greater than the value in this field. Apart from SB3 header check, user can enforce anti-rollback check during SB3 processing by using 'kSB3_COMMAND_fwVersionCheck' SB command with 'kNBOOT_CNT_secure' counter ID parameter, in SB3 file.", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field008-bits0-15", + "name": "Secure_firmware_version", + "description": "Secure Firmware version. This monotonic counter field tracks the firmware version of secure partition. ROM uses this field to enforce anti-rollback checking during secure boot and secure update (SB3 header). For image authentication pass during secure boot the FW version in image manifest must be equal or greater than this value. During secure update & recovery boot the version number in SB3 header Must be equal or greater than the value in this field. Apart from SB3 header check, user can enforce anti-rollback check during SB3 processing by using \"kSB3_COMMAND_fwVersionCheck\" SB command with 'kNBOOT_CNT_secure' counter ID parameter, in SB3 file" + }, + { + "width": 16 + } + ] + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure Firmware version. This monotonic counter field can be used to track the firmware version of non-secure partition. An anti-rollback check can be enforced during update by using this field and 'kSB3_COMMAND_fwVersionCheck' SB command with 'kNBOOT_CNT_nonsecure' counter ID parameter, in SB3 file.", + "offset_int": "0x000C", + "default_value_int": "0" + }, + { + "id": "Reserved00010", + "name": "Reserved 0x00010", + "description": "This field is reserved for internal use", + "offset_int": "0x0010", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field014", + "name": "SECBOOT_FLAGS", + "description": "Secure BOOT Flags.", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field014-bits0-1", + "name": "RoTK0_EN", + "description": "Root of Trust Key 0 Enable. Determines if ROTK0 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits2-3", + "name": "RoTK1_EN", + "description": "Root of Trust Key 1 Enable. Determines if ROTK1 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits4-5", + "name": "RoTK2_EN", + "description": "Root of Trust Key 2 Enable. Determines if ROTK2 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field014-bits6-7", + "name": "RoTK3_EN", + "description": "Root of Trust Key 3 Enable. Determines if ROTK3 can be used during secure boot", + "values": [ + { + "name": "ENABLED_0", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED_1", + "value": 1, + "description": "Enabled" + }, + { + "name": "KEY_REVOKED_2", + "value": 2, + "description": "Key revoked" + }, + { + "name": "KEY_REVOKED_3", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 20 + }, + { + "width": 4, + "id": "field014-bits28-31", + "name": "OEM_RETURN_ERASE_DONE", + "description": "OEM assets erase done flag. ROM sets this field to 0xA after erasing the user flash and OEM assets. This operation is done on first boot after OTP_LC_STATE is advanced to 0x1F or higher states. On every boot ROM checks if LC_STATE is greater or equal to 0x1F and this field is empty in active CFPA page, then it erases OEM assets and updates this field in CFPA before freezing CFPA pages and enabling debug access. If the field is already set to 0xA then it proceeds without erasing user flash area" + } + ] + }, + { + "id": "field018", + "name": "IMAGE_KEY_REVOKE", + "description": "Image Key Revoke", + "offset_int": "0x0018", + "default_value_int": "0", + "bitfields": [ + { + "width": 24, + "id": "field018-bits0-23", + "name": "Image_key_revocation_ID", + "description": "Image signing key revocation counter. This monotonically increasing unary encode counter (e.g., 0x0, 0x1, 0x3, 0x7, 0xF...) field is used by boot ROM to enforce image signing key (ISK) certificate revocation policy. Boot ROM accepts an ISK certificate as valid only if the \"constraint\" field in ISK certificate is the same or greater than the ISK revocation counter. The 32-bit ISK revocation counter is formed using 8 bits of IMAGE_KEY_REVOKE[7:0] field in OTP as MSB bits and lower 24 bits from this field. ISK certificate validation is done as part of boot, FW update (SB3) and recovery (SB3) image authentication" + }, + { + "width": 8 + } + ] + }, + { + "id": "field01C", + "name": "LP_VECTOR_ADDR", + "description": "Vector address when waking from power-down and deep power down states when CMPA.LP_SEC_BOOT is set to 2b'10.", + "offset_int": "0x001C", + "default_value_int": "0" + }, + { + "id": "field020", + "name": "DBG_REVOKE_VU", + "description": "Debug Revoke Vendor Usage.", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field020-bits0-15", + "name": "Debug_certificate_revocation_counter", + "deprecated_names": [ + "FIELD" + ], + "description": "Debug certificate revocation counter. This monotonic counter field is used for revoking debug certificates. As part of debug authentication, CC_VU field in debug certificate/credential is checked against DCFG_VENDOR_USAGE value. The 32-bit DCFG_VENDOR_USAGE is formed using upper 16 bit of CMPA.VENDOR_USAGE and lower 16 bits of this field" + }, + { + "width": 16, + "id": "field020-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value of [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field024", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. With TZ-M, the part can be sold by level 1 customers (secure code developer) to level-2 customers who develops non-secure code only. - In this scenario, for ease of development, Level 1 customer releases the part to always allow non-secure debug. - To allow level-2 customers to further seal the part DCFG_CC_SOCU_NS is used. - ROM will use this word to further restrict the debug access.", + "offset_int": "0x0024", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit5", + "name": "DSP_DBGEN", + "description": "DSP debug enable CoolFlex debug", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit6", + "name": "ISP_CMD_EN", + "description": "ISP boot command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field024-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug Fixed state", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Debug certificate can be used with all devices" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Debug certificate per device with matching UUID is needed" + } + ] + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value of [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field028", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. With TZ-M, the part can be sold by level 1 customers (secure code developer) to level-2 customers who develops non-secure code only. - In this scenario, or easy of development, Level-I customer releases the part to always allow non-secure debug. - To allow level-2 customers to further seal the part DCFG_CC_SOCU_NS is used. - ROM will use this word to further restrict the debug access.", + "offset_int": "0x0028", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field028-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit1", + "name": "DBGEN", + "description": "Non Secure debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field028-bit5", + "name": "DSP_DBGEN", + "description": "DSP debug enable CoolFlex debug", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit8", + "name": "ME_CMD_EN", + "description": "Mass erase flash command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field028-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 16, + "id": "field028-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value of [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "Reserved0002C", + "name": "Reserved 0x0002C", + "description": "This field is reserved for internal use", + "offset_int": "0x002C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field030", + "name": "MCTR_NPX_CTX0", + "description": "Erase counter for Prince region 0. Monotonic erase counter for NPX region 0. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by NPX for encryption/decryption is computed by ROM bootloader and incorporates device UUID, NPX region number and MCTR_NPX_CTX0. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0030", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field034", + "name": "MCTR_NPX_CTX1", + "description": "Erase counter for Prince region 1. Monotonic erase counter for NPX region 1. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by NPX for encryption/decryption is computed by ROM bootloader and incorporates device UUID, NPX region number and MCTR_NPX_CTX1. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0034", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field038", + "name": "MCTR_NPX_CTX2", + "description": "Erase counter for Prince region 2. Monotonic erase counter for NPX region 2. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by NPX for encryption/decryption is computed by ROM bootloader and incorporates device UUID, NPX region number and MCTR_NPX_CTX2. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0038", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field03C", + "name": "MCTR_NPX_CTX3", + "description": "Erase counter for Prince region 3. Monotonic erase counter for NPX region 3. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by NPX for encryption/decryption is computed by ROM bootloader and incorporates device UUID, NPX region number and MCTR_NPX_CTX3. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x003C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field040", + "name": "MCTR_IPED_CTX0", + "description": "Monotonic erase counter for IPED region 0. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by IPED for encryption/decryption is computed by ROM bootloader and incorporates device UUID, IPED region number and MCTR_IPED_CTX0. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0040", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field044", + "name": "MCTR_IPED_CTX1", + "description": "Monotonic erase counter for IPED region 1. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by IPED for encryption/decryption is computed by ROM bootloader and incorporates device UUID, IPED region number and MCTR_IPED_CTX1. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0044", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field048", + "name": "MCTR_IPED_CTX2", + "description": "Monotonic erase counter for IPED region 2. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by IPED for encryption/decryption is computed by ROM bootloader and incorporates device UUID, IPED region number and MCTR_IPED_CTX2. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0048", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field04C", + "name": "MCTR_IPED_CTX3", + "description": "Monotonic erase counter for IPED region 3. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by IPED for encryption/decryption is computed by ROM bootloader and incorporates device UUID, IPED region number and MCTR_IPED_CTX3. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x004C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field050", + "name": "MCTR_IPED_CTX4", + "description": "Monotonic erase counter for IPED region 4. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by IPED for encryption/decryption is computed by ROM bootloader and incorporates device UUID, IPED region number and MCTR_IPED_CTX4. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0050", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field054", + "name": "MCTR_IPED_CTX5", + "description": "Monotonic erase counter for IPED region 5. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by IPED for encryption/decryption is computed by ROM bootloader and incorporates device UUID, IPED region number and MCTR_IPED_CTX5. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0054", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field058", + "name": "MCTR_IPED_CTX6", + "description": "Monotonic erase counter for IPED region 6. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by IPED for encryption/decryption is computed by ROM bootloader and incorporates device UUID, IPED region number and MCTR_IPED_CTX6. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x0058", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field05C", + "name": "MCTR_IPED_CTX7", + "description": "Monotonic erase counter for IPED region 7. This value is used by bootloader to dynamically compute region IV. This counter will increment by one, during each erase cycle of the corresponding flash region. User should not write anything in this field. This field is entirely handled by ROM. Final IV value for given region used by IPED for encryption/decryption is computed by ROM bootloader and incorporates device UUID, IPED region number and MCTR_IPED_CTX7. Application should always use ROM APIs to erase whole Prince region to keep IV consistent.", + "offset_int": "0x005C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field060", + "name": "ERR_AUTH_FAIL_COUNT", + "description": "Authentication failure counter. This monotonic counter field is incremented by boot ROM on authentication failure during boot, SB3, or debug authentication (Monotonic counter).", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "ERR_ITRC_COUNT", + "description": "Tamper event counter. This monotonic counter field is incremented by boot ROM whenever the reset cause during boot is detected as - ITRC reset caused by security sensors or - WDT 0/1 reset or - Tamper pin reset.", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00068-0007C", + "description": "Reserved 00068-0007C" + }, + "registers": [ + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field080", + "name": "MCTR_CUST_CTR0", + "description": "Customer defined Monotonic counter 0 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0080", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "MCTR_CUST_CTR1", + "description": "Customer defined Monotonic counter 1 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0084", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "MCTR_CUST_CTR2", + "description": "Customer defined Monotonic counter 2 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0088", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "MCTR_CUST_CTR3", + "description": "Customer defined Monotonic counter 3 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x008C", + "default_value_int": "0" + }, + { + "id": "field090", + "name": "MCTR_CUST_CTR4", + "description": "Customer defined Monotonic counter 4 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0090", + "default_value_int": "0" + }, + { + "id": "field094", + "name": "MCTR_CUST_CTR5", + "description": "Customer defined Monotonic counter 5 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0094", + "default_value_int": "0" + }, + { + "id": "field098", + "name": "MCTR_CUST_CTR6", + "description": "Customer defined Monotonic counter 6 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "field09C", + "name": "MCTR_CUST_CTR7", + "description": "Customer defined Monotonic counter 7 for application use. ROM enforces monotonic increment check during CFPA-CMAC page update. If the new counter value is less than the value in active CFPA page, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x009C", + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "MFLAG_CUST_0", + "description": "Customer defined Monotonic flags 0 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00A0", + "default_value_int": "0" + }, + { + "id": "field0A4", + "name": "MFLAG_CUST_1", + "description": "Customer defined Monotonic flags 1 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00A4", + "default_value_int": "0" + }, + { + "id": "field0A8", + "name": "MFLAG_CUST_2", + "description": "Customer defined Monotonic flags 2 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00A8", + "default_value_int": "0" + }, + { + "id": "field0AC", + "name": "MFLAG_CUST_3", + "description": "Customer defined Monotonic flags 3 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00AC", + "default_value_int": "0" + }, + { + "id": "field0B0", + "name": "MFLAG_CUST_4", + "description": "Customer defined Monotonic flags 4 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00B0", + "default_value_int": "0" + }, + { + "id": "field0B4", + "name": "MFLAG_CUST_5", + "description": "Customer defined Monotonic flags 5 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00B4", + "default_value_int": "0" + }, + { + "id": "field0B8", + "name": "MFLAG_CUST_6", + "description": "Customer defined Monotonic flags 6 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00B8", + "default_value_int": "0" + }, + { + "id": "field0BC", + "name": "MFLAG_CUST_7", + "description": "Customer defined Monotonic flags 7 for application use. Once a bit is set in this field it should be set on sub-sequent updates of the page. ROM emulates One Time Programmable (OTP) bits behavior during CFPA-CMAC update. Compared to current value, if the new value has bit cleared, then the update is rejected and CMAC signing is skipped.", + "offset_int": "0x00BC", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Flash Access Control", + "description": "Flash access control" + }, + "registers": [ + { + "id": "field0C0", + "name": "FLASH_ACL_0_7", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00C0", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field0C0-bits0-2", + "name": "ACL_SEC_0", + "description": "Access control for flash sector (offset range 0x00_0000 - 0x00_7FFF). Select one of the 8 pre-defined access control attributes for the given Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits4-6", + "name": "ACL_SEC_1", + "description": "Access control for flash sector (offset range 0x00_8000 - 0x00_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits8-10", + "name": "ACL_SEC_2", + "description": "Access control for flash sector (offset range 0x01_0000 - 0x01_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits12-14", + "name": "ACL_SEC_3", + "description": "Access control for flash sector. (offset range 0x01_8000 - 0x01_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits16-18", + "name": "ACL_SEC_4", + "description": "Access control for flash sector (offset range 0x02_0000 - 0x02_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits20-22", + "name": "ACL_SEC_5", + "description": "Access control for flash sector (offset range 0x02_8000 - 0x02_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits24-26", + "name": "ACL_SEC_6", + "description": "Access control for flash sector (offset range 0x03_0000 - 0x03_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C0-bits28-30", + "name": "ACL_SEC_7", + "description": "Access control for flash sector (offset range 0x03_8000 - 0x03_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0C4", + "name": "FLASH_ACL_8_15", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00C4", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field0C4-bits0-2", + "name": "ACL_SEC_8", + "description": "Access control for flash sector (offset range 0x04_0000 - 0x04_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits4-6", + "name": "ACL_SEC_9", + "description": "Access control for flash sector (offset range 0x04_8000 - 0x04_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits8-10", + "name": "ACL_SEC_10", + "description": "Access control for flash sector (offset range 0x05_0000 - 0x05_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits12-14", + "name": "ACL_SEC_11", + "description": "Access control for flash sector. (offset range 0x05_8000 - 0x05_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits16-18", + "name": "ACL_SEC_12", + "description": "Access control for flash sector (offset range 0x06_0000 - 0x06_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits20-22", + "name": "ACL_SEC_13", + "description": "Access control for flash sector (offset range 0x06_8000 - 0x06_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits24-26", + "name": "ACL_SEC_14", + "description": "Access control for flash sector (offset range 0x07_0000 - 0x07_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C4-bits28-30", + "name": "ACL_SEC_15", + "description": "Access control for flash sector (offset range 0x07_8000 - 0x07_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0C8", + "name": "FLASH_ACL_16_23", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00C8", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field0C8-bits0-2", + "name": "ACL_SEC_16", + "description": "Access control for flash sector (offset range 0x08_0000 - 0x08_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits4-6", + "name": "ACL_SEC_17", + "description": "Access control for flash sector (offset range 0x08_8000 - 0x08_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits8-10", + "name": "ACL_SEC_18", + "description": "Access control for flash sector (offset range 0x09_0000 - 0x09_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits12-14", + "name": "ACL_SEC_19", + "description": "Access control for flash sector. (offset range 0x09_8000 - 0x09_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits16-18", + "name": "ACL_SEC_20", + "description": "Access control for flash sector (offset range 0x0A_0000 - 0x0A_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits20-22", + "name": "ACL_SEC_21", + "description": "Access control for flash sector (offset range 0x0A_8000 - 0x0A_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits24-26", + "name": "ACL_SEC_22", + "description": "Access control for flash sector (offset range 0x0B_0000 - 0x0B_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0C8-bits28-30", + "name": "ACL_SEC_23", + "description": "Access control for flash sector (offset range 0x0B_8000 - 0x0B_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0CC", + "name": "FLASH_ACL_24_31", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00CC", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field0CC-bits0-2", + "name": "ACL_SEC_24", + "description": "Access control for flash sector (offset range 0x0C_0000 - 0x0C_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits4-6", + "name": "ACL_SEC_25", + "description": "Access control for flash sector (offset range 0x0C_8000 - 0x0C_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits8-10", + "name": "ACL_SEC_26", + "description": "Access control for flash sector (offset range 0x0D_0000 - 0x0D_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits12-14", + "name": "ACL_SEC_27", + "description": "Access control for flash sector. (offset range 0x0D_8000 - 0x0D_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits16-18", + "name": "ACL_SEC_28", + "description": "Access control for flash sector (offset range 0x0E_0000 - 0x0E_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits20-22", + "name": "ACL_SEC_29", + "description": "Access control for flash sector (offset range 0x0E_8000 - 0x0E_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits24-26", + "name": "ACL_SEC_30", + "description": "Access control for flash sector (offset range 0x0F_0000 - 0x0F_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0CC-bits28-30", + "name": "ACL_SEC_31", + "description": "Access control for flash sector (offset range 0x0F_8000 - 0x0F_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0D0", + "name": "FLASH_ACL_32_39", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00D0", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field0D0-bits0-2", + "name": "ACL_SEC_32", + "description": "Access control for flash sector (offset range 0x10_0000 - 0x10_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits4-6", + "name": "ACL_SEC_33", + "description": "Access control for flash sector (offset range 0x10_8000 - 0x10_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits8-10", + "name": "ACL_SEC_34", + "description": "Access control for flash sector (offset range 0x11_0000 - 0x11_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits12-14", + "name": "ACL_SEC_35", + "description": "Access control for flash sector. (offset range 0x11_8000 - 0x11_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits16-18", + "name": "ACL_SEC_36", + "description": "Access control for flash sector (offset range 0x12_0000 - 0x12_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits20-22", + "name": "ACL_SEC_37", + "description": "Access control for flash sector (offset range 0x12_8000 - 0x12_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits24-26", + "name": "ACL_SEC_38", + "description": "Access control for flash sector (offset range 0x13_0000 - 0x13_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D0-bits28-30", + "name": "ACL_SEC_39", + "description": "Access control for flash sector (offset range 0x13_8000 - 0x13_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0D4", + "name": "FLASH_ACL_40_47", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00D4", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field0D4-bits0-2", + "name": "ACL_SEC_40", + "description": "Access control for flash sector (offset range 0x14_0000 - 0x14_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits4-6", + "name": "ACL_SEC_41", + "description": "Access control for flash sector (offset range 0x14_8000 - 0x14_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits8-10", + "name": "ACL_SEC_42", + "description": "Access control for flash sector (offset range 0x15_0000 - 0x15_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits12-14", + "name": "ACL_SEC_43", + "description": "Access control for flash sector. (offset range 0x15_8000 - 0x15_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits16-18", + "name": "ACL_SEC_44", + "description": "Access control for flash sector (offset range 0x16_0000 - 0x16_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits20-22", + "name": "ACL_SEC_45", + "description": "Access control for flash sector (offset range 0x16_8000 - 0x16_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits24-26", + "name": "ACL_SEC_46", + "description": "Access control for flash sector (offset range 0x17_0000 - 0x17_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D4-bits28-30", + "name": "ACL_SEC_47", + "description": "Access control for flash sector (offset range 0x17_8000 - 0x17_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0D8", + "name": "FLASH_ACL_48_55", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00D8", + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field0D8-bits0-2", + "name": "ACL_SEC_48", + "description": "Access control for flash sector (offset range 0x18_0000 - 0x18_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits4-6", + "name": "ACL_SEC_49", + "description": "Access control for flash sector (offset range 0x18_8000 - 0x18_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits8-10", + "name": "ACL_SEC_50", + "description": "Access control for flash sector (offset range 0x19_0000 - 0x19_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits12-14", + "name": "ACL_SEC_51", + "description": "Access control for flash sector. (offset range 0x19_8000 - 0x19_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits16-18", + "name": "ACL_SEC_52", + "description": "Access control for flash sector (offset range 0x1A_0000 - 0x1A_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits20-22", + "name": "ACL_SEC_53", + "description": "Access control for flash sector (offset range 0x1A_8000 - 0x1A_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits24-26", + "name": "ACL_SEC_54", + "description": "Access control for flash sector (offset range 0x1B_0000 - 0x1B_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0D8-bits28-30", + "name": "ACL_SEC_55", + "description": "Access control for flash sector (offset range 0x1B_8000 - 0x1B_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "field0DC", + "name": "FLASH_ACL_56_63", + "description": "Access control for flash sector .Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. - If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. - 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) - If current sector ACL value is 0, 4, or 5 then any new value is permitted.", + "offset_int": "0x00DC", + "deprecated_names": [ + "FLASH_ACL_55_63" + ], + "default_value_int": "0x44444444", + "bitfields": [ + { + "width": 3, + "id": "field0DC-bits0-2", + "name": "ACL_SEC_56", + "description": "Access control for flash sector (offset range 0x1C_0000 - 0x1C_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits4-6", + "name": "ACL_SEC_57", + "description": "Access control for flash sector (offset range 0x1C_8000 - 0x1C_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits8-10", + "name": "ACL_SEC_58", + "description": "Access control for flash sector (offset range 0x1D_0000 - 0x1D_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits12-14", + "name": "ACL_SEC_59", + "description": "Access control for flash sector. (offset range 0x1D_8000 - 0x1D_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits16-18", + "name": "ACL_SEC_60", + "description": "Access control for flash sector (offset range 0x1E_0000 - 0x1E_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)1" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits20-22", + "name": "ACL_SEC_61", + "description": "Access control for flash sector (offset range 0x1E_8000 - 0x1E_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits24-26", + "name": "ACL_SEC_62", + "description": "Access control for flash sector (offset range 0x1F_0000 - 0x1F_7FFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field0DC-bits28-30", + "name": "ACL_SEC_63", + "description": "Access control for flash sector (offset range 0x1F_8000 - 0x1F_FFFF). Select one of the 8 pre-defined access control attributes for the given sector. Access attributes control read, write and execute access along with sticky lock protection. After a locked access level is selected, the sub-sequent updates of this field can be done with higher lock level only. \u2022 If current sector ACL value (GLBACn index) is greater than the new value, then it is permitted except if the new value is 4 or 5. \u25cb 7 (___L) > 6 (__XL) > 3 (R__L) > 2 (R_XL) > 1 (RW_L) > 0 (RWX_) \u2022 If current sector ACL value is 0, 4, or 5 then any new value is permitted", + "values": [ + { + "name": "DEFAULT_RW_UNLOCKED", + "value": 0, + "description": "Default flash memory behavior (R/W unlocked)" + }, + { + "name": "DATA_RW_LOCKED", + "value": 1, + "description": "R/W + locked" + }, + { + "name": "ROM_RX_LOCKED", + "value": 2, + "description": "RX + locked" + }, + { + "name": "DATA_ROM_LOCKED", + "value": 3, + "description": "ROM + locked" + }, + { + "name": "ROM_RX_UNLOCKED", + "value": 4, + "description": "RX unlocked" + }, + { + "name": "XOM_UNLOCKED", + "value": 5, + "description": "XOM unlocked" + }, + { + "name": "XOM_LOCKED", + "value": 6, + "description": "XOM + locked" + }, + { + "name": "NO_ACCESS_LOCKED", + "value": 7, + "description": "Hidden (no access + locked)" + } + ] + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "IMG_CMAC", + "description": "Image CMAC fields" + }, + "registers": [ + { + "id": "field0E0", + "name": "IMG0_CMAC0", + "description": "Die unique CMAC[31:0] of image 0. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 0 range when IMG_UPD field is set to 2b'01. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00E0", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0E4", + "name": "IMG0_CMAC1", + "description": "Die unique CMAC[63:32] of image 0. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 0 range when IMG_UPD field is set to 2b'01. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00E4", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0E8", + "name": "IMG0_CMAC2", + "description": "Die unique CMAC[95:64] of image 0. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 0 range when IMG_UPD field is set to 2b'01. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00E8", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0EC", + "name": "IMG0_CMAC3", + "description": "Die unique CMAC[127:96] of image 0. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 0 range when IMG_UPD field is set to 2b'01. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00EC", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0F0", + "name": "IMG1_CMAC0", + "description": "Die unique CMAC[31:0] of image 1. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 1 range when IMG_UPD field is set to 2b'10. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00F0", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0F4", + "name": "IMG1_CMAC1", + "description": "Die unique CMAC[63:32] of image 1. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 1 range when IMG_UPD field is set to 2b'10. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00F4", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0F8", + "name": "IMG1_CMAC2", + "description": "Die unique CMAC[95:64] of image 1. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 1 range when IMG_UPD field is set to 2b'10. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00F8", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field0FC", + "name": "IMG1_CMAC3", + "description": "Die unique CMAC[127:96] of image 1. This field is managed by ROM and user application should not modify it. ROM calculates and stores die specific CMAC for image 1 range when IMG_UPD field is set to 2b'10. ROM calculates image CMAC only if the image passes ECDSA authentication check. On sub-sequent boots image authentication done using CMAC, based on SECURE_BOOT_CFG setting.", + "offset_int": "0x00FC", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "DICE", + "description": "DICE certificate" + }, + "registers": [ + { + "id": "field100", + "name": "DICE_Certificate0", + "description": "DICE Certificate register", + "offset_int": "0x0100", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits0-7", + "name": "X_COORD_PUB_KEY_QX_31", + "deprecated_names": [ + "X coordinate of public key Qx[31]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field100-bits8-15", + "name": "X_COORD_PUB_KEY_QX_30", + "deprecated_names": [ + "X coordinate of public key Qx[30]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field100-bits16-23", + "name": "X_COORD_PUB_KEY_QX_29", + "deprecated_names": [ + "X coordinate of public key Qx[29]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field100-bits24-31", + "name": "X_COORD_PUB_KEY_QX_28", + "deprecated_names": [ + "X coordinate of public key Qx[28]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field104", + "name": "DICE_Certificate1", + "description": "DICE Certificate register", + "offset_int": "0x0104", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits0-7", + "name": "X_COORD_PUB_KEY_QX_27", + "deprecated_names": [ + "X coordinate of public key Qx[27]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field104-bits8-15", + "name": "X_COORD_PUB_KEY_QX_26", + "deprecated_names": [ + "X coordinate of public key Qx[26]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field104-bits16-23", + "name": "X_COORD_PUB_KEY_QX_25", + "deprecated_names": [ + "X coordinate of public key Qx[25]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field104-bits24-31", + "name": "X_COORD_PUB_KEY_QX_24", + "deprecated_names": [ + "X coordinate of public key Qx[24]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field108", + "name": "DICE_Certificate2", + "description": "DICE Certificate register", + "offset_int": "0x0108", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits0-7", + "name": "X_COORD_PUB_KEY_QX_23", + "deprecated_names": [ + "X coordinate of public key Qx[23]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field108-bits8-15", + "name": "X_COORD_PUB_KEY_QX_22", + "deprecated_names": [ + "X coordinate of public key Qx[22]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field108-bits16-23", + "name": "X_COORD_PUB_KEY_QX_21", + "deprecated_names": [ + "X coordinate of public key Qx[21]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field108-bits24-31", + "name": "X_COORD_PUB_KEY_QX_20", + "deprecated_names": [ + "X coordinate of public key Qx[20]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field10C", + "name": "DICE_Certificate3", + "description": "DICE Certificate register", + "offset_int": "0x010C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits0-7", + "name": "X_COORD_PUB_KEY_QX_19", + "deprecated_names": [ + "X coordinate of public key Qx[19]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field10C-bits8-15", + "name": "X_COORD_PUB_KEY_QX_18", + "deprecated_names": [ + "X coordinate of public key Qx[18]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field10C-bits16-23", + "name": "X_COORD_PUB_KEY_QX_17", + "deprecated_names": [ + "X coordinate of public key Qx[17]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field10C-bits24-31", + "name": "X_COORD_PUB_KEY_QX_16", + "deprecated_names": [ + "X coordinate of public key Qx[16]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field110", + "name": "DICE_Certificate4", + "description": "DICE Certificate register", + "offset_int": "0x0110", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits0-7", + "name": "X_COORD_PUB_KEY_QX_15", + "deprecated_names": [ + "X coordinate of public key Qx[15]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field110-bits8-15", + "name": "X_COORD_PUB_KEY_QX_14", + "deprecated_names": [ + "X coordinate of public key Qx[14]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field110-bits16-23", + "name": "X_COORD_PUB_KEY_QX_13", + "deprecated_names": [ + "X coordinate of public key Qx[13]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field110-bits24-31", + "name": "X_COORD_PUB_KEY_QX_12", + "deprecated_names": [ + "X coordinate of public key Qx[12]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field114", + "name": "DICE_Certificate5", + "description": "DICE Certificate register", + "offset_int": "0x0114", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits0-7", + "name": "X_COORD_PUB_KEY_QX_11", + "deprecated_names": [ + "X coordinate of public key Qx[11]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field114-bits8-15", + "name": "X_COORD_PUB_KEY_QX_10", + "deprecated_names": [ + "X coordinate of public key Qx[10]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field114-bits16-23", + "name": "X_COORD_PUB_KEY_QX_9", + "deprecated_names": [ + "X coordinate of public key Qx[9]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field114-bits24-31", + "name": "X_COORD_PUB_KEY_QX_8", + "deprecated_names": [ + "X coordinate of public key Qx[8]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field118", + "name": "DICE_Certificate6", + "description": "DICE Certificate register", + "offset_int": "0x0118", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits0-7", + "name": "X_COORD_PUB_KEY_QX_7", + "deprecated_names": [ + "X coordinate of public key Qx[7]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field118-bits8-15", + "name": "X_COORD_PUB_KEY_QX_6", + "deprecated_names": [ + "X coordinate of public key Qx[6]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field118-bits16-23", + "name": "X_COORD_PUB_KEY_QX_5", + "deprecated_names": [ + "X coordinate of public key Qx[5]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field118-bits24-31", + "name": "X_COORD_PUB_KEY_QX_4", + "deprecated_names": [ + "X coordinate of public key Qx[4]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field11C", + "name": "DICE_Certificate7", + "description": "DICE Certificate register", + "offset_int": "0x011C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits0-7", + "name": "X_COORD_PUB_KEY_QX_3", + "deprecated_names": [ + "X coordinate of public key Qx[3]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field11C-bits8-15", + "name": "X_COORD_PUB_KEY_QX_2", + "deprecated_names": [ + "X coordinate of public key Qx[2]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field11C-bits16-23", + "name": "X_COORD_PUB_KEY_QX_1", + "deprecated_names": [ + "X coordinate of public key Qx[1]" + ], + "description": "X coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field11C-bits24-31", + "name": "X_COORD_PUB_KEY_QX_0", + "deprecated_names": [ + "X coordinate of public key Qx[0]" + ], + "description": "X coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field120", + "name": "DICE_Certificate8", + "description": "DICE Certificate register", + "offset_int": "0x0120", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits0-7", + "name": "Y_COORD_PUB_KEY_QY_31", + "deprecated_names": [ + "Y coordinate of public key Qy[31]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field120-bits8-15", + "name": "Y_COORD_PUB_KEY_QY_30", + "deprecated_names": [ + "Y coordinate of public key Qy[30]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field120-bits16-23", + "name": "Y_COORD_PUB_KEY_QY_29", + "deprecated_names": [ + "Y coordinate of public key Qy[29]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field120-bits24-31", + "name": "Y_COORD_PUB_KEY_QY_28", + "deprecated_names": [ + "Y coordinate of public key Qy[28]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field124", + "name": "DICE_Certificate9", + "description": "DICE Certificate register", + "offset_int": "0x0124", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits0-7", + "name": "Y_COORD_PUB_KEY_QY_27", + "deprecated_names": [ + "Y coordinate of public key Qy[27]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field124-bits8-15", + "name": "Y_COORD_PUB_KEY_QY_26", + "deprecated_names": [ + "Y coordinate of public key Qy[26]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field124-bits16-23", + "name": "Y_COORD_PUB_KEY_QY_25", + "deprecated_names": [ + "Y coordinate of public key Qy[25]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field124-bits24-31", + "name": "Y_COORD_PUB_KEY_QY_24", + "deprecated_names": [ + "Y coordinate of public key Qy[24]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field128", + "name": "DICE_Certificate10", + "description": "DICE Certificate register", + "offset_int": "0x0128", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits0-7", + "name": "Y_COORD_PUB_KEY_QY_23", + "deprecated_names": [ + "Y coordinate of public key Qy[23]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field128-bits8-15", + "name": "Y_COORD_PUB_KEY_QY_22", + "deprecated_names": [ + "Y coordinate of public key Qy[22]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field128-bits16-23", + "name": "Y_COORD_PUB_KEY_QY_21", + "deprecated_names": [ + "Y coordinate of public key Qy[21]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field128-bits24-31", + "name": "Y_COORD_PUB_KEY_QY_20", + "deprecated_names": [ + "Y coordinate of public key Qy[20]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field12C", + "name": "DICE_Certificate11", + "description": "DICE Certificate register", + "offset_int": "0x012C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits0-7", + "name": "Y_COORD_PUB_KEY_QY_19", + "deprecated_names": [ + "Y coordinate of public key Qy[19]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field12C-bits8-15", + "name": "Y_COORD_PUB_KEY_QY_18", + "deprecated_names": [ + "Y coordinate of public key Qy[18]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field12C-bits16-23", + "name": "Y_COORD_PUB_KEY_QY_17", + "deprecated_names": [ + "Y coordinate of public key Qy[17]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field12C-bits24-31", + "name": "Y_COORD_PUB_KEY_QY_16", + "deprecated_names": [ + "Y coordinate of public key Qy[16]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field130", + "name": "DICE_Certificate12", + "description": "DICE Certificate register", + "offset_int": "0x0130", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits0-7", + "name": "Y_COORD_PUB_KEY_QY_15", + "deprecated_names": [ + "Y coordinate of public key Qy[15]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field130-bits8-15", + "name": "Y_COORD_PUB_KEY_QY_14", + "deprecated_names": [ + "Y coordinate of public key Qy[14]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field130-bits16-23", + "name": "Y_COORD_PUB_KEY_QY_13", + "deprecated_names": [ + "Y coordinate of public key Qy[13]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field130-bits24-31", + "name": "Y_COORD_PUB_KEY_QY_12", + "deprecated_names": [ + "Y coordinate of public key Qy[12]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field134", + "name": "DICE_Certificate13", + "description": "DICE Certificate register", + "offset_int": "0x0134", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits0-7", + "name": "Y_COORD_PUB_KEY_QY_11", + "deprecated_names": [ + "Y coordinate of public key Qy[11]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field134-bits8-15", + "name": "Y_COORD_PUB_KEY_QY_10", + "deprecated_names": [ + "Y coordinate of public key Qy[10]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field134-bits16-23", + "name": "Y_COORD_PUB_KEY_QY_9", + "deprecated_names": [ + "Y coordinate of public key Qy[9]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field134-bits24-31", + "name": "Y_COORD_PUB_KEY_QY_8", + "deprecated_names": [ + "Y coordinate of public key Qy[8]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field138", + "name": "DICE_Certificate14", + "description": "DICE Certificate register", + "offset_int": "0x0138", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits0-7", + "name": "Y_COORD_PUB_KEY_QY_7", + "deprecated_names": [ + "Y coordinate of public key Qy[7]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field138-bits8-15", + "name": "Y_COORD_PUB_KEY_QY_6", + "deprecated_names": [ + "Y coordinate of public key Qy[6]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field138-bits16-23", + "name": "Y_COORD_PUB_KEY_QY_5", + "deprecated_names": [ + "Y coordinate of public key Qy[5]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field138-bits24-31", + "name": "Y_COORD_PUB_KEY_QY_4", + "deprecated_names": [ + "Y coordinate of public key Qy[4]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field13C", + "name": "DICE_Certificate15", + "description": "DICE Certificate register", + "offset_int": "0x013C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits0-7", + "name": "Y_COORD_PUB_KEY_QY_3", + "deprecated_names": [ + "Y coordinate of public key Qy[3]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field13C-bits8-15", + "name": "Y_COORD_PUB_KEY_QY_2", + "deprecated_names": [ + "Y coordinate of public key Qy[2]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field13C-bits16-23", + "name": "Y_COORD_PUB_KEY_QY_1", + "deprecated_names": [ + "Y coordinate of public key Qy[1]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + }, + { + "width": 8, + "id": "field13C-bits24-31", + "name": "Y_COORD_PUB_KEY_QY_0", + "deprecated_names": [ + "Y coordinate of public key Qy[0]" + ], + "description": "Y coordinate of ECDSA P-256 public key" + } + ] + }, + { + "id": "field140", + "name": "DICE_Certificate16", + "description": "DICE Certificate register", + "offset_int": "0x0140", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits0-7", + "name": "ECDSA_SIG_R_31", + "deprecated_names": [ + "ECDSA_SIG_R[31]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field140-bits8-15", + "name": "ECDSA_SIG_R_30", + "deprecated_names": [ + "ECDSA_SIG_R[30]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field140-bits16-23", + "name": "ECDSA_SIG_R_29", + "deprecated_names": [ + "ECDSA_SIG_R[29]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field140-bits24-31", + "name": "ECDSA_SIG_R_28", + "deprecated_names": [ + "ECDSA_SIG_R[28]" + ], + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field144", + "name": "DICE_Certificate17", + "description": "DICE Certificate register", + "offset_int": "0x0144", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits0-7", + "name": "ECDSA_SIG_R_27", + "deprecated_names": [ + "ECDSA_SIG_R[27]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field144-bits8-15", + "name": "ECDSA_SIG_R_26", + "deprecated_names": [ + "ECDSA_SIG_R[26]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field144-bits16-23", + "name": "ECDSA_SIG_R_25", + "deprecated_names": [ + "ECDSA_SIG_R[25]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field144-bits24-31", + "name": "ECDSA_SIG_R_24", + "deprecated_names": [ + "ECDSA_SIG_R[24]" + ], + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field148", + "name": "DICE_Certificate18", + "description": "DICE Certificate register", + "offset_int": "0x0148", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits0-7", + "name": "ECDSA_SIG_R_23", + "deprecated_names": [ + "ECDSA_SIG_R[23]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field148-bits8-15", + "name": "ECDSA_SIG_R_22", + "deprecated_names": [ + "ECDSA_SIG_R[22]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field148-bits16-23", + "name": "ECDSA_SIG_R_21", + "deprecated_names": [ + "ECDSA_SIG_R[21]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field148-bits24-31", + "name": "ECDSA_SIG_R_20", + "deprecated_names": [ + "ECDSA_SIG_R[20]" + ], + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field14C", + "name": "DICE_Certificate19", + "description": "DICE Certificate register", + "offset_int": "0x014C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits0-7", + "name": "ECDSA_SIG_R_19", + "deprecated_names": [ + "ECDSA_SIG_R[19]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field14C-bits8-15", + "name": "ECDSA_SIG_R_18", + "deprecated_names": [ + "ECDSA_SIG_R[18]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field14C-bits16-23", + "name": "ECDSA_SIG_R_17", + "deprecated_names": [ + "ECDSA_SIG_R[17]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field14C-bits24-31", + "name": "ECDSA_SIG_R_16", + "deprecated_names": [ + "ECDSA_SIG_R[16]" + ], + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field150", + "name": "DICE_Certificate20", + "description": "DICE Certificate register", + "offset_int": "0x0150", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits0-7", + "name": "ECDSA_SIG_R_15", + "deprecated_names": [ + "ECDSA_SIG_R[15]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field150-bits8-15", + "name": "ECDSA_SIG_R_14", + "deprecated_names": [ + "ECDSA_SIG_R[14]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field150-bits16-23", + "name": "ECDSA_SIG_R_13", + "deprecated_names": [ + "ECDSA_SIG_R[13]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field150-bits24-31", + "name": "ECDSA_SIG_R_12", + "deprecated_names": [ + "ECDSA_SIG_R[12]" + ], + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field154", + "name": "DICE_Certificate21", + "description": "DICE Certificate register", + "offset_int": "0x0154", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits0-7", + "name": "ECDSA_SIG_R_11", + "deprecated_names": [ + "ECDSA_SIG_R[11]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field154-bits8-15", + "name": "ECDSA_SIG_R_10", + "deprecated_names": [ + "ECDSA_SIG_R[10]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field154-bits16-23", + "name": "ECDSA_SIG_R_9", + "deprecated_names": [ + "ECDSA_SIG_R[9]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field154-bits24-31", + "name": "ECDSA_SIG_R_8", + "deprecated_names": [ + "ECDSA_SIG_R[8]" + ], + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field158", + "name": "DICE_Certificate22", + "description": "DICE Certificate register", + "offset_int": "0x0158", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits0-7", + "name": "ECDSA_SIG_R_7", + "deprecated_names": [ + "ECDSA_SIG_R[7]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field158-bits8-15", + "name": "ECDSA_SIG_R_6", + "deprecated_names": [ + "ECDSA_SIG_R[6]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field158-bits16-23", + "name": "ECDSA_SIG_R_5", + "deprecated_names": [ + "ECDSA_SIG_R[5]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field158-bits24-31", + "name": "ECDSA_SIG_R_4", + "deprecated_names": [ + "ECDSA_SIG_R[4]" + ], + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field15C", + "name": "DICE_Certificate23", + "description": "DICE Certificate register", + "offset_int": "0x015C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits0-7", + "name": "ECDSA_SIG_R_3", + "deprecated_names": [ + "ECDSA_SIG_R[3]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field15C-bits8-15", + "name": "ECDSA_SIG_R_2", + "deprecated_names": [ + "ECDSA_SIG_R[2]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field15C-bits16-23", + "name": "ECDSA_SIG_R_1", + "deprecated_names": [ + "ECDSA_SIG_R[1]" + ], + "description": "R component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field15C-bits24-31", + "name": "ECDSA_SIG_R_0", + "deprecated_names": [ + "ECDSA_SIG_R[0]" + ], + "description": "R component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field160", + "name": "DICE_Certificate24", + "description": "DICE Certificate register", + "offset_int": "0x0160", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits0-7", + "name": "ECDSA_SIG_S_31", + "deprecated_names": [ + "ECDSA_SIG_S[31]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field160-bits8-15", + "name": "ECDSA_SIG_S_30", + "deprecated_names": [ + "ECDSA_SIG_S[30]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field160-bits16-23", + "name": "ECDSA_SIG_S_29", + "deprecated_names": [ + "ECDSA_SIG_S[29]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field160-bits24-31", + "name": "ECDSA_SIG_S_28", + "deprecated_names": [ + "ECDSA_SIG_S[28]" + ], + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field164", + "name": "DICE_Certificate25", + "description": "DICE Certificate register", + "offset_int": "0x0164", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits0-7", + "name": "ECDSA_SIG_S_27", + "deprecated_names": [ + "ECDSA_SIG_S[27]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field164-bits8-15", + "name": "ECDSA_SIG_S_26", + "deprecated_names": [ + "ECDSA_SIG_S[26]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field164-bits16-23", + "name": "ECDSA_SIG_S_25", + "deprecated_names": [ + "ECDSA_SIG_S[25]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field164-bits24-31", + "name": "ECDSA_SIG_S_24", + "deprecated_names": [ + "ECDSA_SIG_S[24]" + ], + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field168", + "name": "DICE_Certificate26", + "description": "DICE Certificate register", + "offset_int": "0x0168", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits0-7", + "name": "ECDSA_SIG_S_23", + "deprecated_names": [ + "ECDSA_SIG_S[23]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field168-bits8-15", + "name": "ECDSA_SIG_S_22", + "deprecated_names": [ + "ECDSA_SIG_S[22]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field168-bits16-23", + "name": "ECDSA_SIG_S_21", + "deprecated_names": [ + "ECDSA_SIG_S[21]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field168-bits24-31", + "name": "ECDSA_SIG_S_20", + "deprecated_names": [ + "ECDSA_SIG_S[20]" + ], + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field16C", + "name": "DICE_Certificate27", + "description": "DICE Certificate register", + "offset_int": "0x016C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits0-7", + "name": "ECDSA_SIG_S_19", + "deprecated_names": [ + "ECDSA_SIG_S[19]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field16C-bits8-15", + "name": "ECDSA_SIG_S_18", + "deprecated_names": [ + "ECDSA_SIG_S[18]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field16C-bits16-23", + "name": "ECDSA_SIG_S_17", + "deprecated_names": [ + "ECDSA_SIG_S[17]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field16C-bits24-31", + "name": "ECDSA_SIG_S_16", + "deprecated_names": [ + "ECDSA_SIG_S[16]" + ], + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field170", + "name": "DICE_Certificate28", + "description": "DICE Certificate register", + "offset_int": "0x0170", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits0-7", + "name": "ECDSA_SIG_S_15", + "deprecated_names": [ + "ECDSA_SIG_S[15]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field170-bits8-15", + "name": "ECDSA_SIG_S_14", + "deprecated_names": [ + "ECDSA_SIG_S[14]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field170-bits16-23", + "name": "ECDSA_SIG_S_13", + "deprecated_names": [ + "ECDSA_SIG_S[13]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field170-bits24-31", + "name": "ECDSA_SIG_S_12", + "deprecated_names": [ + "ECDSA_SIG_S[12]" + ], + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field174", + "name": "DICE_Certificate29", + "description": "DICE Certificate register", + "offset_int": "0x0174", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits0-7", + "name": "ECDSA_SIG_S_11", + "deprecated_names": [ + "ECDSA_SIG_S[11]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field174-bits8-15", + "name": "ECDSA_SIG_S_10", + "deprecated_names": [ + "ECDSA_SIG_S[10]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field174-bits16-23", + "name": "ECDSA_SIG_S_9", + "deprecated_names": [ + "ECDSA_SIG_S[9]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field174-bits24-31", + "name": "ECDSA_SIG_S_8", + "deprecated_names": [ + "ECDSA_SIG_S[8]" + ], + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field178", + "name": "DICE_Certificate30", + "description": "DICE Certificate register", + "offset_int": "0x0178", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits0-7", + "name": "ECDSA_SIG_S_7", + "deprecated_names": [ + "ECDSA_SIG_S[7]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field178-bits8-15", + "name": "ECDSA_SIG_S_6", + "deprecated_names": [ + "ECDSA_SIG_S[6]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field178-bits16-23", + "name": "ECDSA_SIG_S_5", + "deprecated_names": [ + "ECDSA_SIG_S[5]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field178-bits24-31", + "name": "ECDSA_SIG_S_4", + "deprecated_names": [ + "ECDSA_SIG_S[4]" + ], + "description": "S component of ECDSA P-256 signature" + } + ] + }, + { + "id": "field17C", + "name": "DICE_Certificate31", + "description": "DICE Certificate register", + "offset_int": "0x017C", + "access": "RO", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits0-7", + "name": "ECDSA_SIG_S_3", + "deprecated_names": [ + "ECDSA_SIG_S[3]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field17C-bits8-15", + "name": "ECDSA_SIG_S_2", + "deprecated_names": [ + "ECDSA_SIG_S[2]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field17C-bits16-23", + "name": "ECDSA_SIG_S_1", + "deprecated_names": [ + "ECDSA_SIG_S[1]" + ], + "description": "S component of ECDSA P-256 signature" + }, + { + "width": 8, + "id": "field17C-bits24-31", + "name": "ECDSA_SIG_S_0", + "deprecated_names": [ + "ECDSA_SIG_S[0]" + ], + "description": "S component of ECDSA P-256 signature" + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00180-0018C", + "description": "Reserved 00180-0018C" + }, + "registers": [ + { + "id": "Reserved00180", + "name": "Reserved 0x00180", + "description": "This field is reserved for internal use", + "offset_int": "0x0180", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00184", + "name": "Reserved 0x00184", + "description": "This field is reserved for internal use", + "offset_int": "0x0184", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00188", + "name": "Reserved 0x00188", + "description": "This field is reserved for internal use", + "offset_int": "0x0188", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0018C", + "name": "Reserved 0x0018C", + "description": "This field is reserved for internal use", + "offset_int": "0x018C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "IPED", + "description": "IPED GCM AAD context configuration" + }, + "registers": [ + { + "id": "field190", + "name": "IPED_GCM_AAD_CTX0", + "description": "Additional Authentication Data for IPED context 0. Use CRC32 value of any un-encrypted data associated with this context.", + "offset_int": "0x0190", + "default_value_int": "0" + }, + { + "id": "field194", + "name": "IPED_GCM_AAD_CTX1", + "description": "Additional Authentication Data for IPED context 1. Use CRC32 value of any un-encrypted data associated with this context.", + "offset_int": "0x0194", + "default_value_int": "0" + }, + { + "id": "field198", + "name": "IPED_GCM_AAD_CTX2", + "description": "Additional Authentication Data for IPED context 2. Use CRC32 value of any un-encrypted data associated with this context.", + "offset_int": "0x0198", + "default_value_int": "0" + }, + { + "id": "field19C", + "name": "IPED_GCM_AAD_CTX3", + "description": "Additional Authentication Data for IPED context 3. Use CRC32 value of any un-encrypted data associated with this context.", + "offset_int": "0x019C", + "default_value_int": "0" + }, + { + "id": "field1A0", + "name": "IPED_GCM_AAD_CTX4", + "description": "Additional Authentication Data for IPED context 4. Use CRC32 value of any un-encrypted data associated with this context.", + "offset_int": "0x01A0", + "default_value_int": "0" + }, + { + "id": "field1A4", + "name": "IPED_GCM_AAD_CTX5", + "description": "Additional Authentication Data for IPED context 5. Use CRC32 value of any un-encrypted data associated with this context.", + "offset_int": "0x01A4", + "default_value_int": "0" + }, + { + "id": "field1A8", + "name": "IPED_GCM_AAD_CTX6", + "description": "Additional Authentication Data for IPED context 6. Use CRC32 value of any un-encrypted data associated with this context.", + "offset_int": "0x01A8", + "default_value_int": "0" + }, + { + "id": "field1AC", + "name": "IPED_GCM_AAD_CTX7", + "description": "Additional Authentication Data for IPED context 7. Use CRC32 value of any un-encrypted data associated with this context.", + "offset_int": "0x01AC", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 001B0-001E8", + "description": "Reserved 001B0-001E8" + }, + "registers": [ + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CRC - CMAC", + "description": "CRC32 and CMAC CFPA securing" + }, + "registers": [ + { + "id": "field1EC", + "name": "CFPA_CRC32", + "description": "CRC32 of CFPA page data from offset . ROM updates this field along with CFPA_CMAC on subsequent boot after page update. ROM uses this field based on CMPA.LP_SEC_BOOT field option.", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F0", + "name": "CFPA0_CMAC0", + "description": "CMAC[31:0] of CFPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F4", + "name": "CFPA0_CMAC1", + "description": "CMAC[31:0] of CFPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F8", + "name": "CFPA0_CMAC2", + "description": "CMAC[31:0] of CFPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1FC", + "name": "CFPA0_CMAC3", + "description": "CMAC[31:0] of CFPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cmpa_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cmpa_a0.json new file mode 100644 index 0000000..c7b8844 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cmpa_a0.json @@ -0,0 +1,4368 @@ +{ + "cpu": "MCXN946", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0x59630000", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field000-bits0-1", + "name": "DEFAULT_BOOT_SOURCE", + "description": "Primary boot source", + "values": [ + { + "name": "INTERNAL_FLASH_0b00", + "value": 0, + "description": "Internal flash" + }, + { + "name": "FLEXSPI_FLASH_XIP", + "value": 1, + "description": "FlexSPI-A flash XIP image" + }, + { + "name": "SECONDARY_BOOT_LOADE", + "value": 2, + "description": "SECONDARY_BOOT_LOADER_0b10: Secondary Boot loader in Bank1 IFR0 (32KB)" + }, + { + "name": "INTERNAL_FLASH_0b11", + "value": 3, + "description": "Internal flash" + } + ] + }, + { + "width": 2 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_INTERFACE", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "SPI_SLAVE", + "value": 2, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_SLAVE", + "value": 3, + "description": "I2C slave ISP" + }, + { + "name": "USB0_HID", + "value": 4, + "description": "USB0_HID" + }, + { + "name": "USB1_HID", + "value": 5, + "description": "USB1_HID" + }, + { + "name": "CAN_ISP", + "value": 6, + "description": "CAN ISP" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field000-bits8-9", + "name": "RECOVERY_BOOT_SOURCE", + "description": "Recovery boot source", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Recovery boot disabled" + }, + { + "name": "XIP_IMAGE", + "value": 1, + "description": "XIP image in Bank1 IFR0 (32KB)" + }, + { + "name": "SB3_IMAGE", + "value": 2, + "description": "SB3 image in 1-bit SPI flash connected to FlexComm overlapped with FlexSPI A" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "CORE_CLOCK", + "description": "Core Clock", + "values": [ + { + "name": "MHZ48_FRO", + "value": 0, + "description": "48Mhz FRO @1v0" + }, + { + "name": "MHZ72_FRO", + "value": 1, + "description": "72MHz FRO @1v0" + }, + { + "name": "MHZ144_FRO", + "value": 2, + "description": "144MHz FRO @1v0" + } + ] + }, + { + "width": 2 + }, + { + "width": 16, + "access": "RO", + "id": "field000-bits16-31", + "name": "HEADER", + "description": "CMPA Header marker should be set to 0x5963" + } + ] + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "FLASH_REMAP_SZ", + "description": "Flash remap size.This field should be written to remap field in flash." + }, + { + "width": 3, + "id": "field004-bits5-7", + "name": "OEM_BANK1_IFR0_PROT", + "description": "Defines protection for Bank1_IFR0.Set RWXL = 1010 when jumping to Bank1_IFR0 address.", + "values": [ + { + "name": "RWXL_1010", + "value": 0, + "description": "Set to RWXL = 1010 on user image exit." + }, + { + "name": "RWXL_1011", + "value": 1, + "description": "Set to RWXL = 1011 on user image exit." + }, + { + "name": "RWXL_0011", + "value": 2, + "description": "Set to RWXL = 0011 on user image exit." + }, + { + "name": "RWXL_0001", + "value": 3, + "description": "Set to RWXL = 0001 on user image exit." + } + ] + }, + { + "width": 2, + "id": "field004-bits8-9", + "name": "ISP_FT_ENTRY", + "description": "Authentication failure", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion.", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command.", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits14-15", + "name": "ISP_API_ENTRY", + "description": "Disable ISP mode entry through ROM API call. ISP mode can be entered through ROM API invocation", + "values": [ + { + "name": "ALLOWED_0b00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0b10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0b11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 16 + } + ] + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "BOOT_LED_STATUS", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field008-bits0-7", + "name": "REC_BOOT_LED", + "description": "Assert on recovery boot. ROM drives the GPIO pin identified by this field whenever primary boot fails and fall through to recovery boot source." + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "ISP_BOOT_LED", + "description": "Assert on ISP fall through. ROM drives the GPIO pin identified by this field whenever primary boot fails and execution falls through to ISP mode." + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "BOOT_FAIL_LED", + "description": "Assert on fatal errors during boot. ROM toggles the GPIO pin identified by this field whenever primary boot fails due to fatal errors before locking-up/reset. Note, use QUICK_SET_/CLR_GPIOx field to set the default level of pin." + }, + { + "width": 8 + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "BOOT_TIMERS", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout:Timeout value in seconds. When a non-zero value is programmed in this field ROM uses it as idle timeout value to enter power-down state to conserve power." + }, + { + "width": 16, + "id": "field00C-bits16-31", + "name": "WDOG_TIMEOUT_COUNT", + "description": "WDOG timeout:Upper 16 bits of 24-bit count value in WWDT_TC register Timeout value in seconds. When a non-zero value is programmed in this field ROM configures the watch dog timer to reset the device on timeout before passing execution control to user code." + } + ] + }, + { + "id": "field010", + "name": "FLEXSPI_BOOT_CFG0", + "description": "FLEXSPI_BOOT_CFG0", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "FLEXSPI_AUTO_PROBE", + "description": "Quad/Octal-SPI flash auto probe feature enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 3, + "id": "field010-bits1-3", + "name": "FLEXSPI_PROBE_TYPE", + "description": "Quad/Octal-SPI flash probe type.", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MACRONIC_OCTAL_FLASH", + "value": 1, + "description": "Macronix Octal FLASH" + }, + { + "name": "MICRON_OCTAL_FLASH", + "value": 2, + "description": "Micron Octal FLASH" + }, + { + "name": "ADESTO_OCTAL_FLASH", + "value": 3, + "description": "Adesto Octal FLASH" + } + ] + }, + { + "width": 3, + "id": "field010-bits4-6", + "name": "FLEXSPI_FLASH_TYPE", + "description": "Define typical Serial NOR Flash types", + "values": [ + { + "name": "QSPI_ADDR_3B", + "value": 0, + "description": "QSPI_ADDR_3B" + }, + { + "name": "HYPER_1V8", + "value": 2, + "description": "HYPER_1V8" + }, + { + "name": "HYPER_3V3", + "value": 3, + "description": "HYPER_3V3" + }, + { + "name": "DDR_MXIC", + "value": 4, + "description": "FlexSPI_DDR_MXIC" + }, + { + "name": "DDR_MICRON", + "value": 5, + "description": "FlexSPI_DDR_MICRON" + } + ] + }, + { + "width": 4, + "id": "field010-bits7-10", + "name": "FLEXSPI_DUMMY_CYCLES", + "description": "Quad/Octal-SPI dummy cycles for read command." + }, + { + "width": 3, + "id": "field010-bits11-13", + "name": "FLEXSPI_FREQUENCY", + "description": "Q/O-SPI flash interface frequency.", + "values": [ + { + "name": "MHZ_50", + "value": 0, + "description": "50Mhz" + }, + { + "name": "MHZ_60", + "value": 1, + "description": "60Mhz" + }, + { + "name": "MHZ_80", + "value": 2, + "description": "80Mhz" + }, + { + "name": "MHZ_100", + "value": 3, + "description": "100Mhz" + }, + { + "name": "MHZ_120", + "value": 4, + "description": "120Mhz" + }, + { + "name": "MHZ_133", + "value": 5, + "description": "133Mhz" + }, + { + "name": "MHZ_166", + "value": 6, + "description": "166Mhz" + }, + { + "name": "MHZ_200", + "value": 7, + "description": "200Mhz" + } + ] + }, + { + "width": 1, + "id": "field010-bit14", + "name": "FLEXSPI_RESET_ENABLE", + "description": "Use QSPI_RESET_PIN to reset the flash device.", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "NO_RESET(O/QSPI device reset pin is not connected or available" + }, + { + "name": "EN_RESET", + "value": 1, + "description": "EN_RESET(O/QSPI device reset pin is connected to a GPIO (QSPI_RESET_PIN)" + } + ] + }, + { + "width": 3, + "id": "field010-bits15-17", + "name": "FLEXSPI_RESET_GPIO_PORT", + "description": "GPIO port number to use for O/QSPI reset function" + }, + { + "width": 5, + "id": "field010-bits18-22", + "name": "FLEXSPI_RESET_GPIO_PIN", + "description": "GPIO pin number to use for O/QSPI reset function" + }, + { + "width": 2, + "id": "field010-bits23-24", + "name": "FLEXSPI_HOLD_TIME", + "description": "Wait time before access to Serial Flash.", + "values": [ + { + "name": "WAIT_500US", + "value": 0, + "description": "Wait for 500 micro seconds." + }, + { + "name": "WAIT_1MS", + "value": 1, + "description": "Wait for 1 mili seconds." + }, + { + "name": "WAIT_3MS", + "value": 2, + "description": "Wait for 3 mili seconds." + }, + { + "name": "WAIT_10MS", + "value": 3, + "description": "Wait for 10 mili seconds." + } + ] + }, + { + "width": 4, + "id": "field010-bits25-28", + "name": "FLEXSPI_PWR_HOLD_TIME", + "description": "Delay after POR before accessing Quad/Octal-SPI flash devices in addition to delay defined by FLEXSPI_HOLD TIME field.", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No delay" + }, + { + "name": "WAIT_100US", + "value": 1, + "description": "Waits additional 100 micro-seconds." + }, + { + "name": "WAIT_500US", + "value": 2, + "description": "Waits additional 500 micro-seconds." + }, + { + "name": "WAIT_1MS", + "value": 3, + "description": "Waits additional 1 mili-seconds." + }, + { + "name": "WAIT_10MS", + "value": 4, + "description": "Waits additional 10 mili-seconds." + }, + { + "name": "WAIT_20MS", + "value": 5, + "description": "Waits additional 20 mili-seconds." + }, + { + "name": "WAIT_40MS", + "value": 6, + "description": "Waits additional 40 mili-seconds." + }, + { + "name": "WAIT_60MS", + "value": 7, + "description": "Waits additional 60 mili-seconds." + }, + { + "name": "WAIT_80MS", + "value": 8, + "description": "Waits additional 80 mili-seconds." + }, + { + "name": "WAIT_100MS", + "value": 9, + "description": "Waits additional 100 mili-seconds." + }, + { + "name": "WAIT_120MS", + "value": 10, + "description": "Waits additional 120 mili-seconds." + }, + { + "name": "WAIT_140MS", + "value": 11, + "description": "Waits additional 140 mili-seconds." + }, + { + "name": "WAIT_160MS", + "value": 12, + "description": "Waits additional 160 mili-seconds." + }, + { + "name": "WAIT_180MS", + "value": 13, + "description": "Waits additional 180 mili-seconds." + }, + { + "name": "WAIT_200MS", + "value": 14, + "description": "Waits additional 200 mili-seconds." + }, + { + "name": "WAIT_220MS", + "value": 15, + "description": "Waits additional 220 mili-seconds." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field010-bit31", + "name": "PORT_SEL", + "description": "Defined which FlexSPI portA/B is used for boot.", + "values": [ + { + "name": "PORT_A", + "value": 0, + "description": "PORT A" + }, + { + "name": "PORT_B", + "value": 1, + "description": "PORT B" + } + ] + } + ] + }, + { + "id": "field014", + "name": "FLEXSPI_BOOT_CFG1", + "description": "FLEXSPI_BOOT_CFG1", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 7, + "id": "field014-bits0-6", + "name": "FLEXSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for Flash read sampling via DQS (either internal loopback or external DQS)" + }, + { + "width": 10, + "id": "field014-bits7-16", + "name": "FLEXSPI_IMAGE_OFFSET", + "description": "Any offset in memory mapped Q/Octal-SPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset." + }, + { + "width": 4, + "id": "field014-bits17-20", + "name": "FLEXSPI_REMAP_IMAGE_SIZE", + "description": "Any offset in memory mapped QSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. QSPI_IMAGE_OFFSET field specifies the offset location of second image. QSPI_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped.", + "values": [ + { + "name": "SIZE_OFFSET", + "value": 0, + "description": "Remap size = FLEXSPI_IMAGE_OFFSET * 256KByte;" + }, + { + "name": "SIZE_1MB", + "value": 1, + "description": "SIZE_1MB Size of remapped area is 1MByte" + }, + { + "name": "SIZE_2MB", + "value": 2, + "description": "SIZE_2MB Size of remapped area is 2MByte" + }, + { + "name": "SIZE_3MB", + "value": 3, + "description": "SIZE_3MB Size of remapped area is 3MByte" + }, + { + "name": "SIZE_4MB", + "value": 4, + "description": "SIZE_4MB Size of remapped area is 4MByte" + }, + { + "name": "SIZE_5MB", + "value": 5, + "description": "SIZE_5MB Size of remapped area is 5MByte" + }, + { + "name": "SIZE_6MB", + "value": 6, + "description": "SIZE_6MB Size of remapped area is 6MByte" + }, + { + "name": "SIZE_7MB", + "value": 7, + "description": "SIZE_7MB Size of remapped area is 7MByte" + }, + { + "name": "SIZE_8MB", + "value": 8, + "description": "SIZE_8MB Size of remapped area is 8MByte" + }, + { + "name": "SIZE_9MB", + "value": 9, + "description": "SIZE_9MB Size of remapped area is 9MByte" + }, + { + "name": "SIZE_10MB", + "value": 10, + "description": "SIZE_10MB Size of remapped area is 10MByte" + }, + { + "name": "SIZE_11MB", + "value": 11, + "description": "SIZE_11MB Size of remapped area is 11MByte" + }, + { + "name": "SIZE_12MB", + "value": 12, + "description": "SIZE_12MB Size of remapped area is 12MByte" + }, + { + "name": "SIZE_256KB", + "value": 13, + "description": "SIZE_256KB Size of remapped area is 256KByte" + }, + { + "name": "SIZE_512KB", + "value": 14, + "description": "SIZE_512KB Size of remapped area is 512KByte" + }, + { + "name": "SIZE_768KB", + "value": 15, + "description": "SIZE_768KB Size of remapped area is 768KByte" + } + ] + }, + { + "width": 11 + } + ] + }, + { + "id": "field018", + "name": "REC_SPI_FLASH_CFG0", + "description": "REC_SPI_FLASH_CFG0", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field018-bits0-7", + "name": "REC_SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin.Identifies the pin to be used as SPI_SCK pin." + }, + { + "width": 4, + "id": "field018-bits8-11", + "name": "REC_SPI_SCK_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field018-bits12-15", + "name": "REC_SPI_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field018-bits16-23", + "name": "REC_SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin" + }, + { + "width": 4, + "id": "field018-bits24-27", + "name": "REC_SPI_MOSI_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + } + ] + }, + { + "id": "field01C", + "name": "REC_SPI_FLASH_CFG1", + "description": "REC_SPI_FLASH_CFG1", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "REC_SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "REC_SPI_MISO_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4 + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "REC_SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin." + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "REC_SPI_SSEL_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 2, + "id": "field01C-bits28-29", + "name": "REC_SPI_SSEL_X", + "description": "SPI chip select number." + }, + { + "width": 2 + } + ] + }, + { + "id": "field020", + "name": "ISP_UART_CFG", + "description": "ISP_UART_CFG", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin." + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4, + "id": "field020-bits12-15", + "name": "UART_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode." + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin." + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4, + "id": "field020-bits28-31", + "name": "UART_BAUD_RATE", + "description": "UART baud rate.Baud rate configured during UART ISP mode.", + "values": [ + { + "name": "AUTO_BAUD_DETECTION", + "value": 0, + "description": "Auto baud detection." + } + ] + } + ] + }, + { + "id": "field024", + "name": "ISP_I2C_CFG", + "description": "ISP_I2C_CFG", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field024-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default I2C SCL ISP pin." + }, + { + "width": 4, + "id": "field024-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field024-bits12-15", + "name": "I2C_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for I2C ISP mode" + }, + { + "width": 8, + "id": "field024-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default I2C SDA ISP pin" + }, + { + "width": 4, + "id": "field024-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + } + ] + }, + { + "id": "field028", + "name": "ISP_CAN_CFG", + "description": "ISP_CAN_CFG", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field028-bits0-7", + "name": "CAN_RX_PIN", + "description": "Override default CAN RX ISP pin." + }, + { + "width": 4, + "id": "field028-bits8-11", + "name": "CAN_RX_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4, + "id": "field028-bits12-15", + "name": "CAN_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for CAN ISP mode." + }, + { + "width": 8, + "id": "field028-bits16-23", + "name": "CAN_TX_PIN", + "description": "Override default CAN TX ISP pin." + }, + { + "width": 4, + "id": "field028-bits24-27", + "name": "CAN_TX_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4, + "id": "field028-bits28-31", + "name": "CAN_BAUD_RATE", + "description": "CAN baud rate.Baud rate configured during CAN ISP mode. Default: Auto baud detection.", + "values": [ + { + "name": "AUTO_DETECT", + "value": 0, + "description": "Auto baud detection (125K, 250K, 500K, 1M)" + }, + { + "name": "KBPS_10", + "value": 1, + "description": "10 kbps" + }, + { + "name": "KBPS_20", + "value": 2, + "description": "20 kbps" + }, + { + "name": "KBPS_50", + "value": 3, + "description": "50 kbps" + }, + { + "name": "KBPS_125", + "value": 4, + "description": "125 kbps" + }, + { + "name": "KBPS_250", + "value": 5, + "description": "250 kbps" + }, + { + "name": "KBPS_500", + "value": 6, + "description": "500 kbps" + }, + { + "name": "KBPS_800", + "value": 7, + "description": "800 kbps" + }, + { + "name": "KBPS_1000", + "value": 8, + "description": "1,000 kbps" + } + ] + } + ] + }, + { + "id": "field02C", + "name": "ISP_SPI_CFG0", + "description": "ISP_SPI_CFG0", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field02C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI SCK ISP pin." + }, + { + "width": 4, + "id": "field02C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4, + "id": "field02C-bits12-15", + "name": "SPI_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field02C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI MOSI ISP pin" + }, + { + "width": 4, + "id": "field02C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 4 + } + ] + }, + { + "id": "field030", + "name": "ISP_SPI_CFG1", + "description": "ISP_SPI_CFG1", + "offset_int": "0x0030", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field030-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI MISO ISP pin." + }, + { + "width": 4, + "id": "field030-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4 + }, + { + "width": 8, + "id": "field030-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI SSEL ISP pin" + }, + { + "width": 4, + "id": "field030-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the pin mux function slot." + }, + { + "width": 2, + "id": "field030-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number." + }, + { + "width": 2 + } + ] + }, + { + "id": "field034", + "name": "ISP_USB_ID", + "description": "ISP_USB_ID", + "offset_int": "0x0034", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field034-bits0-15", + "name": "USB_Vendor_ID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "field034-bits16-31", + "name": "USB_Product_ID", + "description": "USB Product ID" + } + ] + }, + { + "id": "field038", + "name": "ISP_USB_CFG", + "description": "ISP_USB_CFG", + "offset_int": "0x0038", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field038-bits0-7", + "name": "USB0_VBUS_PIN", + "description": "Override default USB VBUS MISO ISP pin." + }, + { + "width": 4, + "id": "field038-bits8-11", + "name": "USB0_VBUS_FUNC_SLOT", + "description": "Identifies the pin mux function slot" + }, + { + "width": 4 + }, + { + "width": 3, + "id": "field038-bits16-18", + "name": "EXT_XTAL_CLK", + "description": "USB PHY input clock frequency. For USB high speed PHY external XTAL input is needed. This field specifies the frequency of XTAL used on board.", + "values": [ + { + "name": "XTAL_32MHZ", + "value": 0, + "description": "32MHz input clock (Divide by 15)" + }, + { + "name": "XTAL_30MHZ", + "value": 1, + "description": "30MHz input clock (Divide by 16)" + }, + { + "name": "XTAL_20MHZ", + "value": 4, + "description": "20MHz input clock (Divide by 24)" + }, + { + "name": "XTAL_19_2MHZ", + "value": 5, + "description": "19.2MHz input clock (Divide by 25)" + }, + { + "name": "XTAL_16MHZ", + "value": 6, + "description": "16MHz input clock (Divide by 30)" + }, + { + "name": "XTAL_12MHZ", + "value": 7, + "description": "12MHz input clock (Divide by 40) " + } + ] + }, + { + "width": 1, + "id": "field038-bit19", + "name": "PRE_DIV", + "description": "Enable Pre-divider. Needed to support 48MHz and other high speed crystals." + }, + { + "width": 12 + } + ] + }, + { + "id": "field03C", + "name": "ISP_MISC_CFG", + "description": "ISP_MISC_CFG", + "offset_int": "0x003C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 8, + "id": "field03C-bits0-7", + "name": "I2C_SLAVE_ADDR", + "description": "I2C slave address. A 7-bit Address used for selecting our device on shared I2C bus system.By default ROM uses 0x10 as slave address." + }, + { + "width": 16 + }, + { + "width": 2, + "id": "field03C-bits24-25", + "name": "ISP_CAN_CUST", + "description": "Use customer defined CAN ISP pins.", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined." + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field03C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins.", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined." + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field03C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins.", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined." + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field03C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins.", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined." + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + } + ] + }, + { + "id": "field040", + "name": "DCFG_CC_SOCU_PIN", + "description": "Credential Constraints for SoC specific Use Pinned", + "offset_int": "0x0040", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field040-bit0", + "name": "NIDEN", + "description": "Non-secure Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit2", + "name": "SPNIDEN", + "description": "Secure Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit3", + "name": "SPIDEN", + "description": "Secure Invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field040-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Boot Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Disable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 4 + }, + { + "width": 1, + "id": "field040-bit15", + "name": "UUID_CHECK", + "description": "UUID Check" + }, + { + "width": 16, + "id": "field040-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field044", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Credential Constraints for SoC specific Use Debug Filter", + "offset_int": "0x0044", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field044-bit0", + "name": "NIDEN", + "description": "Non Secure Non-invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit1", + "name": "DBGEN", + "description": "Non-secure Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit2", + "name": "SPNIDEN", + "description": "Secure Non-invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit3", + "name": "SPIDEN", + "description": "Secure Invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field044-bit5", + "name": "DSP_DBGEN", + "description": "DSP Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit6", + "name": "ISP_CMD_EN", + "description": "ISP Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 5 + }, + { + "width": 16, + "id": "field044-bits16-31", + "name": "INVERSE_VALUE", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field048", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0048", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field048-bits16-31", + "name": "VENDOR_USAGE", + "description": "Vendor Usage [31:16]" + } + ] + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field050", + "name": "SECURE_BOOT_CFG", + "description": "Secure Boot Configuration", + "offset_int": "0x0050", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field050-bits0-1", + "name": "SEC_BOOT_EN", + "description": "Secure boot enforcement. This field defines the minimum image verification procedure (CRC32, CMAC, ECDSA sign).", + "values": [ + { + "name": "ALL_IMAGES", + "value": 0, + "description": "All Image types are allowed." + }, + { + "name": "CRC32_IMAGES", + "value": 1, + "description": "Only CRC32 or signed (CMAC or ECDSA) images are allowed." + }, + { + "name": "SIGNED_IMAGES", + "value": 2, + "description": "Only Signed (CMAC or ECDSA) images are allowed." + }, + { + "name": "ECDSA_SIGNED", + "value": 3, + "description": "Only ECDSA signed images are allowed." + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field050-bits3-4", + "name": "LP_SEC_BOOT", + "description": "Secure boot option for low-power wake from power-down and deep-powerdown.For PFR/ROMP do CRC check always.", + "values": [ + { + "name": "COLD_BOOT", + "value": 0, + "description": "Same as cold boot" + }, + { + "name": "CHECK_CRC32", + "value": 1, + "description": "CRC check for PFR and CRC32 check of active image" + }, + { + "name": "CHECK_JUMP", + "value": 2, + "description": "CRC check for PFR and jump to vector address specified in CFPA." + }, + { + "name": "CMAC_CHECK", + "value": 3, + "description": "CRC check for PFR and CMAC check of active image" + } + ] + }, + { + "width": 3 + }, + { + "width": 2, + "id": "field050-bits8-9", + "name": "ENF_CNSA", + "description": "Enforce CNSA", + "values": [ + { + "name": "ECC_P256", + "value": 0, + "description": "ECC P-256 keys" + }, + { + "name": "ECC_P384_0", + "value": 1, + "description": "ECC P-384 keys, SHA384 and AES256" + }, + { + "name": "ECC_P384_1", + "value": 2, + "description": "ECC P-384 keys, SHA384 and AES256" + }, + { + "name": "ECC_P384_2", + "value": 3, + "description": "ECC P-384 keys, SHA384 and AES256" + } + ] + }, + { + "width": 2, + "id": "field050-bits10-11", + "name": "ENF_TZM_PRESET", + "description": "Enforce TrustZone-M Preset", + "values": [ + { + "name": "IGNORE_0b00", + "value": 0, + "description": "Ignored" + }, + { + "name": "ENFORCE_0b01", + "value": 1, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_0b10", + "value": 2, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_0b11", + "value": 3, + "description": "Enforce preset TZM data in image manifest." + } + ] + }, + { + "width": 2, + "id": "field050-bits12-13", + "name": "ITRC_ZEROIZE", + "description": "RAM zeroize on ITRC event. Zeroize long-term storage RAM (AO_RAM) on subsequent boot when Intrusion and Tamper control signals an intrusion event.", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action." + }, + { + "name": "PKC_RAM_ON_ITRC", + "value": 1, + "description": "Always Zeroize PKC RAM on ITRC event only." + }, + { + "name": "PKC_RAMA_ON_ITRC", + "value": 2, + "description": "Zeroize PKC and AO RAM on ITRC event only." + }, + { + "name": "PKC_RAMA_ALL_RESET", + "value": 3, + "description": "Always Zeroize PKC and AO RAM on all reset boot." + } + ] + }, + { + "width": 2, + "id": "field050-bits14-15", + "name": "ACTIVE_IMG_PROT", + "description": "Protection of active image. This field defines protection of flash area occupied by active image. Only applicable to internal flash.", + "values": [ + { + "name": "NO_PROTECTION", + "value": 0, + "description": "No protection after from ACL list." + }, + { + "name": "WITH_STICKY_LOCK", + "value": 1, + "description": "Write protect active image area with sticky lock." + }, + { + "name": "NO_STICKY_LOCK", + "value": 2, + "description": "Write protect active image area without sticky lock." + }, + { + "name": "XOM_PROTECTION", + "value": 3, + "description": "XOM protect active image area with sticky lock. " + } + ] + }, + { + "width": 2, + "id": "field050-bits16-17", + "name": "FIPS_SHA_STEN", + "description": "FIPS_SHA_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field050-bits18-19", + "name": "FIPS_AES_STEN", + "description": "FIPS_AES_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field050-bits20-21", + "name": "FIPS_ECDSA_STEN", + "description": "FIPS_ECDSA_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field050-bits22-23", + "name": "FIPS_DRBG_STEN", + "description": "FIPS_DRBG_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field050-bits24-25", + "name": "FIPS_CMAC_STEN", + "description": "FIPS_CMAC_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field050-bits26-27", + "name": "FIPS_KDF_STEN", + "description": "FIPS_KDF_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2, + "id": "field050-bits28-29", + "name": "FIPS_PUF_STEN", + "description": "FIPS_PUF_STEN", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "Not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery." + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle." + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "field054", + "name": "RoTK_USAGE", + "description": "Root of Trust Key Usage", + "offset_int": "0x0054", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 3, + "id": "field054-bits0-2", + "name": "RoTK0_Usage", + "description": "RoTK0_Usage", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "field054-bits3-5", + "name": "RoTK1_Usage", + "description": "RoTK1_Usage", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "field054-bits6-8", + "name": "RoTK2_Usage", + "description": "RoTK2_Usage", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "field054-bits9-11", + "name": "RoTK3_Usage", + "description": "RoTK3_Usage", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 1, + "id": "field054-bit12", + "name": "SKIP_DICE", + "description": "Skip DICE computation.", + "values": [ + { + "name": "ENABLE_DICE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_DICE", + "value": 1, + "description": "Disable DICE" + } + ] + }, + { + "width": 1, + "id": "field054-bit13", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "Not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "Included" + } + ] + }, + { + "width": 1, + "id": "field054-bit14", + "name": "DICE_INC_CUST_CFG", + "description": "Include Customer factory area (including keys) in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "Not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "Included" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field054-bits16-17", + "name": "REG0_ERASE_CHECK_EN", + "description": "Region 0 Erase Check Enable", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Check is disabled" + }, + { + "name": "ENABLED_0b01", + "value": 1, + "description": "Check is enabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Check is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits18-19", + "name": "REG1_ERASE_CHECK_EN", + "description": "Region 1 Erase Check Enable", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Check is disabled" + }, + { + "name": "ENABLED_0b01", + "value": 1, + "description": "Check is enabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Check is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits20-21", + "name": "REG2_ERASE_CHECK_EN", + "description": "Region 2 Erase Check Enable", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Check is disabled" + }, + { + "name": "ENABLED_0b01", + "value": 1, + "description": "Check is enabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Check is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits22-23", + "name": "REG3_ERASE_CHECK_EN", + "description": "Region 3 Erase Check Enable", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Check is disabled" + }, + { + "name": "ENABLED_0b01", + "value": 1, + "description": "Check is enabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Check is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits24-25", + "name": "NPX_LOCK_CTX0", + "description": "Lock onchip flash NPX PRINCE context 0 settings.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked. " + }, + { + "name": "LOCKED_NO_ERASE_CHEC", + "value": 1, + "description": "LOCKED_NO_ERASE_CHECK: Region is locked. But no erase check." + }, + { + "name": "LOCKED_ERASE_CHECK_EN", + "value": 2, + "description": "LOCKED_ERASE_CHECK_EN_0: Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + }, + { + "name": "LOCKED_ERASE_CHECK_EN_1", + "value": 3, + "description": "LOCKED_ERASE_CHECK_EN_1: Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + } + ] + }, + { + "width": 2, + "id": "field054-bits26-27", + "name": "NPX_LOCK_CTX1", + "description": "Lock onchip flash NPX PRINCE context 1 settings.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked. " + }, + { + "name": "LOCKED_NO_ERASE_CHEC", + "value": 1, + "description": "LOCKED_NO_ERASE_CHECK: Region is locked. But no erase check." + }, + { + "name": "LOCKED_ERASE_CHECK_E", + "value": 2, + "description": "LOCKED_ERASE_CHECK_EN_0: Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + }, + { + "name": "LOCKED_ERASE_CHECK_EN_1", + "value": 3, + "description": "LOCKED_ERASE_CHECK_EN_1: Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + } + ] + }, + { + "width": 2, + "id": "field054-bits28-29", + "name": "NPX_LOCK_CTX2", + "description": "Lock onchip flash NPX PRINCE context 2 settings.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked. " + }, + { + "name": "LOCKED_NO_ERASE_CHEC", + "value": 1, + "description": "LOCKED_NO_ERASE_CHECK: Region is locked. But no erase check." + }, + { + "name": "LOCKED_ERASE_CHECK_E", + "value": 2, + "description": "LOCKED_ERASE_CHECK_EN_0: Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + }, + { + "name": "LOCKED_ERASE_CHECK_EN_1", + "value": 3, + "description": "LOCKED_ERASE_CHECK_EN_1: Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + } + ] + }, + { + "width": 2, + "id": "field054-bits30-31", + "name": "NPX_LOCK_CTX3", + "description": "Lock onchip flash NPX PRINCE context 3 settings.", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Region is not locked. " + }, + { + "name": "LOCKED_NO_ERASE_CHEC", + "value": 1, + "description": "LOCKED_NO_ERASE_CHECK: Region is locked. But no erase check." + }, + { + "name": "LOCKED_ERASE_CHECK_E", + "value": 2, + "description": "LOCKED_ERASE_CHECK_EN_0: Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + }, + { + "name": "LOCKED_ERASE_CHECK_EN_1", + "value": 3, + "description": "LOCKED_ERASE_CHECK_EN_1: Region is locked. Erase check enabled. Flash programming ROM API enforces the erase check. When erase check is enabled all sectors selected in the context should be erased together and only contiguous sectors can be selected in context bitmap." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00058-0005C", + "description": "Reserved 00058-0005C" + }, + "registers": [ + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field060", + "name": "ROTKH0", + "description": "Root of Trust Key Hash 0", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "ROTKH1", + "description": "Root of Trust Key Hash 1", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "ROTKH2", + "description": "Root of Trust Key Hash 2", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "ROTKH3", + "description": "Root of Trust Key Hash 3", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field070", + "name": "ROTKH4", + "description": "Root of Trust Key Hash 4", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "ROTKH5", + "description": "Root of Trust Key Hash 5", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "ROTKH6", + "description": "Root of Trust Key Hash 6", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "ROTKH7", + "description": "Root of Trust Key Hash 7", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field080", + "name": "ROTKH8", + "description": "Root of Trust Key Hash 8", + "offset_int": "0x0080", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "ROTKH9", + "description": "Root of Trust Key Hash 9", + "offset_int": "0x0084", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "ROTKH10", + "description": "Root of Trust Key Hash 10", + "offset_int": "0x0088", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "ROTKH11", + "description": "Root of Trust Key Hash 11", + "offset_int": "0x008C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field090", + "name": "NPX_CTX0_WD0", + "description": "Bitmap mask for NPX Prince context 0 (sectors 0 -31)", + "offset_int": "0x0090", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field094", + "name": "NPX_CTX0_WD1", + "description": "Bitmap mask for NPX Prince context 0 (sectors 32 - 63)", + "offset_int": "0x0094", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field098", + "name": "NPX_CTX1_WD0", + "description": "Bitmap mask for NPX Prince context 1 (sectors 0 -31)", + "offset_int": "0x0098", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field09C", + "name": "NPX_CTX1_WD1", + "description": "Bitmap mask for NPX Prince context 1 (sectors 32 - 63)", + "offset_int": "0x009C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A0", + "name": "NPX_CTX2_WD0", + "description": "Bitmap mask for NPX Prince context 2 (sectors 0 -31)", + "offset_int": "0x00A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A4", + "name": "NPX_CTX2_WD1", + "description": "Bitmap mask for NPX Prince context 2 (sectors 32 - 63)", + "offset_int": "0x00A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A8", + "name": "NPX_CTX3_WD0", + "description": "Bitmap mask for NPX Prince context 3 (sectors 0 -31)", + "offset_int": "0x00A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0AC", + "name": "NPX_CTX3_WD1", + "description": "Bitmap mask for NPX Prince context 3 (sectors 32 - 63)", + "offset_int": "0x00AC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "IPED", + "description": "IPED fields" + }, + "registers": [ + { + "id": "field0B0", + "name": "IPED0_START", + "description": "IPED region 0 Start", + "offset_int": "0x00B0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field0B0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable.", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode. " + } + ] + }, + { + "width": 1, + "id": "field0B0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0B0-bits8-31", + "name": "IPED_CTX0_START_ADDR", + "description": "IPED_CTX0_START_ADDR" + } + ] + }, + { + "id": "field0B4", + "name": "IPED0_END", + "description": "IPED region 0 End", + "offset_int": "0x00B4", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0B4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings.", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 3, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0B4-bits8-31", + "name": "IPED_CTX0_END_ADDR", + "description": "IPED_CTX0_END_ADDR" + } + ] + }, + { + "id": "field0B8", + "name": "IPED1_START", + "description": "IPED region 1 Start", + "offset_int": "0x00B8", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field0B8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable.", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode. " + } + ] + }, + { + "width": 1, + "id": "field0B8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0B8-bits8-31", + "name": "IPED_CTX1_START_ADDR", + "description": "IPED_CTX1_START_ADDR" + } + ] + }, + { + "id": "field0BC", + "name": "IPED1_END", + "description": "IPED region 1 End", + "offset_int": "0x00BC", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0BC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings.", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 3, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0BC-bits8-31", + "name": "IPED_CTX1_END_ADDR", + "description": "IPED_CTX1_END_ADDR" + } + ] + }, + { + "id": "field0C0", + "name": "IPED2_START", + "description": "IPED region 2 Start", + "offset_int": "0x00C0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field0C0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable.", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode. " + } + ] + }, + { + "width": 1, + "id": "field0C0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0C0-bits8-31", + "name": "IPED_CTX2_START_ADDR", + "description": "IPED_CTX2_START_ADDR" + } + ] + }, + { + "id": "field0C4", + "name": "IPED2_END", + "description": "IPED region 2 End", + "offset_int": "0x00C4", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0C4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings.", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 3, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0C4-bits8-31", + "name": "IPED_CTX2_END_ADDR", + "description": "IPED_CTX2_END_ADDR" + } + ] + }, + { + "id": "field0C8", + "name": "IPED3_START", + "description": "IPED region 3 Start", + "offset_int": "0x00C8", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field0C8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable.", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode. " + } + ] + }, + { + "width": 1, + "id": "field0C8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0C8-bits8-31", + "name": "IPED_CTX3_START_ADDR", + "description": "IPED_CTX3_START_ADDR" + } + ] + }, + { + "id": "field0CC", + "name": "IPED3_END", + "description": "IPED region 3 End", + "offset_int": "0x00CC", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0CC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings.", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 3, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0CC-bits8-31", + "name": "IPED_CTX3_END_ADDR", + "description": "IPED_CTX3_END_ADDR" + } + ] + }, + { + "id": "field0D0", + "name": "IPED4_START", + "description": "IPED region 4 Start", + "offset_int": "0x00D0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field0D0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable.", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode. " + } + ] + }, + { + "width": 1, + "id": "field0D0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0D0-bits8-31", + "name": "IPED_CTX4_START_ADDR", + "description": "IPED_CTX4_START_ADDR" + } + ] + }, + { + "id": "field0D4", + "name": "IPED4_END", + "description": "IPED region 4 End", + "offset_int": "0x00D4", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0D4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings.", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 3, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0D4-bits8-31", + "name": "IPED_CTX4_END_ADDR", + "description": "IPED_CTX4_END_ADDR" + } + ] + }, + { + "id": "field0D8", + "name": "IPED5_START", + "description": "IPED region 5 Start", + "offset_int": "0x00D8", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field0D8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable.", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode. " + } + ] + }, + { + "width": 1, + "id": "field0D8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0D8-bits8-31", + "name": "IPED_CTX5_START_ADDR", + "description": "IPED_CTX5_START_ADDR" + } + ] + }, + { + "id": "field0DC", + "name": "IPED5_END", + "description": "IPED region 5 End", + "offset_int": "0x00DC", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0DC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings.", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 3, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0DC-bits8-31", + "name": "IPED_CTX5_END_ADDR", + "description": "IPED_CTX5_END_ADDR" + } + ] + }, + { + "id": "field0E0", + "name": "IPED6_START", + "description": "IPED region 6 Start", + "offset_int": "0x00E0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field0E0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable.", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode. " + } + ] + }, + { + "width": 1, + "id": "field0E0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0E0-bits8-31", + "name": "IPED_CTX6_START_ADDR", + "description": "IPED_CTX6_START_ADDR" + } + ] + }, + { + "id": "field0E4", + "name": "IPED6_END", + "description": "IPED region 6 End", + "offset_int": "0x00E4", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0E4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings.", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 3, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0E4-bits8-31", + "name": "IPED_CTX6_END_ADDR", + "description": "IPED_CTX6_END_ADDR" + } + ] + }, + { + "id": "field0E8", + "name": "IPED7_START", + "description": "IPED region 7 Start", + "offset_int": "0x00E8", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field0E8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable.", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode. " + } + ] + }, + { + "width": 1, + "id": "field0E8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0E8-bits8-31", + "name": "IPED_CTX7_START_ADDR", + "description": "IPED_CTX7_START_ADDR" + } + ] + }, + { + "id": "field0EC", + "name": "IPED7_END", + "description": "IPED region 7 End", + "offset_int": "0x00EC", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field0EC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings.", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 3, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0EC-bits8-31", + "name": "IPED_CTX7_END_ADDR", + "description": "IPED_CTX7_END_ADDR" + } + ] + }, + { + "id": "field0F0", + "name": "REC_IMG_EXT0", + "description": "REC_IMG_EXT0: Bitmap mask for recovery image extended sectors (sectors 0 -31)", + "offset_int": "0x00F0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F4", + "name": "REC_IMG_EXT1", + "description": "REC_IMG_EXT1: Bitmap mask for recovery image extended sectors (sectors 32 - 63)", + "offset_int": "0x00F4", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 000F8-0011C", + "description": "Reserved 000F8-0011C" + }, + "registers": [ + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00100", + "name": "Reserved 0x00100", + "description": "This field is reserved for internal use", + "offset_int": "0x0100", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00104", + "name": "Reserved 0x00104", + "description": "This field is reserved for internal use", + "offset_int": "0x0104", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00108", + "name": "Reserved 0x00108", + "description": "This field is reserved for internal use", + "offset_int": "0x0108", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00110", + "name": "Reserved 0x00110", + "description": "This field is reserved for internal use", + "offset_int": "0x0110", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field120", + "name": "QUICK_SET_GPIO_0", + "description": "Quick Set to Drive GPIO 0 port pins high", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "QUICK_CLR_GPIO_0", + "description": "Quick Clear to Drive GPIO 0 port pins low", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "QUICK_SET_GPIO_1", + "description": "Quick Set to Drive GPIO 1 port pins high", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "QUICK_CLR_GPIO_1", + "description": "Quick Clear to Drive GPIO 1 port pins low", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "QUICK_SET_GPIO_2", + "description": "Quick Set to Drive GPIO 2 port pins high", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "QUICK_CLR_GPIO_2", + "description": "Quick Clear to Drive GPIO 2 port pins low", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "QUICK_SET_GPIO_3", + "description": "Quick Set to Drive GPIO 3 port pins high", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "QUICK_CLR_GPIO_3", + "description": "Quick Clear to Drive GPIO 3 port pins low", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "QUICK_SET_GPIO_4", + "description": "Quick Set to Drive GPIO 4 port pins high", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "QUICK_CLR_GPIO_4", + "description": "Quick Clear to Drive GPIO 4 port pins low", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "QUICK_SET_GPIO_5", + "description": "Quick Set to Drive GPIO 5 port pins high", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "QUICK_CLR_GPIO_5", + "description": "Quick Clear to Drive GPIO 5 port pins low", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00150-0015C", + "description": "Reserved 00150-0015C" + }, + "registers": [ + { + "id": "Reserved00150", + "name": "Reserved 0x00150", + "description": "This field is reserved for internal use", + "offset_int": "0x0150", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00154", + "name": "Reserved 0x00154", + "description": "This field is reserved for internal use", + "offset_int": "0x0154", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00158", + "name": "Reserved 0x00158", + "description": "This field is reserved for internal use", + "offset_int": "0x0158", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0015C", + "name": "Reserved 0x0015C", + "description": "This field is reserved for internal use", + "offset_int": "0x015C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUST_MK_SK_KEY_BLOB", + "description": "CUST_MK_SK_KEY_BLOB", + "offset_int": "0x0160", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00164-001E8", + "description": "Reserved 00164-001E8" + }, + "registers": [ + { + "id": "Reserved00164", + "name": "Reserved 0x00164", + "description": "This field is reserved for internal use", + "offset_int": "0x0164", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00168", + "name": "Reserved 0x00168", + "description": "This field is reserved for internal use", + "offset_int": "0x0168", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0016C", + "name": "Reserved 0x0016C", + "description": "This field is reserved for internal use", + "offset_int": "0x016C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00170", + "name": "Reserved 0x00170", + "description": "This field is reserved for internal use", + "offset_int": "0x0170", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00174", + "name": "Reserved 0x00174", + "description": "This field is reserved for internal use", + "offset_int": "0x0174", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00178", + "name": "Reserved 0x00178", + "description": "This field is reserved for internal use", + "offset_int": "0x0178", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0017C", + "name": "Reserved 0x0017C", + "description": "This field is reserved for internal use", + "offset_int": "0x017C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00180", + "name": "Reserved 0x00180", + "description": "This field is reserved for internal use", + "offset_int": "0x0180", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00184", + "name": "Reserved 0x00184", + "description": "This field is reserved for internal use", + "offset_int": "0x0184", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00188", + "name": "Reserved 0x00188", + "description": "This field is reserved for internal use", + "offset_int": "0x0188", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0018C", + "name": "Reserved 0x0018C", + "description": "This field is reserved for internal use", + "offset_int": "0x018C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00190", + "name": "Reserved 0x00190", + "description": "This field is reserved for internal use", + "offset_int": "0x0190", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00194", + "name": "Reserved 0x00194", + "description": "This field is reserved for internal use", + "offset_int": "0x0194", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00198", + "name": "Reserved 0x00198", + "description": "This field is reserved for internal use", + "offset_int": "0x0198", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0019C", + "name": "Reserved 0x0019C", + "description": "This field is reserved for internal use", + "offset_int": "0x019C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001A0", + "name": "Reserved 0x001A0", + "description": "This field is reserved for internal use", + "offset_int": "0x01A0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001A4", + "name": "Reserved 0x001A4", + "description": "This field is reserved for internal use", + "offset_int": "0x01A4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001A8", + "name": "Reserved 0x001A8", + "description": "This field is reserved for internal use", + "offset_int": "0x01A8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001AC", + "name": "Reserved 0x001AC", + "description": "This field is reserved for internal use", + "offset_int": "0x01AC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "CRC32", + "description": "CRC32 fields" + }, + "registers": [ + { + "id": "field1EC", + "name": "CMPA_CRC32", + "description": "CMPA_CRC32 for address range 0x0200_4000 - 0x0200_41EB", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "CMAC", + "description": "CMAC fields" + }, + "registers": [ + { + "id": "field1F0", + "name": "CMPA_CMAC0", + "description": "CMPA CMAC 0", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "CMPA_CMAC1", + "description": "CMPA CMAC 1", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "CMPA_CMAC2", + "description": "CMPA CMAC 2", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "CMPA_CMAC3", + "description": "CMPA CMAC 3", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cmpa_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cmpa_a1.json new file mode 100644 index 0000000..45ccfca --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/pfr_cmpa_a1.json @@ -0,0 +1,4693 @@ +{ + "cpu": "mcxn946", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0x59630000", + "bitfields": [ + { + "width": 2, + "id": "field000-bits0-1", + "name": "BOOT_SRC", + "description": "Primary boot source", + "values": [ + { + "name": "INTERNAL_FLASH_0B00", + "value": 0, + "description": "Internal flash" + }, + { + "name": "FLEXSPI_FLASH_XIP", + "value": 1, + "description": "FlexSPI flash XIP image" + }, + { + "name": "SECONDARY_BOOTLOADER", + "value": 2, + "description": "Secondary Boot loader in Bank1 IFR0 (32KB)" + }, + { + "name": "INTERNAL_FLASH_0B11", + "value": 3, + "description": "Internal flash" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "ISP_BOOT_IF", + "description": "ISP boot interface", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 1, + "description": "UART ISP" + }, + { + "name": "SPI_SLAVE", + "value": 2, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_SLAVE", + "value": 3, + "description": "I2C slave ISP" + }, + { + "name": "USB0_HID", + "value": 4, + "description": "USB0 HID" + }, + { + "name": "USB1_HID", + "value": 5, + "description": "USB1 HID" + }, + { + "name": "CAN_ISP", + "value": 6, + "description": "CAN ISP" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field000-bits8-9", + "name": "REC_BOOT_SRC", + "description": "Recovery boot source", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Recovery boot disabled" + }, + { + "name": "XIP_IMAGE", + "value": 1, + "description": "XIP image in Bank1 IFR0 (32KB)" + }, + { + "name": "SB3_IMAGE", + "value": 2, + "description": "SB3 image in 1-bit SPI flash connected to FlexComm. FC7 used for this function by default overlappes with FlexSPI A" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field000-bits12-13", + "name": "BOOT_SPEED", + "description": "Boot speed. Selects the core frequency and voltage to use during ROM execution", + "values": [ + { + "name": "FRO_48_MHZ", + "value": 0, + "description": "48 MHz FRO @ 1.0V" + }, + { + "name": "FRO_72_MHZ", + "value": 1, + "description": "72 MHz FRO @ 1.1V" + }, + { + "name": "FRO_144_MHZ", + "value": 2, + "description": "144 MHz FRO @ 1.2V" + }, + { + "name": "PLL_150_MHZ", + "value": 3, + "description": "150 MHz PLL @ 1.2V" + } + ] + }, + { + "width": 2 + }, + { + "width": 16, + "access": "WRITE_CONST", + "id": "field000-bits16-31", + "name": "HEADER", + "description": "CMPA Header marker should be set to 0x5963. After this header is set, all non-zero values will take effect; leaving all settings at 0xff will cause undefined behavior. It is recommended to set all values to 0x00 before setting the CMPA header value" + } + ] + }, + { + "id": "field004", + "name": "FLASH_CFG", + "description": "Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "FLASH_REMAP_SIZE", + "description": "Flash remap size. FLASH_REMAP_SIZE defines the size of the secondary boot image (the range of flash addresses that will be remapped)in internal flash, where remapped address end = (FLASH_REMAP_SIZE + 1)" + }, + { + "width": 3, + "id": "field004-bits5-7", + "name": "OEM_BANK1_IFR0_PROT", + "description": "Defines flash protection of Bank1_IFR0 area based on usage. Note, if the SBL / Recovery image size is more than IFR0 size of 32KB then sectors from user flash can be associated for extended image size using CMPA.REC_IMG_EXT0/1", + "values": [ + { + "name": "OEM_ROM_RWXL_CODE", + "value": 0, + "description": "Not determined by ROM (MBC fields are modified by OEM code)" + }, + { + "name": "OEM_ROOT_RWXL_1010", + "value": 1, + "description": "Used as OEM Root of Trust image, in other words secondary boot loader (OEM_SBL). MBC protection bits set as RWXL = 1010. Updatable by OEM code later" + }, + { + "name": "OEM_SBL_RWXL_1011", + "value": 2, + "description": "Used as OEM_SBL. MBC protection bits set as RWXL = 1011" + }, + { + "name": "OEM_SBL_RWXL_0011", + "value": 3, + "description": "Used as OEM_SBL. MBC protection bits set as RWXL = 0011" + }, + { + "name": "OEM_REC_RWXL_1010", + "value": 4, + "description": "Used as OEM recovery boot image with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 1010 on ROM exiting to user image" + }, + { + "name": "OEM_REC_RWXL_1011", + "value": 5, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 1011 on ROM exiting to user image" + }, + { + "name": "OEM_REC_RWXL_0011", + "value": 6, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 0011 on ROM exiting to user image" + }, + { + "name": "OEM_REC_RWXL_0001", + "value": 7, + "description": "Used as OEM_RCVRY_IMG with MBC protection RWXL = 1010 on ROM exiting to recovery image. But set to RWXL = 0001 on ROM exiting to user image" + } + ] + }, + { + "width": 2, + "id": "field004-bits8-9", + "name": "ISP_PIN_ENTRY", + "description": "Disable ISP mode entry through pin assertion", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0B10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0B11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits10-11", + "name": "ISP_DM_ENTRY", + "description": "Disable ISP mode entry through debug mailbox command", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0B10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0B11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits12-13", + "name": "ISP_API_ENTRY", + "description": "Disable ISP mode entry through ROM API call. ISP mode can be entered through ROM API invocation", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0B10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0B11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 2, + "id": "field004-bits14-15", + "name": "ISP_FT_ENTRY", + "description": "Disable ISP mode entry through image authentication failure", + "values": [ + { + "name": "ALLOWED_0B00", + "value": 0, + "description": "ISP entry allowed" + }, + { + "name": "DISABLED_0B01", + "value": 1, + "description": "ISP entry disabled" + }, + { + "name": "ALLOWED_0B10", + "value": 2, + "description": "ISP entry allowed" + }, + { + "name": "ALLOWED_0B11", + "value": 3, + "description": "ISP entry allowed" + } + ] + }, + { + "width": 16 + } + ] + }, + { + "id": "field008", + "name": "BOOT_LED_STATUS", + "description": "Boot LED Status", + "offset_int": "0x0008", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field008-bits0-7", + "name": "REC_BOOT_LED", + "description": "Assert on recovery boot. ROM drives the GPIO pin high, identified by this field whenever primary boot fails and fall through to recovery boot source. [4:0] GPIO Pin number. P0_0 and P0_1 are not supported. [7:5] GPIO port number. Only 0 - 4 ports are allowed. If this feature is not use then set this field to 0x00. If this feature is not use then set this field to 0x00" + }, + { + "width": 8, + "id": "field008-bits8-15", + "name": "ISP_BOOT_LED", + "description": "Assert on ISP fall through. ROM drives the GPIO pin high identified by this field whenever primary boot fails and execution falls through to ISP mode. [[4:0] GPIO Pin number. P0_0 and P0_1 are not supported. [7:5] GPIO port number. Only 0 - 4 ports are allowed. If this feature is not use then set this field to 0x00. If this feature is not use then set this field to 0x00" + }, + { + "width": 8, + "id": "field008-bits16-23", + "name": "BOOT_FAIL_LED", + "description": "Assert on fatal errors during boot. ROM drives the GPIO pin high identified by this field whenever primary boot fails due to fatal errors before locking-up/reset. [4:0] GPIO Pin number. P0_0 and P0_1 are not supported. [7:5] GPIO port number. Only 0 - 4 ports are allowed. If this feature is not use then set this field to 0x00. If this feature is not use then set this field to 0x00" + }, + { + "width": 8 + } + ] + }, + { + "id": "field00C", + "name": "BOOT_TIMERS", + "description": "Boot Timers", + "offset_int": "0x000C", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field00C-bits0-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Powerdown timeout: ISP mode peripheral detection timeout value in seconds. If a non-zero value is program and peripheral activity is not detected within the number of seconds specified here, then the device will go to power down mode to conserve power" + }, + { + "width": 16, + "id": "field00C-bits16-31", + "name": "WDOG_TIMEOUT_COUNT", + "description": "WDOG timeout: Upper 16 bits of 24-bit count value in WWDT0_TC register Timeout value in seconds. The lower 8 bits of WWDT0_TC are set to 0. When a non-zero value is programmed in this field ROM configures the watch dog timer to reset the device on timeout before passing execution control to user code" + } + ] + }, + { + "id": "field010", + "name": "FLEXSPI_BOOT_CFG0", + "description": "FlexSPI Boot Configuration 0", + "offset_int": "0x0010", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field010-bit0", + "name": "FLEXSPI_AUTO_PROBE_EN", + "description": "Quad/Octal-SPI flash auto probe feature enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 3, + "id": "field010-bits1-3", + "name": "FLEXSPI_PROBE_TYPE", + "description": "Quad/Octal-SPI flash probe type. Note, this field is used when FLEXSPI_AUTO_PROBE_EN is set", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MACRONIC_OCTAL_FLASH", + "value": 1, + "description": "Macronix Octal FLASH" + }, + { + "name": "MICRON_OCTAL_FLASH", + "value": 2, + "description": "Micron Octal FLASH" + }, + { + "name": "ADESTO_OCTAL_FLASH", + "value": 3, + "description": "Adesto Octal FLASH" + } + ] + }, + { + "width": 3, + "id": "field010-bits4-6", + "name": "FLEXSPI_FLASH_TYPE", + "description": "Define typical Serial NOR Flash types. This field is always used irrespective of FLEXSPI_AUTO_PROBE_EN value", + "values": [ + { + "name": "QSPI_ADDR_3B", + "value": 0, + "description": "QSPI ADDR 3B" + }, + { + "name": "HYPER_1V8", + "value": 2, + "description": "HYPER 1V8" + }, + { + "name": "HYPER_3V3", + "value": 3, + "description": "HYPER 3V3" + }, + { + "name": "DDR_MXIC", + "value": 4, + "description": "FlexSPI_DDR_MXIC" + }, + { + "name": "DDR_MICRON", + "value": 5, + "description": "FlexSPI_DDR_MICRON" + } + ] + }, + { + "width": 4, + "id": "field010-bits7-10", + "name": "FLEXSPI_DUMMY_CYCLES", + "description": "Quad/Octal-SPI dummy cycles for read command. If a non-zero value is programmed in this field, then the value is used to override the default number of dummy cycles for a fast read command read from the serial flash\u2019s SFDP information. Note: this field is only used if FLEXSPI_AUTO_PROBE_EN is set" + }, + { + "width": 3, + "id": "field010-bits11-13", + "name": "FLEXSPI_FREQUENCY", + "description": "Quad/Octal-SPI flash interface frequency. Note, this field is used when FLEXSPI_AUTO_PROBE_EN is set", + "values": [ + { + "name": "MHZ_75", + "value": 0, + "description": "75Mhz" + }, + { + "name": "MHZ_60", + "value": 1, + "description": "60Mhz" + }, + { + "name": "MHZ_50", + "value": 2, + "description": "50Mhz" + }, + { + "name": "MHZ_100", + "value": 3, + "description": "100Mhz" + } + ] + }, + { + "width": 1, + "id": "field010-bit14", + "name": "FLEXSPI_RESET_ENABLE", + "description": "Use O/QSPI_RESET_PIN to reset the flash device", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "NO_RESET(O/QSPI device reset pin is not connected or available" + }, + { + "name": "EN_RESET", + "value": 1, + "description": "EN_RESET(O/QSPI device reset pin is connected to a GPIO (QSPI_RESET_PIN)" + } + ] + }, + { + "width": 3, + "id": "field010-bits15-17", + "name": "FLEXSPI_RESET_GPIO_PORT", + "description": "When FLEXSPI_RESET_ENABLE = 1, this field determines the GPIO port number to use for O/QSPI reset function" + }, + { + "width": 5, + "id": "field010-bits18-22", + "name": "FLEXSPI_RESET_GPIO_PIN", + "description": "When FLEXSPI_RESET_ENABLE = 1, this field determines the GPIO pin number to use for O/QSPI reset function" + }, + { + "width": 2, + "id": "field010-bits23-24", + "name": "FLEXSPI_HOLD_TIME", + "description": "Delay after reset before accessing Quad/Octal-SPI flash devices. Note, for POR in addition to this wait time FLEXSPI_PWR_HOLD_TIME is added", + "values": [ + { + "name": "WAIT_500US", + "value": 0, + "description": "Wait for 500 microseconds" + }, + { + "name": "WAIT_1MS", + "value": 1, + "description": "Wait for 1 milliseconds" + }, + { + "name": "WAIT_3MS", + "value": 2, + "description": "Wait for 3 milliseconds" + }, + { + "name": "WAIT_10MS", + "value": 3, + "description": "Wait for 10 milliseconds" + } + ] + }, + { + "width": 4, + "id": "field010-bits25-28", + "name": "FLEXSPI_PWR_HOLD_TIME", + "description": "Delay after POR before accessing Quad/Octal-SPI flash devices in addition to delay defined by FLEXSPI_HOLD TIME field", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No delay" + }, + { + "name": "WAIT_100US", + "value": 1, + "description": "Waits additional 100 microseconds" + }, + { + "name": "WAIT_500US", + "value": 2, + "description": "Waits additional 500 microseconds" + }, + { + "name": "WAIT_1MS", + "value": 3, + "description": "Waits additional 1 milliseconds" + }, + { + "name": "WAIT_10MS", + "value": 4, + "description": "Waits additional 10 milliseconds" + }, + { + "name": "WAIT_20MS", + "value": 5, + "description": "Waits additional 20 milliseconds" + }, + { + "name": "WAIT_40MS", + "value": 6, + "description": "Waits additional 40 milliseconds" + }, + { + "name": "WAIT_60MS", + "value": 7, + "description": "Waits additional 60 milliseconds" + }, + { + "name": "WAIT_80MS", + "value": 8, + "description": "Waits additional 80 milliseconds" + }, + { + "name": "WAIT_100SM", + "value": 9, + "description": "Waits additional 100 milliseconds" + }, + { + "name": "WAIT_120MS", + "value": 10, + "description": "Waits additional 120 milliseconds" + }, + { + "name": "WAIT_140MS", + "value": 11, + "description": "Waits additional 140 milliseconds" + }, + { + "name": "WAIT_160MS", + "value": 12, + "description": "Waits additional 160 milliseconds" + }, + { + "name": "WAIT_180MS", + "value": 13, + "description": "Waits additional 180 milliseconds" + }, + { + "name": "WAIT_200MS", + "value": 14, + "description": "Waits additional 200 milliseconds" + }, + { + "name": "WAIT_220MS", + "value": 15, + "description": "Waits additional 220 milliseconds" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "field010-bit31", + "name": "PORT_SEL", + "description": "Defines which FlexSPI portA/B is used for boot", + "values": [ + { + "name": "PORT_A", + "value": 0, + "description": "Port A" + }, + { + "name": "PORT_B", + "value": 1, + "description": "Port B" + } + ] + } + ] + }, + { + "id": "field014", + "name": "FLEXSPI_BOOT_CFG1", + "description": "FlexSPI Boot Configuration 1", + "offset_int": "0x0014", + "default_value_int": "0", + "bitfields": [ + { + "width": 7, + "id": "field014-bits0-6", + "name": "FLEXSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for Flash read sampling via DQS (either internal loopback or external DQS). The value provided here is loaded into the FLEXSPIn_DLLnCR" + }, + { + "width": 10, + "id": "field014-bits7-16", + "name": "FLEXSPI_IMAGE_OFFSET", + "description": "Any offset in memory mapped FlexSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. FLEXSPI_IMAGE_OFFSET field specifies the offset location of the second image. FLEXSPI_REMAP_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped. If this field is left blank boot ROM will not enable FlexSPI remap feature. The physical flash offset is computed as below: physical offset = FLEXSPI_IMAGE_OFFSET" + }, + { + "width": 4, + "id": "field014-bits17-20", + "name": "FLEXSPI_REMAP_IMAGE_SIZE", + "description": "Any offset in memory mapped FlexSPI Flash area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. FLEXSPI_IMAGE_OFFSET field specifies the offset location of second image. FLEXSPI_REMAP_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped. NOTE: FlexSPI remap size cannot exceed the start address of boot image 1", + "values": [ + { + "name": "SIZE_OFFSET", + "value": 0, + "description": "Remap size = FLEXSPI_IMAGE_OFFSET * 256KByte; '' SIZE_OFFSET ''Size of the remapped area (aka second half) is same as first half. It is determined by FLEXSPI_IMAGE_OFFSET Field" + }, + { + "name": "SIZE_1MB", + "value": 1, + "description": "Size of remapped area is 1MByte" + }, + { + "name": "SIZE_2MB", + "value": 2, + "description": "Size of remapped area is 2MByte" + }, + { + "name": "SIZE_3MB", + "value": 3, + "description": "Size of remapped area is 3MByte" + }, + { + "name": "SIZE_4MB", + "value": 4, + "description": "Size of remapped area is 4MByte" + }, + { + "name": "SIZE_5MB", + "value": 5, + "description": "Size of remapped area is 5MByte" + }, + { + "name": "SIZE_6MB", + "value": 6, + "description": "Size of remapped area is 6MByte" + }, + { + "name": "SIZE_7MB", + "value": 7, + "description": "Size of remapped area is 7MByte" + }, + { + "name": "SIZE_8MB", + "value": 8, + "description": "Size of remapped area is 8MByte" + }, + { + "name": "SIZE_9MB", + "value": 9, + "description": "Size of remapped area is 9MByte" + }, + { + "name": "SIZE_10MB", + "value": 10, + "description": "Size of remapped area is 10MByte" + }, + { + "name": "SIZE_11MB", + "value": 11, + "description": "Size of remapped area is 11MByte" + }, + { + "name": "SIZE_12MB", + "value": 12, + "description": "Size of remapped area is 12MByte" + }, + { + "name": "SIZE_256KB", + "value": 13, + "description": "Size of remapped area is 256KByte" + }, + { + "name": "SIZE_512KB", + "value": 14, + "description": "Size of remapped area is 512KByte" + }, + { + "name": "SIZE_768KB", + "value": 15, + "description": "Size of remapped area is 768KByte" + } + ] + }, + { + "width": 11 + } + ] + }, + { + "id": "field018", + "name": "REC_SPI_FLASH_CFG0", + "description": "Recovery SPI Flash Configuration 0", + "offset_int": "0x0018", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field018-bits0-7", + "name": "REC_SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field018-bits8-11", + "name": "REC_SPI_SCK_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_SCK_PIN" + }, + { + "width": 4, + "id": "field018-bits12-15", + "name": "REC_SPI_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field018-bits16-23", + "name": "REC_SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field018-bits24-27", + "name": "REC_SPI_MOSI_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_MOSI_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field01C", + "name": "REC_SPI_FLASH_CFG1", + "description": "Recovery SPI Flash Configuration 1", + "offset_int": "0x001C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field01C-bits0-7", + "name": "REC_SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits8-11", + "name": "REC_SPI_MISO_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_MISO_PIN" + }, + { + "width": 4 + }, + { + "width": 8, + "id": "field01C-bits16-23", + "name": "REC_SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field01C-bits24-27", + "name": "REC_SPI_SSEL_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by REC_SPI_SSEL_PIN" + }, + { + "width": 2, + "id": "field01C-bits28-29", + "name": "REC_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 2, + "id": "field01C-bits30-31", + "name": "REC_BOOT_PIN_CUST", + "description": "Use customer defined pins for 1-bit SPI recovery boot pins", + "values": [ + { + "name": "DEFAULT_ROM_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUSTOMER_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_ROM_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_ROM_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + } + ] + }, + { + "id": "field020", + "name": "ISP_UART_CFG", + "description": "ISP UART Configuration", + "offset_int": "0x0020", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field020-bits0-7", + "name": "UART_RX_PIN", + "description": "Override default UART RX ISP pin. Identifies the pin to be used as UART_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits8-11", + "name": "UART_RX_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by UART_RX_PIN" + }, + { + "width": 4, + "id": "field020-bits12-15", + "name": "UART_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for UART ISP mode" + }, + { + "width": 8, + "id": "field020-bits16-23", + "name": "UART_TX_PIN", + "description": "Override default UART TX ISP pin. Identifies the pin to be used as UART_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field020-bits24-27", + "name": "UART_TX_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by UART_TX_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field024", + "name": "ISP_I2C_CFG", + "description": "ISP I2C Configuration", + "offset_int": "0x0024", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field024-bits0-7", + "name": "I2C_SCL_PIN", + "description": "Override default I2C SCL ISP pin. Identifies the pin to be used as I2C_SCL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field024-bits8-11", + "name": "I2C_SCL_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by I2C_SCL_PIN" + }, + { + "width": 4, + "id": "field024-bits12-15", + "name": "I2C_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for I2C ISP mode" + }, + { + "width": 8, + "id": "field024-bits16-23", + "name": "I2C_SDA_PIN", + "description": "Override default I2C SDA ISP pin. Identifies the pin to be used as I2C_SDA pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field024-bits24-27", + "name": "I2C_SDA_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by I2C_SDA_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field028", + "name": "ISP_CAN_CFG", + "description": "ISP CAN Configuration", + "offset_int": "0x0028", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field028-bits0-7", + "name": "CAN_RX_PIN", + "description": "Override default CAN RX ISP pin. Identifies the pin to be used as CAN_RX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field028-bits8-11", + "name": "CAN_RX_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by CAN_RX_PIN" + }, + { + "width": 4, + "id": "field028-bits12-15", + "name": "CAN_ISP_INST", + "description": "Identifies the instance used for CAN ISP mode", + "values": [ + { + "name": "CAN_0", + "value": 0, + "description": "For CAN0" + }, + { + "name": "CAN_1", + "value": 1, + "description": "For CAN1" + } + ] + }, + { + "width": 8, + "id": "field028-bits16-23", + "name": "CAN_TX_PIN", + "description": "Override default CAN TX ISP pin. Identifies the pin to be used as CAN_TX pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field028-bits24-27", + "name": "CAN_TX_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by CAN_TX_PIN" + }, + { + "width": 4, + "id": "field028-bits28-31", + "name": "CAN_BAUD_RATE", + "description": "CAN baud rate. Baud rate configured during CAN ISP mode", + "values": [ + { + "name": "AUTO_DETECT", + "value": 0, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "KBPS_125", + "value": 1, + "description": "125 kbps" + }, + { + "name": "KBPS_250", + "value": 2, + "description": "250 kbps" + }, + { + "name": "KBPS_500", + "value": 3, + "description": "500 kbps" + }, + { + "name": "KBPS_750", + "value": 4, + "description": "750 kbps" + }, + { + "name": "KBPS_1000", + "value": 5, + "description": "1000 kbps" + }, + { + "name": "AUTO_DETECT_0b0110", + "value": 6, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "AUTO_DETECT_0b0111", + "value": 7, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "AUTO_DETECT_0b1000", + "value": 8, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "AUTO_DETECT_0b1001", + "value": 9, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "AUTO_DETECT_0b1010", + "value": 10, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "AUTO_DETECT_0b1011", + "value": 11, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "AUTO_DETECT_0b1100", + "value": 12, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "AUTO_DETECT_0b1101", + "value": 13, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "AUTO_DETECT_0b1110", + "value": 14, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + }, + { + "name": "AUTO_DETECT_0b1111", + "value": 15, + "description": "Auto baud detection (125K, 250K, 500K, 750K, 1M)" + } + ] + } + ] + }, + { + "id": "field02C", + "name": "ISP_SPI_CFG0", + "description": "ISP SPI Configuration 0", + "offset_int": "0x002C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field02C-bits0-7", + "name": "SPI_SCK_PIN", + "description": "Override default SPI_SCK ISP pin. Identifies the pin to be used as SPI_SCK pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field02C-bits8-11", + "name": "SPI_SCK_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_SCK_PIN" + }, + { + "width": 4, + "id": "field02C-bits12-15", + "name": "SPI_ISP_FLEXCOM", + "description": "Identifies the FlexComm used for SPI ISP mode" + }, + { + "width": 8, + "id": "field02C-bits16-23", + "name": "SPI_MOSI_PIN", + "description": "Override default SPI_MOSI ISP pin. Identifies the pin to be used as SPI_MOSI pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field02C-bits24-27", + "name": "SPI_MOSI_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_MOSI_PIN" + }, + { + "width": 4 + } + ] + }, + { + "id": "field030", + "name": "ISP_SPI_CFG1", + "description": "ISP SPI Configuration 1", + "offset_int": "0x0030", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field030-bits0-7", + "name": "SPI_MISO_PIN", + "description": "Override default SPI_MISO ISP pin. Identifies the pin to be used as SPI_MISO pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field030-bits8-11", + "name": "SPI_MISO_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_MISO_PIN" + }, + { + "width": 4 + }, + { + "width": 8, + "id": "field030-bits16-23", + "name": "SPI_SSEL_PIN", + "description": "Override default SPI_SSEL ISP pin. Identifies the pin to be used as SPI_SSEL pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field030-bits24-27", + "name": "SPI_SSEL_FUNC_SLOT", + "description": "Identifies the ALT pin mux function to use for the pin selected by SPI_SSEL_PIN" + }, + { + "width": 2, + "id": "field030-bits28-29", + "name": "ISP_SPI_SSEL_X", + "description": "SPI chip select number. FlexComm SPI interfaces supports up to four chip selects" + }, + { + "width": 2 + } + ] + }, + { + "id": "field034", + "name": "ISP_USB_ID", + "description": "ISP USB Identification", + "offset_int": "0x0034", + "default_value_int": "0", + "bitfields": [ + { + "width": 16, + "id": "field034-bits0-15", + "name": "USB_Vendor_ID", + "description": "Customer defined USB vendor ID used during USB-ISP mode device enumeration" + }, + { + "width": 16, + "id": "field034-bits16-31", + "name": "USB_Product_ID", + "description": "Customer defined USB product ID used during USB-ISP mode device enumeration" + } + ] + }, + { + "id": "field038", + "name": "ISP_USB_CFG", + "description": "ISP USB Configuration", + "offset_int": "0x0038", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field038-bits0-7", + "name": "USBx_VBUS_PIN", + "deprecated_names": [ + "USB0_VBUS_PIN" + ], + "description": "Override default USBx_VBUS_DETECT ISP pin. Identifies the pin to be used as USBx_VBUS detect pin. [4:0] GPIO Pin number [7:5] GPIO port number" + }, + { + "width": 4, + "id": "field038-bits8-11", + "name": "USBx_VBUS_FUNC_SLOT", + "deprecated_names": [ + "USB0_VBUS_FUNC_SLOT" + ], + "description": "Identifies the ALT pin mux function to use for the pin selected by USBx_VBUS_PIN" + }, + { + "width": 4 + }, + { + "width": 3, + "id": "field038-bits16-18", + "name": "EXT_XTAL_CLK", + "description": "USB PHY input clock frequency. For USB high speed PHY external XTAL input is needed. This field specifies the frequency of XTAL used on board. \u2022 000b - 24MHz input clock (Divide by 20) \u2022 001b - 30MHz input clock (Divide by 16) \u2022 010b - 32MHz input clock (Divide by 15) \u2022 011b - Reserved \u2022 100b - 20MHz input clock (Divide by 24) \u2022 101b - 19.2MHz input clock (Divide by 25) \u2022 110b - 16MHz input clock (Divide by 30) - Default option when CMPA is blank. \u2022 111b - 12MHz input clock (Divide by 40)", + "values": [ + { + "name": "XTAL_24MHZ", + "value": 0, + "description": "24MHz input clock (Divide by 20)" + }, + { + "name": "XTAL_30MHZ", + "value": 1, + "description": "30MHz input clock (Divide by 16)" + }, + { + "name": "XTAL_32MHZ", + "value": 2, + "description": "32MHz input clock (Divide by 15)" + }, + { + "name": "XTAL_20MHZ", + "value": 4, + "description": "20MHz input clock (Divide by 24)" + }, + { + "name": "XTAL_19_2MHZ", + "value": 5, + "description": "19.2MHz input clock (Divide by 25)" + }, + { + "name": "XTAL_16MHZ", + "value": 6, + "description": "16MHz input clock (Divide by 30) - Default option when CMPA is blank" + }, + { + "name": "XTAL_12MHZ", + "value": 7, + "description": "12MHz input clock (Divide by 40)" + } + ] + }, + { + "width": 1, + "id": "field038-bit19", + "name": "PRE_DIV", + "description": "Enable Pre-divider. Needed to support 48MHz and other high speed crystals", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 12 + } + ] + }, + { + "id": "field03C", + "name": "ISP_MISC_CFG", + "description": "ISP Miscellaneous Configuration", + "offset_int": "0x003C", + "default_value_int": "0", + "bitfields": [ + { + "width": 8, + "id": "field03C-bits0-7", + "name": "I2C_SLAVE_ADDR", + "description": "I2C slave address A 7-bit Address used for selecting our device on shared I2C bus system. By default ROM uses 0x10 as slave address. If this address conflicts with another slave on board customer could use this field to override the address" + }, + { + "width": 14 + }, + { + "width": 2, + "id": "field03C-bits22-23", + "name": "ISP_USB_CUST", + "description": "Use customer defined GPIO for USB VBUS detect function during ISP mode", + "values": [ + { + "name": "DEDICATED", + "value": 0, + "description": "Use dedicated VBUS pins" + }, + { + "name": "USB0_VBUS", + "value": 1, + "description": "Customer defined GPIO for USB0_VBUS detect" + }, + { + "name": "USB1_VBUS", + "value": 2, + "description": "Customer defined GPIO for USB1_VBUS detect" + }, + { + "name": "VDD_USB", + "value": 3, + "description": "Use VDD_USB for VBUS presence. On board regulator should generate VDD_USB voltage using 5V input fo VBUS pin on connector" + } + ] + }, + { + "width": 2, + "id": "field03C-bits24-25", + "name": "ISP_CAN_CUST", + "description": "Use customer defined CAN ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field03C-bits26-27", + "name": "ISP_SPI_CUST", + "description": "Use customer defined SPI ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field03C-bits28-29", + "name": "ISP_I2C_CUST", + "description": "Use customer defined I2C ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + }, + { + "width": 2, + "id": "field03C-bits30-31", + "name": "ISP_UART_CUST", + "description": "Use customer defined UART ISP pins", + "values": [ + { + "name": "DEFAULT_0b00", + "value": 0, + "description": "Default ROM defined pins" + }, + { + "name": "CUST_DEF_0b01", + "value": 1, + "description": "Customer defined" + }, + { + "name": "DEFAULT_0b10", + "value": 2, + "description": "Default ROM defined pins" + }, + { + "name": "DEFAULT_0b11", + "value": 3, + "description": "Default ROM defined pins" + } + ] + } + ] + }, + { + "id": "field040", + "name": "CC_SOCU_PIN", + "description": "Credential Constraints for SoC specific Use Pinned", + "offset_int": "0x0040", + "deprecated_names": [ + "DCFG_CC_SOCU_PIN" + ], + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field040-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field040-bit5", + "name": "DSP_DBGEN", + "description": "DSP debug enable", + "values": [ + { + "name": "USE_Dap", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit6", + "name": "ISP_CMD_EN", + "description": "ISP boot command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit7", + "name": "FA_CMD_EN", + "description": "FA Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit8", + "name": "ME_CMD_EN", + "description": "Flash Mass Erase Command Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 Non-invasive Debug Enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field040-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug Fixed state", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Disabled" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 4 + }, + { + "width": 1, + "id": "field040-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Debug certificate can be used with all devices" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Debug certificate per device with matching UUID is needed" + } + ] + }, + { + "width": 16, + "id": "field040-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field044", + "name": "CC_SOCU_DFLT", + "description": "Credential Constraints for SoC specific Use Debug Filter", + "offset_int": "0x0044", + "deprecated_names": [ + "DCFG_CC_SOCU_DFLT" + ], + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field044-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit1", + "name": "DBGEN", + "description": "Non Secure debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field044-bit5", + "name": "DSP_DBGEN", + "description": "DSP debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit6", + "name": "ISP_CMD_EN", + "description": "ISP command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit7", + "name": "FA_CMD_EN", + "description": "Set FA mode command Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit8", + "name": "ME_CMD_EN", + "description": "Mass erase flash command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit9", + "name": "CPU1_NIDEN", + "description": "Second CM33 Non-Invasive Debug Fixed State", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field044-bit10", + "name": "CPU1_DBGEN", + "description": "Second CM33 debug Fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 5 + }, + { + "width": 16, + "id": "field044-bits16-31", + "name": "Inverse_value", + "description": "Inverse Value", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field048", + "name": "VENDOR_USAGE", + "description": "Vendor Usage", + "offset_int": "0x0048", + "default_value_int": "0", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field048-bits16-31", + "name": "VENDOR_USAGE", + "description": "Vendor Usage [31:16]. Upper 16 bits of vendor usage field defined in DAP. Lower 16-bits come from customer field area (CFPA.DBG_REVOKE_VU)" + } + ] + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "field050", + "name": "SECURE_BOOT_CFG", + "description": "Secure Boot Configuration", + "offset_int": "0x0050", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field050-bits0-1", + "name": "SEC_BOOT_EN", + "description": "Secure boot enforcement. This field defines the minimum image verification procedure (CRC32, CMAC, ECDSA sign). The Image type field in header indicates the type of verification data (checksum or signature) included in it. Note: Plain < CRC32 < CMAC < ECDSA", + "values": [ + { + "name": "ALL_IMAGES", + "value": 0, + "description": "All Image types are allowed" + }, + { + "name": "CRC32_IMAGES", + "value": 1, + "description": "Only CRC32 or signed (CMAC or ECDSA) images are allowed" + }, + { + "name": "SIGNED_IMAGES", + "value": 2, + "description": "Only Signed (CMAC or ECDSA) images are allowed" + }, + { + "name": "ECDSA_SIGNED", + "value": 3, + "description": "Only ECDSA signed images are allowed" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field050-bits3-4", + "name": "LP_SEC_BOOT", + "description": "Secure boot option for low-power wake from power-down and deep-powerdown. For CFPA/CMPA do CRC check always", + "values": [ + { + "name": "COLD_BOOT", + "value": 0, + "description": "Same as cold boot" + }, + { + "name": "CHECK_CRC32", + "value": 1, + "description": "CRC check for CFPA/CMPA & CRC32 check of active image" + }, + { + "name": "CHECK_JUMP", + "value": 2, + "description": "CRC check for CFPA/CMPA & jump to vector address specified in CFPA" + }, + { + "name": "CMAC_CHECK", + "value": 3, + "description": "CRC check for CFPA/CMPA & CMAC check of active image" + } + ] + }, + { + "width": 3 + }, + { + "width": 2, + "id": "field050-bits8-9", + "name": "ENF_CNSA", + "description": "Enforce CNSA suite approved algorithms for secure boot, secure update and debug authentication. Note, CMAC image authentication is only allowed in 2b'00 setting", + "values": [ + { + "name": "ALL_ALLOWED_0B00", + "value": 0, + "description": "All algorithm allowed" + }, + { + "name": "LIMITED_0B01", + "value": 1, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used" + }, + { + "name": "LIMITED_0B10", + "value": 2, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used" + }, + { + "name": "LIMITED_0B11", + "value": 3, + "description": "Only ECC P-384 keys, SHA384 & AES256 algorithms are used" + } + ] + }, + { + "width": 2, + "id": "field050-bits10-11", + "name": "ENF_TZM_PRESET", + "description": "Enforce TrustZone-M mode", + "values": [ + { + "name": "IGNORE_0B00", + "value": 0, + "description": "Ignored" + }, + { + "name": "ENFORCE_0B01", + "value": 1, + "description": "Enforce preset TZM data in image manifest" + }, + { + "name": "ENFORCE_0B10", + "value": 2, + "description": "Enforce preset TZM data in image manifest" + }, + { + "name": "ENFORCE_0B11", + "value": 3, + "description": "Enforce preset TZM data in image manifest" + } + ] + }, + { + "width": 2, + "id": "field050-bits12-13", + "name": "ITRC_ZEROIZE", + "description": "RAM zeroize on ITRC event. Zeroize long-term storage RAM (RAMA) on subsequent boot when Intrusion and Tamper control signals an intrusion event (ITRC_OUT3). Note, when ITRC is re-configured in application then ITRC_OUT4 (CHIP_RESET) should be triggered with at least same events as ITRC_OUT3 (RAM_ZEROIZE)", + "values": [ + { + "name": "NO_ACTION", + "value": 0, + "description": "No action" + }, + { + "name": "PKC_RAM_ON_ITRC", + "value": 1, + "description": "Always Zeroize PKC RAM on ITRC event only" + }, + { + "name": "PKC_RAMA_ON_ITRC", + "value": 2, + "description": "Zeroize PKC & RAMA on ITRC event only" + }, + { + "name": "PKC_RAMA_ALL_RESET", + "value": 3, + "description": "Always Zeroize PKC & RAMA on all reset boot" + } + ] + }, + { + "width": 2, + "id": "field050-bits14-15", + "name": "ACTIVE_IMG_PROT", + "description": "Protection of active image. This field defines protection of flash area occupied by the active image. Only applicable to internal flash", + "values": [ + { + "name": "FLASH_ACL_PROTECTION", + "value": 0, + "description": "Protection is defined using the CFPA FLASH_ACL settings" + }, + { + "name": "WITH_STICKY_LOCK", + "value": 1, + "description": "Write protect active image area with sticky lock. GLBAC2 is used. FLASH_ACL settings are ignored" + }, + { + "name": "NO_STICKY_LOCK", + "value": 2, + "description": "Write protect active image area without sticky lock. GLBAC4 is used. FLASH_ACL settings are ignored" + }, + { + "name": "XOM_PROTECTION", + "value": 3, + "description": "XOM protect active image area with sticky lock. GLBAC6 is used. FLASH_ACL settings are ignored" + } + ] + }, + { + "width": 2, + "id": "field050-bits16-17", + "name": "FIPS_SHA_STEN", + "description": "Enable self-test for SHA2 block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits18-19", + "name": "FIPS_AES_STEN", + "description": "Enable self-test for AES block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits20-21", + "name": "FIPS_ECDSA_STEN", + "description": "Enable self-test for ECDSA block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits22-23", + "name": "FIPS_DRBG_STEN", + "description": "Enable self-test for DRBG block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits24-25", + "name": "FIPS_CMAC_STEN", + "description": "Enable self-test for CMAC block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits26-27", + "name": "FIPS_KDF_STEN", + "description": "Enable self-test for KDF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2, + "id": "field050-bits28-29", + "name": "FIPS_PUF_STEN", + "description": "Enable self-test for PUF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in SYSCON->ELS_AS_BOOT_LOG1[FIPS]", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "FAILURE_BOOT", + "value": 1, + "description": "On failure continue to boot" + }, + { + "name": "FAILURE_ISP", + "value": 2, + "description": "On failure enter ISP mode for recovery" + }, + { + "name": "FAILURE_ENF_POWER", + "value": 3, + "description": "On failure lock the device to enforce power-cycle" + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "field054", + "name": "RoTK_USAGE", + "description": "Root of Trust Key Usage", + "offset_int": "0x0054", + "default_value_int": "0", + "bitfields": [ + { + "width": 3, + "id": "field054-bits0-2", + "name": "RoTK0_Usage", + "description": "RoT key 0 usage properties", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA" + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field054-bits3-5", + "name": "RoTK1_Usage", + "description": "RoT key 1 usage properties", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA" + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field054-bits6-8", + "name": "RoTK2_Usage", + "description": "RoT key 2 usage properties", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA" + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 3, + "id": "field054-bits9-11", + "name": "RoTK3_Usage", + "description": "RoT key 3 usage properties", + "values": [ + { + "name": "USABLE", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key" + }, + { + "name": "DEBUG", + "value": 1, + "description": "Usable as debug CA only" + }, + { + "name": "IMG_BOOT_FW", + "value": 2, + "description": "Usable as image (boot & FW) CA only" + }, + { + "name": "DEBUG_BOOT_FW_IMG", + "value": 3, + "description": "Usable as debug, boot & FW image CA" + }, + { + "name": "IMG_FW_UPDATE_KEY", + "value": 4, + "description": "Usable as image key & FW update key only" + }, + { + "name": "BOOT_IMAGE_KEY", + "value": 5, + "description": "Usable as boot image key only" + }, + { + "name": "FW_UPDATE_IMG_KEY", + "value": 6, + "description": "Usable as FW update image key only" + }, + { + "name": "KEY_SLOT_NOT_USED", + "value": 7, + "description": "Key slot is not used" + } + ] + }, + { + "width": 1, + "id": "field054-bit12", + "name": "SKIP_DICE", + "description": "Skip DICE computation", + "values": [ + { + "name": "ENABLE_DICE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_DICE", + "value": 1, + "description": "Disable DICE" + } + ] + }, + { + "width": 1, + "id": "field054-bit13", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area (IFR1) containing specific part configuration data defined during chip manufacturing process in DICE computation", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 1, + "id": "field054-bit14", + "name": "DICE_INC_CUST_CFG", + "description": "Include data from CMPA page (512 bytes) in DICE computation", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "included" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "field054-bits16-17", + "name": "REG0_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 0. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check. 0x - ROM API will not perform erase check", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Erase check is disabled" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Erase check is disabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Erase heck is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Erase check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits18-19", + "name": "REG1_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 1. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check. 0x - ROM API will not perform erase check", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Erase check is disabled" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Erase check is disabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Erase heck is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Erase check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits20-21", + "name": "REG2_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 2. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check. 0x - ROM API will not perform erase check", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Erase check is disabled" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Erase check is disabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Erase heck is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Erase check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits22-23", + "name": "REG3_ERASE_CHECK_EN", + "description": "Enable erase check for NPX PRINCE context 3. When erase check is enabled ROM API will enforce a check to guarantee that all sectors selected in the context are erased together. When erase check is enabled only contiguous sectors can be selected in context bitmap. 0x - ROM API will not perform erase check. 1x - ROM API will perform erase check. 0x - ROM API will not perform erase check", + "values": [ + { + "name": "DISABLED_0b00", + "value": 0, + "description": "Erase check is disabled" + }, + { + "name": "DISABLED_0b01", + "value": 1, + "description": "Erase check is disabled" + }, + { + "name": "ENABLED_0b10", + "value": 2, + "description": "Erase heck is enabled" + }, + { + "name": "ENABLED_0b11", + "value": 3, + "description": "Erase check is enabled" + } + ] + }, + { + "width": 2, + "id": "field054-bits24-25", + "name": "NPX_LOCK_CTX0", + "description": "Lock on-chip flash NPX PRINCE context 0 settings. Note: when locking a region recommendation is to also enable erase checking using the REG0_ERASE_CHECK_EN field", + "values": [ + { + "name": "NOT_LOCKED_0B00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0B01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field054-bits26-27", + "name": "NPX_LOCK_CTX1", + "description": "Lock on-chip flash NPX PRINCE context 1 settings. Note: when locking a region recommendation is to also enable erase checking using the REG1_ERASE_CHECK_EN field", + "values": [ + { + "name": "NOT_LOCKED_0B00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0B01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field054-bits28-29", + "name": "NPX_LOCK_CTX2", + "description": "Lock on-chip flash NPX PRINCE context 2 settings. Note: when locking a region recommendation is to also enable erase checking using the REG2_ERASE_CHECK_EN field", + "values": [ + { + "name": "NOT_LOCKED_0B00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0B01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 2, + "id": "field054-bits30-31", + "name": "NPX_LOCK_CTX3", + "description": "Lock on-chip flash NPX PRINCE context 3 settings. Note: when locking a region recommendation is to also enable erase checking using the REG3_ERASE_CHECK_EN field", + "values": [ + { + "name": "NOT_LOCKED_0B00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0B01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0B11", + "value": 3, + "description": "Region is locked" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00058-0005C", + "description": "Reserved 00058-0005C" + }, + "registers": [ + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH (Root of Trust Key Hash) configuration" + }, + "registers": [ + { + "id": "field060", + "name": "ROTKH0", + "description": "Root of Trust Key Hash 0", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field064", + "name": "ROTKH1", + "description": "Root of Trust Key Hash 1", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field068", + "name": "ROTKH2", + "description": "Root of Trust Key Hash 2", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field06C", + "name": "ROTKH3", + "description": "Root of Trust Key Hash 3", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field070", + "name": "ROTKH4", + "description": "Root of Trust Key Hash 4", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field074", + "name": "ROTKH5", + "description": "Root of Trust Key Hash 5", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field078", + "name": "ROTKH6", + "description": "Root of Trust Key Hash 6", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field07C", + "name": "ROTKH7", + "description": "Root of Trust Key Hash 7", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field080", + "name": "ROTKH8", + "description": "Root of Trust Key Hash 8", + "offset_int": "0x0080", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field084", + "name": "ROTKH9", + "description": "Root of Trust Key Hash 9", + "offset_int": "0x0084", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field088", + "name": "ROTKH10", + "description": "Root of Trust Key Hash 10", + "offset_int": "0x0088", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field08C", + "name": "ROTKH11", + "description": "Root of Trust Key Hash 11", + "offset_int": "0x008C", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "NPX_CTX", + "description": "Prince region configuration" + }, + "registers": [ + { + "id": "field090", + "name": "NPX_CTX0_WD0", + "description": "Bitmap mask for NPX Prince context 0 (sectors .ROM copies this value to NPX->VMAPCTX0_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX0 key and IV.", + "offset_int": "0x0090", + "default_value_int": "0" + }, + { + "id": "field094", + "name": "NPX_CTX0_WD1", + "description": "Bitmap mask for NPX Prince context 0 (sectors .ROM copies this value to NPX->VMAPCTX0_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX0 key and IV.", + "offset_int": "0x0094", + "default_value_int": "0" + }, + { + "id": "field098", + "name": "NPX_CTX1_WD0", + "description": "Bitmap mask for NPX Prince context 1 (sectors .ROM copies this value to NPX->VMAPCTX1_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX1 key and IV.", + "offset_int": "0x0098", + "default_value_int": "0" + }, + { + "id": "field09C", + "name": "NPX_CTX1_WD1", + "description": "Bitmap mask for NPX Prince context 1 (sectors .ROM copies this value to NPX->VMAPCTX1_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX1 key and IV.", + "offset_int": "0x009C", + "default_value_int": "0" + }, + { + "id": "field0A0", + "name": "NPX_CTX2_WD0", + "description": "Bitmap mask for NPX Prince context 2 (sectors .ROM copies this value to NPX->VMAPCTX2_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX2 key and IV.", + "offset_int": "0x00A0", + "default_value_int": "0" + }, + { + "id": "field0A4", + "name": "NPX_CTX2_WD1", + "description": "Bitmap mask for NPX Prince context 2 (sectors .ROM copies this value to NPX->VMAPCTX2_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX2 key and IV.", + "offset_int": "0x00A4", + "default_value_int": "0" + }, + { + "id": "field0A8", + "name": "NPX_CTX3_WD0", + "description": "Bitmap mask for NPX Prince context 3 (sectors .ROM copies this value to NPX->VMAPCTX3_WD0 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX3 key and IV.", + "offset_int": "0x00A8", + "default_value_int": "0" + }, + { + "id": "field0AC", + "name": "NPX_CTX3_WD1", + "description": "Bitmap mask for NPX Prince context 3 (sectors .ROM copies this value to NPX->VMAPCTX3_WD1 register during flash initialization. This bitmask indicates which 32KB block is encrypted/decrypted using CTX3 key and IV.", + "offset_int": "0x00AC", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "IPED", + "description": "IPED region configuration" + }, + "registers": [ + { + "id": "field0B0", + "name": "IPED0_START", + "description": "IPED region 0 Start", + "offset_int": "0x00B0", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0B0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0B0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0B0-bits8-31", + "name": "IPED_CTX0_START_ADDR", + "description": "Upper 24-bits of IPED region 0 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0B4", + "name": "IPED0_END", + "description": "IPED region 0 End", + "offset_int": "0x00B4", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0B4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0B4-bits8-31", + "name": "IPED_CTX0_END_ADDR", + "description": "Upper 24-bits of IPED region 0 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0B8", + "name": "IPED1_START", + "description": "IPED region 1 Start", + "offset_int": "0x00B8", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0B8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0B8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0B8-bits8-31", + "name": "IPED_CTX1_START_ADDR", + "description": "Upper 24-bits of IPED region 1 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0BC", + "name": "IPED1_END", + "description": "IPED region 1 End", + "offset_int": "0x00BC", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0BC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0BC-bits8-31", + "name": "IPED_CTX1_END_ADDR", + "description": "Upper 24-bits of IPED region 1 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0C0", + "name": "IPED2_START", + "description": "IPED region 2 Start", + "offset_int": "0x00C0", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0C0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0C0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0C0-bits8-31", + "name": "IPED_CTX2_START_ADDR", + "description": "Upper 24-bits of IPED region 2 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0C4", + "name": "IPED2_END", + "description": "IPED region 2 End", + "offset_int": "0x00C4", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0C4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0C4-bits8-31", + "name": "IPED_CTX2_END_ADDR", + "description": "Upper 24-bits of IPED region 2 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0C8", + "name": "IPED3_START", + "description": "IPED region 3 Start", + "offset_int": "0x00C8", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0C8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0C8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0C8-bits8-31", + "name": "IPED_CTX3_START_ADDR", + "description": "Upper 24-bits of IPED region 3 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0CC", + "name": "IPED3_END", + "description": "IPED region 3 End", + "offset_int": "0x00CC", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0CC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0CC-bits8-31", + "name": "IPED_CTX3_END_ADDR", + "description": "Upper 24-bits of IPED region 3 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0D0", + "name": "IPED4_START", + "description": "IPED region 4 Start", + "offset_int": "0x00D0", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0D0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0D0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0D0-bits8-31", + "name": "IPED_CTX4_START_ADDR", + "description": "Upper 24-bits of IPED region 4 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0D4", + "name": "IPED4_END", + "description": "IPED region 4 End", + "offset_int": "0x00D4", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0D4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0D4-bits8-31", + "name": "IPED_CTX4_END_ADDR", + "description": "Upper 24-bits of IPED region 4 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0D8", + "name": "IPED5_START", + "description": "IPED region 5 Start", + "offset_int": "0x00D8", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0D8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0D8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0D8-bits8-31", + "name": "IPED_CTX5_START_ADDR", + "description": "Upper 24-bits of IPED region 5 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0DC", + "name": "IPED5_END", + "description": "IPED region 5 End", + "offset_int": "0x00DC", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0DC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0DC-bits8-31", + "name": "IPED_CTX5_END_ADDR", + "description": "Upper 24-bits of IPED region 5 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0E0", + "name": "IPED6_START", + "description": "IPED region 6 Start", + "offset_int": "0x00E0", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0E0-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0E0-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0E0-bits8-31", + "name": "IPED_CTX6_START_ADDR", + "description": "Upper 24-bits of IPED region 6 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0E4", + "name": "IPED6_END", + "description": "IPED region 6 End", + "offset_int": "0x00E4", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0E4-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0E4-bits8-31", + "name": "IPED_CTX6_END_ADDR", + "description": "Upper 24-bits of IPED region 6 end address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0E8", + "name": "IPED7_START", + "description": "IPED region 7 Start", + "offset_int": "0x00E8", + "default_value_int": "0", + "bitfields": [ + { + "width": 1, + "id": "field0E8-bit0", + "name": "GCM_MODE", + "description": "GCM mode enable", + "values": [ + { + "name": "ENABLE_CTR_MODE", + "value": 0, + "description": "Region is enabled in CTR mode" + }, + { + "name": "ENABLE_GCM_MODE", + "value": 1, + "description": "Region is enabled in GCM mode" + } + ] + }, + { + "width": 1, + "id": "field0E8-bit1", + "name": "AHBERR_DIS", + "description": "Disable AHB bus error. If GCM authentication fails generates bus error or not", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Bus error enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Bus error disabled" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0E8-bits8-31", + "name": "IPED_CTX7_START_ADDR", + "description": "Upper 24-bits of IPED region 7 start address. Lower 8 address bits are always 0" + } + ] + }, + { + "id": "field0EC", + "name": "IPED7_END", + "description": "IPED region 7 End", + "offset_int": "0x00EC", + "default_value_int": "0", + "bitfields": [ + { + "width": 2, + "id": "field0EC-bits0-1", + "name": "LOCK_EN", + "description": "Lock the external PRINCE context settings", + "values": [ + { + "name": "NOT_LOCKED_0b00", + "value": 0, + "description": "Region is not locked" + }, + { + "name": "LOCKED_0b01", + "value": 1, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b10", + "value": 2, + "description": "Region is locked" + }, + { + "name": "LOCKED_0b11", + "value": 3, + "description": "Region is locked" + } + ] + }, + { + "width": 6 + }, + { + "width": 24, + "id": "field0EC-bits8-31", + "name": "IPED_CTX7_END_ADDR", + "description": "Upper 24-bits of IPED region 7 end address. Lower 8 address bits are always 0" + } + ] + } + ] + }, + { + "group": { + "name": "REC_IMG", + "description": "Recovery image configuration" + }, + "registers": [ + { + "id": "field0F0", + "name": "REC_IMG_EXT0", + "description": "Bitmap mask to indicate sectors included in recovery image (sectors .Recovery image is programmed in BANK1_IFR0. But if the image size is more than 32KB, this field can be used to indicate sectors to include in recovery image.ROM will configure flash protection setting for these sectors the same as BANK1_IFR0 before exiting to user code. The protection settings are managed through CMPA.OEM_BANK1_IFR0_PROT. The lower 8 sectors are excluded from this mask to avoid conflicts with dual image boot feature.", + "offset_int": "0x00F0", + "default_value_int": "0", + "bitfields": [ + { + "width": 8 + }, + { + "width": 1, + "id": "field0F0-bit8", + "name": "REC_IMG_EXT0_SEC8", + "description": "REC_IMG_EXT0_SEC set protection for memory in range 0x40000:0x47FFF" + }, + { + "width": 1, + "id": "field0F0-bit9", + "name": "REC_IMG_EXT0_SEC9", + "description": "REC_IMG_EXT0_SEC9 set protection for memory in range 0x48000:0x4FFFF" + }, + { + "width": 1, + "id": "field0F0-bit10", + "name": "REC_IMG_EXT0_SEC10", + "description": "REC_IMG_EXT0_SEC10 set protection for memory in range 0x50000:0x57FFF" + }, + { + "width": 1, + "id": "field0F0-bit11", + "name": "REC_IMG_EXT0_SEC11", + "description": "REC_IMG_EXT0_SEC11 set protection for memory in range 0x58000:0x5FFFF" + }, + { + "width": 1, + "id": "field0F0-bit12", + "name": "REC_IMG_EXT0_SEC12", + "description": "REC_IMG_EXT0_SEC12 set protection for memory in range 0x60000:0x67FFF" + }, + { + "width": 1, + "id": "field0F0-bit13", + "name": "REC_IMG_EXT0_SEC13", + "description": "REC_IMG_EXT0_SEC13 set protection for memory in range 0x68000:0x6FFFF" + }, + { + "width": 1, + "id": "field0F0-bit14", + "name": "REC_IMG_EXT0_SEC14", + "description": "REC_IMG_EXT0_SEC14 set protection for memory in range 0x70000:0x77FFF" + }, + { + "width": 1, + "id": "field0F0-bit15", + "name": "REC_IMG_EXT0_SEC15", + "description": "REC_IMG_EXT0_SEC15 set protection for memory in range 0x78000:0x7FFFF" + }, + { + "width": 1, + "id": "field0F0-bit16", + "name": "REC_IMG_EXT0_SEC16", + "description": "REC_IMG_EXT0_SEC16 set protection for memory in range 0x80000:0x87FFF" + }, + { + "width": 1, + "id": "field0F0-bit17", + "name": "REC_IMG_EXT0_SEC17", + "description": "REC_IMG_EXT0_SEC17 set protection for memory in range 0x88000:0x8FFFF" + }, + { + "width": 1, + "id": "field0F0-bit18", + "name": "REC_IMG_EXT0_SEC18", + "description": "REC_IMG_EXT0_SEC18 set protection for memory in range 0x90000:0x97FFF" + }, + { + "width": 1, + "id": "field0F0-bit19", + "name": "REC_IMG_EXT0_SEC19", + "description": "REC_IMG_EXT0_SEC19 set protection for memory in range 0x98000:0x9FFFF" + }, + { + "width": 1, + "id": "field0F0-bit20", + "name": "REC_IMG_EXT0_SEC20", + "description": "REC_IMG_EXT0_SEC20 set protection for memory in range 0xA0000:0xA7FFF" + }, + { + "width": 1, + "id": "field0F0-bit21", + "name": "REC_IMG_EXT0_SEC21", + "description": "REC_IMG_EXT0_SEC21 set protection for memory in range 0xA8000:0xAFFFF" + }, + { + "width": 1, + "id": "field0F0-bit22", + "name": "REC_IMG_EXT0_SEC22", + "description": "REC_IMG_EXT0_SEC22 set protection for memory in range 0xB0000:0xB7FFF" + }, + { + "width": 1, + "id": "field0F0-bit23", + "name": "REC_IMG_EXT0_SEC23", + "description": "REC_IMG_EXT0_SEC23 set protection for memory in range 0xB8000:0xBFFFF" + }, + { + "width": 1, + "id": "field0F0-bit24", + "name": "REC_IMG_EXT0_SEC24", + "description": "REC_IMG_EXT0_SEC24 set protection for memory in range 0xC0000:0xC7FFF" + }, + { + "width": 1, + "id": "field0F0-bit25", + "name": "REC_IMG_EXT0_SEC25", + "description": "REC_IMG_EXT0_SEC25 set protection for memory in range 0xC8000:0xCFFFF" + }, + { + "width": 1, + "id": "field0F0-bit26", + "name": "REC_IMG_EXT0_SEC26", + "description": "REC_IMG_EXT0_SEC26 set protection for memory in range 0xD0000:0xD7FFF" + }, + { + "width": 1, + "id": "field0F0-bit27", + "name": "REC_IMG_EXT0_SEC27", + "description": "REC_IMG_EXT0_SEC27 set protection for memory in range 0xD8000:0xDFFFF" + }, + { + "width": 1, + "id": "field0F0-bit28", + "name": "REC_IMG_EXT0_SEC28", + "description": "REC_IMG_EXT0_SEC28 set protection for memory in range 0xE0000:0xE7FFF" + }, + { + "width": 1, + "id": "field0F0-bit29", + "name": "REC_IMG_EXT0_SEC29", + "description": "REC_IMG_EXT0_SEC29 set protection for memory in range 0xE8000:0xEFFFF" + }, + { + "width": 1, + "id": "field0F0-bit30", + "name": "REC_IMG_EXT0_SEC30", + "description": "REC_IMG_EXT0_SEC30 set protection for memory in range 0xF0000:0xF7FFF" + }, + { + "width": 1, + "id": "field0F0-bit31", + "name": "REC_IMG_EXT0_SEC31", + "description": "REC_IMG_EXT0_SEC31 set protection for memory in range 0xF8000:0xFFFFF" + } + ] + }, + { + "id": "field0F4", + "name": "REC_IMG_EXT1", + "description": "Bitmap mask to indicate sectors included in recovery image (sectors .Recovery image is programmed in BANK1_IFR0. But if the image size is more than 32KB, this field can be used to indicate sectors to include in recovery image.ROM will configure flash protection setting for these sectors the same as BANK1_IFR0 before exiting to user code. The protection settings are managed through CMPA.OEM_BANK1_IFR0_PROT. The lower 8 sectors are excluded from this mask to avoid conflicts with dual image boot feature.", + "offset_int": "0x00F4", + "default_value_int": "0", + "bitfields": [ + { + "width": 8 + }, + { + "width": 1, + "id": "field0F4-bit8", + "name": "REC_IMG_EXT1_SEC40", + "description": "REC_IMG_EXT1_SEC40 set protection for memory in range 0x140000:0x147FFF" + }, + { + "width": 1, + "id": "field0F4-bit9", + "name": "REC_IMG_EXT1_SEC41", + "description": "REC_IMG_EXT1_SEC41 set protection for memory in range 0x148000:0x14FFFF" + }, + { + "width": 1, + "id": "field0F4-bit10", + "name": "REC_IMG_EXT1_SEC42", + "description": "REC_IMG_EXT1_SEC42 set protection for memory in range 0x150000:0x157FFF" + }, + { + "width": 1, + "id": "field0F4-bit11", + "name": "REC_IMG_EXT1_SEC43", + "description": "REC_IMG_EXT1_SEC43 set protection for memory in range 0x158000:0x15FFFF" + }, + { + "width": 1, + "id": "field0F4-bit12", + "name": "REC_IMG_EXT1_SEC44", + "description": "REC_IMG_EXT1_SEC44 set protection for memory in range 0x160000:0x167FFF" + }, + { + "width": 1, + "id": "field0F4-bit13", + "name": "REC_IMG_EXT1_SEC45", + "description": "REC_IMG_EXT1_SEC45 set protection for memory in range 0x168000:0x16FFFF" + }, + { + "width": 1, + "id": "field0F4-bit14", + "name": "REC_IMG_EXT1_SEC46", + "description": "REC_IMG_EXT1_SEC46 set protection for memory in range 0x170000:0x177FFF" + }, + { + "width": 1, + "id": "field0F4-bit15", + "name": "REC_IMG_EXT1_SEC47", + "description": "REC_IMG_EXT1_SEC47 set protection for memory in range 0x178000:0x17FFFF" + }, + { + "width": 1, + "id": "field0F4-bit16", + "name": "REC_IMG_EXT1_SEC48", + "description": "REC_IMG_EXT1_SEC48 set protection for memory in range 0x180000:0x187FFF" + }, + { + "width": 1, + "id": "field0F4-bit17", + "name": "REC_IMG_EXT1_SEC49", + "description": "REC_IMG_EXT1_SEC49 set protection for memory in range 0x188000:0x18FFFF" + }, + { + "width": 1, + "id": "field0F4-bit18", + "name": "REC_IMG_EXT1_SEC50", + "description": "REC_IMG_EXT1_SEC50 set protection for memory in range 0x190000:0x197FFF" + }, + { + "width": 1, + "id": "field0F4-bit19", + "name": "REC_IMG_EXT1_SEC51", + "description": "REC_IMG_EXT1_SEC51 set protection for memory in range 0x198000:0x19FFFF" + }, + { + "width": 1, + "id": "field0F4-bit20", + "name": "REC_IMG_EXT1_SEC52", + "description": "REC_IMG_EXT1_SEC52 set protection for memory in range 0x1A0000:0x1A7FFF" + }, + { + "width": 1, + "id": "field0F4-bit21", + "name": "REC_IMG_EXT1_SEC53", + "description": "REC_IMG_EXT1_SEC53 set protection for memory in range 0x1A8000:0x1AFFFF" + }, + { + "width": 1, + "id": "field0F4-bit22", + "name": "REC_IMG_EXT1_SEC54", + "description": "REC_IMG_EXT1_SEC54 set protection for memory in range 0x1B0000:0x1B7FFF" + }, + { + "width": 1, + "id": "field0F4-bit23", + "name": "REC_IMG_EXT1_SEC55", + "description": "REC_IMG_EXT1_SEC55 set protection for memory in range 0x1B8000:0x1BFFFF" + }, + { + "width": 1, + "id": "field0F4-bit24", + "name": "REC_IMG_EXT1_SEC56", + "description": "REC_IMG_EXT1_SEC56 set protection for memory in range 0x1C0000:0x1C7FFF" + }, + { + "width": 1, + "id": "field0F4-bit25", + "name": "REC_IMG_EXT1_SEC57", + "description": "REC_IMG_EXT1_SEC57 set protection for memory in range 0x1C8000:0x1CFFFF" + }, + { + "width": 1, + "id": "field0F4-bit26", + "name": "REC_IMG_EXT1_SEC58", + "description": "REC_IMG_EXT0_SEC58 set protection for memory in range 0x1D0000:0x1D7FFF" + }, + { + "width": 1, + "id": "field0F4-bit27", + "name": "REC_IMG_EXT1_SEC59", + "description": "REC_IMG_EXT0_SEC59 set protection for memory in range 0x1D8000:0x1DFFFF" + }, + { + "width": 1, + "id": "field0F4-bit28", + "name": "REC_IMG_EXT1_SEC60", + "description": "REC_IMG_EXT0_SEC60 set protection for memory in range 0x1E0000:0x1E7FFF" + }, + { + "width": 1, + "id": "field0F4-bit29", + "name": "REC_IMG_EXT1_SEC61", + "description": "REC_IMG_EXT0_SEC61 set protection for memory in range 0x1E8000:0x1EFFFF" + }, + { + "width": 1, + "id": "field0F4-bit30", + "name": "REC_IMG_EXT1_SEC62", + "description": "REC_IMG_EXT0_SEC62 set protection for memory in range 0x1F0000:0x1F7FFF" + }, + { + "width": 1, + "id": "field0F4-bit31", + "name": "REC_IMG_EXT1_SEC63", + "description": "REC_IMG_EXT0_SEC63 set protection for memory in range 0x1F8000:0x1FFFFF" + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 000F8-0011C", + "description": "Reserved 000F8-0011C" + }, + "registers": [ + { + "id": "Reserved000F8", + "name": "Reserved 0x000F8", + "description": "This field is reserved for internal use", + "offset_int": "0x00F8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved000FC", + "name": "Reserved 0x000FC", + "description": "This field is reserved for internal use", + "offset_int": "0x00FC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00100", + "name": "Reserved 0x00100", + "description": "This field is reserved for internal use", + "offset_int": "0x0100", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00104", + "name": "Reserved 0x00104", + "description": "This field is reserved for internal use", + "offset_int": "0x0104", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00108", + "name": "Reserved 0x00108", + "description": "This field is reserved for internal use", + "offset_int": "0x0108", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0010C", + "name": "Reserved 0x0010C", + "description": "This field is reserved for internal use", + "offset_int": "0x010C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00110", + "name": "Reserved 0x00110", + "description": "This field is reserved for internal use", + "offset_int": "0x0110", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00114", + "name": "Reserved 0x00114", + "description": "This field is reserved for internal use", + "offset_int": "0x0114", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00118", + "name": "Reserved 0x00118", + "description": "This field is reserved for internal use", + "offset_int": "0x0118", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0011C", + "name": "Reserved 0x0011C", + "description": "This field is reserved for internal use", + "offset_int": "0x011C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Quick GPIO Configuration", + "description": "Quick GPIO Configuration" + }, + "registers": [ + { + "id": "field120", + "name": "QUICK_SET_GPIO_0", + "description": "Drive GPIO 0 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_0 and QUICK_CLR_GPIO_0 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0120", + "default_value_int": "0" + }, + { + "id": "field124", + "name": "QUICK_CLR_GPIO_0", + "description": "Drive GPIO 0 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_0 and QUICK_CLR_GPIO_0 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0124", + "default_value_int": "0" + }, + { + "id": "field128", + "name": "QUICK_SET_GPIO_1", + "description": "Drive GPIO 1 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_1 and QUICK_CLR_GPIO_1 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0128", + "default_value_int": "0" + }, + { + "id": "field12C", + "name": "QUICK_CLR_GPIO_1", + "description": "Drive GPIO 1 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_1 and QUICK_CLR_GPIO_1 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x012C", + "default_value_int": "0" + }, + { + "id": "field130", + "name": "QUICK_SET_GPIO_2", + "description": "Drive GPIO 2 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_2 and QUICK_CLR_GPIO_2 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0130", + "default_value_int": "0" + }, + { + "id": "field134", + "name": "QUICK_CLR_GPIO_2", + "description": "Drive GPIO 2 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_2 and QUICK_CLR_GPIO_2 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0134", + "default_value_int": "0" + }, + { + "id": "field138", + "name": "QUICK_SET_GPIO_3", + "description": "Drive GPIO 3 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_3 and QUICK_CLR_GPIO_3 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0138", + "default_value_int": "0" + }, + { + "id": "field13C", + "name": "QUICK_CLR_GPIO_3", + "description": "Drive GPIO 3 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_3 and QUICK_CLR_GPIO_3 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x013C", + "default_value_int": "0" + }, + { + "id": "field140", + "name": "QUICK_SET_GPIO_4", + "description": "Drive GPIO 4 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_4 and QUICK_CLR_GPIO_4 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0140", + "default_value_int": "0" + }, + { + "id": "field144", + "name": "QUICK_CLR_GPIO_4", + "description": "Drive GPIO 4 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_4 and QUICK_CLR_GPIO_4 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0144", + "default_value_int": "0" + }, + { + "id": "field148", + "name": "QUICK_SET_GPIO_5", + "description": "Drive GPIO 5 port [31:0] pins high after reset. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_5 and QUICK_CLR_GPIO_5 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x0148", + "default_value_int": "0" + }, + { + "id": "field14C", + "name": "QUICK_CLR_GPIO_5", + "description": "Drive GPIO 5 port [31:0] pins low. Each bit corresponds to the pin in GPIO port 0. When set ROM drives the corresponding pin high as soon as possible. By default most pins come-up as tri-stated inputs. This feature allows customer to specify active drive pins soon after reset instead of waiting till complete boot. Note, if a pin is selected in both QUICK_SET_GPIO_5 and QUICK_CLR_GPIO_5 fields then pin will be set to high-level with quick transition to low.", + "offset_int": "0x014C", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00150-0015C", + "description": "Reserved 00150-0015C" + }, + "registers": [ + { + "id": "Reserved00150", + "name": "Reserved 0x00150", + "description": "This field is reserved for internal use", + "offset_int": "0x0150", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00154", + "name": "Reserved 0x00154", + "description": "This field is reserved for internal use", + "offset_int": "0x0154", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00158", + "name": "Reserved 0x00158", + "description": "This field is reserved for internal use", + "offset_int": "0x0158", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0015C", + "name": "Reserved 0x0015C", + "description": "This field is reserved for internal use", + "offset_int": "0x015C", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CUST_MK_SK", + "description": "CUST_MK_SK key blob" + }, + "registers": [ + { + "id": "field160", + "name": "CUST_MK_SK_KEY_BLOB0", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x0160", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field164", + "name": "CUST_MK_SK_KEY_BLOB1", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x0164", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field168", + "name": "CUST_MK_SK_KEY_BLOB2", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x0168", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field16C", + "name": "CUST_MK_SK_KEY_BLOB3", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x016C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field170", + "name": "CUST_MK_SK_KEY_BLOB4", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x0170", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field174", + "name": "CUST_MK_SK_KEY_BLOB5", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x0174", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field178", + "name": "CUST_MK_SK_KEY_BLOB6", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x0178", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field17C", + "name": "CUST_MK_SK_KEY_BLOB7", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x017C", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field180", + "name": "CUST_MK_SK_KEY_BLOB8", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x0180", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field184", + "name": "CUST_MK_SK_KEY_BLOB9", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x0184", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field188", + "name": "CUST_MK_SK_KEY_BLOB10", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x0188", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field18C", + "name": "CUST_MK_SK_KEY_BLOB11", + "description": "CUST_MK_SK is stored in form of RFC3394 blob and it is used by bootloader to decrypt SB3.1 encryption key during processing of SB file by bootloader. CUST_MK_SK is generated during device provisioning process by HSM_KEY_GEN (random key) or by HSM_STORE_KEY (user defined key) commands. To store this key into CMPA, SB_STORE_KEY command should be used.", + "offset_int": "0x018C", + "access": "RO", + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "Reserved 00190-001E8", + "description": "Reserved 00190-001E8" + }, + "registers": [ + { + "id": "Reserved00190", + "name": "Reserved 0x00190", + "description": "This field is reserved for internal use", + "offset_int": "0x0190", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00194", + "name": "Reserved 0x00194", + "description": "This field is reserved for internal use", + "offset_int": "0x0194", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved00198", + "name": "Reserved 0x00198", + "description": "This field is reserved for internal use", + "offset_int": "0x0198", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved0019C", + "name": "Reserved 0x0019C", + "description": "This field is reserved for internal use", + "offset_int": "0x019C", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A0", + "name": "Reserved 0x001A0", + "description": "This field is reserved for internal use", + "offset_int": "0x01A0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A4", + "name": "Reserved 0x001A4", + "description": "This field is reserved for internal use", + "offset_int": "0x01A4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001A8", + "name": "Reserved 0x001A8", + "description": "This field is reserved for internal use", + "offset_int": "0x01A8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001AC", + "name": "Reserved 0x001AC", + "description": "This field is reserved for internal use", + "offset_int": "0x01AC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B0", + "name": "Reserved 0x001B0", + "description": "This field is reserved for internal use", + "offset_int": "0x01B0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B4", + "name": "Reserved 0x001B4", + "description": "This field is reserved for internal use", + "offset_int": "0x01B4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001B8", + "name": "Reserved 0x001B8", + "description": "This field is reserved for internal use", + "offset_int": "0x01B8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001BC", + "name": "Reserved 0x001BC", + "description": "This field is reserved for internal use", + "offset_int": "0x01BC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C0", + "name": "Reserved 0x001C0", + "description": "This field is reserved for internal use", + "offset_int": "0x01C0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C4", + "name": "Reserved 0x001C4", + "description": "This field is reserved for internal use", + "offset_int": "0x01C4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001C8", + "name": "Reserved 0x001C8", + "description": "This field is reserved for internal use", + "offset_int": "0x01C8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001CC", + "name": "Reserved 0x001CC", + "description": "This field is reserved for internal use", + "offset_int": "0x01CC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D0", + "name": "Reserved 0x001D0", + "description": "This field is reserved for internal use", + "offset_int": "0x01D0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D4", + "name": "Reserved 0x001D4", + "description": "This field is reserved for internal use", + "offset_int": "0x01D4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001D8", + "name": "Reserved 0x001D8", + "description": "This field is reserved for internal use", + "offset_int": "0x01D8", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001DC", + "name": "Reserved 0x001DC", + "description": "This field is reserved for internal use", + "offset_int": "0x01DC", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E0", + "name": "Reserved 0x001E0", + "description": "This field is reserved for internal use", + "offset_int": "0x01E0", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E4", + "name": "Reserved 0x001E4", + "description": "This field is reserved for internal use", + "offset_int": "0x01E4", + "is_reserved": true, + "default_value_int": "0" + }, + { + "id": "Reserved001E8", + "name": "Reserved 0x001E8", + "description": "This field is reserved for internal use", + "offset_int": "0x01E8", + "is_reserved": true, + "default_value_int": "0" + } + ] + }, + { + "group": { + "name": "CRC - CMAC", + "description": "CRC32 and CMAC CMPA securing" + }, + "registers": [ + { + "id": "field1EC", + "name": "CMPA_CRC32", + "description": "CRC32 of CMPA page data from offset . ROM updates this field along with CMPA_CMAC. ROM uses this field based on CMPA.LP_SEC_BOOT field option.", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F0", + "name": "CMPA_CMAC0", + "description": "CMAC[31:0] of CMPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F4", + "name": "CMPA_CMAC1", + "description": "CMAC[31:0] of CMPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1F8", + "name": "CMPA_CMAC2", + "description": "CMAC[31:0] of CMPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0" + }, + { + "id": "field1FC", + "name": "CMPA_CMAC3", + "description": "CMAC[31:0] of CMPA page data from offset . ROM updates this field on subsequent boot after page update.", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0" + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/tz_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/tz_a0.json new file mode 100644 index 0000000..4e54fc7 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/tz_a0.json @@ -0,0 +1,1525 @@ +{ + "cpu": "mcxn946", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Start of block (tzm_magic)", + "description": "TrustZone register - Start of block (tzm_magic)", + "default_value_int": "0x4d2d5a54" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "description": "TrustZone register - Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "Interrupt target non-secure register 3 (cm33_nvic_itns3)", + "description": "TrustZone register - Interrupt target non-secure register 3 (cm33_nvic_itns3)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "Interrupt target non-secure register 4 (cm33_nvic_itns4)", + "description": "TrustZone register - Interrupt target non-secure register 4 (cm33_nvic_itns4)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "Miscellaneous CM33 settings (cm33_misc_ctrl)", + "description": "TrustZone register - Miscellaneous CM33 settings (cm33_misc_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "CM33 Non-secure Access Control Register (cm33_nsacr)", + "description": "TrustZone register - CM33 Non-secure Access Control Register (cm33_nsacr)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "CM33 Coprocessor Power Control Register (cm33_cppwr)", + "description": "TrustZone register - CM33 Coprocessor Power Control Register (cm33_cppwr)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "CM33 Coprocessor Access Control Register (cm33_cpacr)", + "description": "TrustZone register - CM33 Coprocessor Access Control Register (cm33_cpacr)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Control Register (cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Control Register (cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register (cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 0 (flash00_mem_rule0)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 0 (flash00_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 1 (flash00_mem_rule1)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 1 (flash00_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 2 (flash00_mem_rule2)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 2 (flash00_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 3 (flash00_mem_rule3)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 3 (flash00_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "FLASH 01 Memory Rule Register 0 (flash01_mem_rule0)", + "description": "TrustZone register - FLASH 01 Memory Rule Register 0 (flash01_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "FLASH 01 Memory Rule Register 1 (flash01_mem_rule1)", + "description": "TrustZone register - FLASH 01 Memory Rule Register 1 (flash01_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "FLASH 01 Memory Rule Register 2 (flash01_mem_rule2)", + "description": "TrustZone register - FLASH 01 Memory Rule Register 2 (flash01_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "FLASH 01 Memory Rule Register 3 (flash01_mem_rule3)", + "description": "TrustZone register - FLASH 01 Memory Rule Register 3 (flash01_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "FLASH 02 Memory Rule Register (flash02_mem_rule)", + "description": "TrustZone register - FLASH 02 Memory Rule Register (flash02_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "FLASH 03 Memory Rule Register (flash03_mem_rule)", + "description": "TrustZone register - FLASH 03 Memory Rule Register (flash03_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "RAMX Memory Rule Register 0 (ramx_mem_rule0)", + "description": "TrustZone register - RAMX Memory Rule Register 0 (ramx_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "RAMX Memory Rule Register 1 (ramx_mem_rule1)", + "description": "TrustZone register - RAMX Memory Rule Register 1 (ramx_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "RAMX Memory Rule Register 2 (ramx_mem_rule2)", + "description": "TrustZone register - RAMX Memory Rule Register 2 (ramx_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "RAMX Memory Rule Register 3 (ramx_mem_rule3)", + "description": "TrustZone register - RAMX Memory Rule Register 3 (ramx_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "RAMA Memory Rule Register (rama_mem_rule)", + "description": "TrustZone register - RAMA Memory Rule Register (rama_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "RAMB Memory Rule Register (ramb_mem_rule)", + "description": "TrustZone register - RAMB Memory Rule Register (ramb_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "RAMC Memory Rule Register 0 (ramc_mem_rule0)", + "description": "TrustZone register - RAMC Memory Rule Register 0 (ramc_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "RAMC Memory Rule Register 1 (ramc_mem_rule1)", + "description": "TrustZone register - RAMC Memory Rule Register 1 (ramc_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "RAMD Memory Rule Register 0 (ramd_mem_rule0)", + "description": "TrustZone register - RAMD Memory Rule Register 0 (ramd_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "RAMD Memory Rule Register 1 (ramd_mem_rule1)", + "description": "TrustZone register - RAMD Memory Rule Register 1 (ramd_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "RAME Memory Rule Register 0 (rame_mem_rule0)", + "description": "TrustZone register - RAME Memory Rule Register 0 (rame_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "RAME Memory Rule Register 1 (rame_mem_rule1)", + "description": "TrustZone register - RAME Memory Rule Register 1 (rame_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "RAMF Memory Rule Register 0 (ramf_mem_rule0)", + "description": "TrustZone register - RAMF Memory Rule Register 0 (ramf_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "RAMF Memory Rule Register 1 (ramf_mem_rule1)", + "description": "TrustZone register - RAMF Memory Rule Register 1 (ramf_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "RAMG Memory Rule Register 0 (ramg_mem_rule0)", + "description": "TrustZone register - RAMG Memory Rule Register 0 (ramg_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "RAMG Memory Rule Register 1 (ramg_mem_rule1)", + "description": "TrustZone register - RAMG Memory Rule Register 1 (ramg_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "RAMH Memory Rule Register 0 (ramh_mem_rule0)", + "description": "TrustZone register - RAMH Memory Rule Register 0 (ramh_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 0 (apb_bridge0_mem_rule0)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 0 (apb_bridge0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 1 (apb_bridge0_mem_rule1)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 1 (apb_bridge0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 2 (apb_bridge0_mem_rule2)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 2 (apb_bridge0_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 3 (apb_bridge0_mem_rule3)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 3 (apb_bridge0_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "APB Bridge 1 Memory Rule Register 0 (apb_bridge1_mem_rule0)", + "description": "TrustZone register - APB Bridge 1 Memory Rule Register 0 (apb_bridge1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "APB Bridge 1 Memory Rule Register 1 (apb_bridge1_mem_rule1)", + "description": "TrustZone register - APB Bridge 1 Memory Rule Register 1 (apb_bridge1_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "APB Bridge 1 Memory Rule Register 2 (apb_bridge1_mem_rule2)", + "description": "TrustZone register - APB Bridge 1 Memory Rule Register 2 (apb_bridge1_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 2 (aips_bridge0_mem_rule2)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 2 (aips_bridge0_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 3 (aips_bridge0_mem_rule3)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 3 (aips_bridge0_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "AHB Peripherals 0 Memory Rule Register 0 (ahb_periph0_mem_rule0)", + "description": "TrustZone register - AHB Peripherals 0 Memory Rule Register 0 (ahb_periph0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "AHB Peripherals 0 Memory Rule Register 1 (ahb_periph0_mem_rule1)", + "description": "TrustZone register - AHB Peripherals 0 Memory Rule Register 1 (ahb_periph0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "AHB Peripherals 0 Memory Rule Register 2 (ahb_periph0_mem_rule2)", + "description": "TrustZone register - AHB Peripherals 0 Memory Rule Register 2 (ahb_periph0_mem_rule2)", + "default_value_int": "0x3" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "AIPS BRIDGE 1 Peripherals Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 1 Peripherals Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "AIPS BRIDGE 1 Peripherals Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 1 Peripherals Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "AHB Peripherals 1 Memory Rule Register 0 (ahb_periph1_mem_rule0)", + "description": "TrustZone register - AHB Peripherals 1 Memory Rule Register 0 (ahb_periph1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "AHB Peripherals 1 Memory Rule Register 1 (ahb_periph1_mem_rule1)", + "description": "TrustZone register - AHB Peripherals 1 Memory Rule Register 1 (ahb_periph1_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "AHB Peripherals 1 Memory Rule Register 2 (ahb_periph1_mem_rule2)", + "description": "TrustZone register - AHB Peripherals 1 Memory Rule Register 2 (ahb_periph1_mem_rule2)", + "default_value_int": "0x3" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "AIPS BRIDGE 2 Peripherals Memory Rule Register 0 (aips_bridge2_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 2 Peripherals Memory Rule Register 0 (aips_bridge2_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "AIPS BRIDGE 2 Peripherals Memory Rule Register 1 (aips_bridge2_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 2 Peripherals Memory Rule Register 1 (aips_bridge2_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 0 (aips_bridge3_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 0 (aips_bridge3_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 1 (aips_bridge3_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 1 (aips_bridge3_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 2 (aips_bridge3_mem_rule2)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 2 (aips_bridge3_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 3 (aips_bridge3_mem_rule3)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 3 (aips_bridge3_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 0 (aips_bridge4_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 0 (aips_bridge4_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 1 (aips_bridge4_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 1 (aips_bridge4_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 2 (aips_bridge4_mem_rule2)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 2 (aips_bridge4_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 3 (aips_bridge4_mem_rule3)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 3 (aips_bridge4_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "AHB Secure Controller Peripheral Rule Register (ahb_sec_ctrl_periph_rule)", + "description": "TrustZone register - AHB Secure Controller Peripheral Rule Register (ahb_sec_ctrl_periph_rule)", + "default_value_int": "0x3333" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "FLEXSPI0 Region 0 Memory Rule Register 0 (fspi0_reg0_mem_rule0)", + "description": "TrustZone register - FLEXSPI0 Region 0 Memory Rule Register 0 (fspi0_reg0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "FLEXSPI0 Region 0 Memory Rule Register 1 (fspi0_reg0_mem_rule1)", + "description": "TrustZone register - FLEXSPI0 Region 0 Memory Rule Register 1 (fspi0_reg0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "FLEXSPI0 Region 0 Memory Rule Register 2 (fspi0_reg0_mem_rule2)", + "description": "TrustZone register - FLEXSPI0 Region 0 Memory Rule Register 2 (fspi0_reg0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "FLEXSPI0 Region 0 Memory Rule Register 3 (fspi0_reg0_mem_rule3)", + "description": "TrustZone register - FLEXSPI0 Region 0 Memory Rule Register 3 (fspi0_reg0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "FLEXSPI0 Region 1 Memory Rule Register (fspi0_reg1_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 1 Memory Rule Register (fspi0_reg1_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "FLEXSPI0 Region 2 Memory Rule Register (fspi0_reg2_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 2 Memory Rule Register (fspi0_reg2_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "FLEXSPI0 Region 3 Memory Rule Register (fspi0_reg3_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 3 Memory Rule Register (fspi0_reg3_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "FLEXSPI0 Region 4 Memory Rule Register (fspi0_reg4_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 4 Memory Rule Register (fspi0_reg4_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "FLEXSPI0 Region 5 Memory Rule Register (fspi0_reg5_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 5 Memory Rule Register (fspi0_reg5_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "FLEXSPI0 Region 6 Memory Rule Register (fspi0_reg6_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 6 Memory Rule Register (fspi0_reg6_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "FLEXSPI0 Region 7 Memory Rule Register 0 (fspi0_reg7_mem_rule0)", + "description": "TrustZone register - FLEXSPI0 Region 7 Memory Rule Register 0 (fspi0_reg7_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "FLEXSPI0 Region 7 Memory Rule Register 1 (fspi0_reg7_mem_rule1)", + "description": "TrustZone register - FLEXSPI0 Region 7 Memory Rule Register 1 (fspi0_reg7_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "FLEXSPI0 Region 7 Memory Rule Register 2 (fspi0_reg7_mem_rule2)", + "description": "TrustZone register - FLEXSPI0 Region 7 Memory Rule Register 2 (fspi0_reg7_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "FLEXSPI0 Region 7 Memory Rule Register 3 (fspi0_reg7_mem_rule3)", + "description": "TrustZone register - FLEXSPI0 Region 7 Memory Rule Register 3 (fspi0_reg7_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "FLEXSPI0 Region 8 Memory Rule Register (fspi0_reg8_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 8 Memory Rule Register (fspi0_reg8_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "FLEXSPI0 Region 9 Memory Rule Register (fspi0_reg9_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 9 Memory Rule Register (fspi0_reg9_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "FLEXSPI0 Region 10 Memory Rule Register (fspi0_reg10_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 10 Memory Rule Register (fspi0_reg10_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "FLEXSPI0 Region 11 Memory Rule Register (fspi0_reg11_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 11 Memory Rule Register (fspi0_reg11_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "FLEXSPI0 Region 12 Memory Rule Register (fspi0_reg12_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 12 Memory Rule Register (fspi0_reg12_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "FLEXSPI0 Region 13 Memory Rule Register (fspi0_reg13_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 13 Memory Rule Register (fspi0_reg13_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "Secure GPIO Mask Register 0 (sec_gpio_mask0)", + "description": "TrustZone register - Secure GPIO Mask Register 0 (sec_gpio_mask0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "Secure GPIO Mask Register 1 (sec_gpio_mask1)", + "description": "TrustZone register - Secure GPIO Mask Register 1 (sec_gpio_mask1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "Secure GPIO Mask Register 2 (sec_gpio_mask2)", + "description": "TrustZone register - Secure GPIO Mask Register 2 (sec_gpio_mask2)", + "default_value_int": "0xfff" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "Secure GPIO Mask Register 3 (sec_gpio_mask3)", + "description": "TrustZone register - Secure GPIO Mask Register 3 (sec_gpio_mask3)", + "default_value_int": "0xffffff" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "Secure GPIO Mask Register 4 (sec_gpio_mask4)", + "description": "TrustZone register - Secure GPIO Mask Register 4 (sec_gpio_mask4)", + "default_value_int": "0xffffff" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "Secure GPIO Mask Register 5 (sec_gpio_mask5)", + "description": "TrustZone register - Secure GPIO Mask Register 5 (sec_gpio_mask5)", + "default_value_int": "0x3ff" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "Secure GPIO Mask Register 5 (sec_gpio_mask6)", + "description": "TrustZone register - Secure GPIO Mask Register 5 (sec_gpio_mask6)", + "default_value_int": "0xffffffff" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "Secure GPIO Mask Register 5 (sec_gpio_mask7)", + "description": "TrustZone register - Secure GPIO Mask Register 5 (sec_gpio_mask7)", + "default_value_int": "0xffffffff" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "Secure GPIO Mask Register 5 (sec_gpio_mask8)", + "description": "TrustZone register - Secure GPIO Mask Register 5 (sec_gpio_mask8)", + "default_value_int": "0xffffffff" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "Secure GPIO Mask Register 5 (sec_gpio_mask9)", + "description": "TrustZone register - Secure GPIO Mask Register 5 (sec_gpio_mask9)", + "default_value_int": "0xffffffff" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "Secure GPIO Mask Register 5 (sec_gpio_mask10)", + "description": "TrustZone register - Secure GPIO Mask Register 5 (sec_gpio_mask10)", + "default_value_int": "0xfffffff" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "Secure GPIO Mask Lock Register 2 (sec_mask_lock)", + "description": "TrustZone register - Secure GPIO Mask Lock Register 2 (sec_mask_lock)", + "default_value_int": "0x2aaaaa" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "CM33 Lock Control Register 0 (cm33_lock_reg0)", + "description": "TrustZone register - CM33 Lock Control Register 0 (cm33_lock_reg0)", + "default_value_int": "0x800002aa" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "CM33 Lock Control Register 1 (cm33_lock_reg1)", + "description": "TrustZone register - CM33 Lock Control Register 1 (cm33_lock_reg1)", + "default_value_int": "0x800002aa" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0x86aa" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0x86aa" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "MBC Global Access Control Register 0 (mbc0_memn_glbac0)", + "description": "TrustZone register - MBC Global Access Control Register 0 (mbc0_memn_glbac0)", + "default_value_int": "0x6600" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "MBC Global Access Control Register 4 (mbc0_memn_glbac4)", + "description": "TrustZone register - MBC Global Access Control Register 4 (mbc0_memn_glbac4)", + "default_value_int": "0x5500" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "MBC Global Access Control Register 5 (mbc0_memn_glbac5)", + "description": "TrustZone register - MBC Global Access Control Register 5 (mbc0_memn_glbac5)", + "default_value_int": "0x1100" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 0 (mbc0_dom0_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC Memory Block Configuration Word 0 (mbc0_dom0_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 1 (mbc0_dom0_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC Memory Block Configuration Word 1 (mbc0_dom0_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 2 (mbc0_dom0_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC Memory Block Configuration Word 2 (mbc0_dom0_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 3 (mbc0_dom0_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC Memory Block Configuration Word 3 (mbc0_dom0_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 4 (mbc0_dom0_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC Memory Block Configuration Word 4 (mbc0_dom0_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 5 (mbc0_dom0_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC Memory Block Configuration Word 5 (mbc0_dom0_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 6 (mbc0_dom0_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC Memory Block Configuration Word 6 (mbc0_dom0_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 7 (mbc0_dom0_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC Memory Block Configuration Word 7 (mbc0_dom0_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "ITRC ELS_RESET Trigger source selector register 0 (itrc_els_reset_out1_sel0)", + "description": "TrustZone register - ITRC ELS_RESET Trigger source selector register 0 (itrc_els_reset_out1_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "ITRC ELS_RESET Trigger source selector register 1 (itrc_els_reset_out1_sel1)", + "description": "TrustZone register - ITRC ELS_RESET Trigger source selector register 1 (itrc_els_reset_out1_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1)", + "default_value_int": "0xaaaaaaaa" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/tz_a1.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/tz_a1.json new file mode 100644 index 0000000..77a86f5 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn946/tz_a1.json @@ -0,0 +1,1973 @@ +{ + "cpu": "mcxn946", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Start of block (tzm_magic)", + "description": "TrustZone register - Start of block (tzm_magic)", + "default_value_int": "0x4d2d5a54" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "description": "TrustZone register - Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "Interrupt target non-secure register 3 (cm33_nvic_itns3)", + "description": "TrustZone register - Interrupt target non-secure register 3 (cm33_nvic_itns3)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "Interrupt target non-secure register 4 (cm33_nvic_itns4)", + "description": "TrustZone register - Interrupt target non-secure register 4 (cm33_nvic_itns4)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "Miscellaneous CM33 settings (cm33_misc_ctrl)", + "description": "TrustZone register - Miscellaneous CM33 settings (cm33_misc_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "CM33 Non-secure Access Control Register (cm33_nsacr)", + "description": "TrustZone register - CM33 Non-secure Access Control Register (cm33_nsacr)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "CM33 Coprocessor Power Control Register (cm33_cppwr)", + "description": "TrustZone register - CM33 Coprocessor Power Control Register (cm33_cppwr)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "CM33 Coprocessor Access Control Register (cm33_cpacr)", + "description": "TrustZone register - CM33 Coprocessor Access Control Register (cm33_cpacr)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Control Register (cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Control Register (cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register (cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 0 (flash00_mem_rule0)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 0 (flash00_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 1 (flash00_mem_rule1)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 1 (flash00_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 2 (flash00_mem_rule2)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 2 (flash00_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "FLASH 00 Memory Rule Register 3 (flash00_mem_rule3)", + "description": "TrustZone register - FLASH 00 Memory Rule Register 3 (flash00_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "FLASH 01 Memory Rule Register 0 (flash01_mem_rule0)", + "description": "TrustZone register - FLASH 01 Memory Rule Register 0 (flash01_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "FLASH 01 Memory Rule Register 1 (flash01_mem_rule1)", + "description": "TrustZone register - FLASH 01 Memory Rule Register 1 (flash01_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "FLASH 01 Memory Rule Register 2 (flash01_mem_rule2)", + "description": "TrustZone register - FLASH 01 Memory Rule Register 2 (flash01_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "FLASH 01 Memory Rule Register 3 (flash01_mem_rule3)", + "description": "TrustZone register - FLASH 01 Memory Rule Register 3 (flash01_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "FLASH 02 Memory Rule Register (flash02_mem_rule)", + "description": "TrustZone register - FLASH 02 Memory Rule Register (flash02_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "FLASH 03 Memory Rule Register (flash03_mem_rule)", + "description": "TrustZone register - FLASH 03 Memory Rule Register (flash03_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "RAMX Memory Rule Register 0 (ramx_mem_rule0)", + "description": "TrustZone register - RAMX Memory Rule Register 0 (ramx_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "RAMX Memory Rule Register 1 (ramx_mem_rule1)", + "description": "TrustZone register - RAMX Memory Rule Register 1 (ramx_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "RAMX Memory Rule Register 2 (ramx_mem_rule2)", + "description": "TrustZone register - RAMX Memory Rule Register 2 (ramx_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "RAMX Memory Rule Register 3 (ramx_mem_rule3)", + "description": "TrustZone register - RAMX Memory Rule Register 3 (ramx_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "RAMA Memory Rule Register (rama_mem_rule)", + "description": "TrustZone register - RAMA Memory Rule Register (rama_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "RAMB Memory Rule Register (ramb_mem_rule)", + "description": "TrustZone register - RAMB Memory Rule Register (ramb_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "RAMC Memory Rule Register 0 (ramc_mem_rule0)", + "description": "TrustZone register - RAMC Memory Rule Register 0 (ramc_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "RAMC Memory Rule Register 1 (ramc_mem_rule1)", + "description": "TrustZone register - RAMC Memory Rule Register 1 (ramc_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "RAMD Memory Rule Register 0 (ramd_mem_rule0)", + "description": "TrustZone register - RAMD Memory Rule Register 0 (ramd_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "RAMD Memory Rule Register 1 (ramd_mem_rule1)", + "description": "TrustZone register - RAMD Memory Rule Register 1 (ramd_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "RAME Memory Rule Register 0 (rame_mem_rule0)", + "description": "TrustZone register - RAME Memory Rule Register 0 (rame_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "RAME Memory Rule Register 1 (rame_mem_rule1)", + "description": "TrustZone register - RAME Memory Rule Register 1 (rame_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "RAMF Memory Rule Register 0 (ramf_mem_rule0)", + "description": "TrustZone register - RAMF Memory Rule Register 0 (ramf_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "RAMF Memory Rule Register 1 (ramf_mem_rule1)", + "description": "TrustZone register - RAMF Memory Rule Register 1 (ramf_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "RAMG Memory Rule Register 0 (ramg_mem_rule0)", + "description": "TrustZone register - RAMG Memory Rule Register 0 (ramg_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "RAMG Memory Rule Register 1 (ramg_mem_rule1)", + "description": "TrustZone register - RAMG Memory Rule Register 1 (ramg_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "RAMH Memory Rule Register 0 (ramh_mem_rule0)", + "description": "TrustZone register - RAMH Memory Rule Register 0 (ramh_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 0 (apb_bridge0_mem_rule0)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 0 (apb_bridge0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 1 (apb_bridge0_mem_rule1)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 1 (apb_bridge0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 2 (apb_bridge0_mem_rule2)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 2 (apb_bridge0_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "APB Bridge 0 Memory Rule Register 3 (apb_bridge0_mem_rule3)", + "description": "TrustZone register - APB Bridge 0 Memory Rule Register 3 (apb_bridge0_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "APB Bridge 1 Memory Rule Register 0 (apb_bridge1_mem_rule0)", + "description": "TrustZone register - APB Bridge 1 Memory Rule Register 0 (apb_bridge1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "APB Bridge 1 Memory Rule Register 1 (apb_bridge1_mem_rule1)", + "description": "TrustZone register - APB Bridge 1 Memory Rule Register 1 (apb_bridge1_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "APB Bridge 1 Memory Rule Register 2 (apb_bridge1_mem_rule2)", + "description": "TrustZone register - APB Bridge 1 Memory Rule Register 2 (apb_bridge1_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 2 (aips_bridge0_mem_rule2)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 2 (aips_bridge0_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "AIPS BRIDGE 0 Peripherals Memory Rule Register 3 (aips_bridge0_mem_rule3)", + "description": "TrustZone register - AIPS BRIDGE 0 Peripherals Memory Rule Register 3 (aips_bridge0_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "AHB Peripherals 0 Memory Rule Register 0 (ahb_periph0_mem_rule0)", + "description": "TrustZone register - AHB Peripherals 0 Memory Rule Register 0 (ahb_periph0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "AHB Peripherals 0 Memory Rule Register 1 (ahb_periph0_mem_rule1)", + "description": "TrustZone register - AHB Peripherals 0 Memory Rule Register 1 (ahb_periph0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "AHB Peripherals 0 Memory Rule Register 2 (ahb_periph0_mem_rule2)", + "description": "TrustZone register - AHB Peripherals 0 Memory Rule Register 2 (ahb_periph0_mem_rule2)", + "default_value_int": "0x3" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "AIPS BRIDGE 1 Peripherals Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 1 Peripherals Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "AIPS BRIDGE 1 Peripherals Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 1 Peripherals Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "AHB Peripherals 1 Memory Rule Register 0 (ahb_periph1_mem_rule0)", + "description": "TrustZone register - AHB Peripherals 1 Memory Rule Register 0 (ahb_periph1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "AHB Peripherals 1 Memory Rule Register 1 (ahb_periph1_mem_rule1)", + "description": "TrustZone register - AHB Peripherals 1 Memory Rule Register 1 (ahb_periph1_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "AHB Peripherals 1 Memory Rule Register 2 (ahb_periph1_mem_rule2)", + "description": "TrustZone register - AHB Peripherals 1 Memory Rule Register 2 (ahb_periph1_mem_rule2)", + "default_value_int": "0x3" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "AIPS BRIDGE 2 Peripherals Memory Rule Register 0 (aips_bridge2_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 2 Peripherals Memory Rule Register 0 (aips_bridge2_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "AIPS BRIDGE 2 Peripherals Memory Rule Register 1 (aips_bridge2_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 2 Peripherals Memory Rule Register 1 (aips_bridge2_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 0 (aips_bridge3_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 0 (aips_bridge3_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 1 (aips_bridge3_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 1 (aips_bridge3_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 2 (aips_bridge3_mem_rule2)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 2 (aips_bridge3_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "AIPS BRIDGE 3 Peripherals Memory Rule Register 3 (aips_bridge3_mem_rule3)", + "description": "TrustZone register - AIPS BRIDGE 3 Peripherals Memory Rule Register 3 (aips_bridge3_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 0 (aips_bridge4_mem_rule0)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 0 (aips_bridge4_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 1 (aips_bridge4_mem_rule1)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 1 (aips_bridge4_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 2 (aips_bridge4_mem_rule2)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 2 (aips_bridge4_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "AIPS BRIDGE 4 Peripherals Memory Rule Register 3 (aips_bridge4_mem_rule3)", + "description": "TrustZone register - AIPS BRIDGE 4 Peripherals Memory Rule Register 3 (aips_bridge4_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "AHB Secure Controller Peripheral Rule Register (ahb_sec_ctrl_periph_rule)", + "description": "TrustZone register - AHB Secure Controller Peripheral Rule Register (ahb_sec_ctrl_periph_rule)", + "default_value_int": "0x3333" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "FLEXSPI0 Region 0 Memory Rule Register 0 (fspi0_reg0_mem_rule0)", + "description": "TrustZone register - FLEXSPI0 Region 0 Memory Rule Register 0 (fspi0_reg0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "FLEXSPI0 Region 0 Memory Rule Register 1 (fspi0_reg0_mem_rule1)", + "description": "TrustZone register - FLEXSPI0 Region 0 Memory Rule Register 1 (fspi0_reg0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "FLEXSPI0 Region 0 Memory Rule Register 2 (fspi0_reg0_mem_rule2)", + "description": "TrustZone register - FLEXSPI0 Region 0 Memory Rule Register 2 (fspi0_reg0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "FLEXSPI0 Region 0 Memory Rule Register 3 (fspi0_reg0_mem_rule3)", + "description": "TrustZone register - FLEXSPI0 Region 0 Memory Rule Register 3 (fspi0_reg0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "FLEXSPI0 Region 1 Memory Rule Register (fspi0_reg1_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 1 Memory Rule Register (fspi0_reg1_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "FLEXSPI0 Region 2 Memory Rule Register (fspi0_reg2_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 2 Memory Rule Register (fspi0_reg2_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "FLEXSPI0 Region 3 Memory Rule Register (fspi0_reg3_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 3 Memory Rule Register (fspi0_reg3_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "FLEXSPI0 Region 4 Memory Rule Register (fspi0_reg4_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 4 Memory Rule Register (fspi0_reg4_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "FLEXSPI0 Region 5 Memory Rule Register (fspi0_reg5_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 5 Memory Rule Register (fspi0_reg5_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "FLEXSPI0 Region 6 Memory Rule Register (fspi0_reg6_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 6 Memory Rule Register (fspi0_reg6_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "FLEXSPI0 Region 7 Memory Rule Register 0 (fspi0_reg7_mem_rule0)", + "description": "TrustZone register - FLEXSPI0 Region 7 Memory Rule Register 0 (fspi0_reg7_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "FLEXSPI0 Region 7 Memory Rule Register 1 (fspi0_reg7_mem_rule1)", + "description": "TrustZone register - FLEXSPI0 Region 7 Memory Rule Register 1 (fspi0_reg7_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "FLEXSPI0 Region 7 Memory Rule Register 2 (fspi0_reg7_mem_rule2)", + "description": "TrustZone register - FLEXSPI0 Region 7 Memory Rule Register 2 (fspi0_reg7_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "FLEXSPI0 Region 7 Memory Rule Register 3 (fspi0_reg7_mem_rule3)", + "description": "TrustZone register - FLEXSPI0 Region 7 Memory Rule Register 3 (fspi0_reg7_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "FLEXSPI0 Region 8 Memory Rule Register (fspi0_reg8_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 8 Memory Rule Register (fspi0_reg8_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "FLEXSPI0 Region 9 Memory Rule Register (fspi0_reg9_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 9 Memory Rule Register (fspi0_reg9_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "FLEXSPI0 Region 10 Memory Rule Register (fspi0_reg10_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 10 Memory Rule Register (fspi0_reg10_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "FLEXSPI0 Region 11 Memory Rule Register (fspi0_reg11_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 11 Memory Rule Register (fspi0_reg11_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "FLEXSPI0 Region 12 Memory Rule Register (fspi0_reg12_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 12 Memory Rule Register (fspi0_reg12_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "FLEXSPI0 Region 13 Memory Rule Register (fspi0_reg13_mem_rule)", + "description": "TrustZone register - FLEXSPI0 Region 13 Memory Rule Register (fspi0_reg13_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "Secure GPIO PINT Mask Register 0 (sec_gpio_pint_mask0)", + "description": "TrustZone register - Secure GPIO PINT Mask Register 0 (sec_gpio_pint_mask0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "Secure GPIO PINT Mask Register 1 (sec_gpio_pint_mask1)", + "description": "TrustZone register - Secure GPIO PINT Mask Register 1 (sec_gpio_pint_mask1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "Secure Interrupt Mask for CPU1 Register 0 (sec_int_reg0)", + "description": "TrustZone register - Secure Interrupt Mask for CPU1 Register 0 (sec_int_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "Secure Interrupt Mask for CPU1 Register 1 (sec_int_reg1)", + "description": "TrustZone register - Secure Interrupt Mask for CPU1 Register 1 (sec_int_reg1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "Secure Interrupt Mask for CPU1 Register 2 (sec_int_reg2)", + "description": "TrustZone register - Secure Interrupt Mask for CPU1 Register 2 (sec_int_reg2)", + "default_value_int": "0xffffffff" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "Secure Interrupt Mask for CPU1 Register 3 (sec_int_reg3)", + "description": "TrustZone register - Secure Interrupt Mask for CPU1 Register 3 (sec_int_reg3)", + "default_value_int": "0xffffffff" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "Secure Interrupt Mask for CPU1 Register 4 (sec_int_reg4)", + "description": "TrustZone register - Secure Interrupt Mask for CPU1 Register 4 (sec_int_reg4)", + "default_value_int": "0xfffffff" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "Secure GPIO Mask Lock Register 2 (sec_mask_lock)", + "description": "TrustZone register - Secure GPIO Mask Lock Register 2 (sec_mask_lock)", + "default_value_int": "0x2aaaaa" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "CM33 Lock Control Register 0 (cm33_lock_reg0)", + "description": "TrustZone register - CM33 Lock Control Register 0 (cm33_lock_reg0)", + "default_value_int": "0x800002aa" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "CM33 Lock Control Register 1 (cm33_lock_reg1)", + "description": "TrustZone register - CM33 Lock Control Register 1 (cm33_lock_reg1)", + "default_value_int": "0x800002aa" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0x86aa" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0x86aa" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "MBC Global Access Control Register 0 (mbc0_memn_glbac0)", + "description": "TrustZone register - MBC Global Access Control Register 0 (mbc0_memn_glbac0)", + "default_value_int": "0x7777" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "MBC Global Access Control Register 4 (mbc0_memn_glbac4)", + "description": "TrustZone register - MBC Global Access Control Register 4 (mbc0_memn_glbac4)", + "default_value_int": "0x5500" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "MBC Global Access Control Register 5 (mbc0_memn_glbac5)", + "description": "TrustZone register - MBC Global Access Control Register 5 (mbc0_memn_glbac5)", + "default_value_int": "0x1100" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 0 (mbc0_dom0_mem0_blk_cfg_w0)", + "description": "TrustZone register - MBC Memory Block Configuration Word 0 (mbc0_dom0_mem0_blk_cfg_w0)", + "default_value_int": "0x0" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 1 (mbc0_dom0_mem0_blk_cfg_w1)", + "description": "TrustZone register - MBC Memory Block Configuration Word 1 (mbc0_dom0_mem0_blk_cfg_w1)", + "default_value_int": "0x0" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 2 (mbc0_dom0_mem0_blk_cfg_w2)", + "description": "TrustZone register - MBC Memory Block Configuration Word 2 (mbc0_dom0_mem0_blk_cfg_w2)", + "default_value_int": "0x0" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 3 (mbc0_dom0_mem0_blk_cfg_w3)", + "description": "TrustZone register - MBC Memory Block Configuration Word 3 (mbc0_dom0_mem0_blk_cfg_w3)", + "default_value_int": "0x0" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 4 (mbc0_dom0_mem0_blk_cfg_w4)", + "description": "TrustZone register - MBC Memory Block Configuration Word 4 (mbc0_dom0_mem0_blk_cfg_w4)", + "default_value_int": "0x0" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 5 (mbc0_dom0_mem0_blk_cfg_w5)", + "description": "TrustZone register - MBC Memory Block Configuration Word 5 (mbc0_dom0_mem0_blk_cfg_w5)", + "default_value_int": "0x0" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 6 (mbc0_dom0_mem0_blk_cfg_w6)", + "description": "TrustZone register - MBC Memory Block Configuration Word 6 (mbc0_dom0_mem0_blk_cfg_w6)", + "default_value_int": "0x0" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "MBC Memory Block Configuration Word 7 (mbc0_dom0_mem0_blk_cfg_w7)", + "description": "TrustZone register - MBC Memory Block Configuration Word 7 (mbc0_dom0_mem0_blk_cfg_w7)", + "default_value_int": "0x0" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_1)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_1)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_1)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_1)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field300", + "offset_int": "0x300", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field304", + "offset_int": "0x304", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field308", + "offset_int": "0x308", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field30C", + "offset_int": "0x30c", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field310", + "offset_int": "0x310", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field314", + "offset_int": "0x314", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field318", + "offset_int": "0x318", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field31C", + "offset_int": "0x31c", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field320", + "offset_int": "0x320", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field324", + "offset_int": "0x324", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_2)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field328", + "offset_int": "0x328", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_2)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field32C", + "offset_int": "0x32c", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_2)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field330", + "offset_int": "0x330", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_2)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field334", + "offset_int": "0x334", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_2)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field338", + "offset_int": "0x338", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_2)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field33C", + "offset_int": "0x33c", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_2)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field340", + "offset_int": "0x340", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_2)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field344", + "offset_int": "0x344", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_2)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field348", + "offset_int": "0x348", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_2)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field34C", + "offset_int": "0x34c", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field350", + "offset_int": "0x350", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field354", + "offset_int": "0x354", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field358", + "offset_int": "0x358", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_2)", + "default_value_int": "0xa0002aaa" + }, + { + "id": "field35C", + "offset_int": "0x35c", + "reg_width": 32, + "name": "GPIO0 Pin Control Non-Secure (gpio0_pcns)", + "description": "TrustZone register - GPIO0 Pin Control Non-Secure (gpio0_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field360", + "offset_int": "0x360", + "reg_width": 32, + "name": "GPIO0 Pin Control Non-Privilege (gpio0_pcnp)", + "description": "TrustZone register - GPIO0 Pin Control Non-Privilege (gpio0_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field364", + "offset_int": "0x364", + "reg_width": 32, + "name": "GPIO0 Interrupt Control Non-Secure (gpio0_icns)", + "description": "TrustZone register - GPIO0 Interrupt Control Non-Secure (gpio0_icns)", + "default_value_int": "0x0" + }, + { + "id": "field368", + "offset_int": "0x368", + "reg_width": 32, + "name": "GPIO0 Interrupt Control Non-Privilege (gpio0_icnp)", + "description": "TrustZone register - GPIO0 Interrupt Control Non-Privilege (gpio0_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field36C", + "offset_int": "0x36c", + "reg_width": 32, + "name": "GPIO0 Lock Register (gpio0_lock)", + "description": "TrustZone register - GPIO0 Lock Register (gpio0_lock)", + "default_value_int": "0xf" + }, + { + "id": "field370", + "offset_int": "0x370", + "reg_width": 32, + "name": "GPIO1 Pin Control Non-Secure (gpio1_pcns)", + "description": "TrustZone register - GPIO1 Pin Control Non-Secure (gpio1_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field374", + "offset_int": "0x374", + "reg_width": 32, + "name": "GPIO1 Pin Control Non-Privilege (gpio1_pcnp)", + "description": "TrustZone register - GPIO1 Pin Control Non-Privilege (gpio1_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field378", + "offset_int": "0x378", + "reg_width": 32, + "name": "GPIO1 Interrupt Control Non-Secure (gpio1_icns)", + "description": "TrustZone register - GPIO1 Interrupt Control Non-Secure (gpio1_icns)", + "default_value_int": "0x0" + }, + { + "id": "field37C", + "offset_int": "0x37c", + "reg_width": 32, + "name": "GPIO1 Interrupt Control Non-Privilege (gpio1_icnp)", + "description": "TrustZone register - GPIO1 Interrupt Control Non-Privilege (gpio1_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field380", + "offset_int": "0x380", + "reg_width": 32, + "name": "GPIO1 Lock Register (gpio1_lock)", + "description": "TrustZone register - GPIO1 Lock Register (gpio1_lock)", + "default_value_int": "0x0" + }, + { + "id": "field384", + "offset_int": "0x384", + "reg_width": 32, + "name": "GPIO2 Pin Control Non-Secure (gpio2_pcns)", + "description": "TrustZone register - GPIO2 Pin Control Non-Secure (gpio2_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field388", + "offset_int": "0x388", + "reg_width": 32, + "name": "GPIO2 Pin Control Non-Privilege (gpio2_pcnp)", + "description": "TrustZone register - GPIO2 Pin Control Non-Privilege (gpio2_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field38C", + "offset_int": "0x38c", + "reg_width": 32, + "name": "GPIO2 Interrupt Control Non-Secure (gpio2_icns)", + "description": "TrustZone register - GPIO2 Interrupt Control Non-Secure (gpio2_icns)", + "default_value_int": "0x0" + }, + { + "id": "field390", + "offset_int": "0x390", + "reg_width": 32, + "name": "GPIO2 Interrupt Control Non-Privilege (gpio2_icnp)", + "description": "TrustZone register - GPIO2 Interrupt Control Non-Privilege (gpio2_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field394", + "offset_int": "0x394", + "reg_width": 32, + "name": "GPIO2 Lock Register (gpio2_lock)", + "description": "TrustZone register - GPIO2 Lock Register (gpio2_lock)", + "default_value_int": "0x0" + }, + { + "id": "field398", + "offset_int": "0x398", + "reg_width": 32, + "name": "GPIO3 Pin Control Non-Secure (gpio3_pcns)", + "description": "TrustZone register - GPIO3 Pin Control Non-Secure (gpio3_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field39C", + "offset_int": "0x39c", + "reg_width": 32, + "name": "GPIO3 Pin Control Non-Privilege (gpio3_pcnp)", + "description": "TrustZone register - GPIO3 Pin Control Non-Privilege (gpio3_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field3A0", + "offset_int": "0x3a0", + "reg_width": 32, + "name": "GPIO3 Interrupt Control Non-Secure (gpio3_icns)", + "description": "TrustZone register - GPIO3 Interrupt Control Non-Secure (gpio3_icns)", + "default_value_int": "0x0" + }, + { + "id": "field3A4", + "offset_int": "0x3a4", + "reg_width": 32, + "name": "GPIO3 Interrupt Control Non-Privilege (gpio3_icnp)", + "description": "TrustZone register - GPIO3 Interrupt Control Non-Privilege (gpio3_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field3A8", + "offset_int": "0x3a8", + "reg_width": 32, + "name": "GPIO3 Lock Register (gpio3_lock)", + "description": "TrustZone register - GPIO3 Lock Register (gpio3_lock)", + "default_value_int": "0x0" + }, + { + "id": "field3AC", + "offset_int": "0x3ac", + "reg_width": 32, + "name": "GPIO4 Pin Control Non-Secure (gpio4_pcns)", + "description": "TrustZone register - GPIO4 Pin Control Non-Secure (gpio4_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field3B0", + "offset_int": "0x3b0", + "reg_width": 32, + "name": "GPIO4 Pin Control Non-Privilege (gpio4_pcnp)", + "description": "TrustZone register - GPIO4 Pin Control Non-Privilege (gpio4_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field3B4", + "offset_int": "0x3b4", + "reg_width": 32, + "name": "GPIO4 Interrupt Control Non-Secure (gpio4_icns)", + "description": "TrustZone register - GPIO4 Interrupt Control Non-Secure (gpio4_icns)", + "default_value_int": "0x0" + }, + { + "id": "field3B8", + "offset_int": "0x3b8", + "reg_width": 32, + "name": "GPIO4 Interrupt Control Non-Privilege (gpio4_icnp)", + "description": "TrustZone register - GPIO4 Interrupt Control Non-Privilege (gpio4_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field3BC", + "offset_int": "0x3bc", + "reg_width": 32, + "name": "GPIO4 Lock Register (gpio4_lock)", + "description": "TrustZone register - GPIO4 Lock Register (gpio4_lock)", + "default_value_int": "0x0" + }, + { + "id": "field3C0", + "offset_int": "0x3c0", + "reg_width": 32, + "name": "GPIO5 Pin Control Non-Secure (gpio5_pcns)", + "description": "TrustZone register - GPIO5 Pin Control Non-Secure (gpio5_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field3C4", + "offset_int": "0x3c4", + "reg_width": 32, + "name": "GPIO5 Pin Control Non-Privilege (gpio5_pcnp)", + "description": "TrustZone register - GPIO5 Pin Control Non-Privilege (gpio5_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field3C8", + "offset_int": "0x3c8", + "reg_width": 32, + "name": "GPIO5 Interrupt Control Non-Secure (gpio5_icns)", + "description": "TrustZone register - GPIO5 Interrupt Control Non-Secure (gpio5_icns)", + "default_value_int": "0x0" + }, + { + "id": "field3CC", + "offset_int": "0x3cc", + "reg_width": 32, + "name": "GPIO5 Interrupt Control Non-Privilege (gpio5_icnp)", + "description": "TrustZone register - GPIO5 Interrupt Control Non-Privilege (gpio5_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field3D0", + "offset_int": "0x3d0", + "reg_width": 32, + "name": "GPIO5 Lock Register (gpio5_lock)", + "description": "TrustZone register - GPIO5 Lock Register (gpio5_lock)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn947/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn947/database.yaml new file mode 100644 index 0000000..ba46e47 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxn947/database.yaml @@ -0,0 +1,47 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxn946 + +# General MCU information +info: + spsdk_predecessor_name: mcxn94x + memory_map: # Memory map basic info + internal-flash_ns: + start_int: "0x0" + size_int: "0x200000" + external: false + flexspi_ns: + start_int: "0x80000000" + size_int: "0x8000000" + external: true + flexspi_s: + start_int: "0x90000000" + size_int: "0x8000000" + external: true + mirror_of: flexspi_ns + internal-flash_s: + start_int: "0x10000000" + size_int: "0x200000" + external: false + mirror_of: internal-flash_ns + sram: + start_int: "0x20000000" + size_int: "0x68000" + external: false + non_xip_type: int_ram + sramx: + start_int: "0x4000000" + size_int: "0x18000" + external: false + __comment: Does not work as target `onchip RAM` memory + ifr-bank1_ns: + start_int: "0x1008000" + size_int: "0x8000" + external: false + ifr-bank1_s: + start_int: "0x11008000" + size_int: "0x8000" + external: false + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw235/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw235/database.yaml new file mode 100644 index 0000000..8448faa --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw235/database.yaml @@ -0,0 +1,37 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mcxw236 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: Wireless Connectivity MCUs + # Web page of MCU representative + web: https://www.nxp.com + memory_map: + # Memory map basic info + internal-flash_ns: + start_int: 0x0 + size_int: 0xFE000 + external: false + internal-flash_s: + start_int: 0x10000000 + size_int: 0xFE000 + external: false + mirror_of: internal-flash_ns + sram: + start_int: 0x20004000 + size_int: 0x1C000 + external: false + sramx: + start_int: 0x4000000 + size_int: 0x4000 + external: false + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0021 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/database.yaml new file mode 100644 index 0000000..9203956 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/database.yaml @@ -0,0 +1,182 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: Wireless Connectivity MCUs + # Web page of MCU representative + web: https://www.nxp.com + memory_map: + # Memory map basic info + internal-flash_ns: + start_int: 0x0 + size_int: 0xFE000 + external: false + internal-flash_s: + start_int: 0x10000000 + size_int: 0xFE000 + external: false + mirror_of: internal-flash_ns + sram: + start_int: 0x20004000 + size_int: 0x1C000 + external: false + sramx: + start_int: 0x4000000 + size_int: 0x4000 + external: false + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0021 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_4000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert1] + rot_type: "cert_block_1" + + # ======== DAT section ======== + dat: + socc: 1 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_ram: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV1 + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV1 + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + crc: crc_ram + signed: signed_ram + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0xF_E000 + size: 512 + reg_spec: pfr_cfpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + computed_fields: + field01C: # VENDOR_USAGE + field01C-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field020: # DCFG_CC_SOCU_NS_PIN + field020-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field024: # DCFG_CC_SOCU_NS_DFLT + field024-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + cmpa: # CMPA description + address: 0x10_4000 + size: 512 + reg_spec: pfr_cmpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + grouped_registers: + - uid: cmpa_rotkh + name: ROTKH + width: 256 + config_as_hexstring: true + reversed: true + description: + ROTKH field is compounded by 8 32-bit fields and contains Root key + table hash + sub_regs: + - field060 + - field064 + - field068 + - field06C + - field070 + - field074 + - field078 + - field07C + computed_fields: + field008: # DCFG_CC_SOCU_PIN + field008-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field00C: # DCFG_CC_SOCU_DFLT + field00C-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + + # ======== Secure binary v2.1 section ======== + sb21: + supported_commands: [erase, load, enable, fill, jump, version_check] + keyblobs: false + + # ======== TrustZone section ======== + tz: + reg_spec: tz.json + + # ======== Bootable image section ======== + bootable_image: + mem_types: + recovery_spi: + segments: + sb21: 0x00 + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/pfr_cfpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/pfr_cfpa.json new file mode 100644 index 0000000..107325f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/pfr_cfpa.json @@ -0,0 +1,1523 @@ +{ + "cpu": "mcxw236", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "CFPA header field", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field004", + "name": "VERSION", + "description": "CFPA version number", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "S_FW_Version", + "description": "Secure firmware version (Monotonic counter)", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure firmware version (Monotonic counter)", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "IMAGE_KEY_REVOKE", + "description": "Image key revocation ID (Monotonic counter)", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "ROTKH_REVOKE", + "description": "Root of Trust Key Hash Revoke", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field018-bits0-1", + "name": "RoTK0_EN", + "description": "RoT Key 0 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits2-3", + "name": "RoTK1_EN", + "description": "RoT Key 1 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits4-5", + "name": "RoTK2_EN", + "description": "RoT Key 2 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits6-7", + "name": "RoTK3_EN", + "description": "RoT Key 3 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 24 + } + ] + }, + { + "id": "field01C", + "name": "VENDOR_USAGE", + "description": "Debug vendor usage field", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field01C-bits0-15", + "name": "DBG_VENDOR_USAGE", + "description": "DBG_VENDOR_USAGE." + }, + { + "width": 16, + "id": "field01C-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field020", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n - PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field020-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field020-bit6", + "name": "ISPCMDEN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit7", + "name": "PMCMDEN", + "description": "Programmers Mode Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field020-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field020-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field024", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n - PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit6", + "name": "ISPCMDEN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "PMCMDEN", + "description": "Programmers Mode Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field028", + "name": "ENABLE_FA_MODE", + "description": "Enable FA mode.", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "CMPA_PROG_IN_PROGRESS", + "description": "CMPA Page programming on going.", + "offset_int": "0x002C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00030-0007C", + "description": "Reserved 00030-0007C" + }, + "registers": [ + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00060", + "name": "Reserved 0x00060", + "description": "This field is reserved for internal use", + "offset_int": "0x0060", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field080", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0080", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0084", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0088", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x008C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field090", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0090", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field094", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0094", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field098", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0098", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field09C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x009C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A0", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A4", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A8", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0AC", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B0", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C0", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C4", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C8", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0CC", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D0", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D4", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D8", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0DC", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00DC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E0", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E4", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E8", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0EC", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00EC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F0", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F4", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F8", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0FC", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00FC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field100", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED56", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED57", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED58", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED59", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED60", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED61", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED62", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED63", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED64", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED65", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED66", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED67", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED68", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED69", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED70", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED71", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED72", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED73", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED74", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED75", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED76", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED77", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED78", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED79", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED80", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED81", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED82", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED83", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED84", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED85", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED86", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED87", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/pfr_cmpa.json new file mode 100644 index 0000000..6171f13 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/pfr_cmpa.json @@ -0,0 +1,4261 @@ +{ + "cpu": "MCXW236", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode:", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "DISABLE", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Core clock:", + "values": [ + { + "name": "SYSTEM_SPEED_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "FRO_12MHZ", + "value": 1, + "description": "12MHz FRO" + }, + { + "name": "FRO_32MHZ", + "value": 2, + "description": "32MHz FRO" + } + ] + }, + { + "width": 15 + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "GPIO port and number of the pin to use for indicating failure reason. \nThe toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_FLASH_CFG", + "description": "SPI Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI flash recovery boot is enabled, if non-zero value is written to this field." + }, + { + "width": 27 + } + ] + }, + { + "id": "field008", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n - PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field008-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field008-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field008-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field008-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field008-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field008-bit6", + "name": "ISPCMDEN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field008-bit7", + "name": "PMCMDEN", + "description": "Programmers Mode Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field008-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field00C", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n - PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field00C-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field00C-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field00C-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field00C-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field00C-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field00C-bit6", + "name": "ISPCMDEN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field00C-bit7", + "name": "PMCMDEN", + "description": "Programmers Mode fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field00C-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field010", + "name": "VENDOR_USAGE", + "description": "Field.", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "VENDOR_USAGE", + "description": "Upper 16 bits of vendor usage field defined in DAP. Lower 16-bits come from customer field area." + } + ] + }, + { + "id": "field014", + "name": "SECURE_BOOT_CFG", + "description": "Secure Boot Configuration", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field014-bits0-1", + "name": "RSA4K", + "description": "Use RSA4096 keys only.", + "values": [ + { + "name": "RSA2048", + "value": 0, + "description": "Allow RSA2048 and higher" + }, + { + "name": "RSA4096_0", + "value": 1, + "description": "RSA4096 only" + }, + { + "name": "RSA4096_1", + "value": 2, + "description": "RSA4096 only" + }, + { + "name": "RSA4096_2", + "value": 3, + "description": "RSA4096 only" + } + ] + }, + { + "width": 2, + "id": "field014-bits2-3", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field014-bits4-5", + "name": "DICE_CUST_CFG", + "description": "Include Customer factory area (including keys) in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field014-bits6-7", + "name": "SKIP_DICE", + "description": "Skip DICE computation", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable DICE" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable DICE" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable DICE" + } + ] + }, + { + "width": 2, + "id": "field014-bits8-9", + "name": "TZM_IMAGE_TYPE", + "description": "TrustZone-M mode", + "values": [ + { + "name": "HEADER", + "value": 0, + "description": "TZ-M image mode is taken from application image header" + }, + { + "name": "DISABLED", + "value": 1, + "description": "TZ-M disabled image, boots to non-secure mode" + }, + { + "name": "ENABLED", + "value": 2, + "description": "TZ-M enabled image, boots to secure mode" + }, + { + "name": "PRESET", + "value": 3, + "description": "TZ-M enabled image with TZ-M preset, boot to secure mode TZ-M pre-configured by data from application image header" + } + ] + }, + { + "width": 2, + "id": "field014-bits10-11", + "name": "BLOCK_SET_KEY", + "description": "Block PUF key code generation", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow PUF Key Code generation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable PUF Key Code generation" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field014-bits14-15", + "name": "DICE_INC_SEC_EPOCH", + "description": "Include security EPOCH in DICE", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field014-bits16-17", + "name": "SKIP_BOOT_SEED", + "description": "Skip boot seed computation", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable BOOT_SEED" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable BOOT_SEED" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable BOOT_SEED" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable BOOT_SEED" + } + ] + }, + { + "width": 2, + "id": "field014-bits18-19", + "name": "BOOT_SEED_INC_NXP_CFG", + "description": "Include NXP area in BOOT SEED computation", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field014-bits20-21", + "name": "BOOT_SEED_CUST_CFG", + "description": "Include Customer factory area (including keys) in BOOT SEED computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field014-bits22-23", + "name": "BOOT_SEED_INC_SEC_EPOCH", + "description": "Include security EPOCH in BOOT_SEED computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 6 + }, + { + "width": 2, + "id": "field014-bits30-31", + "name": "SEC_BOOT_EN", + "description": "Secure boot enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Plain image (internal flash with or without CRC)" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Boot signed images. (internal flash, RSA signed)" + } + ] + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field01C", + "name": "PRINCE_CFG", + "description": "Prince Configuration", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "field01C-bit1", + "name": "GEE", + "description": "Global Encryption Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "field01C-bit5", + "name": "GDE", + "description": "Global Decryption Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "field01C-bit9", + "name": "SLK", + "description": "System Lock Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "field01C-bit13", + "name": "GLK", + "description": "Global Lock Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 18 + } + ] + }, + { + "id": "field020", + "name": "BMAPCTX0", + "description": "Bitmap Control for Memory Context 0", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field020-bit0", + "name": "BEN0", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit1", + "name": "BEN1", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit2", + "name": "BEN2", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit3", + "name": "BEN3", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit4", + "name": "BEN4", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit5", + "name": "BEN5", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit6", + "name": "BEN6", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit7", + "name": "BEN7", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit8", + "name": "BEN8", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit9", + "name": "BEN9", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit10", + "name": "BEN10", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit11", + "name": "BEN11", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit12", + "name": "BEN12", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit13", + "name": "BEN13", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit14", + "name": "BEN14", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit15", + "name": "BEN15", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit16", + "name": "BEN16", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit17", + "name": "BEN17", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit18", + "name": "BEN18", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit19", + "name": "BEN19", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit20", + "name": "BEN20", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit21", + "name": "BEN21", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit22", + "name": "BEN22", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit23", + "name": "BEN23", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit24", + "name": "BEN24", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit25", + "name": "BEN25", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit26", + "name": "BEN26", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit27", + "name": "BEN27", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit28", + "name": "BEN28", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit29", + "name": "BEN29", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit30", + "name": "BEN30", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit31", + "name": "BEN31", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + } + ] + }, + { + "id": "field024", + "name": "BMAPCTX1", + "description": "Bitmap Control for Memory Context 1", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "BEN0", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "BEN1", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "BEN2", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "BEN3", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit4", + "name": "BEN4", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit5", + "name": "BEN5", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit6", + "name": "BEN6", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "BEN7", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit8", + "name": "BEN8", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit9", + "name": "BEN9", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit10", + "name": "BEN10", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit11", + "name": "BEN11", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit12", + "name": "BEN12", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit13", + "name": "BEN13", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit14", + "name": "BEN14", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit15", + "name": "BEN15", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit16", + "name": "BEN16", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit17", + "name": "BEN17", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit18", + "name": "BEN18", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit19", + "name": "BEN19", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit20", + "name": "BEN20", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit21", + "name": "BEN21", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit22", + "name": "BEN22", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit23", + "name": "BEN23", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit24", + "name": "BEN24", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit25", + "name": "BEN25", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit26", + "name": "BEN26", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit27", + "name": "BEN27", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit28", + "name": "BEN28", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit29", + "name": "BEN29", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit30", + "name": "BEN30", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit31", + "name": "BEN31", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + } + ] + }, + { + "id": "field028", + "name": "BMAPCTX2", + "description": "Bitmap Control for Memory Context 2", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field028-bit0", + "name": "BEN0", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit1", + "name": "BEN1", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit2", + "name": "BEN2", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit3", + "name": "BEN3", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit4", + "name": "BEN4", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit5", + "name": "BEN5", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit6", + "name": "BEN6", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit7", + "name": "BEN7", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit8", + "name": "BEN8", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit9", + "name": "BEN9", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit10", + "name": "BEN10", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit11", + "name": "BEN11", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit12", + "name": "BEN12", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit13", + "name": "BEN13", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit14", + "name": "BEN14", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit15", + "name": "BEN15", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit16", + "name": "BEN16", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit17", + "name": "BEN17", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit18", + "name": "BEN18", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit19", + "name": "BEN19", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit20", + "name": "BEN20", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit21", + "name": "BEN21", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit22", + "name": "BEN22", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit23", + "name": "BEN23", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit24", + "name": "BEN24", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit25", + "name": "BEN25", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit26", + "name": "BEN26", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit27", + "name": "BEN27", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit28", + "name": "BEN28", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit29", + "name": "BEN29", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit30", + "name": "BEN30", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit31", + "name": "BEN31", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + } + ] + }, + { + "id": "field02C", + "name": "BMAPCTX3", + "description": "Bitmap Control for Memory Context 3", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field02C-bit0", + "name": "BEN0", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit1", + "name": "BEN1", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit2", + "name": "BEN2", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit3", + "name": "BEN3", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit4", + "name": "BEN4", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit5", + "name": "BEN5", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit6", + "name": "BEN6", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit7", + "name": "BEN7", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit8", + "name": "BEN8", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit9", + "name": "BEN9", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit10", + "name": "BEN10", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit11", + "name": "BEN11", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit12", + "name": "BEN12", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit13", + "name": "BEN13", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit14", + "name": "BEN14", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit15", + "name": "BEN15", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit16", + "name": "BEN16", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit17", + "name": "BEN17", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit18", + "name": "BEN18", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit19", + "name": "BEN19", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit20", + "name": "BEN20", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit21", + "name": "BEN21", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit22", + "name": "BEN22", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit23", + "name": "BEN23", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit24", + "name": "BEN24", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit25", + "name": "BEN25", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit26", + "name": "BEN26", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit27", + "name": "BEN27", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit28", + "name": "BEN28", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit29", + "name": "BEN29", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit30", + "name": "BEN30", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit31", + "name": "BEN31", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00030-0004C", + "description": "Reserved 00030-0004C" + }, + "registers": [ + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "BLE", + "description": "BLE unique addressing" + }, + "registers": [ + { + "id": "field050", + "name": "BLE_UNIQUE_ADDRESS0", + "description": "Bits 31 down to 0 of the BLE Unique Address to be used when BLE_UNIQUE_ADDRESS_VALID field is equal to 0xC3A5", + "offset_int": "0x0050", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "BLE_UNIQUE_ADDRESS1", + "description": "BLE_UNIQUE_ADDRESS part 2", + "offset_int": "0x0054", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field054-bits0-15", + "name": "BLE_UNIQUE_ADDRESS_47_32", + "description": "Bits 47 down to 32 of the BLE Unique Address to be used when BLE_UNIQUE_ADDRESS_VALID field is equal to 0xC3A5" + }, + { + "width": 16, + "id": "field054-bits16-31", + "name": "BLE_UNIQUE_ADDRESS_VALID", + "description": "Use 48-bit value from BLE_UNIQUE_ADDRESS field as BLE address when this field is equal to 0xC3A5. If this field is different from 0xC3A5, check BLE_DEFAULT_ADDRESS_VALID field in NMPA to know which address to use." + } + ] + } + ] + }, + { + "group": { + "name": "FLASH_REMAP", + "description": "Flash image address remapping" + }, + "registers": [ + { + "id": "field058", + "name": "FLASH_REMAP_SIZE", + "description": "This 32-bit register contains the size of the image to remap, in bytes.", + "offset_int": "0x0058", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "FLASH_REMAP_OFFSET", + "description": "This 32-bit register contains the offset by which the image is to be remapped.", + "offset_int": "0x005C", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field060", + "name": "ROTKH0", + "description": "ROTKH0 for Root of Trust Keys Table hash[255:224]", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "ROTKH1", + "description": "ROTKH1 for Root of Trust Keys Table hash[223:192]", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "ROTKH2", + "description": "ROTKH2 for Root of Trust Keys Table hash[191:160]", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "ROTKH3", + "description": "ROTKH3 for Root of Trust Keys Table hash[159:128]", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field070", + "name": "ROTKH4", + "description": "ROTKH4 for Root of Trust Keys Table hash[127:96]", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "ROTKH5", + "description": "ROTKH5 for Root of Trust Keys Table hash[95:64]", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "ROTKH6", + "description": "ROTKH6 for Root of Trust Keys Table hash[63:32]", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "ROTKH7", + "description": "ROTKH7 for Root of Trust Keys Table hash[31:0]", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field080", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0080", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0084", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0088", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x008C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field090", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0090", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field094", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0094", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field098", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0098", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field09C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x009C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A0", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A4", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A8", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0AC", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B0", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C0", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C4", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C8", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0CC", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D0", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D4", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D8", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0DC", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00DC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E0", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E4", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E8", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0EC", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00EC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F0", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F4", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F8", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0FC", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00FC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field100", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED56", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED57", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED58", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED59", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED60", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED61", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED62", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED63", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED64", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED65", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED66", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED67", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED68", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED69", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED70", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED71", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED72", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED73", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED74", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED75", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED76", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED77", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED78", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED79", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED80", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED81", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED82", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED83", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED84", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED85", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED86", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED87", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/tz.json new file mode 100644 index 0000000..4819ae4 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw236/tz.json @@ -0,0 +1,861 @@ +{ + "cpu": "mcxw236", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x20000" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "MPU Control Register (cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register(cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register(cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register(cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register(cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register(cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register(cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register(cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register(cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register(cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register(cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register(cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register(cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register(cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register(cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "SAU Control Register (cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register (cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0xfffffe1" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x20004000" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0xefffffe1" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x1000fe00" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x1000ffe3" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "description": "TrustZone register - FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "default_value_int": "0x30" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "FLASH Memory Rule Register 0 (flash_mem_rule0)", + "description": "TrustZone register - FLASH Memory Rule Register 0 (flash_mem_rule0)", + "default_value_int": "0x33" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "FLASH Memory Rule Register 1 (flash_mem_rule1)", + "description": "TrustZone register - FLASH Memory Rule Register 1 (flash_mem_rule1)", + "default_value_int": "0x32103210" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "FLASH Memory Rule Register 2 (flash_mem_rule2)", + "description": "TrustZone register - FLASH Memory Rule Register 2 (flash_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "RAMX Slave Rule Register (ramx_slave_rule)", + "description": "TrustZone register - RAMX Slave Rule Register (ramx_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "RAMX Memory Rule Register 0 (ramx_mem_rule)", + "description": "TrustZone register - RAMX Memory Rule Register 0 (ramx_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "RAM0 Memory Rule Register 0 (ram0_mem_rule)", + "description": "TrustZone register - RAM0 Memory Rule Register 0 (ram0_mem_rule)", + "default_value_int": "0x3333" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "RAM1 Memory Rule Register 0 (ram1_mem_rule)", + "description": "TrustZone register - RAM1 Memory Rule Register 0 (ram1_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "RAM2 Memory Rule Register 0 (ram2_mem_rule0)", + "description": "TrustZone register - RAM2 Memory Rule Register 0 (ram2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "RAM2 Memory Rule Register 1 (ram2_mem_rule1)", + "description": "TrustZone register - RAM2 Memory Rule Register 1 (ram2_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "SPIFI Slave Rule Register (spifi_slave_rule)", + "description": "TrustZone register - SPIFI Slave Rule Register (spifi_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "SPIFI Memory Rule Register 0 (spifi_mem_rule0)", + "description": "TrustZone register - SPIFI Memory Rule Register 0 (spifi_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "SPIFI Memory Rule Register 1 (spifi_mem_rule1)", + "description": "TrustZone register - SPIFI Memory Rule Register 1 (spifi_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "SPIFI Memory Rule Register 2 (spifi_mem_rule2)", + "description": "TrustZone register - SPIFI Memory Rule Register 2 (spifi_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "SPIFI Memory Rule Register 3 (spifi_mem_rule3)", + "description": "TrustZone register - SPIFI Memory Rule Register 3 (spifi_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "description": "TrustZone register - APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x33" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "AHB port 7 Slave Rule Register 0 (ahb_port7_slave_rule0)", + "description": "TrustZone register - AHB port 7 Slave Rule Register 0 (ahb_port7_slave_rule0)", + "default_value_int": "0x3000000" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "AHB port 7 Slave Rule Register 1 (ahb_port7_slave_rule1)", + "description": "TrustZone register - AHB port 7 Slave Rule Register 1 (ahb_port7_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "AHB port 8 Slave Rule Register 0 (ahb_port8_slave_rule0)", + "description": "TrustZone register - AHB port 8 Slave Rule Register 0 (ahb_port8_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "AHB port 8 Slave Rule Register 1 (ahb_port8_slave_rule1)", + "description": "TrustZone register - AHB port 8 Slave Rule Register 1 (ahb_port8_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "AHB port 9 Slave Rule Register 0 (ahb_port9_slave_rule0)", + "description": "TrustZone register - AHB port 9 Slave Rule Register 0 (ahb_port9_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "AHB port 9 Slave Rule Register 1 (ahb_port9_slave_rule1)", + "description": "TrustZone register - AHB port 9 Slave Rule Register 1 (ahb_port9_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "AHB port 10 Slave Rule Register 0 (ahb_port10_slave_rule0)", + "description": "TrustZone register - AHB port 10 Slave Rule Register 0 (ahb_port10_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "AHB Memory Rule Register 0 (ahb_mem_rule0)", + "description": "TrustZone register - AHB Memory Rule Register 0 (ahb_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0x2" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "CM33 Lock Control Register (cm33_lock_reg)", + "description": "TrustZone register - CM33 Lock Control Register (cm33_lock_reg)", + "default_value_int": "0x400002a9" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "Miscellaneous TZM settings (misc_tzm_settings)", + "description": "TrustZone register - Miscellaneous TZM settings (misc_tzm_settings)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw716a/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw716a/database.yaml new file mode 100644 index 0000000..766c80d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw716a/database.yaml @@ -0,0 +1,17 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: k32w148 + +# General MCU information +info: + # Web page of MCU representative + spsdk_predecessor_name: mcxw71xx + web: https://www.nxp.com/products/MCX-W71 + +features: + # ======== PFR section ======== + pfr: + romcfg: + reg_spec: ifr_romcfg_a2.json diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw716c/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw716c/database.yaml new file mode 100644 index 0000000..7400a7f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw716c/database.yaml @@ -0,0 +1,11 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw45b41z8 + +# General MCU information +info: + # Web page of MCU representative + spsdk_predecessor_name: mcxw71xx + web: https://www.nxp.com/products/MCX-W71 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727a/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727a/database.yaml new file mode 100644 index 0000000..767625d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727a/database.yaml @@ -0,0 +1,21 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + purpose: Wireless Connectivity MCUs + # Web page of MCU representative + web: https://www.nxp.com/products/MCX-W72 + use_in_doc: True # Include this MCU in generated documentation + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727c/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727c/database.yaml new file mode 100644 index 0000000..767625d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727c/database.yaml @@ -0,0 +1,21 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + purpose: Wireless Connectivity MCUs + # Web page of MCU representative + web: https://www.nxp.com/products/MCX-W72 + use_in_doc: True # Include this MCU in generated documentation + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727d/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727d/database.yaml new file mode 100644 index 0000000..767625d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mcxw727d/database.yaml @@ -0,0 +1,21 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: kw47b42zb7 + +# General MCU information +info: + purpose: Wireless Connectivity MCUs + # Web page of MCU representative + web: https://www.nxp.com/products/MCX-W72 + use_in_doc: True # Include this MCU in generated documentation + memory_map: # Memory map basic info + internal-flash: + start_int: "0x0" + size_int: "0x20_0000" + external: false + sram: + start_int: "0x2000_0000" + size_int: "0x4_2000" + external: false diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx28/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx28/database.yaml new file mode 100644 index 0000000..571152f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx28/database.yaml @@ -0,0 +1,29 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: False # Include this MCU in generated documentation + purpose: i.MX Application Processors + spsdk_predecessor_name: mx28 + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx28-processors:IMX28_FAMILY + memory_map: {} + isp: + rom: + protocol: sdps + interfaces: ["usb"] + usb: + - vid: 0x15a2 + pid: 0x007D + protocol_params: + no_cmd: False + hid_ep1: False + hid_pack_size: 1024 + +features: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8dxl/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8dxl/database.yaml new file mode 100644 index 0000000..c4d9b26 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8dxl/database.yaml @@ -0,0 +1,116 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: i.MX Application Processors + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX8 + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x8380_0000 # comm buffer in DDR + size: 0x20000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_ahab" + + # ======== AHAB section ======== + ahab: + valid_offset_minimal_alignment: 0x400 + containers_max_cnt: 3 + oem_images_max_cnt: 8 + container_types: [1] # Supported container types + core_ids: + CORTEX_M4: [1, "cortex-m4", "Cortex M4"] + CORTEX_A35: [2, "cortex-a35", "Cortex A35"] + ELE: [0x06, seco, SECO core] + V2X_1: [9, "v2x-1", "V2X 1"] + V2X_2: [10, "v2x-2", "V2X 2"] + image_types: + application: + EXECUTABLE: [0x03, executable, Executable Image] + DATA: [0x04, data, Data Image] + PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + PROVISIONING_DATA: [0x09, provisioning_data, Provisioning data Image] + V2X_DUMMY: [0x0E, v2x_dummy, V2X dummy Image] + ele: + ELE: [0x06, seco, SECO Image] + v2x: + V2X_PRIMARY: [0x0B, v2x_primary, V2X primary Image] + V2X_SECONDARY: [0x0C, v2x_secondary, V2X secondary Image] + V2X_ROM_PATCH: [0x0D, v2x_rom_patch, V2X rom patch Image] + + image_types_mapping: + ele: [6] + v2x: [9, 10] + + # AHAB extra images + ddr_alignments: [0x8000, 0x4000, 0x8000, 0] + ddr_fw_alignment: 0x4 + ddr_image_size_alignment: 0x400 + + spl_ddr_load_address: 0x80000000 + spl_ddr_core_id: cortex-a35 + spl_ddr_meta_data_start_cpu_id: 2 + spl_ddr_image_size_alignment: 0x400 + + atf_load_address: 0x80000000 + atf_core_id: cortex-a35 + atf_meta_data_start_cpu_id: 2 + atf_image_size_alignment: 0x400 + + uboot_load_address: 0x80020000 + uboot_core_id: cortex-a35 + uboot_meta_data_start_cpu_id: 2 + uboot_image_size_alignment: 0x400 + + tee_load_address: 0x96000000 + tee_core_id: cortex-a35 + tee_meta_data_start_cpu_id: 2 + tee_image_size_alignment: 0x400 + + extra_images: ["spl_ddr", "atf", "uboot", "tee"] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + primary_image_container_set: 0x1_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + sd: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + + # ======== Misc signing section ======== + signing: + pss_padding: true + + # ======== Fastboot ======== + fastboot: + address: 0x8280_0000 + size: 0x2000_0000 + + # ======== nxpuuu ========== + nxpuuu: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8m/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8m/database.yaml new file mode 100644 index 0000000..002b45e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8m/database.yaml @@ -0,0 +1,28 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: False # Include this MCU in generated documentation + purpose: i.MX Application Processors + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8m-family-armcortex-a53-cortex-m4-audio-voice-video:i.MX8M + isp: + rom: + protocol: sdp + interfaces: ["usb"] + usb: + - vid: 0x1FC9 + pid: 0x012B + protocol_params: + no_cmd: True + hid_ep1: True + hid_pack_size: 1020 + +features: {} + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mm/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mm/database.yaml new file mode 100644 index 0000000..0feed86 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mm/database.yaml @@ -0,0 +1,27 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: False # Include this MCU in generated documentation + purpose: i.MX Application Processors + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8m-mini-arm-cortex-a53-cortex-m4-audio-voice-video:i.MX8MMINI + isp: + rom: + protocol: sdp + interfaces: ["usb"] + usb: + - vid: 0x1FC9 + pid: 0x0134 + protocol_params: + no_cmd: True + hid_ep1: True + hid_pack_size: 1020 + +features: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mn/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mn/database.yaml new file mode 100644 index 0000000..77c02be --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mn/database.yaml @@ -0,0 +1,28 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: False # Include this MCU in generated documentation + purpose: i.MX Application Processors + spsdk_predecessor_name: mx8mn + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8m-nano-family-arm-cortex-a53-cortex-m7:i.MX8MNANO + isp: + rom: + protocol: sdps + interfaces: ["usb"] + usb: + - vid: 0x1FC9 + pid: 0x013E + protocol_params: + no_cmd: True + hid_ep1: True + hid_pack_size: 1020 + +features: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mp/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mp/database.yaml new file mode 100644 index 0000000..31c17d1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8mp/database.yaml @@ -0,0 +1,28 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: False # Include this MCU in generated documentation + purpose: i.MX Application Processors + spsdk_predecessor_name: mx8mp + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8m-plus-arm-cortex-a53-machine-learning-vision-multimedia-and-industrial-iot:IMX8MPLUS + isp: + rom: + protocol: sdps + interfaces: ["usb"] + usb: + - vid: 0x1FC9 + pid: 0x0146 + protocol_params: + no_cmd: True + hid_ep1: True + hid_pack_size: 1020 + +features: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8qm/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8qm/database.yaml new file mode 100644 index 0000000..d4c74ab --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8qm/database.yaml @@ -0,0 +1,111 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: i.MX Application Processors + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX8 + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x8380_0000 # comm buffer in DDR + size: 0x20000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_ahab" + + # ======== AHAB section ======== + ahab: + valid_offset_minimal_alignment: 0x400 + containers_max_cnt: 3 + oem_images_max_cnt: 8 + container_types: [1] # Supported container types + core_ids: + CORTEX_M4_0: [1, "cortex-m4-0", "Cortex M4 Core 0"] + CORTEX_M4_1: [2, "cortex-m4-1", "Cortex M4 Core 1"] + CORTEX_A72: [3, "cortex-a72", "Cortex A72"] + CORTEX_A53: [4, "cortex-a53", "Cortex A53"] + image_types: + application: + EXECUTABLE: [0x03, executable, Executable Image] + DATA: [0x04, data, Data Image] + DCD: [0x05, dcd, DCD Image] + PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + DEK_VALIDATION: [0x08, dek_validation, DEK validation Image] + PROVISIONING_DATA: [0x09, provisioning_data, Provisioning data Image] + ele: + ELE: [0x06, seco, SECO Image] + + image_types_mapping: + ele: [6] + + # AHAB extra images + ddr_alignments: [0x8000, 0x4000, 0x8000, 0] + ddr_fw_alignment: 0x4 + ddr_image_size_alignment: 0x400 + + spl_ddr_load_address: 0x80000000 + spl_ddr_core_id: cortex-a72 + spl_ddr_meta_data_start_cpu_id: 3 + spl_ddr_image_size_alignment: 0x400 + + atf_load_address: 0x80000000 + atf_core_id: cortex-a72 + atf_meta_data_start_cpu_id: 3 + atf_image_size_alignment: 0x400 + + uboot_load_address: 0x80020000 + uboot_core_id: cortex-a72 + uboot_meta_data_start_cpu_id: 3 + uboot_image_size_alignment: 0x400 + + tee_load_address: 0x96000000 + tee_core_id: cortex-a72 + tee_meta_data_start_cpu_id: 3 + tee_image_size_alignment: 0x400 + + extra_images: ["spl_ddr", "atf", "uboot", "tee"] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + primary_image_container_set: 0x1_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + sd: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + + # ======== Misc signing section ======== + signing: + pss_padding: true + + # ======== Fastboot ======== + fastboot: + address: 0x8280_0000 + size: 0x2000_0000 + + # ======== nxpuuu ========== + nxpuuu: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8qxp/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8qxp/database.yaml new file mode 100644 index 0000000..37e7f89 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8qxp/database.yaml @@ -0,0 +1,109 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: i.MX Application Processors + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX8 + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x8380_0000 # comm buffer in DDR + size: 0x20000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_ahab" + + # ======== AHAB section ======== + ahab: + valid_offset_minimal_alignment: 0x400 + containers_max_cnt: 3 + oem_images_max_cnt: 8 + container_types: [1] # Supported container types + core_ids: + CORTEX_M4: [1, "cortex-m4", "Cortex M4"] + CORTEX_A35: [2, "cortex-a35", "Cortex A35"] + image_types: + application: + EXECUTABLE: [0x03, executable, Executable Image] + DATA: [0x04, data, Data Image] + DCD: [0x05, dcd, DCD Image] + PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + DEK_VALIDATION: [0x08, dek_validation, DEK validation Image] + PROVISIONING_DATA: [0x09, provisioning_data, Provisioning data Image] + ele: + ELE: [0x06, seco, SECO Image] + + image_types_mapping: + ele: [6] + + # AHAB extra images + ddr_alignments: [0x8000, 0x4000, 0x8000, 0] + ddr_fw_alignment: 0x4 + ddr_image_size_alignment: 0x400 + + spl_ddr_load_address: 0x80000000 + spl_ddr_core_id: cortex-a35 + spl_ddr_meta_data_start_cpu_id: 2 + spl_ddr_image_size_alignment: 0x400 + + atf_load_address: 0x80000000 + atf_core_id: cortex-a35 + atf_meta_data_start_cpu_id: 2 + atf_image_size_alignment: 0x400 + + uboot_load_address: 0x80020000 + uboot_core_id: cortex-a35 + uboot_meta_data_start_cpu_id: 2 + uboot_image_size_alignment: 0x400 + + tee_load_address: 0x96000000 + tee_core_id: cortex-a35 + tee_meta_data_start_cpu_id: 2 + tee_image_size_alignment: 0x400 + + extra_images: ["spl_ddr", "atf", "uboot", "tee"] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + primary_image_container_set: 0x1_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + sd: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + + # ======== Misc signing section ======== + signing: + pss_padding: true + + # ======== Fastboot ======== + fastboot: + address: 0x8280_0000 + size: 0x2000_0000 + + # ======== nxpuuu ========== + nxpuuu: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8ulp/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8ulp/database.yaml new file mode 100644 index 0000000..2daccf4 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8ulp/database.yaml @@ -0,0 +1,296 @@ +# Copyright 2023-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + a1: {} + a2: {} +latest: a2 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: i.MX Application Processors + spsdk_predecessor_name: mx8ulp + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8ulp-applications-processor-family:i.MX8ULP + memory_map: + code-tcm_ns: + start_int: 0x0FFC0000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + code-tcm_s: + start_int: 0x1FFC0000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + system-tcm_ns: + start_int: 0x20000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + system-tcm_s: + start_int: 0x30000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + ocram_ns: + start_int: 0x22020000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + ocram_s: + start_int: 0x32020000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + flexspi0_ns: + start_int: 0x04000000 + size_int: 0x08000000 + external: true + mirror_of: flexspi0_s + flexspi0_s: + start_int: 0x14000000 + size_int: 0x08000000 + external: true + flexspi1_ns: + start_int: 0x40000000 + size_int: 0x10000000 + external: true + mirror_of: flexspi1_s + flexspi1_s: + start_int: 0x50000000 + size_int: 0x08000000 + external: true + flexspi2_ns: + start_int: 0x60000000 + size_int: 0x10000000 + external: true + mirror_of: flexspi2_s + flexspi2_s: + start_int: 0x70000000 + size_int: 0x08000000 + external: true + dram1_ns: + start_int: 0x80000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram1_s: + start_int: 0x90000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram2_ns: + start_int: 0xA0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram2_s: + start_int: 0xB0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram3_ns: + start_int: 0xC0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram3_s: + start_int: 0xD0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + isp: + rom: + protocol: sdps + interfaces: ["usb"] + usb: + - vid: 0x1FC9 + pid: 0x014B + protocol_params: + no_cmd: True + hid_ep1: True + hid_pack_size: 1020 + +features: + # ======== Communication buffer section ======== + comm_buffer: + address: 0x8000_0000 + size: 0x20000 + device: nxpele + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_ahab" + + # ======== DAT section ======== + dat: + socc: 0x4D580008 # SOCC identification + based_on_ele: True # Flag if the implementation of DAT is based on EdgeLock Enclave + dat_is_using_sha256_always: True + test_address: 0x22020000 + dmbox_ap_ix: 0 + + # ======== AHAB section ======== + ahab: + containers_max_cnt: 3 + valid_offset_minimal_alignment: 0x400 + container_types: [1] # Supported container types + core_ids: + CORTEX_M33: [1, "cortex-m33", "Cortex M33"] + CORTEX_A55: [2, "cortex-a55", "Cortex A55"] + CORTEX_A53: [4, "cortex-a53", "Cortex A53"] + ELE: [6, "ele", "EdgeLock Enclave"] + HDMI_TX: [7, "hdmi-tx", "HDMI Tx"] + HDMI_RX: [8, "hdmi-rx", "HDMI Rx"] + + image_types: + application: + EXECUTABLE: [0x03, executable, Executable Image] + DATA: [0x04, data, Data Image] + PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + DEK_VALIDATION_FCB_CHK: + [0x08, dek_validation_fcb_chk, DEK validation FCB check Image] + ele: + ELE: [0x06, ele, EdgeLock Enclave Image] + + image_types_mapping: + ele: [6] + + # AHAB extra images + upower_load_address: 0x28300200 + upower_core_id: cortex-a53 + upower_meta_data_start_cpu_id: 0 + upower_image_size_alignment: 0x400 + + spl_load_address: 0x22020000 + spl_core_id: cortex-a55 + spl_meta_data_start_cpu_id: 2 + spl_ddr_image_size_alignment: 0x400 + + atf_load_address: 0x20040000 + atf_core_id: cortex-a55 + atf_meta_data_start_cpu_id: 0 + atf_image_size_alignment: 0x400 + + uboot_load_address: 0x80200000 + uboot_core_id: cortex-a55 + uboot_meta_data_start_cpu_id: 0 + uboot_image_size_alignment: 0x400 + + tee_load_address: 0xa6000000 + tee_core_id: cortex-a55 + tee_meta_data_start_cpu_id: 0 + tee_image_size_alignment: 0x400 + + mcu_load_address: 0x1ffc2000 + mcu_core_id: cortex-m33 + mcu_meta_data_start_cpu_id: 0 + mcu_image_size_alignment: 0x400 + + kernel_load_address: 0x80400000 + kernel_core_id: cortex-a55 + kernel_meta_data_start_cpu_id: 0 + kernel_chunk_size: 0x700000 + kernel_revisions_to_split: [a0] + kernel_image_size_alignment: 0x400 + + dtb_load_address: 0x83000000 + dtb_core_id: cortex-a55 + dtb_meta_data_start_cpu_id: 0 + dtb_entry_point: 0x0 + dtb_image_type: data + dtb_image_size_alignment: 0x400 + + extra_images: [upower, spl, atf, uboot, tee, mcu, kernel, dtb] + + # ======== EdgeLock Enclave section ======== + ele: {} + + # ======== OTFAD section ======== + otfad: + keyblob_byte_swap_cnt: 0 + sb_21_supported: False + has_kek_fuses: False + supports_key_scrambling: True + # TODO add fuses + additional_template: ["otfad_scramble"] + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + flexspi_nor: + note: " + Connected FlexSPI0.\n + - Real time core images only\n + Connected FlexSPI2. \n + - AP image only for dual-boot configuration\n + - RT image and AP image for single-boot configuration + " + segments: + keyblob: 0x0000 + fcb: 0x0400 + #not_used: 0xC00 + primary_image_container_set: 0x1_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc: + note: "Connected uSDHC0. \n + - AP image only for dual-boot configuration\n + - RT image and AP image for single-boot configuration" + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc_boot: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + sd: + note: "Connected uSDHC1/uSDHC2. \n + - AP image only for dual-boot configuration\n + - RT image and AP image for single-boot configuration" + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + flexspi_nand: + note: "Connected FlexSPI2.\n + - AP image only for dual-boot configuration\n + - RT image and AP image for single-boot configuration" + segments: + # xmcd: 0x00 TODO: add support for XMCD + primary_image_container_set: 0x400 # That should be Right behind FCB/DBBT + secondary_image_container_set: -1 # Just behind previous segment + recovery_spi: + note: Connected to LPSPI4/5. SPI NOR recovery image + segments: + primary_image_container_set: 0x00 + secondary_image_container_set: -1 # Just behind previous segment + + # ======== Misc signing section ======== + signing: + pss_padding: true + + # ======== Fastboot ======== + fastboot: + address: 0x8280_0000 + size: 0x2000_0000 + + # ======== nxpuuu ========== + nxpuuu: {} + + # ======== EL2GO TP section ======== + el2go_tp: + el2go_interface: uboot_fastboot + el2go_name: IMX8 + prov_method: oem_app + validation_method: max_count=16;max_total_size=16384 + uuid_fuse_index: "7 0 4" + # ===== TLV ===== + tlv_blob: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8x/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8x/database.yaml new file mode 100644 index 0000000..92315b5 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx8x/database.yaml @@ -0,0 +1,29 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: False # Include this MCU in generated documentation + purpose: i.MX Application Processors + spsdk_predecessor_name: mx8x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8x-family-arm-cortex-a35-3d-graphics-4k-video-dsp-error-correcting-code-on-ddr:i.MX8X + memory_map: {} + isp: + rom: + protocol: sdps + interfaces: ["usb"] + usb: + - vid: 0x1FC9 + pid: 0x007D + protocol_params: + no_cmd: True + hid_ep1: False + hid_pack_size: 1024 + +features: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9131/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9131/database.yaml new file mode 100644 index 0000000..be52f9d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9131/database.yaml @@ -0,0 +1,243 @@ +# Copyright 2024-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: i.MX Application Processors + spsdk_predecessor_name: mx91 + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-9-processors/secure-energy-efficient-i-mx-91-family-brings-essential-linux-capabilities-for-thousands-of-edge-applications:i.MX91 + memory_map: + ocram_ns: + start_int: 0x20480000 + size_int: 0x60000 + external: false + non_xip_type: int_ram + ocram_s: + start_int: 0x30480000 + size_int: 0x60000 + external: false + non_xip_type: int_ram + dram1: + start_int: 0x80000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram2: + start_int: 0x90000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram3: + start_int: 0xA0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram4: + start_int: 0xB0000000 + size_int: 0x44000 + external: true + non_xip_type: ext_ram_ddr + dram5: + start_int: 0xB0044000 + size_int: 0xBC000 + external: true + non_xip_type: ext_ram_ddr + dram6: + start_int: 0xB0100000 + size_int: 0xFF00000 + external: true + non_xip_type: ext_ram_ddr + dram7: + start_int: 0xC0000000 + size_int: 0x40000000 + external: true + non_xip_type: ext_ram_ddr + isp: + rom: + protocol: sdps + interfaces: ["usb"] + usb: + - vid: 0x1FC9 + pid: 0x0159 + protocol_params: + no_cmd: True + hid_ep1: True + hid_pack_size: 1020 +features: + # ======== Fuses description section ======== + fuses: + tool: nxpele + grouped_registers: + - uid: srkh + name: SRKH + width: 256 + reversed: True + config_as_hexstring: True + description: "SHA256 hash digest of OEM SRK public keys stored in Container" + sub_regs: + [ + "fuse128", + "fuse129", + "fuse130", + "fuse131", + "fuse132", + "fuse133", + "fuse134", + "fuse135", + ] + + # ======== AHAB section ======== + ahab: + valid_offset_minimal_alignment: 0x400 + containers_max_cnt: 3 + oem_images_max_cnt: 8 + container_types: [1] # Supported container types + core_ids: + RESERVED: [1, "reserved", "Reserved Core ID"] + CORTEX_A55: [2, "cortex-a55", "Cortex A55"] + ELE: [6, "ele", "EdgeLock Enclave"] + V2X_1: [9, "v2x-1", "V2X 1"] + V2X_2: [10, "v2x-2", "V2X 2"] + image_types: + application: + EXECUTABLE: [0x03, executable, Executable Image] + DATA: [0x04, data, Data Image] + PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + PROVISIONING_DATA: [0x09, provisioning_data, Provisioning data Image] + V2X_DUMMY: [0x0E, v2x_dummy, V2X dummy Image] + ele: + ELE: [0x06, ele, EdgeLock Enclave Image] + v2x: + V2X_PRIMARY: [0x0B, v2x_primary, V2X primary Image] + V2X_SECONDARY: [0x0C, v2x_secondary, V2X secondary Image] + V2X_ROM_PATCH: [0x0D, v2x_rom_patch, V2X rom patch Image] + + image_types_mapping: + ele: [6] + v2x: [9, 10] + + # AHAB extra images + ddr_alignments: [0x8000, 0x4000, 0x8000, 0] + ddr_fw_alignment: 0x4 + ddr_image_size_alignment: 0x400 + + spl_ddr_load_address: 0x204A0000 + spl_ddr_core_id: cortex-a55 + spl_ddr_meta_data_start_cpu_id: 2 + spl_ddr_image_size_alignment: 0x400 + + atf_load_address: 0x204C0000 + atf_core_id: cortex-a55 + atf_meta_data_start_cpu_id: 2 + atf_image_size_alignment: 0x400 + + uboot_load_address: 0x80200000 + uboot_core_id: cortex-a55 + uboot_meta_data_start_cpu_id: 2 + uboot_image_size_alignment: 0x400 + + tee_load_address: 0x96000000 + tee_core_id: cortex-a55 + tee_meta_data_start_cpu_id: 2 + tee_image_size_alignment: 0x400 + + kernel_load_address: 0x80400000 + kernel_core_id: cortex-a55 + kernel_meta_data_start_cpu_id: 2 + kernel_image_size_alignment: 0x400 + + dtb_load_address: 0x83000000 + dtb_core_id: cortex-a55 + dtb_meta_data_start_cpu_id: 0 + dtb_entry_point: 0x0 + dtb_image_type: data + dtb_image_size_alignment: 0x400 + + extra_images: ["spl_ddr", "atf", "uboot", "tee", "kernel", "dtb"] + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x8380_0000 # comm buffer in DDR + size: 0x20000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_ahab" + + # ======== DAT section ======== + dat: + socc: 0x4D58005B # SOCC identification + based_on_ele: True # Flag if the implementation of DAT is based on EdgeLock Enclave + dat_is_using_sha256_always: True + test_address: 0x2048_0000 + dmbox_ap_ix: 0 + + # ======== EdgeLock Enclave section ======== + ele: {} + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + #not_used: 0xC00 + primary_image_container_set: 0x1_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc_boot: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + sd: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + # flexspi_nand: + # segments: + # xmcd: 0x00 + # primary_image_container_set: 0x400 + # secondary_image_container_set: -1 # Just behind previous segment + recovery_spi: + note: Connected to LPSPI1/2/3/4. SPI NOR recovery image + segments: + primary_image_container_set: 0x00 + secondary_image_container_set: -1 # Just behind previous segment + + # ======== nxpuuu ========== + nxpuuu: {} + + # ======== Misc signing section ======== + signing: + pss_padding: true + + # ======== Fastboot ======== + fastboot: + address: 0x8280_0000 + size: 0x2000_0000 + + # ======== EL2GO TP section ======== + el2go_tp: + el2go_interface: uboot_fastboot + el2go_name: IMX9 + prov_method: oem_app + validation_method: max_count=16;max_total_size=16384 + uuid_fuse_index: "6 0 4" + + # ===== TLV ===== + tlv_blob: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9131/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9131/fuses.json new file mode 100644 index 0000000..a7ab0ab --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9131/fuses.json @@ -0,0 +1,10176 @@ +{ + "cpu": "MIMX9131", + "groups": [ + { + "group": { + "name": "General", + "description": "General settings configuration" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCK_CFG0", + "description": "LOCK_CFG0", + "index_int": "0", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse0-bits-0-2", + "name": "BOOT_CFG_LOCK", + "description": "Boot Configuration Fuse Lock for Boot_CFG 0-3 fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "LOCK_CFG_LOCK", + "description": "Lock for Fuse Lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse1", + "name": "LOCK_CFG1", + "description": "LOCK_CFG1", + "index_int": "0x0001", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse1-bits-3-5", + "name": "COM_DEVICE_ID0_LOCK", + "description": "Communication Device ID0 Lock - Ethernet", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse1-bits-6-8", + "name": "COM_DEVICE_ID1_LOCK", + "description": "Communication Device ID1 Lock - USB, Ethernet", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse1-bits-12-14", + "name": "CRC_HI_LOCK", + "description": "CRC words 4,5,6 and 7 Lock field", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse2", + "name": "LOCK_CFG2", + "description": "LOCK_CFG2", + "index_int": "0x0002", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse2-bits-0-2", + "name": "OEM_SW_CFG_LOCK", + "description": "OEM SW Fuse Lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "WP_OP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect - the controlled field can be sensed and overridden, but can't be read or burned", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect - the controlled field can be sensed and burned, but can't be read or over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse2-bits-3-5", + "name": "ELE_OTFAD1_KEY_LOCK", + "description": "OTFAD Key Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse2-bits-9-11", + "name": "ELE_JTAG_RESP_LOCK", + "description": "JTAG Response Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "fuse2-bit-15", + "name": "BOOT2_CFG_LOCK_0", + "description": "Boot Configuration Fuse Lock for Boot_CFG 8-11 fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be burned)" + }, + { + "name": "WRITE_PROTECTED", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)", + "deprecated_names": [ + "WP" + ] + } + ] + } + ] + }, + { + "id": "fuse3", + "name": "LOCK_CFG3", + "description": "LOCK_CFG3", + "index_int": "0x0003", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1, + "id": "fuse3-bit-15", + "name": "BOOT2_CFG_LOCK_1", + "description": "Boot Configuration Fuse Lock for Boot_CFG 8-11 fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (Fuse can be over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "OP", + "value": 1, + "description": "(Over-ride Protect, the controlled field shadow registers can not be over-written)" + } + ] + } + ] + }, + { + "id": "fuse4", + "name": "LOCK_CFG4", + "description": "LOCK_CFG4", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse4-bits-6-8", + "name": "ELE_MISC1_LOCK", + "description": "EdgeLock Enclave Misc. NXP Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse4-bits-12-14", + "name": "ELE_OEM_SRKH_LOCK", + "description": "EdgeLock Enclave OEM SRK Hash Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1, + "id": "fuse4-bit-15", + "name": "BOOT2_CFG_LOCK_2", + "description": "Boot Configuration Fuse Lock for Boot_CFG 8-11 fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read sensed)" + }, + { + "name": "READ_PROTECT", + "value": 1, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)", + "deprecated_names": [ + "RP" + ] + } + ] + } + ] + }, + { + "id": "Reserved5", + "name": "Reserved 0x5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0005", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved6", + "name": "Reserved 0x6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0006", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved7", + "name": "Reserved 0x7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0007", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved8", + "name": "Reserved 0x8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0008", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse9", + "name": "LOCK_CFG9", + "description": "LOCK_CFG9", + "index_int": "0x0009", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse9-bits-3-5", + "name": "GPR2_LOCK", + "description": "General Purpose 2 Fuse Lock ", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse9-bits-6-8", + "name": "GPR3_LOCK", + "description": "General Purpose 3 Fuse Lock ", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse9-bits-9-11", + "name": "GPR4_LOCK", + "description": "General Purpose 4 Fuse Lock ", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved10", + "name": "Reserved 0xA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000A", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved11", + "name": "Reserved 0xB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000B", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved12", + "name": "Reserved 0xC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000C", + "is_reserved": true + }, + { + "id": "Reserved13", + "name": "Reserved 0xD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000D", + "is_reserved": true + }, + { + "id": "Reserved14", + "name": "Reserved 0xE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000E", + "is_reserved": true + }, + { + "id": "Reserved15", + "name": "Reserved 0xF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000F", + "is_reserved": true + }, + { + "id": "Reserved16", + "name": "Reserved 0x10", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0010", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 11 + } + ] + }, + { + "id": "Reserved17", + "name": "Reserved 0x11", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0011", + "is_reserved": true, + "reg_width": 16 + }, + { + "id": "Reserved18", + "name": "Reserved 0x12", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0012", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 15 + }, + { + "width": 1 + }, + { + "width": 15 + } + ] + }, + { + "id": "Reserved19", + "name": "Reserved 0x13", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0013", + "is_reserved": true, + "bitfields": [ + { + "width": 4 + }, + { + "width": 2 + }, + { + "width": 6 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved20", + "name": "Reserved 0x14", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0014", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved21", + "name": "Reserved 0x15", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0015", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 23 + } + ] + }, + { + "id": "Reserved22", + "name": "Reserved 0x16", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0016", + "is_reserved": true + }, + { + "id": "Reserved23", + "name": "Reserved 0x17", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0017", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 25 + } + ] + }, + { + "id": "fuse24", + "name": "BOOT_CFG0", + "description": "BOOT_CFG0", + "index_int": "0x0018", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse24-bits-0-3", + "name": "Boot_Mode_Fuses", + "description": "Boot Mode Fuses\nBootRom will retrieve boot mode from these fuses instead of Boot_Mode pins if\n(BT_FUSE_SEL=1 && Boot_Mode=Internal Fuses)\nOr\n(Force FORCE_BT_FROM_FUSE=1)\n", + "values": [ + { + "name": "A55_INTERNAL_FUSES", + "value": 0, + "description": "Cortex-A55 boot from internal fuses", + "deprecated_names": [ + "INTERNAL_FUSES_A55" + ] + }, + { + "name": "A55_SERIAL_DOWNLOADER", + "value": 1, + "description": "Cortex-A55 boot via Serial Downloader USB 1", + "deprecated_names": [ + "SERIAL_DOWNLOADER_A55" + ] + }, + { + "name": "A55_USDHC1_EMMC", + "value": 2, + "description": "Cortex-A55 boot from USDHC1 8-bit eMMC 5.1", + "deprecated_names": [ + "EMMC_A55" + ] + }, + { + "name": "A55_USDHC2_SD", + "value": 3, + "description": "Cortex-A55 boot from USDHC2 4-bit SD3.0", + "deprecated_names": [ + "SD_CARD_A55" + ] + }, + { + "name": "A55_FLEXSPI_NOR", + "value": 4, + "description": "Cortex-A55 boot from FlexSPI Serial NOR", + "deprecated_names": [ + "FLEXSPI_NOR_A55" + ] + }, + { + "name": "A55_FLEXSPI_NAND", + "value": 5, + "description": "Cortex-A55 boot from FlexSPI Serial NAND 2K page", + "deprecated_names": [ + "FLEXSPI_NAND_A55" + ] + }, + { + "name": "M33_INTERNAL_FUSES", + "value": 8, + "description": "Cortex-M33 boot from internal fuses", + "deprecated_names": [ + "INTERNAL_FUSES_M33" + ] + }, + { + "name": "M33_SERIAL_DOWNLOADER", + "value": 9, + "description": "Cortex-M33 boot via Serial Downloader USB 1", + "deprecated_names": [ + "SERIAL_DOWNLOADER_M33" + ] + }, + { + "name": "M33_USDHC1_EMMC", + "value": 10, + "description": "Cortex-M33 boot from USDHC1 8-bit eMMC 5.1", + "deprecated_names": [ + "EMMC_M33" + ] + }, + { + "name": "M33_USDHC2_SD", + "value": 11, + "description": "Cortex-M33 boot from USDHC2 4-bit SD3.0", + "deprecated_names": [ + "SD_CARD_M33" + ] + }, + { + "name": "M33_FLEXSPI_NOR", + "value": 12, + "description": "Cortex-M33 boot from FlexSPI Serial NOR", + "deprecated_names": [ + "FLEXSPI_NOR_M33" + ] + }, + { + "name": "M33_FLEXSPI_NAND", + "value": 13, + "description": "Cortex-M33 boot from FlexSPI Serial NAND 2K page", + "deprecated_names": [ + "FLEXSPI_NAND_M33" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-4", + "name": "Override_FlexSPI_NOR_Boot_Selection", + "description": "Override FlexSPI NOR Boot Selection", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Do not override", + "deprecated_names": [ + "0" + ] + }, + { + "name": "Override", + "value": 1, + "description": "Override" + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-5-6", + "name": "FlexSPI_NOR_Boot_Override_Selection", + "description": "FlexSPI NOR Boot Override Selection", + "values": [ + { + "name": "FLEXSPI_HYPERFLASH", + "value": 0, + "description": "Flex SPI (Hyperflash 1.8V)", + "deprecated_names": [ + "00" + ] + }, + { + "name": "FLEXSPI_4B_READ", + "value": 1, + "description": "Flex SPI (Flash with 4B READ(0x13)default supported)", + "deprecated_names": [ + "01" + ] + }, + { + "name": "OCTAL_MODE_MICRON", + "value": 2, + "description": "Default Octal mode\u00a0(Micron, Nice to have)", + "deprecated_names": [ + "10" + ] + }, + { + "name": "OCTAL_MODE_MXIC", + "value": 3, + "description": "Default Octal mode (Mxic, Nice to have )", + "deprecated_names": [ + "11" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-7", + "name": "FlexSPI_NAND_4K_Page_Selection", + "description": "FlexSPI NAND 4K Page Selection", + "values": [ + { + "name": "DEFAULT_2K_PAGE", + "value": 0, + "description": "Not override the default selection (2K page)", + "deprecated_names": [ + "0" + ] + }, + { + "name": "OVERRIDE_4K_PAGE", + "value": 1, + "description": "Override, 4K page is selected.", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-8", + "name": "uSDHC_Device_Type", + "description": "uSDHC Device Type", + "values": [ + { + "name": "EMMC", + "value": 0, + "description": "uSDHC_Device_Type: eMMC" + }, + { + "name": "SD", + "value": 1, + "description": "uSDHC_Device_Type: SD" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-9", + "name": "FLEXSPI_NOR_DATA_IOMUX_SION_EN", + "description": "FLEXSPI NOR DATA IOMUX SION EN", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "DISABLED SION is disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "ENABLED SION is enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-10-11", + "name": "FLEXSPI_NOR_FCB_OFFSET", + "description": "FLEXSPI NOR FCB OFFSET", + "values": [ + { + "name": "OFFSET_400B", + "value": 0, + "description": "Select the offset of FlexSPI NOR FCB at 0x400B", + "deprecated_names": [ + "0x400B" + ] + }, + { + "name": "OFFSET_600B", + "value": 1, + "description": "Select the offset of FlexSPI NOR FCB at 0x600B", + "deprecated_names": [ + "0x600B" + ] + }, + { + "name": "OFFSET_800B", + "value": 2, + "description": "Select the offset of FlexSPI NOR FCB at 0x800B", + "deprecated_names": [ + "0x800B" + ] + }, + { + "name": "OFFSET_A00B", + "value": 3, + "description": "Select the offset of FlexSPI NOR FCB at 0xA00B", + "deprecated_names": [ + "0xA00B" + ] + } + ] + }, + { + "width": 3, + "id": "fuse24-bits-12-14", + "name": "FLEXSPI_AUTOPROBE_FEQ_SEL", + "description": "FLEXSPI AUTOPROBE FEQ SEL", + "values": [ + { + "name": "FREQ_24MHZ", + "value": 0, + "description": "24MHz", + "deprecated_names": [ + "24MHz" + ] + }, + { + "name": "FREQ_133MHZ", + "value": 1, + "description": "133 MHz", + "deprecated_names": [ + "133_MHz" + ] + }, + { + "name": "FREQ_166MHZ", + "value": 2, + "description": "166 MHz", + "deprecated_names": [ + "166_MHz" + ] + }, + { + "name": "FREQ_200MHZ", + "value": 3, + "description": "200 MHz", + "deprecated_names": [ + "200_MHz" + ] + }, + { + "name": "FREQ_80MHZ", + "value": 4, + "description": "80MHz", + "deprecated_names": [ + "80MHz" + ] + }, + { + "name": "FREQ_100MHZ", + "value": 5, + "description": "100MHz", + "deprecated_names": [ + "100MHz" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-15", + "name": "FLEXSPI_FCB_COPY_FLAG", + "description": "FLEXSPI FCB COPY FLAG", + "values": [ + { + "name": "PORT_2", + "value": 0, + "description": "Port 2 (single boot mode)" + }, + { + "name": "PORT_3", + "value": 1, + "description": "Port 3 (single boot mode)" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-16", + "name": "SD_Loopback_Clock_Source_Sel", + "description": "SD Loopback clock Source Sel", + "deprecated_names": [ + "SD_Loopback_Clock_Source_Sel " + ], + "values": [ + { + "name": "THROUGH_PAD", + "value": 0, + "description": "Through SD pad", + "deprecated_names": [ + "0" + ] + }, + { + "name": "DIRECT", + "value": 1, + "description": "Direct" + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-17-18", + "name": "SD_Speed_Selection", + "description": "SD Speed Selection", + "values": [ + { + "name": "NORMAL_SDR12", + "value": 0, + "description": "Normal/SDR12 BUS_WIDTH_4BIT 4 bit" + }, + { + "name": "HIGH_SDR25", + "value": 1, + "description": "High/SDR25 BUS_WIDTH_8BIT 8 bit" + }, + { + "name": "SDR50", + "value": 2, + "description": "BUS_WIDTH_4BIT_DDR 4 bit DDR (eMMC 4.4)" + }, + { + "name": "SDR104", + "value": 3, + "description": "BUS_WIDTH_8BIT_DDR bit DDR (eMMC 4.4)" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-19", + "name": "eMMC_Speed_Selection", + "description": "eMMC Speed Selection", + "values": [ + { + "name": "NORMAL_SPEED", + "value": 0, + "description": "Normal Speed" + }, + { + "name": "HIGH_SPEED", + "value": 1, + "description": "High Speed" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-20", + "name": "eMMC_fast_boot", + "description": "eMMC fast boot", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-21", + "name": "RSVD_BT_CFG0_21", + "description": "BOOT_CFG0" + }, + { + "width": 1, + "id": "fuse24-bit-22", + "name": "eMMC_voltage_selection", + "description": "eMMC Voltage selection", + "values": [ + { + "name": "VOLTAGE_3V3", + "value": 0, + "description": "eMMC_voltage_selection: 3.3v", + "deprecated_names": [ + "3.3v" + ] + }, + { + "name": "VOLTAGE_1V8", + "value": 1, + "description": "eMMC_voltage_selection: 1.8v", + "deprecated_names": [ + "1.8v" + ] + } + ] + }, + { + "width": 5, + "id": "fuse24-bits-23-27", + "name": "FlexSPI_NOR_Reset_Pin_selections", + "description": "FlexDPI NOR Reset Pin selections", + "values": [ + { + "name": "GPIO_PIN_0", + "value": 0, + "description": "GPIO[x].0", + "deprecated_names": [ + "GPIO[x].0" + ] + }, + { + "name": "GPIO_PIN_1", + "value": 1, + "description": "GPIO[x].1" + }, + { + "name": "GPIO_PIN_2", + "value": 2, + "description": "GPIO[x].2" + }, + { + "name": "GPIO_PIN_3", + "value": 3, + "description": "GPIO[x].3" + }, + { + "name": "GPIO_PIN_4", + "value": 4, + "description": "GPIO[x].4" + }, + { + "name": "GPIO_PIN_5", + "value": 5, + "description": "GPIO[x].5" + }, + { + "name": "GPIO_PIN_6", + "value": 6, + "description": "GPIO[x].6" + }, + { + "name": "GPIO_PIN_7", + "value": 7, + "description": "GPIO[x].7" + }, + { + "name": "GPIO_PIN_8", + "value": 8, + "description": "GPIO[x].8" + }, + { + "name": "GPIO_PIN_9", + "value": 9, + "description": "GPIO[x].9" + }, + { + "name": "GPIO_PIN_10", + "value": 10, + "description": "GPIO[x].10" + }, + { + "name": "GPIO_PIN_11", + "value": 11, + "description": "GPIO[x].11" + }, + { + "name": "GPIO_PIN_12", + "value": 12, + "description": "GPIO[x].12" + }, + { + "name": "GPIO_PIN_13", + "value": 13, + "description": "GPIO[x].13" + }, + { + "name": "GPIO_PIN_14", + "value": 14, + "description": "GPIO[x].14" + }, + { + "name": "GPIO_PIN_15", + "value": 15, + "description": "GPIO[x].15" + }, + { + "name": "GPIO_PIN_16", + "value": 16, + "description": "GPIO[x].16" + }, + { + "name": "GPIO_PIN_17", + "value": 17, + "description": "GPIO[x].17" + }, + { + "name": "GPIO_PIN_18", + "value": 18, + "description": "GPIO[x].18" + }, + { + "name": "GPIO_PIN_19", + "value": 19, + "description": "GPIO[x].19" + }, + { + "name": "GPIO_PIN_20", + "value": 20, + "description": "GPIO[x].20" + }, + { + "name": "GPIO_PIN_21", + "value": 21, + "description": "GPIO[x].21" + }, + { + "name": "GPIO_PIN_22", + "value": 22, + "description": "GPIO[x].22" + }, + { + "name": "GPIO_PIN_23", + "value": 23, + "description": "GPIO[x].23" + }, + { + "name": "GPIO_PIN_24", + "value": 24, + "description": "GPIO[x].24" + }, + { + "name": "GPIO_PIN_25", + "value": 25, + "description": "GPIO[x].25" + }, + { + "name": "GPIO_PIN_26", + "value": 26, + "description": "GPIO[x].26" + }, + { + "name": "GPIO_PIN_27", + "value": 27, + "description": "GPIO[x].27" + }, + { + "name": "GPIO_PIN_28", + "value": 28, + "description": "GPIO[x].28" + }, + { + "name": "GPIO_PIN_29", + "value": 29, + "description": "GPIO[x].29" + }, + { + "name": "GPIO_PIN_30", + "value": 30, + "description": "GPIO[x].30" + }, + { + "name": "GPIO_PIN_31", + "value": 31, + "description": "GPIO[x].31", + "deprecated_names": [ + "GPIO[x].31" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-28", + "name": "BT_FREQ_SEL", + "description": "BT FREQ SEL", + "values": [ + { + "name": "NORMAL_FREQ", + "value": 0, + "description": "Normal clock frequency", + "deprecated_names": [ + "0" + ] + }, + { + "name": "LOW_FREQ", + "value": 1, + "description": "Low clock frequency", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-29", + "name": "BT_FUSE_SEL", + "description": "BT FUSE SEL", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Boot fuses not programmed", + "deprecated_names": [ + "0" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Boot fuses programmed yet", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-30", + "name": "Force_Boot_from_Fuse", + "description": "Force Boot from Fuse", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override Boot_Mode pins by boot mode fuses", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-31", + "name": "Force_Serial_Download", + "description": "Force Serial Download", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Normal boot mode selection applies" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override all other Boot_Mode & Boot Mode Fuses and enter Serial Download", + "deprecated_names": [ + "1" + ] + } + ] + } + ] + }, + { + "id": "fuse25", + "name": "BOOT_CFG1", + "description": "BOOT_CFG1", + "index_int": "0x0019", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse25-bit-0", + "name": "Fast_Boot_Acknowledge_Disable", + "description": "Fast Boot Acknowledge Disable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Boot Ack Disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Boot Ack Enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse25-bit-2", + "name": "uSDHC_Power_On_Polarity", + "description": "uSHDC Power On Polarity", + "values": [ + { + "name": "LOW", + "value": 0, + "description": "uSDHC_Power_On_Polarity: Low" + }, + { + "name": "HIGH", + "value": 1, + "description": "uSDHC_Power_On_Polarity: High" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-3", + "name": "uSDHC_Power_Cycle_Delay", + "description": "uSDHC Power Cycle Delay", + "values": [ + { + "name": "DELAY_5MS", + "value": 0, + "description": "uSDHC_Power_Cycle_Delay: 5 ms", + "deprecated_names": [ + "5_ms" + ] + }, + { + "name": "DELAY_2_5MS", + "value": 1, + "description": "2.5 ms", + "deprecated_names": [ + "2.5_ms" + ] + } + ] + }, + { + "width": 2, + "id": "fuse25-bits-4-5", + "name": "uSDHC_Power_Cycle_Interval", + "description": "uSDHC Power Cycle Interval", + "values": [ + { + "name": "INTERVAL_20MS", + "value": 0, + "description": "20 ms", + "deprecated_names": [ + "20_ms" + ] + }, + { + "name": "INTERVAL_10MS", + "value": 1, + "description": "10 ms", + "deprecated_names": [ + "10_ms" + ] + }, + { + "name": "INTERVAL_5MS", + "value": 2, + "description": "uSDHC_Power_Cycle_Interval: 5 ms", + "deprecated_names": [ + "5_ms" + ] + }, + { + "name": "INTERVAL_2_5MS", + "value": 3, + "description": "2.5 ms", + "deprecated_names": [ + "2.5_ms" + ] + } + ] + }, + { + "width": 2, + "id": "fuse25-bits-6-7", + "name": "SD_Calibration_Step", + "description": "SD Calibration Step", + "values": [ + { + "name": "1_delay_cell", + "value": 0, + "description": "1 delay cell" + }, + { + "name": "2_delay_cell", + "value": 1, + "description": "2 delay cell" + }, + { + "name": "3_delay_cell", + "value": 2, + "description": "3 delay cell" + }, + { + "name": "5_delay_cell", + "value": 3, + "description": "5 delay cell" + } + ] + }, + { + "width": 8, + "id": "fuse25-bits-8-15", + "name": "uSDHC_PAD_Settings_Low_bits", + "description": "uSDHC Pad Settings Low bits", + "values": [ + { + "name": "OVERRIDE_MIN", + "value": 0, + "description": "Override value 0 - minimum pad setting", + "deprecated_names": [ + "11111111" + ] + }, + { + "name": "OVERRIDE_001", + "value": 1, + "description": "Override value 1 - very low pad setting" + }, + { + "name": "OVERRIDE_002", + "value": 2, + "description": "Override value 2 - very low pad setting" + }, + { + "name": "OVERRIDE_003", + "value": 3, + "description": "Override value 3 - very low pad setting" + }, + { + "name": "OVERRIDE_004", + "value": 4, + "description": "Override value 4 - very low pad setting" + }, + { + "name": "OVERRIDE_005", + "value": 5, + "description": "Override value 5 - very low pad setting" + }, + { + "name": "OVERRIDE_006", + "value": 6, + "description": "Override value 6 - very low pad setting" + }, + { + "name": "OVERRIDE_007", + "value": 7, + "description": "Override value 7 - very low pad setting" + }, + { + "name": "OVERRIDE_008", + "value": 8, + "description": "Override value 8 - low pad setting" + }, + { + "name": "OVERRIDE_016", + "value": 16, + "description": "Override value 16 - low pad setting" + }, + { + "name": "OVERRIDE_024", + "value": 24, + "description": "Override value 24 - low pad setting" + }, + { + "name": "OVERRIDE_032", + "value": 32, + "description": "Override value 32 - low-medium pad setting" + }, + { + "name": "OVERRIDE_048", + "value": 48, + "description": "Override value 48 - low-medium pad setting" + }, + { + "name": "OVERRIDE_064", + "value": 64, + "description": "Override value 64 - medium pad setting" + }, + { + "name": "OVERRIDE_080", + "value": 80, + "description": "Override value 80 - medium pad setting" + }, + { + "name": "OVERRIDE_096", + "value": 96, + "description": "Override value 96 - medium pad setting" + }, + { + "name": "OVERRIDE_112", + "value": 112, + "description": "Override value 112 - medium-high pad setting" + }, + { + "name": "OVERRIDE_128", + "value": 128, + "description": "Override value 128 - medium-high pad setting" + }, + { + "name": "OVERRIDE_144", + "value": 144, + "description": "Override value 144 - medium-high pad setting" + }, + { + "name": "OVERRIDE_160", + "value": 160, + "description": "Override value 160 - high pad setting" + }, + { + "name": "OVERRIDE_176", + "value": 176, + "description": "Override value 176 - high pad setting" + }, + { + "name": "OVERRIDE_192", + "value": 192, + "description": "Override value 192 - high pad setting" + }, + { + "name": "OVERRIDE_208", + "value": 208, + "description": "Override value 208 - very high pad setting" + }, + { + "name": "OVERRIDE_224", + "value": 224, + "description": "Override value 224 - very high pad setting" + }, + { + "name": "OVERRIDE_240", + "value": 240, + "description": "Override value 240 - very high pad setting" + }, + { + "name": "OVERRIDE_248", + "value": 248, + "description": "Override value 248 - very high pad setting" + }, + { + "name": "OVERRIDE_252", + "value": 252, + "description": "Override value 252 - very high pad setting" + }, + { + "name": "OVERRIDE_254", + "value": 254, + "description": "Override value 254 - very high pad setting" + }, + { + "name": "OVERRIDE_MAX", + "value": 255, + "description": "Override value 255 - maximum pad setting" + } + ] + }, + { + "width": 4, + "id": "fuse25-bits-16-19", + "name": "uSDHC_PAD_Setting_High_bits", + "description": "uSDHC Pad Settings High bits", + "values": [ + { + "name": "OVERRIDE_VAL_0", + "value": 0, + "description": "Override value 0 for uSDHC pad settings (High bits)", + "deprecated_names": [ + "1111" + ] + }, + { + "name": "OVERRIDE_VAL_1", + "value": 1, + "description": "Override value 1 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_2", + "value": 2, + "description": "Override value 2 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_3", + "value": 3, + "description": "Override value 3 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_4", + "value": 4, + "description": "Override value 4 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_5", + "value": 5, + "description": "Override value 5 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_6", + "value": 6, + "description": "Override value 6 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_7", + "value": 7, + "description": "Override value 7 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_8", + "value": 8, + "description": "Override value 8 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_9", + "value": 9, + "description": "Override value 9 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_10", + "value": 10, + "description": "Override value 10 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_11", + "value": 11, + "description": "Override value 11 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_12", + "value": 12, + "description": "Override value 12 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_13", + "value": 13, + "description": "Override value 13 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_14", + "value": 14, + "description": "Override value 14 for uSDHC pad settings (High bits)" + }, + { + "name": "OVERRIDE_VAL_15", + "value": 15, + "description": "Override value 15 for uSDHC pad settings (High bits)" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-20", + "name": "Power_Cycle_Enable", + "description": "Power Cycle Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "No power cycle", + "deprecated_names": [ + "0" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-21", + "name": "uSDHC_Override_Pad_Settings", + "description": "uSDHC Override Pad Settings\n(using PAD_SETTINGS value)" + }, + { + "width": 1, + "id": "fuse25-bit-22", + "name": "uSDHC_DLL_Enable", + "description": "uSDHC DLL EnableEnable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable DLL for SD/eMMC" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable DLL for SD/eMMC" + } + ] + }, + { + "width": 1 + }, + { + "width": 7, + "id": "fuse25-bits-24-30", + "name": "MMC_DLL_DLY", + "description": "MMC DLL DLY", + "values": [ + { + "name": "DLY_TARGET_0", + "value": 0, + "description": "Delay target for uSDHC DLL set to 0", + "deprecated_names": [ + "1111111" + ] + }, + { + "name": "DLY_TARGET_1", + "value": 1, + "description": "Delay target for uSDHC DLL set to 1" + }, + { + "name": "DLY_TARGET_2", + "value": 2, + "description": "Delay target for uSDHC DLL set to 2" + }, + { + "name": "DLY_TARGET_3", + "value": 3, + "description": "Delay target for uSDHC DLL set to 3" + }, + { + "name": "DLY_TARGET_4", + "value": 4, + "description": "Delay target for uSDHC DLL set to 4" + }, + { + "name": "DLY_TARGET_5", + "value": 5, + "description": "Delay target for uSDHC DLL set to 5" + }, + { + "name": "DLY_TARGET_6", + "value": 6, + "description": "Delay target for uSDHC DLL set to 6" + }, + { + "name": "DLY_TARGET_7", + "value": 7, + "description": "Delay target for uSDHC DLL set to 7" + }, + { + "name": "DLY_TARGET_8", + "value": 8, + "description": "Delay target for uSDHC DLL set to 8" + }, + { + "name": "DLY_TARGET_9", + "value": 9, + "description": "Delay target for uSDHC DLL set to 9" + }, + { + "name": "DLY_TARGET_10", + "value": 10, + "description": "Delay target for uSDHC DLL set to 10" + }, + { + "name": "DLY_TARGET_11", + "value": 11, + "description": "Delay target for uSDHC DLL set to 11" + }, + { + "name": "DLY_TARGET_12", + "value": 12, + "description": "Delay target for uSDHC DLL set to 12" + }, + { + "name": "DLY_TARGET_13", + "value": 13, + "description": "Delay target for uSDHC DLL set to 13" + }, + { + "name": "DLY_TARGET_14", + "value": 14, + "description": "Delay target for uSDHC DLL set to 14" + }, + { + "name": "DLY_TARGET_15", + "value": 15, + "description": "Delay target for uSDHC DLL set to 15" + }, + { + "name": "DLY_TARGET_16", + "value": 16, + "description": "Delay target for uSDHC DLL set to 16" + }, + { + "name": "DLY_TARGET_17", + "value": 17, + "description": "Delay target for uSDHC DLL set to 17" + }, + { + "name": "DLY_TARGET_18", + "value": 18, + "description": "Delay target for uSDHC DLL set to 18" + }, + { + "name": "DLY_TARGET_19", + "value": 19, + "description": "Delay target for uSDHC DLL set to 19" + }, + { + "name": "DLY_TARGET_20", + "value": 20, + "description": "Delay target for uSDHC DLL set to 20" + }, + { + "name": "DLY_TARGET_21", + "value": 21, + "description": "Delay target for uSDHC DLL set to 21" + }, + { + "name": "DLY_TARGET_22", + "value": 22, + "description": "Delay target for uSDHC DLL set to 22" + }, + { + "name": "DLY_TARGET_23", + "value": 23, + "description": "Delay target for uSDHC DLL set to 23" + }, + { + "name": "DLY_TARGET_24", + "value": 24, + "description": "Delay target for uSDHC DLL set to 24" + }, + { + "name": "DLY_TARGET_25", + "value": 25, + "description": "Delay target for uSDHC DLL set to 25" + }, + { + "name": "DLY_TARGET_26", + "value": 26, + "description": "Delay target for uSDHC DLL set to 26" + }, + { + "name": "DLY_TARGET_27", + "value": 27, + "description": "Delay target for uSDHC DLL set to 27" + }, + { + "name": "DLY_TARGET_28", + "value": 28, + "description": "Delay target for uSDHC DLL set to 28" + }, + { + "name": "DLY_TARGET_29", + "value": 29, + "description": "Delay target for uSDHC DLL set to 29" + }, + { + "name": "DLY_TARGET_30", + "value": 30, + "description": "Delay target for uSDHC DLL set to 30" + }, + { + "name": "DLY_TARGET_31", + "value": 31, + "description": "Delay target for uSDHC DLL set to 31" + }, + { + "name": "DLY_TARGET_32", + "value": 32, + "description": "Delay target for uSDHC DLL set to 32" + }, + { + "name": "DLY_TARGET_33", + "value": 33, + "description": "Delay target for uSDHC DLL set to 33" + }, + { + "name": "DLY_TARGET_34", + "value": 34, + "description": "Delay target for uSDHC DLL set to 34" + }, + { + "name": "DLY_TARGET_35", + "value": 35, + "description": "Delay target for uSDHC DLL set to 35" + }, + { + "name": "DLY_TARGET_36", + "value": 36, + "description": "Delay target for uSDHC DLL set to 36" + }, + { + "name": "DLY_TARGET_37", + "value": 37, + "description": "Delay target for uSDHC DLL set to 37" + }, + { + "name": "DLY_TARGET_38", + "value": 38, + "description": "Delay target for uSDHC DLL set to 38" + }, + { + "name": "DLY_TARGET_39", + "value": 39, + "description": "Delay target for uSDHC DLL set to 39" + }, + { + "name": "DLY_TARGET_40", + "value": 40, + "description": "Delay target for uSDHC DLL set to 40" + }, + { + "name": "DLY_TARGET_41", + "value": 41, + "description": "Delay target for uSDHC DLL set to 41" + }, + { + "name": "DLY_TARGET_42", + "value": 42, + "description": "Delay target for uSDHC DLL set to 42" + }, + { + "name": "DLY_TARGET_43", + "value": 43, + "description": "Delay target for uSDHC DLL set to 43" + }, + { + "name": "DLY_TARGET_44", + "value": 44, + "description": "Delay target for uSDHC DLL set to 44" + }, + { + "name": "DLY_TARGET_45", + "value": 45, + "description": "Delay target for uSDHC DLL set to 45" + }, + { + "name": "DLY_TARGET_46", + "value": 46, + "description": "Delay target for uSDHC DLL set to 46" + }, + { + "name": "DLY_TARGET_47", + "value": 47, + "description": "Delay target for uSDHC DLL set to 47" + }, + { + "name": "DLY_TARGET_48", + "value": 48, + "description": "Delay target for uSDHC DLL set to 48" + }, + { + "name": "DLY_TARGET_49", + "value": 49, + "description": "Delay target for uSDHC DLL set to 49" + }, + { + "name": "DLY_TARGET_50", + "value": 50, + "description": "Delay target for uSDHC DLL set to 50" + }, + { + "name": "DLY_TARGET_51", + "value": 51, + "description": "Delay target for uSDHC DLL set to 51" + }, + { + "name": "DLY_TARGET_52", + "value": 52, + "description": "Delay target for uSDHC DLL set to 52" + }, + { + "name": "DLY_TARGET_53", + "value": 53, + "description": "Delay target for uSDHC DLL set to 53" + }, + { + "name": "DLY_TARGET_54", + "value": 54, + "description": "Delay target for uSDHC DLL set to 54" + }, + { + "name": "DLY_TARGET_55", + "value": 55, + "description": "Delay target for uSDHC DLL set to 55" + }, + { + "name": "DLY_TARGET_56", + "value": 56, + "description": "Delay target for uSDHC DLL set to 56" + }, + { + "name": "DLY_TARGET_57", + "value": 57, + "description": "Delay target for uSDHC DLL set to 57" + }, + { + "name": "DLY_TARGET_58", + "value": 58, + "description": "Delay target for uSDHC DLL set to 58" + }, + { + "name": "DLY_TARGET_59", + "value": 59, + "description": "Delay target for uSDHC DLL set to 59" + }, + { + "name": "DLY_TARGET_60", + "value": 60, + "description": "Delay target for uSDHC DLL set to 60" + }, + { + "name": "DLY_TARGET_61", + "value": 61, + "description": "Delay target for uSDHC DLL set to 61" + }, + { + "name": "DLY_TARGET_62", + "value": 62, + "description": "Delay target for uSDHC DLL set to 62" + }, + { + "name": "DLY_TARGET_63", + "value": 63, + "description": "Delay target for uSDHC DLL set to 63" + }, + { + "name": "DLY_TARGET_64", + "value": 64, + "description": "Delay target for uSDHC DLL set to 64" + }, + { + "name": "DLY_TARGET_65", + "value": 65, + "description": "Delay target for uSDHC DLL set to 65" + }, + { + "name": "DLY_TARGET_66", + "value": 66, + "description": "Delay target for uSDHC DLL set to 66" + }, + { + "name": "DLY_TARGET_67", + "value": 67, + "description": "Delay target for uSDHC DLL set to 67" + }, + { + "name": "DLY_TARGET_68", + "value": 68, + "description": "Delay target for uSDHC DLL set to 68" + }, + { + "name": "DLY_TARGET_69", + "value": 69, + "description": "Delay target for uSDHC DLL set to 69" + }, + { + "name": "DLY_TARGET_70", + "value": 70, + "description": "Delay target for uSDHC DLL set to 70" + }, + { + "name": "DLY_TARGET_71", + "value": 71, + "description": "Delay target for uSDHC DLL set to 71" + }, + { + "name": "DLY_TARGET_72", + "value": 72, + "description": "Delay target for uSDHC DLL set to 72" + }, + { + "name": "DLY_TARGET_73", + "value": 73, + "description": "Delay target for uSDHC DLL set to 73" + }, + { + "name": "DLY_TARGET_74", + "value": 74, + "description": "Delay target for uSDHC DLL set to 74" + }, + { + "name": "DLY_TARGET_75", + "value": 75, + "description": "Delay target for uSDHC DLL set to 75" + }, + { + "name": "DLY_TARGET_76", + "value": 76, + "description": "Delay target for uSDHC DLL set to 76" + }, + { + "name": "DLY_TARGET_77", + "value": 77, + "description": "Delay target for uSDHC DLL set to 77" + }, + { + "name": "DLY_TARGET_78", + "value": 78, + "description": "Delay target for uSDHC DLL set to 78" + }, + { + "name": "DLY_TARGET_79", + "value": 79, + "description": "Delay target for uSDHC DLL set to 79" + }, + { + "name": "DLY_TARGET_80", + "value": 80, + "description": "Delay target for uSDHC DLL set to 80" + }, + { + "name": "DLY_TARGET_81", + "value": 81, + "description": "Delay target for uSDHC DLL set to 81" + }, + { + "name": "DLY_TARGET_82", + "value": 82, + "description": "Delay target for uSDHC DLL set to 82" + }, + { + "name": "DLY_TARGET_83", + "value": 83, + "description": "Delay target for uSDHC DLL set to 83" + }, + { + "name": "DLY_TARGET_84", + "value": 84, + "description": "Delay target for uSDHC DLL set to 84" + }, + { + "name": "DLY_TARGET_85", + "value": 85, + "description": "Delay target for uSDHC DLL set to 85" + }, + { + "name": "DLY_TARGET_86", + "value": 86, + "description": "Delay target for uSDHC DLL set to 86" + }, + { + "name": "DLY_TARGET_87", + "value": 87, + "description": "Delay target for uSDHC DLL set to 87" + }, + { + "name": "DLY_TARGET_88", + "value": 88, + "description": "Delay target for uSDHC DLL set to 88" + }, + { + "name": "DLY_TARGET_89", + "value": 89, + "description": "Delay target for uSDHC DLL set to 89" + }, + { + "name": "DLY_TARGET_90", + "value": 90, + "description": "Delay target for uSDHC DLL set to 90" + }, + { + "name": "DLY_TARGET_91", + "value": 91, + "description": "Delay target for uSDHC DLL set to 91" + }, + { + "name": "DLY_TARGET_92", + "value": 92, + "description": "Delay target for uSDHC DLL set to 92" + }, + { + "name": "DLY_TARGET_93", + "value": 93, + "description": "Delay target for uSDHC DLL set to 93" + }, + { + "name": "DLY_TARGET_94", + "value": 94, + "description": "Delay target for uSDHC DLL set to 94" + }, + { + "name": "DLY_TARGET_95", + "value": 95, + "description": "Delay target for uSDHC DLL set to 95" + }, + { + "name": "DLY_TARGET_96", + "value": 96, + "description": "Delay target for uSDHC DLL set to 96" + }, + { + "name": "DLY_TARGET_97", + "value": 97, + "description": "Delay target for uSDHC DLL set to 97" + }, + { + "name": "DLY_TARGET_98", + "value": 98, + "description": "Delay target for uSDHC DLL set to 98" + }, + { + "name": "DLY_TARGET_99", + "value": 99, + "description": "Delay target for uSDHC DLL set to 99" + }, + { + "name": "DLY_TARGET_100", + "value": 100, + "description": "Delay target for uSDHC DLL set to 100" + }, + { + "name": "DLY_TARGET_101", + "value": 101, + "description": "Delay target for uSDHC DLL set to 101" + }, + { + "name": "DLY_TARGET_102", + "value": 102, + "description": "Delay target for uSDHC DLL set to 102" + }, + { + "name": "DLY_TARGET_103", + "value": 103, + "description": "Delay target for uSDHC DLL set to 103" + }, + { + "name": "DLY_TARGET_104", + "value": 104, + "description": "Delay target for uSDHC DLL set to 104" + }, + { + "name": "DLY_TARGET_105", + "value": 105, + "description": "Delay target for uSDHC DLL set to 105" + }, + { + "name": "DLY_TARGET_106", + "value": 106, + "description": "Delay target for uSDHC DLL set to 106" + }, + { + "name": "DLY_TARGET_107", + "value": 107, + "description": "Delay target for uSDHC DLL set to 107" + }, + { + "name": "DLY_TARGET_108", + "value": 108, + "description": "Delay target for uSDHC DLL set to 108" + }, + { + "name": "DLY_TARGET_109", + "value": 109, + "description": "Delay target for uSDHC DLL set to 109" + }, + { + "name": "DLY_TARGET_110", + "value": 110, + "description": "Delay target for uSDHC DLL set to 110" + }, + { + "name": "DLY_TARGET_111", + "value": 111, + "description": "Delay target for uSDHC DLL set to 111" + }, + { + "name": "DLY_TARGET_112", + "value": 112, + "description": "Delay target for uSDHC DLL set to 112" + }, + { + "name": "DLY_TARGET_113", + "value": 113, + "description": "Delay target for uSDHC DLL set to 113" + }, + { + "name": "DLY_TARGET_114", + "value": 114, + "description": "Delay target for uSDHC DLL set to 114" + }, + { + "name": "DLY_TARGET_115", + "value": 115, + "description": "Delay target for uSDHC DLL set to 115" + }, + { + "name": "DLY_TARGET_116", + "value": 116, + "description": "Delay target for uSDHC DLL set to 116" + }, + { + "name": "DLY_TARGET_117", + "value": 117, + "description": "Delay target for uSDHC DLL set to 117" + }, + { + "name": "DLY_TARGET_118", + "value": 118, + "description": "Delay target for uSDHC DLL set to 118" + }, + { + "name": "DLY_TARGET_119", + "value": 119, + "description": "Delay target for uSDHC DLL set to 119" + }, + { + "name": "DLY_TARGET_120", + "value": 120, + "description": "Delay target for uSDHC DLL set to 120" + }, + { + "name": "DLY_TARGET_121", + "value": 121, + "description": "Delay target for uSDHC DLL set to 121" + }, + { + "name": "DLY_TARGET_122", + "value": 122, + "description": "Delay target for uSDHC DLL set to 122" + }, + { + "name": "DLY_TARGET_123", + "value": 123, + "description": "Delay target for uSDHC DLL set to 123" + }, + { + "name": "DLY_TARGET_124", + "value": 124, + "description": "Delay target for uSDHC DLL set to 124" + }, + { + "name": "DLY_TARGET_125", + "value": 125, + "description": "Delay target for uSDHC DLL set to 125" + }, + { + "name": "DLY_TARGET_126", + "value": 126, + "description": "Delay target for uSDHC DLL set to 126" + }, + { + "name": "DLY_TARGET_127", + "value": 127, + "description": "Delay target for uSDHC DLL set to 127" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-31", + "name": "uSDHC_DLL_Select", + "description": "uSDHC DLL Select", + "values": [ + { + "name": "DLL_SLAVE", + "value": 0, + "description": "DLL Slave Mode for" + }, + { + "name": "DLL_OVERRIDE", + "value": 1, + "description": "DLL Override Mode" + } + ] + } + ] + }, + { + "id": "fuse26", + "name": "BOOT_CFG2", + "description": "BOOT_CFG2", + "index_int": "0x001A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse26-bits-0-1", + "name": "FlexSPI_NAND_Column_Address_Width", + "description": "FlexSPI NAND Column Address Width", + "values": [ + { + "name": "WIDTH_12_BITS", + "value": 0, + "description": "12-bit column address width", + "deprecated_names": [ + "ADDR_WIDTH_12" + ] + }, + { + "name": "WIDTH_13_BITS", + "value": 1, + "description": "13-bit column address width", + "deprecated_names": [ + "ADDR_WIDTH_13" + ] + }, + { + "name": "WIDTH_14_BITS", + "value": 2, + "description": "14-bit column address width", + "deprecated_names": [ + "ADDR_WIDTH_14" + ] + }, + { + "name": "WIDTH_15_BITS", + "value": 3, + "description": "15-bit column address width", + "deprecated_names": [ + "ADDR_WIDTH_15" + ] + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-2-3", + "name": "FlexSPI_NAND_CS_Interval", + "description": "FlexSPI NAND CS Interval", + "values": [ + { + "name": "INTERVAL_100NS", + "value": 0, + "description": "100 ns" + }, + { + "name": "INTERVAL_200NS", + "value": 1, + "description": "200 ns" + }, + { + "name": "INTERVAL_400NS", + "value": 2, + "description": "400 ns" + }, + { + "name": "INTERVAL_50NS", + "value": 3, + "description": "50 ns" + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-4-5", + "name": "FlexSPI_NAND_Search_Count", + "description": "FlexSPI NAND Search Count", + "values": [ + { + "name": "SEARCH_COUNT_2", + "value": 0, + "description": "FlexSPI_NAND_Search_Count: 2", + "deprecated_names": [ + "2" + ] + }, + { + "name": "01", + "value": 1, + "description": "2 Redudant value" + }, + { + "name": "SEARCH_COUNT_4", + "value": 2, + "description": "FlexSPI_NAND_Search_Count: 4", + "deprecated_names": [ + "4" + ] + }, + { + "name": "SEARCH_COUNT_8", + "value": 3, + "description": "FlexSPI_NAND_Search_Count: 8", + "deprecated_names": [ + "8" + ] + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-6-7", + "name": "FlexSPI_NAND_Search_Stride", + "description": "FlexSPI NAND Search Stride", + "values": [ + { + "name": "64_pages", + "value": 0, + "description": "64 pages" + }, + { + "name": "128_pages", + "value": 1, + "description": "128 pages" + }, + { + "name": "256_pages", + "value": 2, + "description": "256 pages" + }, + { + "name": "32_pages", + "value": 3, + "description": "32 pages" + } + ] + }, + { + "width": 8, + "id": "fuse26-bits-8-15", + "name": "FlexSPI_DLL_Value", + "description": "FlexSPI DLL Value", + "values": [ + { + "name": "DLL_DELAY_MIN", + "value": 0, + "description": "The delay line value only for HyperFlash - minimum delay (0)", + "deprecated_names": [ + "11111111" + ] + }, + { + "name": "DLL_DELAY_1", + "value": 1, + "description": "The delay line value only for HyperFlash - delay value 1" + }, + { + "name": "DLL_DELAY_2", + "value": 2, + "description": "The delay line value only for HyperFlash - delay value 2" + }, + { + "name": "DLL_DELAY_3", + "value": 3, + "description": "The delay line value only for HyperFlash - delay value 3" + }, + { + "name": "DLL_DELAY_4", + "value": 4, + "description": "The delay line value only for HyperFlash - delay value 4" + }, + { + "name": "DLL_DELAY_5", + "value": 5, + "description": "The delay line value only for HyperFlash - delay value 5" + }, + { + "name": "DLL_DELAY_6", + "value": 6, + "description": "The delay line value only for HyperFlash - delay value 6" + }, + { + "name": "DLL_DELAY_7", + "value": 7, + "description": "The delay line value only for HyperFlash - delay value 7" + }, + { + "name": "DLL_DELAY_8", + "value": 8, + "description": "The delay line value only for HyperFlash - delay value 8" + }, + { + "name": "DLL_DELAY_9", + "value": 9, + "description": "The delay line value only for HyperFlash - delay value 9" + }, + { + "name": "DLL_DELAY_10", + "value": 10, + "description": "The delay line value only for HyperFlash - delay value 10" + }, + { + "name": "DLL_DELAY_11", + "value": 11, + "description": "The delay line value only for HyperFlash - delay value 11" + }, + { + "name": "DLL_DELAY_12", + "value": 12, + "description": "The delay line value only for HyperFlash - delay value 12" + }, + { + "name": "DLL_DELAY_13", + "value": 13, + "description": "The delay line value only for HyperFlash - delay value 13" + }, + { + "name": "DLL_DELAY_14", + "value": 14, + "description": "The delay line value only for HyperFlash - delay value 14" + }, + { + "name": "DLL_DELAY_15", + "value": 15, + "description": "The delay line value only for HyperFlash - delay value 15" + }, + { + "name": "DLL_DELAY_16", + "value": 16, + "description": "The delay line value only for HyperFlash - delay value 16" + }, + { + "name": "DLL_DELAY_17", + "value": 17, + "description": "The delay line value only for HyperFlash - delay value 17" + }, + { + "name": "DLL_DELAY_18", + "value": 18, + "description": "The delay line value only for HyperFlash - delay value 18" + }, + { + "name": "DLL_DELAY_19", + "value": 19, + "description": "The delay line value only for HyperFlash - delay value 19" + }, + { + "name": "DLL_DELAY_20", + "value": 20, + "description": "The delay line value only for HyperFlash - delay value 20" + }, + { + "name": "DLL_DELAY_21", + "value": 21, + "description": "The delay line value only for HyperFlash - delay value 21" + }, + { + "name": "DLL_DELAY_22", + "value": 22, + "description": "The delay line value only for HyperFlash - delay value 22" + }, + { + "name": "DLL_DELAY_23", + "value": 23, + "description": "The delay line value only for HyperFlash - delay value 23" + }, + { + "name": "DLL_DELAY_24", + "value": 24, + "description": "The delay line value only for HyperFlash - delay value 24" + }, + { + "name": "DLL_DELAY_25", + "value": 25, + "description": "The delay line value only for HyperFlash - delay value 25" + }, + { + "name": "DLL_DELAY_26", + "value": 26, + "description": "The delay line value only for HyperFlash - delay value 26" + }, + { + "name": "DLL_DELAY_27", + "value": 27, + "description": "The delay line value only for HyperFlash - delay value 27" + }, + { + "name": "DLL_DELAY_28", + "value": 28, + "description": "The delay line value only for HyperFlash - delay value 28" + }, + { + "name": "DLL_DELAY_29", + "value": 29, + "description": "The delay line value only for HyperFlash - delay value 29" + }, + { + "name": "DLL_DELAY_30", + "value": 30, + "description": "The delay line value only for HyperFlash - delay value 30" + }, + { + "name": "DLL_DELAY_31", + "value": 31, + "description": "The delay line value only for HyperFlash - delay value 31" + }, + { + "name": "DLL_DELAY_32", + "value": 32, + "description": "The delay line value only for HyperFlash - delay value 32" + }, + { + "name": "DLL_DELAY_33", + "value": 33, + "description": "The delay line value only for HyperFlash - delay value 33" + }, + { + "name": "DLL_DELAY_34", + "value": 34, + "description": "The delay line value only for HyperFlash - delay value 34" + }, + { + "name": "DLL_DELAY_35", + "value": 35, + "description": "The delay line value only for HyperFlash - delay value 35" + }, + { + "name": "DLL_DELAY_36", + "value": 36, + "description": "The delay line value only for HyperFlash - delay value 36" + }, + { + "name": "DLL_DELAY_37", + "value": 37, + "description": "The delay line value only for HyperFlash - delay value 37" + }, + { + "name": "DLL_DELAY_38", + "value": 38, + "description": "The delay line value only for HyperFlash - delay value 38" + }, + { + "name": "DLL_DELAY_39", + "value": 39, + "description": "The delay line value only for HyperFlash - delay value 39" + }, + { + "name": "DLL_DELAY_40", + "value": 40, + "description": "The delay line value only for HyperFlash - delay value 40" + }, + { + "name": "DLL_DELAY_41", + "value": 41, + "description": "The delay line value only for HyperFlash - delay value 41" + }, + { + "name": "DLL_DELAY_42", + "value": 42, + "description": "The delay line value only for HyperFlash - delay value 42" + }, + { + "name": "DLL_DELAY_43", + "value": 43, + "description": "The delay line value only for HyperFlash - delay value 43" + }, + { + "name": "DLL_DELAY_44", + "value": 44, + "description": "The delay line value only for HyperFlash - delay value 44" + }, + { + "name": "DLL_DELAY_45", + "value": 45, + "description": "The delay line value only for HyperFlash - delay value 45" + }, + { + "name": "DLL_DELAY_46", + "value": 46, + "description": "The delay line value only for HyperFlash - delay value 46" + }, + { + "name": "DLL_DELAY_47", + "value": 47, + "description": "The delay line value only for HyperFlash - delay value 47" + }, + { + "name": "DLL_DELAY_48", + "value": 48, + "description": "The delay line value only for HyperFlash - delay value 48" + }, + { + "name": "DLL_DELAY_49", + "value": 49, + "description": "The delay line value only for HyperFlash - delay value 49" + }, + { + "name": "DLL_DELAY_50", + "value": 50, + "description": "The delay line value only for HyperFlash - delay value 50" + }, + { + "name": "DLL_DELAY_51", + "value": 51, + "description": "The delay line value only for HyperFlash - delay value 51" + }, + { + "name": "DLL_DELAY_52", + "value": 52, + "description": "The delay line value only for HyperFlash - delay value 52" + }, + { + "name": "DLL_DELAY_53", + "value": 53, + "description": "The delay line value only for HyperFlash - delay value 53" + }, + { + "name": "DLL_DELAY_54", + "value": 54, + "description": "The delay line value only for HyperFlash - delay value 54" + }, + { + "name": "DLL_DELAY_55", + "value": 55, + "description": "The delay line value only for HyperFlash - delay value 55" + }, + { + "name": "DLL_DELAY_56", + "value": 56, + "description": "The delay line value only for HyperFlash - delay value 56" + }, + { + "name": "DLL_DELAY_57", + "value": 57, + "description": "The delay line value only for HyperFlash - delay value 57" + }, + { + "name": "DLL_DELAY_58", + "value": 58, + "description": "The delay line value only for HyperFlash - delay value 58" + }, + { + "name": "DLL_DELAY_59", + "value": 59, + "description": "The delay line value only for HyperFlash - delay value 59" + }, + { + "name": "DLL_DELAY_60", + "value": 60, + "description": "The delay line value only for HyperFlash - delay value 60" + }, + { + "name": "DLL_DELAY_61", + "value": 61, + "description": "The delay line value only for HyperFlash - delay value 61" + }, + { + "name": "DLL_DELAY_62", + "value": 62, + "description": "The delay line value only for HyperFlash - delay value 62" + }, + { + "name": "DLL_DELAY_63", + "value": 63, + "description": "The delay line value only for HyperFlash - delay value 63" + }, + { + "name": "DLL_DELAY_64", + "value": 64, + "description": "The delay line value only for HyperFlash - delay value 64" + }, + { + "name": "DLL_DELAY_65", + "value": 65, + "description": "The delay line value only for HyperFlash - delay value 65" + }, + { + "name": "DLL_DELAY_66", + "value": 66, + "description": "The delay line value only for HyperFlash - delay value 66" + }, + { + "name": "DLL_DELAY_67", + "value": 67, + "description": "The delay line value only for HyperFlash - delay value 67" + }, + { + "name": "DLL_DELAY_68", + "value": 68, + "description": "The delay line value only for HyperFlash - delay value 68" + }, + { + "name": "DLL_DELAY_69", + "value": 69, + "description": "The delay line value only for HyperFlash - delay value 69" + }, + { + "name": "DLL_DELAY_70", + "value": 70, + "description": "The delay line value only for HyperFlash - delay value 70" + }, + { + "name": "DLL_DELAY_71", + "value": 71, + "description": "The delay line value only for HyperFlash - delay value 71" + }, + { + "name": "DLL_DELAY_72", + "value": 72, + "description": "The delay line value only for HyperFlash - delay value 72" + }, + { + "name": "DLL_DELAY_73", + "value": 73, + "description": "The delay line value only for HyperFlash - delay value 73" + }, + { + "name": "DLL_DELAY_74", + "value": 74, + "description": "The delay line value only for HyperFlash - delay value 74" + }, + { + "name": "DLL_DELAY_75", + "value": 75, + "description": "The delay line value only for HyperFlash - delay value 75" + }, + { + "name": "DLL_DELAY_76", + "value": 76, + "description": "The delay line value only for HyperFlash - delay value 76" + }, + { + "name": "DLL_DELAY_77", + "value": 77, + "description": "The delay line value only for HyperFlash - delay value 77" + }, + { + "name": "DLL_DELAY_78", + "value": 78, + "description": "The delay line value only for HyperFlash - delay value 78" + }, + { + "name": "DLL_DELAY_79", + "value": 79, + "description": "The delay line value only for HyperFlash - delay value 79" + }, + { + "name": "DLL_DELAY_80", + "value": 80, + "description": "The delay line value only for HyperFlash - delay value 80" + }, + { + "name": "DLL_DELAY_81", + "value": 81, + "description": "The delay line value only for HyperFlash - delay value 81" + }, + { + "name": "DLL_DELAY_82", + "value": 82, + "description": "The delay line value only for HyperFlash - delay value 82" + }, + { + "name": "DLL_DELAY_83", + "value": 83, + "description": "The delay line value only for HyperFlash - delay value 83" + }, + { + "name": "DLL_DELAY_84", + "value": 84, + "description": "The delay line value only for HyperFlash - delay value 84" + }, + { + "name": "DLL_DELAY_85", + "value": 85, + "description": "The delay line value only for HyperFlash - delay value 85" + }, + { + "name": "DLL_DELAY_86", + "value": 86, + "description": "The delay line value only for HyperFlash - delay value 86" + }, + { + "name": "DLL_DELAY_87", + "value": 87, + "description": "The delay line value only for HyperFlash - delay value 87" + }, + { + "name": "DLL_DELAY_88", + "value": 88, + "description": "The delay line value only for HyperFlash - delay value 88" + }, + { + "name": "DLL_DELAY_89", + "value": 89, + "description": "The delay line value only for HyperFlash - delay value 89" + }, + { + "name": "DLL_DELAY_90", + "value": 90, + "description": "The delay line value only for HyperFlash - delay value 90" + }, + { + "name": "DLL_DELAY_91", + "value": 91, + "description": "The delay line value only for HyperFlash - delay value 91" + }, + { + "name": "DLL_DELAY_92", + "value": 92, + "description": "The delay line value only for HyperFlash - delay value 92" + }, + { + "name": "DLL_DELAY_93", + "value": 93, + "description": "The delay line value only for HyperFlash - delay value 93" + }, + { + "name": "DLL_DELAY_94", + "value": 94, + "description": "The delay line value only for HyperFlash - delay value 94" + }, + { + "name": "DLL_DELAY_95", + "value": 95, + "description": "The delay line value only for HyperFlash - delay value 95" + }, + { + "name": "DLL_DELAY_96", + "value": 96, + "description": "The delay line value only for HyperFlash - delay value 96" + }, + { + "name": "DLL_DELAY_97", + "value": 97, + "description": "The delay line value only for HyperFlash - delay value 97" + }, + { + "name": "DLL_DELAY_98", + "value": 98, + "description": "The delay line value only for HyperFlash - delay value 98" + }, + { + "name": "DLL_DELAY_99", + "value": 99, + "description": "The delay line value only for HyperFlash - delay value 99" + }, + { + "name": "DLL_DELAY_100", + "value": 100, + "description": "The delay line value only for HyperFlash - delay value 100" + }, + { + "name": "DLL_DELAY_101", + "value": 101, + "description": "The delay line value only for HyperFlash - delay value 101" + }, + { + "name": "DLL_DELAY_102", + "value": 102, + "description": "The delay line value only for HyperFlash - delay value 102" + }, + { + "name": "DLL_DELAY_103", + "value": 103, + "description": "The delay line value only for HyperFlash - delay value 103" + }, + { + "name": "DLL_DELAY_104", + "value": 104, + "description": "The delay line value only for HyperFlash - delay value 104" + }, + { + "name": "DLL_DELAY_105", + "value": 105, + "description": "The delay line value only for HyperFlash - delay value 105" + }, + { + "name": "DLL_DELAY_106", + "value": 106, + "description": "The delay line value only for HyperFlash - delay value 106" + }, + { + "name": "DLL_DELAY_107", + "value": 107, + "description": "The delay line value only for HyperFlash - delay value 107" + }, + { + "name": "DLL_DELAY_108", + "value": 108, + "description": "The delay line value only for HyperFlash - delay value 108" + }, + { + "name": "DLL_DELAY_109", + "value": 109, + "description": "The delay line value only for HyperFlash - delay value 109" + }, + { + "name": "DLL_DELAY_110", + "value": 110, + "description": "The delay line value only for HyperFlash - delay value 110" + }, + { + "name": "DLL_DELAY_111", + "value": 111, + "description": "The delay line value only for HyperFlash - delay value 111" + }, + { + "name": "DLL_DELAY_112", + "value": 112, + "description": "The delay line value only for HyperFlash - delay value 112" + }, + { + "name": "DLL_DELAY_113", + "value": 113, + "description": "The delay line value only for HyperFlash - delay value 113" + }, + { + "name": "DLL_DELAY_114", + "value": 114, + "description": "The delay line value only for HyperFlash - delay value 114" + }, + { + "name": "DLL_DELAY_115", + "value": 115, + "description": "The delay line value only for HyperFlash - delay value 115" + }, + { + "name": "DLL_DELAY_116", + "value": 116, + "description": "The delay line value only for HyperFlash - delay value 116" + }, + { + "name": "DLL_DELAY_117", + "value": 117, + "description": "The delay line value only for HyperFlash - delay value 117" + }, + { + "name": "DLL_DELAY_118", + "value": 118, + "description": "The delay line value only for HyperFlash - delay value 118" + }, + { + "name": "DLL_DELAY_119", + "value": 119, + "description": "The delay line value only for HyperFlash - delay value 119" + }, + { + "name": "DLL_DELAY_120", + "value": 120, + "description": "The delay line value only for HyperFlash - delay value 120" + }, + { + "name": "DLL_DELAY_121", + "value": 121, + "description": "The delay line value only for HyperFlash - delay value 121" + }, + { + "name": "DLL_DELAY_122", + "value": 122, + "description": "The delay line value only for HyperFlash - delay value 122" + }, + { + "name": "DLL_DELAY_123", + "value": 123, + "description": "The delay line value only for HyperFlash - delay value 123" + }, + { + "name": "DLL_DELAY_124", + "value": 124, + "description": "The delay line value only for HyperFlash - delay value 124" + }, + { + "name": "DLL_DELAY_125", + "value": 125, + "description": "The delay line value only for HyperFlash - delay value 125" + }, + { + "name": "DLL_DELAY_126", + "value": 126, + "description": "The delay line value only for HyperFlash - delay value 126" + }, + { + "name": "DLL_DELAY_127", + "value": 127, + "description": "The delay line value only for HyperFlash - delay value 127" + }, + { + "name": "DLL_DELAY_128", + "value": 128, + "description": "The delay line value only for HyperFlash - delay value 128" + }, + { + "name": "DLL_DELAY_129", + "value": 129, + "description": "The delay line value only for HyperFlash - delay value 129" + }, + { + "name": "DLL_DELAY_130", + "value": 130, + "description": "The delay line value only for HyperFlash - delay value 130" + }, + { + "name": "DLL_DELAY_131", + "value": 131, + "description": "The delay line value only for HyperFlash - delay value 131" + }, + { + "name": "DLL_DELAY_132", + "value": 132, + "description": "The delay line value only for HyperFlash - delay value 132" + }, + { + "name": "DLL_DELAY_133", + "value": 133, + "description": "The delay line value only for HyperFlash - delay value 133" + }, + { + "name": "DLL_DELAY_134", + "value": 134, + "description": "The delay line value only for HyperFlash - delay value 134" + }, + { + "name": "DLL_DELAY_135", + "value": 135, + "description": "The delay line value only for HyperFlash - delay value 135" + }, + { + "name": "DLL_DELAY_136", + "value": 136, + "description": "The delay line value only for HyperFlash - delay value 136" + }, + { + "name": "DLL_DELAY_137", + "value": 137, + "description": "The delay line value only for HyperFlash - delay value 137" + }, + { + "name": "DLL_DELAY_138", + "value": 138, + "description": "The delay line value only for HyperFlash - delay value 138" + }, + { + "name": "DLL_DELAY_139", + "value": 139, + "description": "The delay line value only for HyperFlash - delay value 139" + }, + { + "name": "DLL_DELAY_140", + "value": 140, + "description": "The delay line value only for HyperFlash - delay value 140" + }, + { + "name": "DLL_DELAY_141", + "value": 141, + "description": "The delay line value only for HyperFlash - delay value 141" + }, + { + "name": "DLL_DELAY_142", + "value": 142, + "description": "The delay line value only for HyperFlash - delay value 142" + }, + { + "name": "DLL_DELAY_143", + "value": 143, + "description": "The delay line value only for HyperFlash - delay value 143" + }, + { + "name": "DLL_DELAY_144", + "value": 144, + "description": "The delay line value only for HyperFlash - delay value 144" + }, + { + "name": "DLL_DELAY_145", + "value": 145, + "description": "The delay line value only for HyperFlash - delay value 145" + }, + { + "name": "DLL_DELAY_146", + "value": 146, + "description": "The delay line value only for HyperFlash - delay value 146" + }, + { + "name": "DLL_DELAY_147", + "value": 147, + "description": "The delay line value only for HyperFlash - delay value 147" + }, + { + "name": "DLL_DELAY_148", + "value": 148, + "description": "The delay line value only for HyperFlash - delay value 148" + }, + { + "name": "DLL_DELAY_149", + "value": 149, + "description": "The delay line value only for HyperFlash - delay value 149" + }, + { + "name": "DLL_DELAY_150", + "value": 150, + "description": "The delay line value only for HyperFlash - delay value 150" + }, + { + "name": "DLL_DELAY_151", + "value": 151, + "description": "The delay line value only for HyperFlash - delay value 151" + }, + { + "name": "DLL_DELAY_152", + "value": 152, + "description": "The delay line value only for HyperFlash - delay value 152" + }, + { + "name": "DLL_DELAY_153", + "value": 153, + "description": "The delay line value only for HyperFlash - delay value 153" + }, + { + "name": "DLL_DELAY_154", + "value": 154, + "description": "The delay line value only for HyperFlash - delay value 154" + }, + { + "name": "DLL_DELAY_155", + "value": 155, + "description": "The delay line value only for HyperFlash - delay value 155" + }, + { + "name": "DLL_DELAY_156", + "value": 156, + "description": "The delay line value only for HyperFlash - delay value 156" + }, + { + "name": "DLL_DELAY_157", + "value": 157, + "description": "The delay line value only for HyperFlash - delay value 157" + }, + { + "name": "DLL_DELAY_158", + "value": 158, + "description": "The delay line value only for HyperFlash - delay value 158" + }, + { + "name": "DLL_DELAY_159", + "value": 159, + "description": "The delay line value only for HyperFlash - delay value 159" + }, + { + "name": "DLL_DELAY_160", + "value": 160, + "description": "The delay line value only for HyperFlash - delay value 160" + }, + { + "name": "DLL_DELAY_161", + "value": 161, + "description": "The delay line value only for HyperFlash - delay value 161" + }, + { + "name": "DLL_DELAY_162", + "value": 162, + "description": "The delay line value only for HyperFlash - delay value 162" + }, + { + "name": "DLL_DELAY_163", + "value": 163, + "description": "The delay line value only for HyperFlash - delay value 163" + }, + { + "name": "DLL_DELAY_164", + "value": 164, + "description": "The delay line value only for HyperFlash - delay value 164" + }, + { + "name": "DLL_DELAY_165", + "value": 165, + "description": "The delay line value only for HyperFlash - delay value 165" + }, + { + "name": "DLL_DELAY_166", + "value": 166, + "description": "The delay line value only for H" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-16", + "name": "SPI_Clock_Data_Phase_Control", + "description": "SPI Clock Data Phase Control ", + "values": [ + { + "name": "TX_FALL_RX_RISE", + "value": 0, + "description": "Tx on falling, Rx on rising", + "deprecated_names": [ + "0" + ] + }, + { + "name": "TX_RISE_RX_FALL", + "value": 1, + "description": "Tx on rising, Rx on falling", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-17", + "name": "SPI_SCLK_Active", + "description": "SPI SCLK Active", + "values": [ + { + "name": "ACTIVE_HIGH", + "value": 0, + "description": "Active high" + }, + { + "name": "ACTIVE_LOW", + "value": 1, + "description": "Active low" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-18", + "name": "SPI_SS_Active", + "description": "SPI SS Active", + "values": [ + { + "name": "ACTIVE_LOW", + "value": 0, + "description": "Active low" + }, + { + "name": "ACTIVE_HIGH", + "value": 1, + "description": "Active high" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-19", + "name": "Recovery_SPI_Addressing", + "description": "Recovery SPI Addressing", + "values": [ + { + "name": "ADDRESSING_3BYTE", + "value": 0, + "description": "3-bytes (24-bit)", + "deprecated_names": [ + "3-bytes" + ] + }, + { + "name": "ADDRESSING_2BYTE", + "value": 1, + "description": "2-bytes (16-bit)", + "deprecated_names": [ + "2-bytes" + ] + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-20", + "name": "FLEXSPI_NOR_AUTO_PROBE_EN", + "description": "FlexSPI NOR auto probe enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Auto probe is disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Auto probe is enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 3, + "id": "fuse26-bits-21-23", + "name": "FlexSPI_NAND_Busy_Bit_Offset_Override", + "description": "FlexSPI NAND Busy Bit Offset Override ", + "values": [ + { + "name": "BIT_OFFSET_0", + "value": 0, + "description": "Busy bit at offset 0 in 8-bit register" + }, + { + "name": "BIT_OFFSET_1", + "value": 1, + "description": "Busy bit at offset 1 in 8-bit register" + }, + { + "name": "BIT_OFFSET_2", + "value": 2, + "description": "Busy bit at offset 2 in 8-bit register" + }, + { + "name": "BIT_OFFSET_3", + "value": 3, + "description": "Busy bit at offset 3 in 8-bit register" + }, + { + "name": "BIT_OFFSET_4", + "value": 4, + "description": "Busy bit at offset 4 in 8-bit register" + }, + { + "name": "BIT_OFFSET_5", + "value": 5, + "description": "Busy bit at offset 5 in 8-bit register" + }, + { + "name": "BIT_OFFSET_6", + "value": 6, + "description": "Busy bit at offset 6 in 8-bit register" + }, + { + "name": "BIT_OFFSET_7", + "value": 7, + "description": "Busy bit at offset 7 in 8-bit register" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-24", + "name": "Recovery_CS_Select", + "description": "Recovery CS Select", + "values": [ + { + "name": "CS0", + "value": 0, + "description": "Recovery_CS_Select: CS0" + }, + { + "name": "CS1", + "value": 1, + "description": "Recovery_CS_Select: CS1" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-25", + "name": "RSVD_BT_CFG2_25", + "description": "BOOT_CFG2" + }, + { + "width": 2, + "id": "fuse26-bits-26-27", + "name": "Recovery_Port_Select", + "description": "Recovery Port Select", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + }, + { + "name": "LPSPI3", + "value": 2, + "description": "LPSPI3" + }, + { + "name": "LPSPI4", + "value": 3, + "description": "LPSPI4" + } + ] + }, + { + "width": 4, + "id": "fuse26-bits-28-31", + "name": "FLEXSPI_DUMMY_CYCLE_SEL", + "description": "FlexSPI Dummy Cycle Select", + "values": [ + { + "name": "0_cycle", + "value": 0, + "description": "0 cycle" + }, + { + "name": "CYCLES_1", + "value": 1, + "description": "1 cycle" + }, + { + "name": "CYCLES_2", + "value": 2, + "description": "2 cycles" + }, + { + "name": "CYCLES_3", + "value": 3, + "description": "3 cycles" + }, + { + "name": "CYCLES_4", + "value": 4, + "description": "4 cycles" + }, + { + "name": "CYCLES_5", + "value": 5, + "description": "5 cycles" + }, + { + "name": "CYCLES_6", + "value": 6, + "description": "6 cycles" + }, + { + "name": "CYCLES_7", + "value": 7, + "description": "7 cycles" + }, + { + "name": "CYCLES_8", + "value": 8, + "description": "8 cycles" + }, + { + "name": "CYCLES_9", + "value": 9, + "description": "9 cycles" + }, + { + "name": "CYCLES_10", + "value": 10, + "description": "10 cycles" + }, + { + "name": "CYCLES_11", + "value": 11, + "description": "11 cycles" + }, + { + "name": "CYCLES_12", + "value": 12, + "description": "12 cycles" + }, + { + "name": "CYCLES_13", + "value": 13, + "description": "13 cycles" + }, + { + "name": "CYCLES_14", + "value": 14, + "description": "14 cycles" + }, + { + "name": "15_cycles", + "value": 15, + "description": "15 cycles" + } + ] + } + ] + }, + { + "id": "fuse27", + "name": "BOOT_CFG3", + "description": "BOOT_CFG3", + "index_int": "0x001B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 3, + "id": "fuse27-bits-0-2", + "name": "FlexSPI_NOR_Reset_Pin_selection", + "description": "FlexSPI NOR Reset Pin Selection", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "Not reset boot device", + "deprecated_names": [ + "000" + ] + }, + { + "name": "GPIO_PORT1", + "value": 1, + "description": "GPIO port1", + "deprecated_names": [ + "GPIO1" + ] + }, + { + "name": "GPIO_PORT2", + "value": 2, + "description": "GPIO port2", + "deprecated_names": [ + "GPIO2" + ] + }, + { + "name": "GPIO_PORT3", + "value": 3, + "description": "GPIO port3", + "deprecated_names": [ + "GPIO3" + ] + }, + { + "name": "GPIO_PORT4", + "value": 4, + "description": "GPIO port4", + "deprecated_names": [ + "GPIO4" + ] + } + ] + }, + { + "width": 2, + "id": "fuse27-bits-3-4", + "name": "FLEXSPI_NOR_AUTO_PROBE type", + "description": "FLEXSPI NOR AUTO PROBE type", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MXIC_OCTAL", + "value": 1, + "description": "MxicOctal" + }, + { + "name": "MICRON_OCTAL", + "value": 2, + "description": "MicronOctal" + }, + { + "name": "ADESTO_OCTAL", + "value": 3, + "description": "AdestoOctal" + } + ] + }, + { + "width": 27 + } + ] + }, + { + "id": "Reserved28", + "name": "Reserved 0x1C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001C", + "is_reserved": true + }, + { + "id": "Reserved29", + "name": "Reserved 0x1D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001D", + "is_reserved": true + }, + { + "id": "Reserved30", + "name": "Reserved 0x1E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001E", + "is_reserved": true + }, + { + "id": "Reserved31", + "name": "Reserved 0x1F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001F", + "is_reserved": true + }, + { + "id": "fuse32", + "name": "BOOT_CFG8", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x0020", + "bitfields": [ + { + "width": 8 + }, + { + "width": 8, + "id": "fuse32-bits-8-15", + "name": "Secondary_boot_offset", + "description": "Secondary boot offset", + "values": [ + { + "name": "OFFSET_4MB", + "value": 0, + "description": "Secondary_boot_offset: 4 MB", + "deprecated_names": [ + "4_MB" + ] + }, + { + "name": "OFFSET_2MB", + "value": 1, + "description": "Secondary_boot_offset: 2 MB", + "deprecated_names": [ + "2_MB" + ] + }, + { + "name": "OFFSET_1MB", + "value": 2, + "description": "Secondary_boot_offset: 1 MB", + "deprecated_names": [ + "1_MB" + ] + }, + { + "name": "OFFSET_8MB", + "value": 3, + "description": "Secondary_boot_offset: 8 MB", + "deprecated_names": [ + "8_MB" + ] + }, + { + "name": "OFFSET_16MB", + "value": 4, + "description": "Secondary_boot_offset: 8MB,", + "deprecated_names": [ + "8MB," + ] + }, + { + "name": "OFFSET_32MB", + "value": 5, + "description": "Secondary_boot_offset: 32MB", + "deprecated_names": [ + "32MB" + ] + }, + { + "name": "OFFSET_64MB", + "value": 6, + "description": "Offset = 64 MB" + }, + { + "name": "OFFSET_128MB", + "value": 7, + "description": "Offset = 128 MB" + }, + { + "name": "OFFSET_256MB", + "value": 8, + "description": "Offset = 256 MB" + }, + { + "name": "OFFSET_512MB", + "value": 9, + "description": "Offset = 512 MB", + "deprecated_names": [ + "512_MB" + ] + }, + { + "name": "EMMC_LAST_128MB", + "value": 254, + "description": "EMMC last 128 MB" + }, + { + "name": "EMMC_LAST_24KB", + "value": 255, + "description": "EMMC last 24 KB", + "deprecated_names": [ + "last_24K" + ] + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-16", + "name": "A55_D_Cache_Disable", + "description": "A55 D Cache Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-18", + "name": "USB2_SDP_Disable", + "description": "USB2 SDP Disable", + "values": [ + { + "name": "Not_disable", + "value": 0, + "description": "Not disable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-19", + "name": "Disable_A55_SPI_Recovery", + "description": "Disable A55 SPI Recovery", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-21", + "name": "USB1_SDP_Disable", + "description": "USB1 SDP Disable", + "values": [ + { + "name": "Not_disable", + "value": 0, + "description": "Not disable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-22", + "name": "AHAB_Reauth", + "description": "AHAB Reauth", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Re-authenticate the whole boot code after standby exit is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Re-authenticate the whole boot code after standby exit is enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-24", + "name": "A55_I_Cache_Dis", + "description": "A55 I Cache Dis", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable A55 I-Cache during ROM Boot" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable A55 I-Cache during ROM Boot" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse32-bits-26-27", + "name": "WDOG_Timeout_Select", + "description": "WDOG Timeout Select", + "values": [ + { + "name": "TIMEOUT_32S", + "value": 0, + "description": "WDOG_Timeout_Select: 32 s", + "deprecated_names": [ + "32_s" + ] + }, + { + "name": "TIMEOUT_16S", + "value": 1, + "description": "WDOG_Timeout_Select: 16 s", + "deprecated_names": [ + "16_s" + ] + }, + { + "name": "TIMEOUT_8S", + "value": 2, + "description": "WDOG_Timeout_Select: 8 s", + "deprecated_names": [ + "8_s" + ] + }, + { + "name": "TIMEOUT_4S", + "value": 3, + "description": "WDOG_Timeout_Select: 4 s", + "deprecated_names": [ + "4_s" + ] + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-28", + "name": "A55_WDOG_Enable", + "description": "A55 WDOG Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-29", + "name": "USB_HID_EP1_Out_Disable", + "description": "USB HID EP1 Out Disable", + "values": [ + { + "name": "USB_EP1", + "value": 0, + "description": "USB EP1 Transfer(EP1 Out enable)" + }, + { + "name": "USB_EP0", + "value": 1, + "description": "USB EP0 Transfer(EP1 Out disable)" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-30", + "name": "PLL_LATE_EN", + "description": "PLL LATE EN", + "values": [ + { + "name": "BEFORE_ROM_PATCH", + "value": 0, + "description": "Configure PLLs before installing ROM patch", + "deprecated_names": [ + "0" + ] + }, + { + "name": "AFTER_ROM_PATCH", + "value": 1, + "description": "Configure PLLs after install ROM patch", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse33", + "name": "BOOT_CFG9", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x0021", + "bitfields": [ + { + "width": 4 + }, + { + "width": 1, + "id": "fuse33-bit-4", + "name": "A55_Secure_WDOG_Enable (non-ROM)", + "description": "A55 Secure WDOG Enable (non-ROM)", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse33-bit-9", + "name": "CA55_RST_Release_ACK (non-ROM)", + "description": "CA55 RST Release ACK (non-ROM)", + "values": [ + { + "name": "NO_ACK", + "value": 0, + "description": "No Ack from EdgeLock Enclave to release M33 Reset", + "deprecated_names": [ + "0" + ] + }, + { + "name": "ACK_RECEIVED", + "value": 1, + "description": "Ack from EdgeLock Enclave to release M33 Reset", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 14 + }, + { + "width": 1, + "id": "fuse33-bit-24", + "name": "ELE_SRAM_REN_PWRDN (non-ROM)", + "description": "EdgeLock Enclave SRAM REN PWRDN (non-ROM)", + "values": [ + { + "name": "RETAINED", + "value": 0, + "description": "64K retained", + "deprecated_names": [ + "64K" + ] + }, + { + "name": "NOT_RETAINED", + "value": 1, + "description": "I/D-MEM not retained", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse34", + "name": "BOOT_CFG10", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x0022", + "bitfields": [ + { + "width": 2, + "id": "fuse34-bits-0-1", + "name": "DAP_ACCESS_IRQ_STKYBIT_DISABLE", + "description": "Disable DAP Access IRQ sticky-bit qualification", + "values": [ + { + "name": "DIRECT_ACCESS", + "value": 0, + "description": "Disable DAP Access qualified by IRQ and sticky-bit logic. Direct DAP Access." + }, + { + "name": "DIRECT_ACCESS_ALT", + "value": 1, + "description": "Disable DAP Access qualified by IRQ and sticky-bit logic. Direct DAP Access." + }, + { + "name": "QUALIFIED_ENABLED", + "value": 2, + "description": "= Enable DAP Access qualified by IRQ and sticky-bit logic.", + "deprecated_names": [ + "10" + ] + }, + { + "name": "DIRECT_ACCESS_DIS", + "value": 3, + "description": "= Disable DAP Access qualified by IRQ and sticky-bit logic. Direct DAP Access.", + "deprecated_names": [ + "11" + ] + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-2", + "name": "SDP_DISABLE", + "description": "SDP Disable ", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 27 + } + ] + }, + { + "id": "Reserved35", + "name": "Reserved 0x23", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0023", + "is_reserved": true + }, + { + "id": "Reserved36", + "name": "Reserved 0x24", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0024", + "is_reserved": true + }, + { + "id": "Reserved37", + "name": "Reserved 0x25", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0025", + "is_reserved": true + }, + { + "id": "Reserved38", + "name": "Reserved 0x26", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0026", + "is_reserved": true + }, + { + "id": "Reserved39", + "name": "Reserved 0x27", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0027", + "is_reserved": true + }, + { + "id": "Reserved40", + "name": "Reserved 0x28", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0028", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved41", + "name": "Reserved 0x29", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0029", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved42", + "name": "Reserved 0x2A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002A", + "is_reserved": true, + "bitfields": [ + { + "width": 12 + }, + { + "width": 2 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved43", + "name": "Reserved 0x2B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002B", + "is_reserved": true, + "bitfields": [ + { + "width": 12 + }, + { + "width": 12 + }, + { + "width": 8 + } + ] + }, + { + "id": "Reserved44", + "name": "Reserved 0x2C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002C", + "is_reserved": true, + "bitfields": [ + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 9 + } + ] + }, + { + "id": "Reserved45", + "name": "Reserved 0x2D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002D", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 6 + }, + { + "width": 6 + }, + { + "width": 4 + }, + { + "width": 7 + }, + { + "width": 6 + }, + { + "width": 2 + } + ] + }, + { + "id": "Reserved46", + "name": "Reserved 0x2E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002E", + "is_reserved": true, + "bitfields": [ + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 19 + } + ] + }, + { + "id": "Reserved47", + "name": "Reserved 0x2F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002F", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved48", + "name": "Reserved 0x30", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0030", + "is_reserved": true + }, + { + "id": "Reserved49", + "name": "Reserved 0x31", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0031", + "is_reserved": true + }, + { + "id": "Reserved50", + "name": "Reserved 0x32", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0032", + "is_reserved": true + }, + { + "id": "Reserved51", + "name": "Reserved 0x33", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0033", + "is_reserved": true + }, + { + "id": "Reserved52", + "name": "Reserved 0x34", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0034", + "is_reserved": true + }, + { + "id": "Reserved53", + "name": "Reserved 0x35", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0035", + "is_reserved": true + }, + { + "id": "Reserved54", + "name": "Reserved 0x36", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0036", + "is_reserved": true + }, + { + "id": "Reserved55", + "name": "Reserved 0x37", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0037", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "fuse56", + "name": "ELE_MISC_CTRL0", + "description": "OEM controlled Fuse.", + "index_int": "0x0038", + "bitfields": [ + { + "width": 4, + "id": "fuse56-bits-0-3", + "name": "SOC_SCOPE_PRIMARY_DBG_DISABLE", + "description": "Debug Disable for CM33 ", + "values": [ + { + "name": "ALL_DEBUG_ENABLED", + "value": 0, + "description": "All debug features enabled - spiden, sniden, dbgen, niden all enabled" + }, + { + "name": "NIDEN_DISABLED", + "value": 1, + "description": "Non-invasive debug in non-secure state disabled, other debug features enabled" + }, + { + "name": "DBGEN_DISABLED", + "value": 2, + "description": "Invasive debug in non-secure state disabled, other debug features enabled" + }, + { + "name": "NONSECURE_DBG_DISABLED", + "value": 3, + "description": "Non-secure debug disabled - dbgen and niden disabled, secure debug enabled" + }, + { + "name": "SNIDEN_DISABLED", + "value": 4, + "description": "Secure non-invasive debug disabled, other debug features enabled" + }, + { + "name": "SNIDEN_NIDEN_DISABLED", + "value": 5, + "description": "Secure non-invasive and non-secure invasive debug disabled (spiden=0,sniden=1,dbgen=0,niden=1)" + }, + { + "name": "SNIDEN_DBGEN_DISABLED", + "value": 6, + "description": "Secure non-invasive and non-secure invasive debug disabled (spiden=0,sniden=1,dbgen=1,niden=0)" + }, + { + "name": "INVASIVE_DBG_ENABLED", + "value": 7, + "description": "Secure non-invasive and non-secure invasive debug disabled (spiden=0,sniden=1,dbgen=1,niden=1)" + }, + { + "name": "SPIDEN_DISABLED", + "value": 8, + "description": "Secure privileged invasive debug disabled (spiden=1,sniden=0,dbgen=0,niden=0)" + }, + { + "name": "SPIDEN_NIDEN_DISABLED", + "value": 9, + "description": "Secure privileged invasive and non-secure invasive debug disabled (spiden=1,sniden=0,dbgen=0,niden=1)", + "deprecated_names": [ + "SECURE_INVASIVE_DISABLED" + ] + }, + { + "name": "SPIDEN_DBGEN_DISABLED", + "value": 10, + "description": "Secure privileged invasive and non-secure invasive debug disabled (spiden=1,sniden=0,dbgen=1,niden=0)", + "deprecated_names": [ + "INVASIVE_DBG_DISABLED" + ] + }, + { + "name": "SPIDEN_ONLY_ENABLED", + "value": 11, + "description": "Secure and non-secure invasive debug disabled (spiden=1,sniden=0,dbgen=1,niden=1)" + }, + { + "name": "SECURE_DBG_DISABLED", + "value": 12, + "description": "Secure debug disabled - spiden and sniden disabled, non-secure debug enabled" + }, + { + "name": "NONINVASIVE_ENABLED", + "value": 13, + "description": "Secure invasive and non-secure invasive debug disabled (spiden=1,sniden=1,dbgen=0,niden=1)" + }, + { + "name": "NIDEN_ONLY_ENABLED", + "value": 14, + "description": "Secure invasive and non-secure invasive debug disabled (spiden=1,sniden=1,dbgen=1,niden=0)" + }, + { + "name": "ALL_DEBUG_DISABLED", + "value": 15, + "description": "All debug features disabled - spiden, sniden, dbgen, niden all disabled" + } + ] + }, + { + "width": 4, + "id": "fuse56-bits-4-7", + "name": "SOC_SCOPE1_DBG_DISABLE", + "description": "SOC SCOPE1 DBG DISABLE[3:0]", + "values": [ + { + "name": "ALL_DISABLED", + "value": 0, + "description": "All debug features disabled - spiden, sniden, dbgen, niden all disabled" + }, + { + "name": "NIDEN_ENABLED", + "value": 1, + "description": "Non-invasive debug enabled, invasive debug disabled" + }, + { + "name": "DBGEN_ENABLED", + "value": 2, + "description": "AXI non-secure trace buffer dump enabled, others disabled" + }, + { + "name": "DBGEN_NIDEN_ENABLED", + "value": 3, + "description": "AXI non-secure trace and non-invasive debug enabled" + }, + { + "name": "SNIDEN_ENABLED", + "value": 4, + "description": "Secure non-invasive debug enabled, others disabled" + }, + { + "name": "SNIDEN_NIDEN_ENABLED", + "value": 5, + "description": "Secure and non-secure non-invasive debug enabled" + }, + { + "name": "SNIDEN_DBGEN_ENABLED", + "value": 6, + "description": "Secure non-invasive and AXI non-secure trace enabled" + }, + { + "name": "SNIDEN_DBGEN_NIDEN", + "value": 7, + "description": "Secure non-invasive, AXI non-secure trace, non-invasive debug enabled" + }, + { + "name": "SPIDEN_ENABLED", + "value": 8, + "description": "AXI secure trace buffer dump enabled, others disabled" + }, + { + "name": "SPIDEN_NIDEN_ENABLED", + "value": 9, + "description": "AXI secure trace and non-invasive debug enabled" + }, + { + "name": "SPIDEN_DBGEN_ENABLED", + "value": 10, + "description": "AXI secure and non-secure trace buffer dump enabled" + }, + { + "name": "SPIDEN_DBGEN_NIDEN", + "value": 11, + "description": "AXI secure/non-secure trace and non-invasive debug enabled" + }, + { + "name": "SPIDEN_SNIDEN_ENABLED", + "value": 12, + "description": "AXI secure trace and secure non-invasive debug enabled" + }, + { + "name": "SPIDEN_SNIDEN_NIDEN", + "value": 13, + "description": "AXI secure trace, secure and non-secure non-invasive debug enabled" + }, + { + "name": "SPIDEN_SNIDEN_DBGEN", + "value": 14, + "description": "AXI secure/non-secure trace and secure non-invasive debug enabled" + }, + { + "name": "ALL_ENABLED", + "value": 15, + "description": "All debug features enabled - spiden, sniden, dbgen, niden all enabled" + } + ] + }, + { + "width": 4 + }, + { + "width": 4, + "id": "fuse56-bits-12-15", + "name": "SOC_SCOPE3_DBG_DISABLE", + "description": "SOC SCOPE3 DBG DISABLE[3:0]", + "values": [ + { + "name": "ALL_DEBUG_ENABLED", + "value": 0, + "description": "All debug features enabled (spiden, sniden, dbgen, niden all active)" + }, + { + "name": "NIDEN_DISABLED", + "value": 1, + "description": "Non-invasive debug disabled (spiden=0,sniden=0,dbgen=0,niden=1)" + }, + { + "name": "DBGEN_DISABLED", + "value": 2, + "description": "Debug disabled (spiden=0,sniden=0,dbgen=1,niden=0)" + }, + { + "name": "NIDEN_DBGEN_DISABLED", + "value": 3, + "description": "Invasive debug disabled (spiden=0,sniden=0,dbgen=1,niden=1)", + "deprecated_names": [ + "INVASIVE_DBG_DISABLED" + ] + }, + { + "name": "SNIDEN_DISABLED", + "value": 4, + "description": "Secure non-invasive debug disabled (spiden=0,sniden=1,dbgen=0,niden=0)" + }, + { + "name": "SECURE_NIDEN_DISABLED", + "value": 5, + "description": "Secure and non-invasive debug disabled (spiden=0,sniden=1,dbgen=0,niden=1)" + }, + { + "name": "SECURE_INVASIVE_OFF", + "value": 6, + "description": "Secure non-invasive and invasive debug disabled (spiden=0,sniden=1,dbgen=1,niden=0)" + }, + { + "name": "NON_SECURE_DBG_OFF", + "value": 7, + "description": "Secure non-invasive, non-invasive, and invasive debug disabled" + }, + { + "name": "SPIDEN_DISABLED", + "value": 8, + "description": "Secure privileged invasive debug disabled (spiden=1,sniden=0,dbgen=0,niden=0)" + }, + { + "name": "SPIDEN_NIDEN_DISABLED", + "value": 9, + "description": "Secure privileged invasive and non-invasive debug disabled (spiden=1,sniden=0,dbgen=0,niden=1)", + "deprecated_names": [ + "SECURE_INVASIVE_OFF2" + ] + }, + { + "name": "SPIDEN_DBGEN_DISABLED", + "value": 10, + "description": "Secure privileged and invasive debug disabled (spiden=1,sniden=0,dbgen=1,niden=0)", + "deprecated_names": [ + "ALL_INVASIVE_OFF" + ] + }, + { + "name": "SPIDEN_NIDEN_DBG_DIS", + "value": 11, + "description": "Secure privileged and all invasive debug disabled (spiden=1,sniden=0,dbgen=1,niden=1)", + "deprecated_names": [ + "INVASIVE_NIDEN_OFF" + ] + }, + { + "name": "SPIDEN_SNIDEN_DISABLED", + "value": 12, + "description": "All secure debug disabled (spiden=1,sniden=1,dbgen=0,niden=0)", + "deprecated_names": [ + "SECURE_DEBUG_OFF" + ] + }, + { + "name": "SPIDEN_SNIDEN_NID_DIS", + "value": 13, + "description": "Secure invasive, secure non-invasive, and non-invasive debug disabled", + "deprecated_names": [ + "MOST_DEBUG_OFF" + ] + }, + { + "name": "SPIDEN_SNIDEN_DBG_DIS", + "value": 14, + "description": "Secure invasive, secure non-invasive, and invasive debug disabled", + "deprecated_names": [ + "INVASIVE_ONLY" + ] + }, + { + "name": "ALL_DEBUG_DISABLED", + "value": 15, + "description": "All debug features disabled (spiden, sniden, dbgen, niden all disabled)" + } + ] + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse57", + "name": "ELE_MISC_CTRL1", + "description": "OEM controlled Fuse.", + "index_int": "0x0039", + "bitfields": [ + { + "width": 4, + "id": "fuse57-bits-0-3", + "name": "SOC_SCOPE4_DBG_DISABLE", + "description": "SOC SCOPE4 DBG DISABLE[3:0]", + "values": [ + { + "name": "ALL_DEBUG_ENABLED", + "value": 0, + "description": "All debug features enabled (spiden=0,sniden=0,dbgen=0,niden=0)" + }, + { + "name": "NIDEN_DISABLED", + "value": 1, + "description": "Non-invasive debug disabled (spiden=0,sniden=0,dbgen=0,niden=1)" + }, + { + "name": "DBGEN_DISABLED", + "value": 2, + "description": "Debug disabled, non-invasive and secure debug enabled" + }, + { + "name": "NIDEN_DBGEN_DISABLED", + "value": 3, + "description": "Debug and non-invasive debug disabled (spiden=0,sniden=0,dbgen=1,niden=1)" + }, + { + "name": "SNIDEN_DISABLED", + "value": 4, + "description": "Secure non-invasive debug disabled (spiden=0,sniden=1,dbgen=0,niden=0)" + }, + { + "name": "SNIDEN_NIDEN_DISABLED", + "value": 5, + "description": "Secure and non-invasive debug disabled (spiden=0,sniden=1,dbgen=0,niden=1)" + }, + { + "name": "SNIDEN_DBGEN_DISABLED", + "value": 6, + "description": "Secure non-invasive and debug disabled (spiden=0,sniden=1,dbgen=1,niden=0)" + }, + { + "name": "NS_DEBUG_DISABLED", + "value": 7, + "description": "Only invasive debug enabled (spiden=0,sniden=1,dbgen=1,niden=1)" + }, + { + "name": "SPIDEN_DISABLED", + "value": 8, + "description": "Secure privileged invasive debug disabled (spiden=1,sniden=0,dbgen=0,niden=0)" + }, + { + "name": "SPIDEN_NIDEN_DISABLED", + "value": 9, + "description": "Secure privileged invasive and non-invasive debug disabled (spiden=1,sniden=0,dbgen=0,niden=1)" + }, + { + "name": "SPIDEN_DBGEN_DISABLED", + "value": 10, + "description": "Secure privileged invasive and debug disabled (spiden=1,sniden=0,dbgen=1,niden=0)" + }, + { + "name": "SNIDEN_ENABLED_ONLY", + "value": 11, + "description": "Only secure non-invasive debug enabled (spiden=1,sniden=0,dbgen=1,niden=1)", + "deprecated_names": [ + "INVASIVE_NIDEN_DISABLED" + ] + }, + { + "name": "SPIDEN_SNIDEN_DISABLED", + "value": 12, + "description": "All secure debug disabled (spiden=1,sniden=1,dbgen=0,niden=0)", + "deprecated_names": [ + "SECURE_DEBUG_DISABLED" + ] + }, + { + "name": "NONSECURE_NIDEN_ENABLED", + "value": 13, + "description": "Secure and non-invasive debug disabled (spiden=1,sniden=1,dbgen=0,niden=1)", + "deprecated_names": [ + "SECURE_NIDEN_DISABLED" + ] + }, + { + "name": "NONSECURE_DBGEN_ENABLED", + "value": 14, + "description": "Secure privileged invasive, secure non-invasive, and debug disabled", + "deprecated_names": [ + "SECURE_DBGEN_DISABLED" + ] + }, + { + "name": "ALL_DEBUG_DISABLED", + "value": 15, + "description": "All debug features disabled (spiden=1,sniden=1,dbgen=1,niden=1)" + } + ] + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse57-bit-8", + "name": "SJC_DISABLE", + "description": "Hardware disablement of SJC. Disables JTAG debugger, including ability for boundary scan.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "SJC is enabled", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "SJC is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 7 + }, + { + "width": 4 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse58", + "name": "ELE_MISC_CTRL2", + "description": "OEM controlled Fuse.", + "index_int": "0x003A", + "reg_width": 16, + "bitfields": [ + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse58-bits-6-7", + "name": "OEM_GDET_DISABLE", + "description": "OEM GDET DISABLE", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Disable ELE Glitch detector. This bit should only be set if security is not of concern. This bit can only be set in OEM OPEN" + }, + { + "name": "DISABLED", + "value": 1, + "description": "ELE Glitch detector is enabled (default secure state)" + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-8", + "name": "SOC_GLBL_DBG_DISABLE", + "description": "SOC GLBL DBG DISABLE", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Global JTAG disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Global JTAG enable" + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-9", + "name": "NORMAL_CH_RESP_DISABLE", + "description": "NORMAL CH RESP DISABLE", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Password match mechanism for debug enable is active" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Password match mechanism for debug enable is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-10", + "name": "TZ_GLBL_DBG_DISABLE", + "description": "TZ GLBL DBG DISABLE" + }, + { + "width": 1, + "id": "fuse58-bit-11", + "name": "TZ_CH_RESP_DISABLE", + "description": "TZ CH RESP DISABLE", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Password match mechanism for trust zone debug enable is active" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Password match mechanism for trust zone debug enable is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-12", + "name": "OEM_FDET_DISABLE", + "description": "OEM FDET DISABLE", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "ELE Frequency detectors are enabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Disable ELE Frequency detectors. This bit can only be set in OEM OPEN" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "fuse59", + "name": "ELE_MISC_CTRL3", + "description": "NXP controlled.", + "index_int": "0x003B", + "bitfields": [ + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 2, + "id": "fuse59-bits-3-4", + "name": "FASTBOOT_ENABLE", + "description": "FastBoot Enablement", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "= Disable FastBoot", + "deprecated_names": [ + "00" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "= Enable FastBoot", + "deprecated_names": [ + "01" + ] + } + ] + }, + { + "width": 1 + }, + { + "width": 6 + }, + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 6 + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse60", + "name": "ELE_MISC_CTRL4", + "description": "OEM and NXP controlled. NXP should set OP to 1 so the shadows cannot be overwritten.", + "index_int": "0x003C", + "reg_width": 16, + "bitfields": [ + { + "width": 12, + "id": "fuse60-bits-0-11", + "name": "EXPORT_CONTROL", + "description": "Each fuse disables the following : \n[11] : Reserved for NXP\n[10] : Reserved for NXP\n[9] : Reserved\n[8] : Reserved for ELE\n[7] : A55 Crypto extension\n[6] : M7 MMCAU\n[5] : M33 MMCAU\n[4] : OTFADs\n[3:0] : Reserved" + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse61", + "name": "ELE_MISC_CTRL5", + "description": "OEM and NXP controlled. NXP should set OP to 1 so the shadows cannot be overwritten.", + "index_int": "0x003D", + "bitfields": [ + { + "width": 1, + "id": "fuse61-bit-0", + "name": "DFT_DISABLE", + "description": "DFT DISABLE", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved62", + "name": "Reserved 0x3E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003E", + "is_reserved": true, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved63", + "name": "Reserved 0x3F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved64", + "name": "Reserved 0x40", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0040", + "is_reserved": true + }, + { + "id": "Reserved65", + "name": "Reserved 0x41", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0041", + "is_reserved": true + }, + { + "id": "Reserved66", + "name": "Reserved 0x42", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0042", + "is_reserved": true + }, + { + "id": "Reserved67", + "name": "Reserved 0x43", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0043", + "is_reserved": true + }, + { + "id": "Reserved68", + "name": "Reserved 0x44", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0044", + "is_reserved": true + }, + { + "id": "Reserved69", + "name": "Reserved 0x45", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0045", + "is_reserved": true + }, + { + "id": "Reserved70", + "name": "Reserved 0x46", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0046", + "is_reserved": true + }, + { + "id": "Reserved71", + "name": "Reserved 0x47", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0047", + "is_reserved": true + }, + { + "id": "Reserved72", + "name": "Reserved 0x48", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0048", + "is_reserved": true + }, + { + "id": "Reserved73", + "name": "Reserved 0x49", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0049", + "is_reserved": true + }, + { + "id": "Reserved74", + "name": "Reserved 0x4A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004A", + "is_reserved": true + }, + { + "id": "Reserved75", + "name": "Reserved 0x4B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004B", + "is_reserved": true + }, + { + "id": "Reserved76", + "name": "Reserved 0x4C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004C", + "is_reserved": true + }, + { + "id": "Reserved77", + "name": "Reserved 0x4D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004D", + "is_reserved": true + }, + { + "id": "Reserved78", + "name": "Reserved 0x4E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004E", + "is_reserved": true + }, + { + "id": "Reserved79", + "name": "Reserved 0x4F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004F", + "is_reserved": true + }, + { + "id": "Reserved80", + "name": "Reserved 0x50", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0050", + "is_reserved": true + }, + { + "id": "Reserved81", + "name": "Reserved 0x51", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0051", + "is_reserved": true + }, + { + "id": "Reserved82", + "name": "Reserved 0x52", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0052", + "is_reserved": true + }, + { + "id": "Reserved83", + "name": "Reserved 0x53", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0053", + "is_reserved": true + }, + { + "id": "Reserved84", + "name": "Reserved 0x54", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0054", + "is_reserved": true + }, + { + "id": "Reserved85", + "name": "Reserved 0x55", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0055", + "is_reserved": true + }, + { + "id": "Reserved86", + "name": "Reserved 0x56", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0056", + "is_reserved": true + }, + { + "id": "Reserved87", + "name": "Reserved 0x57", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0057", + "is_reserved": true + }, + { + "id": "fuse88", + "name": "JTAG_RESP7", + "description": "Part of 128 bit key to enable SoC domain debug", + "index_int": "0x0058", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse89", + "name": "JTAG_RESP6", + "description": "Part of 128 bit key to enable SoC domain debug", + "index_int": "0x0059", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse90", + "name": "JTAG_RESP5", + "description": "Part of 128 bit key to enable SoC domain debug", + "index_int": "0x005A", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse91", + "name": "JTAG_RESP4", + "description": "Part of 128 bit key to enable SoC domain debug", + "index_int": "0x005B", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse92", + "name": "JTAG_RESP3", + "description": "Part of 128 bit key to TZ SoC domain debug", + "index_int": "0x005C", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse93", + "name": "JTAG_RESP2", + "description": "Part of 128 bit key to TZ SoC domain debug", + "index_int": "0x005D", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse94", + "name": "JTAG_RESP1", + "description": "Part of 128 bit key to TZ SoC domain debug", + "index_int": "0x005E", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse95", + "name": "JTAG_RESP0", + "description": "Part of 128 bit key to TZ SoC domain debug", + "index_int": "0x005F", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "Reserved96", + "name": "Reserved 0x60", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0060", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved97", + "name": "Reserved 0x61", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0061", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved98", + "name": "Reserved 0x62", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0062", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved99", + "name": "Reserved 0x63", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0063", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved100", + "name": "Reserved 0x64", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0064", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved101", + "name": "Reserved 0x65", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0065", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved102", + "name": "Reserved 0x66", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0066", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved103", + "name": "Reserved 0x67", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0067", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved104", + "name": "Reserved 0x68", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0068", + "is_reserved": true + }, + { + "id": "Reserved105", + "name": "Reserved 0x69", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0069", + "is_reserved": true + }, + { + "id": "Reserved106", + "name": "Reserved 0x6A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006A", + "is_reserved": true + }, + { + "id": "Reserved107", + "name": "Reserved 0x6B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006B", + "is_reserved": true + }, + { + "id": "Reserved108", + "name": "Reserved 0x6C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006C", + "is_reserved": true + }, + { + "id": "Reserved109", + "name": "Reserved 0x6D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006D", + "is_reserved": true + }, + { + "id": "Reserved110", + "name": "Reserved 0x6E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006E", + "is_reserved": true + }, + { + "id": "Reserved111", + "name": "Reserved 0x6F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006F", + "is_reserved": true + }, + { + "id": "Reserved112", + "name": "Reserved 0x70", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0070", + "is_reserved": true + }, + { + "id": "Reserved113", + "name": "Reserved 0x71", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0071", + "is_reserved": true + }, + { + "id": "Reserved114", + "name": "Reserved 0x72", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0072", + "is_reserved": true + }, + { + "id": "Reserved115", + "name": "Reserved 0x73", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0073", + "is_reserved": true + }, + { + "id": "Reserved116", + "name": "Reserved 0x74", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0074", + "is_reserved": true + }, + { + "id": "Reserved117", + "name": "Reserved 0x75", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0075", + "is_reserved": true + }, + { + "id": "Reserved118", + "name": "Reserved 0x76", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0076", + "is_reserved": true + }, + { + "id": "Reserved119", + "name": "Reserved 0x77", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0077", + "is_reserved": true + }, + { + "id": "Reserved120", + "name": "Reserved 0x78", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0078", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved121", + "name": "Reserved 0x79", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0079", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved122", + "name": "Reserved 0x7A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007A", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved123", + "name": "Reserved 0x7B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007B", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved124", + "name": "Reserved 0x7C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007C", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved125", + "name": "Reserved 0x7D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007D", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved126", + "name": "Reserved 0x7E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007E", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved127", + "name": "Reserved 0x7F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "fuse128", + "name": "OEM_SRKH0", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0080", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse129", + "name": "OEM_SRKH1", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0081", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse130", + "name": "OEM_SRKH2", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0082", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse131", + "name": "OEM_SRKH3", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0083", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse132", + "name": "OEM_SRKH4", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0084", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse133", + "name": "OEM_SRKH5", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0085", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse134", + "name": "OEM_SRKH6", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0086", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse135", + "name": "OEM_SRKH7", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0087", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "Reserved136", + "name": "Reserved 0x88", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0088", + "is_reserved": true + }, + { + "id": "Reserved137", + "name": "Reserved 0x89", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0089", + "is_reserved": true + }, + { + "id": "Reserved138", + "name": "Reserved 0x8A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008A", + "is_reserved": true + }, + { + "id": "Reserved139", + "name": "Reserved 0x8B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008B", + "is_reserved": true + }, + { + "id": "Reserved140", + "name": "Reserved 0x8C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008C", + "is_reserved": true + }, + { + "id": "Reserved141", + "name": "Reserved 0x8D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008D", + "is_reserved": true + }, + { + "id": "Reserved142", + "name": "Reserved 0x8E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008E", + "is_reserved": true + }, + { + "id": "Reserved143", + "name": "Reserved 0x8F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008F", + "is_reserved": true + }, + { + "id": "Reserved144", + "name": "Reserved 0x90", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0090", + "is_reserved": true + }, + { + "id": "Reserved145", + "name": "Reserved 0x91", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0091", + "is_reserved": true + }, + { + "id": "Reserved146", + "name": "Reserved 0x92", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0092", + "is_reserved": true + }, + { + "id": "Reserved147", + "name": "Reserved 0x93", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0093", + "is_reserved": true + }, + { + "id": "Reserved148", + "name": "Reserved 0x94", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0094", + "is_reserved": true + }, + { + "id": "Reserved149", + "name": "Reserved 0x95", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0095", + "is_reserved": true + }, + { + "id": "Reserved150", + "name": "Reserved 0x96", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0096", + "is_reserved": true + }, + { + "id": "Reserved151", + "name": "Reserved 0x97", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0097", + "is_reserved": true + }, + { + "id": "Reserved152", + "name": "Reserved 0x98", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0098", + "is_reserved": true + }, + { + "id": "Reserved153", + "name": "Reserved 0x99", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0099", + "is_reserved": true + }, + { + "id": "Reserved154", + "name": "Reserved 0x9A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009A", + "is_reserved": true + }, + { + "id": "Reserved155", + "name": "Reserved 0x9B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009B", + "is_reserved": true + }, + { + "id": "Reserved156", + "name": "Reserved 0x9C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009C", + "is_reserved": true + }, + { + "id": "Reserved157", + "name": "Reserved 0x9D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009D", + "is_reserved": true + }, + { + "id": "Reserved158", + "name": "Reserved 0x9E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009E", + "is_reserved": true + }, + { + "id": "Reserved159", + "name": "Reserved 0x9F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009F", + "is_reserved": true + }, + { + "id": "Reserved160", + "name": "Reserved 0xA0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A0", + "is_reserved": true + }, + { + "id": "Reserved161", + "name": "Reserved 0xA1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A1", + "is_reserved": true + }, + { + "id": "Reserved162", + "name": "Reserved 0xA2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A2", + "is_reserved": true + }, + { + "id": "Reserved163", + "name": "Reserved 0xA3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A3", + "is_reserved": true + }, + { + "id": "Reserved164", + "name": "Reserved 0xA4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A4", + "is_reserved": true + }, + { + "id": "Reserved165", + "name": "Reserved 0xA5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A5", + "is_reserved": true + }, + { + "id": "Reserved166", + "name": "Reserved 0xA6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A6", + "is_reserved": true + }, + { + "id": "Reserved167", + "name": "Reserved 0xA7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A7", + "is_reserved": true + }, + { + "id": "Reserved168", + "name": "Reserved 0xA8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A8", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved169", + "name": "Reserved 0xA9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A9", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved170", + "name": "Reserved 0xAA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AA", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved171", + "name": "Reserved 0xAB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AB", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved172", + "name": "Reserved 0xAC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AC", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved173", + "name": "Reserved 0xAD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AD", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved174", + "name": "Reserved 0xAE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AE", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved175", + "name": "Reserved 0xAF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AF", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved176", + "name": "Reserved 0xB0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B0", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 7 + }, + { + "width": 9 + } + ] + }, + { + "id": "Reserved177", + "name": "Reserved 0xB1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B1", + "is_reserved": true + }, + { + "id": "Reserved178", + "name": "Reserved 0xB2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B2", + "is_reserved": true + }, + { + "id": "Reserved179", + "name": "Reserved 0xB3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B3", + "is_reserved": true + }, + { + "id": "Reserved180", + "name": "Reserved 0xB4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B4", + "is_reserved": true + }, + { + "id": "Reserved181", + "name": "Reserved 0xB5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B5", + "is_reserved": true + }, + { + "id": "Reserved182", + "name": "Reserved 0xB6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B6", + "is_reserved": true, + "bitfields": [ + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 15 + } + ] + }, + { + "id": "Reserved183", + "name": "Reserved 0xB7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B7", + "is_reserved": true + }, + { + "id": "fuse184", + "name": "OTFAD1_KEY3", + "description": "On the Fly Decryption module Key bits 127 - 96", + "index_int": "0x00B8", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse185", + "name": "OTFAD1_KEY2", + "description": "On the Fly Decryption module Key bits 95 - 64", + "index_int": "0x00B9", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse186", + "name": "OTFAD1_KEY1", + "description": "On the Fly Decryption module Key bits 63 - 32", + "index_int": "0x00BA", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse187", + "name": "OTFAD1_KEY0", + "description": "On the Fly Decryption module Key bits 31 - 0", + "index_int": "0x00BB", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse188", + "name": "OTFAD1_CFG4", + "description": "On the Fly Decryption module control bits.", + "index_int": "0x00BC", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 3 + }, + { + "width": 1, + "id": "fuse188-bit-3", + "name": "OTFAD1_ENABLE", + "description": "ENABLE OTFAD. ", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enable, 0 - Disable", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse188-bit-4", + "name": "OTFAD1_DISABLE_OVERRIDE", + "description": "OTFAD1 DISABLE OVERRIDE" + }, + { + "width": 1, + "id": "fuse188-bit-5", + "name": "OTFAD1_KEY_BLOB_EN", + "description": "OTFAD1 KEY BLOB EN" + }, + { + "width": 1, + "id": "fuse188-bit-6", + "name": "OTFAD1_KEY_SCRAMBLE_CRC_EN", + "description": "OTFAD1 KEY SCRAMBLE CRC EN" + }, + { + "width": 1, + "id": "fuse188-bit-7", + "name": "OTFAD1_KEY_SCRAMBLE_EN", + "description": "Enable OTFAD Key Scramble ", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable, 1 - Enable", + "deprecated_names": [ + "0" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 8, + "id": "fuse188-bits-8-15", + "name": "OTFAD1_KEY_SCRAMBLE_ALIGN", + "description": "OTFAD1 KEY SCRAMBLE ALIGN[7:0]" + }, + { + "width": 1, + "id": "fuse188-bit-16", + "name": "OTFAD1_RESTRICT_OTFAD_IPS", + "description": "OTFAD1 RESTRICT OTFAD IPS" + }, + { + "width": 15 + } + ] + }, + { + "id": "fuse189", + "name": "OTFAD1_KEY_SCRAMBLE", + "description": "OTFAD Key Scramble value", + "index_int": "0x00BD", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "Reserved190", + "name": "Reserved 0xBE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BE", + "is_reserved": true, + "bitfields": [ + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 12 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved191", + "name": "Reserved 0xBF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BF", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved192", + "name": "Reserved 0xC0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C0", + "is_reserved": true + }, + { + "id": "Reserved193", + "name": "Reserved 0xC1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C1", + "is_reserved": true + }, + { + "id": "Reserved194", + "name": "Reserved 0xC2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C2", + "is_reserved": true + }, + { + "id": "Reserved195", + "name": "Reserved 0xC3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C3", + "is_reserved": true + }, + { + "id": "Reserved196", + "name": "Reserved 0xC4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C4", + "is_reserved": true + }, + { + "id": "Reserved197", + "name": "Reserved 0xC5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C5", + "is_reserved": true + }, + { + "id": "Reserved198", + "name": "Reserved 0xC6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C6", + "is_reserved": true + }, + { + "id": "Reserved199", + "name": "Reserved 0xC7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C7", + "is_reserved": true + }, + { + "id": "Reserved200", + "name": "Reserved 0xC8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C8", + "is_reserved": true + }, + { + "id": "Reserved201", + "name": "Reserved 0xC9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C9", + "is_reserved": true + }, + { + "id": "Reserved202", + "name": "Reserved 0xCA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CA", + "is_reserved": true + }, + { + "id": "Reserved203", + "name": "Reserved 0xCB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CB", + "is_reserved": true + }, + { + "id": "Reserved204", + "name": "Reserved 0xCC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CC", + "is_reserved": true + }, + { + "id": "Reserved205", + "name": "Reserved 0xCD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CD", + "is_reserved": true + }, + { + "id": "Reserved206", + "name": "Reserved 0xCE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CE", + "is_reserved": true + }, + { + "id": "Reserved207", + "name": "Reserved 0xCF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CF", + "is_reserved": true + }, + { + "id": "Reserved208", + "name": "Reserved 0xD0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D0", + "is_reserved": true + }, + { + "id": "Reserved209", + "name": "Reserved 0xD1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D1", + "is_reserved": true + }, + { + "id": "Reserved210", + "name": "Reserved 0xD2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D2", + "is_reserved": true + }, + { + "id": "Reserved211", + "name": "Reserved 0xD3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D3", + "is_reserved": true + }, + { + "id": "Reserved212", + "name": "Reserved 0xD4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D4", + "is_reserved": true + }, + { + "id": "Reserved213", + "name": "Reserved 0xD5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D5", + "is_reserved": true + }, + { + "id": "Reserved214", + "name": "Reserved 0xD6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D6", + "is_reserved": true + }, + { + "id": "Reserved215", + "name": "Reserved 0xD7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D7", + "is_reserved": true + }, + { + "id": "Reserved216", + "name": "Reserved 0xD8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D8", + "is_reserved": true + }, + { + "id": "Reserved217", + "name": "Reserved 0xD9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D9", + "is_reserved": true + }, + { + "id": "Reserved218", + "name": "Reserved 0xDA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DA", + "is_reserved": true + }, + { + "id": "Reserved219", + "name": "Reserved 0xDB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DB", + "is_reserved": true + }, + { + "id": "Reserved220", + "name": "Reserved 0xDC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DC", + "is_reserved": true + }, + { + "id": "Reserved221", + "name": "Reserved 0xDD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DD", + "is_reserved": true + }, + { + "id": "Reserved222", + "name": "Reserved 0xDE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DE", + "is_reserved": true + }, + { + "id": "Reserved223", + "name": "Reserved 0xDF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DF", + "is_reserved": true + }, + { + "id": "Reserved224", + "name": "Reserved 0xE0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E0", + "is_reserved": true + }, + { + "id": "Reserved225", + "name": "Reserved 0xE1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E1", + "is_reserved": true + }, + { + "id": "Reserved226", + "name": "Reserved 0xE2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E2", + "is_reserved": true + }, + { + "id": "Reserved227", + "name": "Reserved 0xE3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E3", + "is_reserved": true + }, + { + "id": "Reserved228", + "name": "Reserved 0xE4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E4", + "is_reserved": true + }, + { + "id": "Reserved229", + "name": "Reserved 0xE5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E5", + "is_reserved": true + }, + { + "id": "Reserved230", + "name": "Reserved 0xE6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E6", + "is_reserved": true + }, + { + "id": "Reserved231", + "name": "Reserved 0xE7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E7", + "is_reserved": true + }, + { + "id": "Reserved232", + "name": "Reserved 0xE8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E8", + "is_reserved": true + }, + { + "id": "Reserved233", + "name": "Reserved 0xE9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E9", + "is_reserved": true + }, + { + "id": "Reserved234", + "name": "Reserved 0xEA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EA", + "is_reserved": true + }, + { + "id": "Reserved235", + "name": "Reserved 0xEB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EB", + "is_reserved": true + }, + { + "id": "Reserved236", + "name": "Reserved 0xEC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EC", + "is_reserved": true + }, + { + "id": "Reserved237", + "name": "Reserved 0xED", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00ED", + "is_reserved": true + }, + { + "id": "Reserved238", + "name": "Reserved 0xEE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EE", + "is_reserved": true + }, + { + "id": "Reserved239", + "name": "Reserved 0xEF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EF", + "is_reserved": true + }, + { + "id": "Reserved240", + "name": "Reserved 0xF0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F0", + "is_reserved": true + }, + { + "id": "Reserved241", + "name": "Reserved 0xF1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F1", + "is_reserved": true + }, + { + "id": "Reserved242", + "name": "Reserved 0xF2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F2", + "is_reserved": true + }, + { + "id": "Reserved243", + "name": "Reserved 0xF3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F3", + "is_reserved": true + }, + { + "id": "Reserved244", + "name": "Reserved 0xF4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F4", + "is_reserved": true + }, + { + "id": "Reserved245", + "name": "Reserved 0xF5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F5", + "is_reserved": true + }, + { + "id": "Reserved246", + "name": "Reserved 0xF6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F6", + "is_reserved": true + }, + { + "id": "Reserved247", + "name": "Reserved 0xF7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F7", + "is_reserved": true + }, + { + "id": "Reserved248", + "name": "Reserved 0xF8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F8", + "is_reserved": true + }, + { + "id": "Reserved249", + "name": "Reserved 0xF9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F9", + "is_reserved": true + }, + { + "id": "Reserved250", + "name": "Reserved 0xFA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FA", + "is_reserved": true + }, + { + "id": "Reserved251", + "name": "Reserved 0xFB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FB", + "is_reserved": true + }, + { + "id": "Reserved252", + "name": "Reserved 0xFC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FC", + "is_reserved": true + }, + { + "id": "Reserved253", + "name": "Reserved 0xFD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FD", + "is_reserved": true + }, + { + "id": "Reserved254", + "name": "Reserved 0xFE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FE", + "is_reserved": true + }, + { + "id": "Reserved255", + "name": "Reserved 0xFF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FF", + "is_reserved": true + }, + { + "id": "Reserved256", + "name": "Reserved 0x100", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0100", + "is_reserved": true + }, + { + "id": "Reserved257", + "name": "Reserved 0x101", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0101", + "is_reserved": true + }, + { + "id": "Reserved258", + "name": "Reserved 0x102", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0102", + "is_reserved": true + }, + { + "id": "Reserved259", + "name": "Reserved 0x103", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0103", + "is_reserved": true + }, + { + "id": "Reserved260", + "name": "Reserved 0x104", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0104", + "is_reserved": true + }, + { + "id": "Reserved261", + "name": "Reserved 0x105", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0105", + "is_reserved": true + }, + { + "id": "Reserved262", + "name": "Reserved 0x106", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0106", + "is_reserved": true + }, + { + "id": "Reserved263", + "name": "Reserved 0x107", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0107", + "is_reserved": true + }, + { + "id": "Reserved264", + "name": "Reserved 0x108", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0108", + "is_reserved": true + }, + { + "id": "Reserved265", + "name": "Reserved 0x109", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0109", + "is_reserved": true + }, + { + "id": "Reserved266", + "name": "Reserved 0x10A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010A", + "is_reserved": true + }, + { + "id": "Reserved267", + "name": "Reserved 0x10B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010B", + "is_reserved": true + }, + { + "id": "Reserved268", + "name": "Reserved 0x10C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010C", + "is_reserved": true + }, + { + "id": "Reserved269", + "name": "Reserved 0x10D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010D", + "is_reserved": true + }, + { + "id": "Reserved270", + "name": "Reserved 0x10E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010E", + "is_reserved": true + }, + { + "id": "Reserved271", + "name": "Reserved 0x10F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010F", + "is_reserved": true + }, + { + "id": "Reserved272", + "name": "Reserved 0x110", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0110", + "is_reserved": true + }, + { + "id": "Reserved273", + "name": "Reserved 0x111", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0111", + "is_reserved": true + }, + { + "id": "Reserved274", + "name": "Reserved 0x112", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0112", + "is_reserved": true + }, + { + "id": "Reserved275", + "name": "Reserved 0x113", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0113", + "is_reserved": true + }, + { + "id": "Reserved276", + "name": "Reserved 0x114", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0114", + "is_reserved": true + }, + { + "id": "Reserved277", + "name": "Reserved 0x115", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0115", + "is_reserved": true + }, + { + "id": "Reserved278", + "name": "Reserved 0x116", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0116", + "is_reserved": true + }, + { + "id": "Reserved279", + "name": "Reserved 0x117", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0117", + "is_reserved": true + }, + { + "id": "Reserved280", + "name": "Reserved 0x118", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0118", + "is_reserved": true + }, + { + "id": "Reserved281", + "name": "Reserved 0x119", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0119", + "is_reserved": true + }, + { + "id": "Reserved282", + "name": "Reserved 0x11A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011A", + "is_reserved": true + }, + { + "id": "Reserved283", + "name": "Reserved 0x11B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011B", + "is_reserved": true + }, + { + "id": "Reserved284", + "name": "Reserved 0x11C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011C", + "is_reserved": true + }, + { + "id": "Reserved285", + "name": "Reserved 0x11D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011D", + "is_reserved": true + }, + { + "id": "Reserved286", + "name": "Reserved 0x11E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011E", + "is_reserved": true + }, + { + "id": "Reserved287", + "name": "Reserved 0x11F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011F", + "is_reserved": true + }, + { + "id": "Reserved288", + "name": "Reserved 0x120", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0120", + "is_reserved": true + }, + { + "id": "Reserved289", + "name": "Reserved 0x121", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0121", + "is_reserved": true + }, + { + "id": "Reserved290", + "name": "Reserved 0x122", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0122", + "is_reserved": true + }, + { + "id": "Reserved291", + "name": "Reserved 0x123", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0123", + "is_reserved": true + }, + { + "id": "Reserved292", + "name": "Reserved 0x124", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0124", + "is_reserved": true + }, + { + "id": "Reserved293", + "name": "Reserved 0x125", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0125", + "is_reserved": true + }, + { + "id": "Reserved294", + "name": "Reserved 0x126", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0126", + "is_reserved": true + }, + { + "id": "Reserved295", + "name": "Reserved 0x127", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0127", + "is_reserved": true + }, + { + "id": "Reserved296", + "name": "Reserved 0x128", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0128", + "is_reserved": true + }, + { + "id": "Reserved297", + "name": "Reserved 0x129", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0129", + "is_reserved": true + }, + { + "id": "Reserved298", + "name": "Reserved 0x12A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012A", + "is_reserved": true + }, + { + "id": "Reserved299", + "name": "Reserved 0x12B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012B", + "is_reserved": true + }, + { + "id": "Reserved300", + "name": "Reserved 0x12C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012C", + "is_reserved": true + }, + { + "id": "Reserved301", + "name": "Reserved 0x12D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012D", + "is_reserved": true + }, + { + "id": "Reserved302", + "name": "Reserved 0x12E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012E", + "is_reserved": true + }, + { + "id": "Reserved303", + "name": "Reserved 0x12F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012F", + "is_reserved": true + }, + { + "id": "Reserved304", + "name": "Reserved 0x130", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0130", + "is_reserved": true + }, + { + "id": "Reserved305", + "name": "Reserved 0x131", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0131", + "is_reserved": true + }, + { + "id": "Reserved306", + "name": "Reserved 0x132", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0132", + "is_reserved": true + }, + { + "id": "Reserved307", + "name": "Reserved 0x133", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0133", + "is_reserved": true + }, + { + "id": "Reserved308", + "name": "Reserved 0x134", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0134", + "is_reserved": true + }, + { + "id": "Reserved309", + "name": "Reserved 0x135", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0135", + "is_reserved": true + }, + { + "id": "Reserved310", + "name": "Reserved 0x136", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0136", + "is_reserved": true + }, + { + "id": "Reserved311", + "name": "Reserved 0x137", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0137", + "is_reserved": true + }, + { + "id": "fuse312", + "name": "COM_DEVICE_ID_CFG0", + "description": "COM_DEVICE_ID_CFG0", + "index_int": "0x0138", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse312-bits-0-15", + "name": "USB_VID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "fuse312-bits-16-31", + "name": "USB1_PID", + "description": "USB1 Product ID" + } + ] + }, + { + "id": "fuse313", + "name": "COM_DEVICE_ID_CFG1", + "description": "COM_DEVICE_ID_CFG1", + "index_int": "0x0139", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse313-bits-0-15", + "name": "USB2_PID", + "description": "USB2 Product ID" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved314", + "name": "Reserved 0x13A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013A", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse315", + "name": "COM_DEVICE_ID_CFG3", + "description": "COM_DEVICE_ID_CFG3", + "index_int": "0x013B", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse315-bits-0-31", + "name": "MAC1_ADDR_31_0", + "description": "MAC_1 Address. Reserved for customer SW" + } + ] + }, + { + "id": "fuse316", + "name": "COM_DEVICE_ID_CFG4", + "description": "COM_DEVICE_ID_CFG4", + "index_int": "0x013C", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse316-bits-0-15", + "name": "MAC1_ADDR_47_32", + "description": "MAC_1 Address. Reserved for customer SW" + }, + { + "width": 16, + "id": "fuse316-bits-16-31", + "name": "MAC2_ADDR_15_0", + "description": "MAC_2 Address. Reserved for customer SW" + } + ] + }, + { + "id": "fuse317", + "name": "COM_DEVICE_ID_CFG5", + "description": "COM_DEVICE_ID_CFG5", + "index_int": "0x013D", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse317-bits-0-31", + "name": "MAC2_ADDR_47_16", + "description": "MAC_2 Address. Reserved for customer SW" + } + ] + }, + { + "id": "Reserved318", + "name": "Reserved 0x13E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved319", + "name": "Reserved 0x13F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013F", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved320", + "name": "Reserved 0x140", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0140", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved321", + "name": "Reserved 0x141", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0141", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved322", + "name": "Reserved 0x142", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0142", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved323", + "name": "Reserved 0x143", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0143", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved324", + "name": "Reserved 0x144", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0144", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved325", + "name": "Reserved 0x145", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0145", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved326", + "name": "Reserved 0x146", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0146", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "fuse327", + "name": "OEM_SW_CFG", + "description": "OEM Software Configuration", + "index_int": "0x0147", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "reg_width": 16 + }, + { + "id": "Reserved328", + "name": "Reserved 0x148", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0148", + "is_reserved": true + }, + { + "id": "Reserved329", + "name": "Reserved 0x149", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0149", + "is_reserved": true + }, + { + "id": "Reserved330", + "name": "Reserved 0x14A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014A", + "is_reserved": true + }, + { + "id": "Reserved331", + "name": "Reserved 0x14B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014B", + "is_reserved": true + }, + { + "id": "Reserved332", + "name": "Reserved 0x14C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014C", + "is_reserved": true + }, + { + "id": "Reserved333", + "name": "Reserved 0x14D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014D", + "is_reserved": true + }, + { + "id": "Reserved334", + "name": "Reserved 0x14E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014E", + "is_reserved": true + }, + { + "id": "Reserved335", + "name": "Reserved 0x14F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014F", + "is_reserved": true + }, + { + "id": "Reserved336", + "name": "Reserved 0x150", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0150", + "is_reserved": true + }, + { + "id": "Reserved337", + "name": "Reserved 0x151", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0151", + "is_reserved": true + }, + { + "id": "Reserved338", + "name": "Reserved 0x152", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0152", + "is_reserved": true + }, + { + "id": "Reserved339", + "name": "Reserved 0x153", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0153", + "is_reserved": true + }, + { + "id": "Reserved340", + "name": "Reserved 0x154", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0154", + "is_reserved": true + }, + { + "id": "Reserved341", + "name": "Reserved 0x155", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0155", + "is_reserved": true + }, + { + "id": "Reserved342", + "name": "Reserved 0x156", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0156", + "is_reserved": true + }, + { + "id": "Reserved343", + "name": "Reserved 0x157", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0157", + "is_reserved": true + }, + { + "id": "Reserved344", + "name": "Reserved 0x158", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0158", + "is_reserved": true + }, + { + "id": "Reserved345", + "name": "Reserved 0x159", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0159", + "is_reserved": true + }, + { + "id": "Reserved346", + "name": "Reserved 0x15A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015A", + "is_reserved": true + }, + { + "id": "Reserved347", + "name": "Reserved 0x15B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015B", + "is_reserved": true + }, + { + "id": "Reserved348", + "name": "Reserved 0x15C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015C", + "is_reserved": true + }, + { + "id": "Reserved349", + "name": "Reserved 0x15D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015D", + "is_reserved": true + }, + { + "id": "Reserved350", + "name": "Reserved 0x15E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015E", + "is_reserved": true + }, + { + "id": "Reserved351", + "name": "Reserved 0x15F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015F", + "is_reserved": true + }, + { + "id": "Reserved352", + "name": "Reserved 0x160", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0160", + "is_reserved": true + }, + { + "id": "Reserved353", + "name": "Reserved 0x161", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0161", + "is_reserved": true + }, + { + "id": "Reserved354", + "name": "Reserved 0x162", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0162", + "is_reserved": true + }, + { + "id": "Reserved355", + "name": "Reserved 0x163", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0163", + "is_reserved": true + }, + { + "id": "Reserved356", + "name": "Reserved 0x164", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0164", + "is_reserved": true + }, + { + "id": "Reserved357", + "name": "Reserved 0x165", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0165", + "is_reserved": true + }, + { + "id": "Reserved358", + "name": "Reserved 0x166", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0166", + "is_reserved": true + }, + { + "id": "Reserved359", + "name": "Reserved 0x167", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0167", + "is_reserved": true + }, + { + "id": "Reserved360", + "name": "Reserved 0x168", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0168", + "is_reserved": true + }, + { + "id": "Reserved361", + "name": "Reserved 0x169", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0169", + "is_reserved": true + }, + { + "id": "Reserved362", + "name": "Reserved 0x16A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016A", + "is_reserved": true + }, + { + "id": "Reserved363", + "name": "Reserved 0x16B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016B", + "is_reserved": true + }, + { + "id": "Reserved364", + "name": "Reserved 0x16C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016C", + "is_reserved": true + }, + { + "id": "Reserved365", + "name": "Reserved 0x16D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016D", + "is_reserved": true + }, + { + "id": "Reserved366", + "name": "Reserved 0x16E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016E", + "is_reserved": true + }, + { + "id": "Reserved367", + "name": "Reserved 0x16F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016F", + "is_reserved": true + }, + { + "id": "Reserved368", + "name": "Reserved 0x170", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0170", + "is_reserved": true + }, + { + "id": "Reserved369", + "name": "Reserved 0x171", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0171", + "is_reserved": true + }, + { + "id": "Reserved370", + "name": "Reserved 0x172", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0172", + "is_reserved": true + }, + { + "id": "Reserved371", + "name": "Reserved 0x173", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0173", + "is_reserved": true + }, + { + "id": "Reserved372", + "name": "Reserved 0x174", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0174", + "is_reserved": true + }, + { + "id": "Reserved373", + "name": "Reserved 0x175", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0175", + "is_reserved": true + }, + { + "id": "Reserved374", + "name": "Reserved 0x176", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0176", + "is_reserved": true + }, + { + "id": "Reserved375", + "name": "Reserved 0x177", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0177", + "is_reserved": true + }, + { + "id": "fuse376", + "name": "GPR2_CFG0", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x0178" + }, + { + "id": "fuse377", + "name": "GPR2_CFG1", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x0179", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse378", + "name": "GPR2_CFG2", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017A", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse379", + "name": "GPR2_CFG3", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017B", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse380", + "name": "GPR2_CFG4", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse381", + "name": "GPR2_CFG5", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017D", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse382", + "name": "GPR2_CFG6", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017E", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse383", + "name": "GPR2_CFG7", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017F", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse384", + "name": "GPR3_CFG0", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0180", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse385", + "name": "GPR3_CFG1", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0181", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse386", + "name": "GPR3_CFG2", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0182", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse387", + "name": "GPR3_CFG3", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0183", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse388", + "name": "GPR3_CFG4", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0184", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse389", + "name": "GPR3_CFG5", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0185", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse390", + "name": "GPR3_CFG6", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0186", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse391", + "name": "GPR3_CFG7", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0187", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse392", + "name": "GPR4_CFG0", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x0188" + }, + { + "id": "fuse393", + "name": "GPR4_CFG1", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x0189" + }, + { + "id": "fuse394", + "name": "GPR4_CFG2", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018A" + }, + { + "id": "fuse395", + "name": "GPR4_CFG3", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018B" + }, + { + "id": "fuse396", + "name": "GPR4_CFG4", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16 + }, + { + "id": "fuse397", + "name": "GPR4_CFG5", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018D", + "reg_width": 16 + }, + { + "id": "fuse398", + "name": "GPR4_CFG6", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018E", + "reg_width": 16 + }, + { + "id": "fuse399", + "name": "GPR4_CFG7", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018F", + "reg_width": 16 + }, + { + "id": "Reserved400", + "name": "Reserved 0x190", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0190", + "is_reserved": true + }, + { + "id": "Reserved401", + "name": "Reserved 0x191", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0191", + "is_reserved": true + }, + { + "id": "Reserved402", + "name": "Reserved 0x192", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0192", + "is_reserved": true + }, + { + "id": "Reserved403", + "name": "Reserved 0x193", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0193", + "is_reserved": true + }, + { + "id": "Reserved404", + "name": "Reserved 0x194", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0194", + "is_reserved": true + }, + { + "id": "Reserved405", + "name": "Reserved 0x195", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0195", + "is_reserved": true + }, + { + "id": "Reserved406", + "name": "Reserved 0x196", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0196", + "is_reserved": true + }, + { + "id": "Reserved407", + "name": "Reserved 0x197", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0197", + "is_reserved": true + }, + { + "id": "Reserved408", + "name": "Reserved 0x198", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0198", + "is_reserved": true + }, + { + "id": "Reserved409", + "name": "Reserved 0x199", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0199", + "is_reserved": true + }, + { + "id": "Reserved410", + "name": "Reserved 0x19A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019A", + "is_reserved": true + }, + { + "id": "Reserved411", + "name": "Reserved 0x19B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019B", + "is_reserved": true + }, + { + "id": "Reserved412", + "name": "Reserved 0x19C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019C", + "is_reserved": true + }, + { + "id": "Reserved413", + "name": "Reserved 0x19D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019D", + "is_reserved": true + }, + { + "id": "Reserved414", + "name": "Reserved 0x19E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019E", + "is_reserved": true + }, + { + "id": "Reserved415", + "name": "Reserved 0x19F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019F", + "is_reserved": true + }, + { + "id": "Reserved416", + "name": "Reserved 0x1A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A0", + "is_reserved": true + }, + { + "id": "Reserved417", + "name": "Reserved 0x1A1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A1", + "is_reserved": true + }, + { + "id": "Reserved418", + "name": "Reserved 0x1A2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A2", + "is_reserved": true + }, + { + "id": "Reserved419", + "name": "Reserved 0x1A3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A3", + "is_reserved": true + }, + { + "id": "Reserved420", + "name": "Reserved 0x1A4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A4", + "is_reserved": true + }, + { + "id": "Reserved421", + "name": "Reserved 0x1A5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A5", + "is_reserved": true + }, + { + "id": "Reserved422", + "name": "Reserved 0x1A6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A6", + "is_reserved": true + }, + { + "id": "Reserved423", + "name": "Reserved 0x1A7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A7", + "is_reserved": true + }, + { + "id": "Reserved424", + "name": "Reserved 0x1A8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A8", + "is_reserved": true + }, + { + "id": "Reserved425", + "name": "Reserved 0x1A9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A9", + "is_reserved": true + }, + { + "id": "Reserved426", + "name": "Reserved 0x1AA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AA", + "is_reserved": true + }, + { + "id": "Reserved427", + "name": "Reserved 0x1AB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AB", + "is_reserved": true + }, + { + "id": "Reserved428", + "name": "Reserved 0x1AC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AC", + "is_reserved": true + }, + { + "id": "Reserved429", + "name": "Reserved 0x1AD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AD", + "is_reserved": true + }, + { + "id": "Reserved430", + "name": "Reserved 0x1AE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AE", + "is_reserved": true + }, + { + "id": "Reserved431", + "name": "Reserved 0x1AF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AF", + "is_reserved": true + }, + { + "id": "Reserved432", + "name": "Reserved 0x1B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B0", + "is_reserved": true + }, + { + "id": "Reserved433", + "name": "Reserved 0x1B1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B1", + "is_reserved": true + }, + { + "id": "Reserved434", + "name": "Reserved 0x1B2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B2", + "is_reserved": true + }, + { + "id": "Reserved435", + "name": "Reserved 0x1B3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B3", + "is_reserved": true + }, + { + "id": "Reserved436", + "name": "Reserved 0x1B4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B4", + "is_reserved": true + }, + { + "id": "Reserved437", + "name": "Reserved 0x1B5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B5", + "is_reserved": true + }, + { + "id": "Reserved438", + "name": "Reserved 0x1B6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B6", + "is_reserved": true + }, + { + "id": "Reserved439", + "name": "Reserved 0x1B7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B7", + "is_reserved": true + }, + { + "id": "Reserved440", + "name": "Reserved 0x1B8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B8", + "is_reserved": true + }, + { + "id": "Reserved441", + "name": "Reserved 0x1B9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B9", + "is_reserved": true + }, + { + "id": "Reserved442", + "name": "Reserved 0x1BA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BA", + "is_reserved": true + }, + { + "id": "Reserved443", + "name": "Reserved 0x1BB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BB", + "is_reserved": true + }, + { + "id": "Reserved444", + "name": "Reserved 0x1BC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BC", + "is_reserved": true + }, + { + "id": "Reserved445", + "name": "Reserved 0x1BD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BD", + "is_reserved": true + }, + { + "id": "Reserved446", + "name": "Reserved 0x1BE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BE", + "is_reserved": true + }, + { + "id": "Reserved447", + "name": "Reserved 0x1BF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BF", + "is_reserved": true + }, + { + "id": "Reserved448", + "name": "Reserved 0x1C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C0", + "is_reserved": true + }, + { + "id": "Reserved449", + "name": "Reserved 0x1C1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C1", + "is_reserved": true + }, + { + "id": "Reserved450", + "name": "Reserved 0x1C2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C2", + "is_reserved": true + }, + { + "id": "Reserved451", + "name": "Reserved 0x1C3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C3", + "is_reserved": true + }, + { + "id": "Reserved452", + "name": "Reserved 0x1C4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C4", + "is_reserved": true + }, + { + "id": "Reserved453", + "name": "Reserved 0x1C5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C5", + "is_reserved": true + }, + { + "id": "Reserved454", + "name": "Reserved 0x1C6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C6", + "is_reserved": true + }, + { + "id": "Reserved455", + "name": "Reserved 0x1C7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C7", + "is_reserved": true + }, + { + "id": "Reserved456", + "name": "Reserved 0x1C8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C8", + "is_reserved": true + }, + { + "id": "Reserved457", + "name": "Reserved 0x1C9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C9", + "is_reserved": true + }, + { + "id": "Reserved458", + "name": "Reserved 0x1CA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CA", + "is_reserved": true + }, + { + "id": "Reserved459", + "name": "Reserved 0x1CB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CB", + "is_reserved": true + }, + { + "id": "Reserved460", + "name": "Reserved 0x1CC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CC", + "is_reserved": true + }, + { + "id": "Reserved461", + "name": "Reserved 0x1CD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CD", + "is_reserved": true + }, + { + "id": "Reserved462", + "name": "Reserved 0x1CE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CE", + "is_reserved": true + }, + { + "id": "Reserved463", + "name": "Reserved 0x1CF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CF", + "is_reserved": true + }, + { + "id": "Reserved464", + "name": "Reserved 0x1D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D0", + "is_reserved": true + }, + { + "id": "Reserved465", + "name": "Reserved 0x1D1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D1", + "is_reserved": true + }, + { + "id": "Reserved466", + "name": "Reserved 0x1D2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D2", + "is_reserved": true + }, + { + "id": "Reserved467", + "name": "Reserved 0x1D3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D3", + "is_reserved": true + }, + { + "id": "Reserved468", + "name": "Reserved 0x1D4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D4", + "is_reserved": true + }, + { + "id": "Reserved469", + "name": "Reserved 0x1D5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D5", + "is_reserved": true + }, + { + "id": "Reserved470", + "name": "Reserved 0x1D6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D6", + "is_reserved": true + }, + { + "id": "Reserved471", + "name": "Reserved 0x1D7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D7", + "is_reserved": true + }, + { + "id": "Reserved472", + "name": "Reserved 0x1D8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D8", + "is_reserved": true + }, + { + "id": "Reserved473", + "name": "Reserved 0x1D9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D9", + "is_reserved": true + }, + { + "id": "Reserved474", + "name": "Reserved 0x1DA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DA", + "is_reserved": true + }, + { + "id": "Reserved475", + "name": "Reserved 0x1DB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DB", + "is_reserved": true + }, + { + "id": "Reserved476", + "name": "Reserved 0x1DC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DC", + "is_reserved": true + }, + { + "id": "Reserved477", + "name": "Reserved 0x1DD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DD", + "is_reserved": true + }, + { + "id": "Reserved478", + "name": "Reserved 0x1DE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DE", + "is_reserved": true + }, + { + "id": "Reserved479", + "name": "Reserved 0x1DF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DF", + "is_reserved": true + }, + { + "id": "Reserved480", + "name": "Reserved 0x1E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E0", + "is_reserved": true + }, + { + "id": "Reserved481", + "name": "Reserved 0x1E1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E1", + "is_reserved": true + }, + { + "id": "Reserved482", + "name": "Reserved 0x1E2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E2", + "is_reserved": true + }, + { + "id": "Reserved483", + "name": "Reserved 0x1E3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E3", + "is_reserved": true + }, + { + "id": "Reserved484", + "name": "Reserved 0x1E4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E4", + "is_reserved": true + }, + { + "id": "Reserved485", + "name": "Reserved 0x1E5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E5", + "is_reserved": true + }, + { + "id": "Reserved486", + "name": "Reserved 0x1E6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E6", + "is_reserved": true + }, + { + "id": "Reserved487", + "name": "Reserved 0x1E7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E7", + "is_reserved": true + }, + { + "id": "Reserved488", + "name": "Reserved 0x1E8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E8", + "is_reserved": true + }, + { + "id": "Reserved489", + "name": "Reserved 0x1E9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E9", + "is_reserved": true + }, + { + "id": "Reserved490", + "name": "Reserved 0x1EA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EA", + "is_reserved": true + }, + { + "id": "Reserved491", + "name": "Reserved 0x1EB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EB", + "is_reserved": true + }, + { + "id": "fuse492", + "name": "CRC_HI4", + "description": "CRC 5", + "index_int": "0x01EC", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse493", + "name": "CRC_HI5", + "description": "CRC 6", + "index_int": "0x01ED", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse494", + "name": "CRC_HI6", + "description": "CRC 7", + "index_int": "0x01EE", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse495", + "name": "CRC_HI7", + "description": "CRC 8", + "index_int": "0x01EF", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "Reserved496", + "name": "Reserved 0x1F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F0", + "is_reserved": true + }, + { + "id": "Reserved497", + "name": "Reserved 0x1F1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F1", + "is_reserved": true + }, + { + "id": "Reserved498", + "name": "Reserved 0x1F2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F2", + "is_reserved": true + }, + { + "id": "Reserved499", + "name": "Reserved 0x1F3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F3", + "is_reserved": true + }, + { + "id": "Reserved500", + "name": "Reserved 0x1F4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F4", + "is_reserved": true + }, + { + "id": "Reserved501", + "name": "Reserved 0x1F5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F5", + "is_reserved": true + }, + { + "id": "Reserved502", + "name": "Reserved 0x1F6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F6", + "is_reserved": true + }, + { + "id": "Reserved503", + "name": "Reserved 0x1F7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F7", + "is_reserved": true + }, + { + "id": "Reserved504", + "name": "Reserved 0x1F8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F8", + "is_reserved": true + }, + { + "id": "Reserved505", + "name": "Reserved 0x1F9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F9", + "is_reserved": true + }, + { + "id": "Reserved506", + "name": "Reserved 0x1FA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FA", + "is_reserved": true + }, + { + "id": "Reserved507", + "name": "Reserved 0x1FB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FB", + "is_reserved": true + }, + { + "id": "Reserved508", + "name": "Reserved 0x1FC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FC", + "is_reserved": true + }, + { + "id": "Reserved509", + "name": "Reserved 0x1FD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FD", + "is_reserved": true + }, + { + "id": "Reserved510", + "name": "Reserved 0x1FE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FE", + "is_reserved": true + }, + { + "id": "Reserved511", + "name": "Reserved 0x1FF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FF", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/database.yaml new file mode 100644 index 0000000..0bcecc0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/database.yaml @@ -0,0 +1,358 @@ +# Copyright 2023-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + a1: {} +latest: a1 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: i.MX Application Processors + spsdk_predecessor_name: mx93 + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-9-processors/i-mx-93-applications-processor-family-arm-cortex-a55-ml-acceleration-power-efficient-mpu:i.MX93 + memory_map: + ocram_ns: + start_int: 0x20480000 + size_int: 0xA0000 + external: false + non_xip_type: int_ram + ocram_s: + start_int: 0x30480000 + size_int: 0xA0000 + external: false + non_xip_type: int_ram + dram1: + start_int: 0x80000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram2: + start_int: 0x90000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram3: + start_int: 0xA0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram4: + start_int: 0xB0000000 + size_int: 0x44000 + external: true + non_xip_type: ext_ram_ddr + dram5: + start_int: 0xB0044000 + size_int: 0xBC000 + external: true + non_xip_type: ext_ram_ddr + dram6: + start_int: 0xB0100000 + size_int: 0xFF00000 + external: true + non_xip_type: ext_ram_ddr + dram7: + start_int: 0xC0000000 + size_int: 0x40000000 + external: true + non_xip_type: ext_ram_ddr + flexspi1_ns: + start_int: 0x28000000 + size_int: 0x08000000 + external: true + non_xip_type: ext_ram_flexspi + mirror_of: flexspi1_s + flexspi1_s: + start_int: 0x38000000 + size_int: 0x08000000 + external: true + non_xip_type: ext_ram_flexspi + flexspi2_ns: + start_int: 0x04000000 + size_int: 0x04000000 + external: true + non_xip_type: ext_ram_flexspi + mirror_of: flexspi2_s + evk_default: true + flexspi2_s: + start_int: 0x14000000 + size_int: 0x04000000 + external: true + non_xip_type: ext_ram_flexspi + isp: + interfaces: [usb] + rom: + protocol: sdps + protocol_params: + no_cmd: True + hid_ep1: True + hid_pack_size: 1020 + usb: + - vid: 0x1FC9 + pid: 0x014E + +features: + # ======== Fuses description section ======== + fuses: + tool: nxpele + grouped_registers: + - uid: otfad1_key + name: OTFAD1_KEY + width: 128 + reverse_subregs_order: True + reversed: True + config_as_hexstring: true + description: OTFAD1 Key known as KEK. + sub_regs: [fuse184, fuse185, fuse186, fuse187] + - uid: otfad2_key + name: OTFAD2_KEY + width: 128 + reverse_subregs_order: True + reversed: True + config_as_hexstring: true + description: OTFAD2 Key known as KEK. + sub_regs: [fuse178, fuse179, fuse180, fuse181] + - uid: srkh + name: SRKH + width: 256 + reversed: True + config_as_hexstring: True + description: "SHA256 hash digest of hash of four SRK keys" + sub_regs: + [ + "fuse128", + "fuse129", + "fuse130", + "fuse131", + "fuse132", + "fuse133", + "fuse134", + "fuse135", + ] + # ======== Communication buffer section ======== + comm_buffer: + address: 0x8380_0000 # comm buffer in DDR + size: 0x20000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_ahab" + + # ======== DAT section ======== + dat: + socc: 0x4D58005D # SOCC identification + based_on_ele: True # Flag if the implementation of DAT is based on EdgeLock Enclave + dat_is_using_sha256_always: True + dmbox_ap_ix: 0 + test_address: 0x2048_0000 + + # ======== AHAB section ======== + ahab: + valid_offset_minimal_alignment: 0x400 + containers_max_cnt: 3 + oem_images_max_cnt: 8 + container_types: [1] # Supported container types + core_ids: + CORTEX_M33: [1, "cortex-m33", "Cortex M33"] + CORTEX_A55: [2, "cortex-a55", "Cortex A55"] + ELE: [6, "ele", "EdgeLock Enclave"] + V2X_1: [9, "v2x-1", "V2X 1"] + V2X_2: [10, "v2x-2", "V2X 2"] + image_types: + application: + EXECUTABLE: [0x03, executable, Executable Image] + DATA: [0x04, data, Data Image] + PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + PROVISIONING_DATA: [0x09, provisioning_data, Provisioning data Image] + V2X_DUMMY: [0x0E, v2x_dummy, V2X dummy Image] + ele: + ELE: [0x06, ele, EdgeLock Enclave Image] + v2x: + V2X_PRIMARY: [0x0B, v2x_primary, V2X primary Image] + V2X_SECONDARY: [0x0C, v2x_secondary, V2X secondary Image] + V2X_ROM_PATCH: [0x0D, v2x_rom_patch, V2X rom patch Image] + + image_types_mapping: + ele: [6] + v2x: [9, 10] + + # AHAB extra images + ddr_alignments: [0x8000, 0x4000, 0x8000, 0] + ddr_fw_alignment: 0x4 + ddr_image_size_alignment: 0x400 + + spl_ddr_load_address: 0x2049A000 + spl_ddr_core_id: cortex-a55 + spl_ddr_meta_data_start_cpu_id: 2 + spl_ddr_image_size_alignment: 0x400 + + atf_load_address: 0x204E0000 + atf_core_id: cortex-a55 + atf_meta_data_start_cpu_id: 2 + atf_image_size_alignment: 0x400 + + uboot_load_address: 0x80200000 + uboot_core_id: cortex-a55 + uboot_meta_data_start_cpu_id: 2 + uboot_image_size_alignment: 0x400 + + tee_load_address: 0x96000000 + tee_core_id: cortex-a55 + tee_meta_data_start_cpu_id: 2 + tee_image_size_alignment: 0x400 + + kernel_load_address: 0x80400000 + kernel_core_id: cortex-a55 + kernel_meta_data_start_cpu_id: 2 + kernel_image_size_alignment: 0x400 + + dtb_load_address: 0x83000000 + dtb_entry_point: 0x0 + dtb_core_id: cortex-a55 + dtb_meta_data_start_cpu_id: 0 + dtb_image_type: data + dtb_image_size_alignment: 0x400 + + extra_images: ["spl_ddr", "atf", "uboot", "tee", "kernel", "dtb"] + + # ======== EdgeLock Enclave section ======== + ele: {} + + # ======== OTFAD section ======== + otfad: + keyblob_byte_swap_cnt: 8 + sb_21_supported: False + has_kek_fuses: True + supports_key_scrambling: True + + fuses_1: # Fuses for OTFAD1 + _name: Configuration of fuses for OTFAD1 + _no_verify: True + fuse188: # OTFAD CFG Fuse + fuse188-bit-3: 1 # OTFAD Enable + fuse188-bit-7: __scramble_enabled # OTFAD enable scrambling + fuse188-bits-8-15: __key_scramble_align # OTFAD scramble align + fuse189: __key_scramble_mask # OTFAD Scramble Key + otfad1_key: __kek # OTFAD Key + + fuses_2: # Fuses for OTFAD2 + _name: Configuration of fuses for OTFAD2 + _no_verify: True + fuse182: # OTFAD CFG Fuse + fuse182-bit-3: 1 # OTFAD Enable + fuse182-bit-7: __scramble_enabled # OTFAD enable scrambling + fuse182-bits-8-15: __key_scramble_align # OTFAD scramble align + fuse183: __key_scramble_mask # OTFAD Scramble Key + otfad2_key: __kek # OTFAD Key + + additional_template: ["otfad_scramble"] + additional_template_text: | + Is important to use physical addresses (non-secure) in settings of OTFAD to proper run the decryption on device. + For example: + In case of using FlexSPI2 the secure base address address is 0x1400_0000. But in setting of the OTFAD use 0x0400_0000 as a base address. + The code must be still linked on secure base address 0x1400_0000 to proper run of OTFAD hardware. + + Same is for FlexSPI1, but instead of 0x3800_0000 base address, the 0x2800_0000 must be used in OTFAD configuration. + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + #not_used: 0xC00 + primary_image_container_set: 0x1_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc_boot: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + sd: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + # flexspi_nand: + # segments: + # xmcd: 0x00 + # primary_image_container_set: 0x400 + # secondary_image_container_set: -1 # Just behind previous segment + recovery_spi: + note: Connected to LPSPI1/2/3/4. SPI NOR recovery image + segments: + primary_image_container_set: 0x00 + secondary_image_container_set: -1 # Just behind previous segment + + # Template definitions for bootable image generation + templates: + imx_boot_flash_singleboot: + description: "Complete imx-bootloader image" + mem_type: serial_downloader + configs: + - name: spl + type: spl + containers: + - name: nxp_containers + path: "mx93a1-ahab-container.img" + - name: spl_container + images: [spl_ddr] + - name: uboot + type: uboot + containers: + - name: uboot_container + images: [atf, uboot, tee] + boards: + imx93-11x11-lpddr4x-evk: + lpddr_imem_1d: lpddr4_imem_1d_v202201.bin + lpddr_dmem_1d: lpddr4_dmem_1d_v202201.bin + lpddr_imem_2d: lpddr4_imem_2d_v202201.bin + lpddr_dmem_2d: lpddr4_dmem_2d_v202201.bin + spl_ddr: u-boot-spl.bin-imx93-11x11-lpddr4x-evk-sd + atf: bl31-imx93.bin + uboot: u-boot-imx93-11x11-lpddr4x-evk.bin-sd + tee: tee.bin + imx93-9x9-lpddr4-qsb: + lpddr_imem_1d: lpddr4_imem_1d_v202201.bin + lpddr_dmem_1d: lpddr4_dmem_1d_v202201.bin + lpddr_imem_2d: lpddr4_imem_2d_v202201.bin + lpddr_dmem_2d: lpddr4_dmem_2d_v202201.bin + spl_ddr: u-boot-spl.bin-imx93-9x9-lpddr4-qsb-sd + atf: bl31-imx93.bin + uboot: u-boot-imx93-9x9-lpddr4-qsb.bin-sd + tee: tee.bin + + # ======== Misc signing section ======== + signing: + pss_padding: true + + # ======== Fastboot ======== + fastboot: + address: 0x8280_0000 + size: 0x2000_0000 + + # ======== nxpuuu ========== + nxpuuu: {} + + # ======== EL2GO TP section ======== + el2go_tp: + el2go_interface: uboot_fastboot + el2go_name: IMX9 + prov_method: oem_app + validation_method: max_count=16;max_total_size=16384 + uuid_fuse_index: "6 0 4" + + # ===== TLV ===== + tlv_blob: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/fcb_flexspi_nor.json new file mode 100644 index 0000000..99dcd17 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/fcb_flexspi_nor.json @@ -0,0 +1,1621 @@ +{ + "cpu": "MIMX9352", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix", + "default_value_int": "0x56010000", + "bitfields": [ + { + "id": "field004-bits0-7", + "width": 8, + "name": "bugfix", + "access": "RW", + "description": "[07:00] Bugfix - 0" + }, + { + "id": "field004-bits8-15", + "width": 8, + "name": "minor", + "access": "RW", + "description": "[15:08] Minor" + }, + { + "id": "field004-bits16-23", + "width": 8, + "name": "major", + "access": "RW", + "description": "[23:16] Major - 1" + }, + { + "width": 8 + } + ] + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type: 0 - Generic, 1 - Quad Enable, 2 - SPI-to-xSPI, 3 - xSPI-to-SPI", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration. effective only when deviceModeCfgEnable = 1", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "Reserved01D", + "offset_int": "0x1d", + "reg_width": 24, + "name": "reserved1", + "description": " [0x01d-0x019] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x02c-0x02f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved3", + "description": " [0x03c-0x03f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 64, + "name": "reserved4", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 8, + "name": "csPadSettingOverrideEn", + "description": " [0x060-0x060] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field061", + "offset_int": "0x61", + "reg_width": 8, + "name": "csPadSettingOverride", + "description": " [0x061-0x061] Overriding pad setting of CS", + "default_value_int": "0x0" + }, + { + "id": "Reserved062", + "offset_int": "0x62", + "reg_width": 16, + "name": "reserved5", + "description": " [0x062-0x063] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 8, + "name": "sclkPadSettingOverrideEn", + "description": " [0x064-0x064] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field065", + "offset_int": "0x65", + "reg_width": 8, + "name": "sclkPadSettingOverride", + "description": " [0x065-0x065] Overriding pad setting of SCLK", + "default_value_int": "0x0" + }, + { + "id": "Reserved066", + "offset_int": "0x66", + "reg_width": 16, + "name": "reserved6", + "description": " [0x066-0x067] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 8, + "name": "dataPadSettingOverrideEn", + "description": " [0x068-0x068] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field069", + "offset_int": "0x69", + "reg_width": 8, + "name": "dataPadSettingOverride", + "description": " [0x069-0x069] Overriding pad setting of data signals", + "default_value_int": "0x0" + }, + { + "id": "Reserved06A", + "offset_int": "0x6a", + "reg_width": 16, + "name": "reserved7", + "description": " [0x06a-0x06b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 8, + "name": "dqsPadSettingOverrideEn", + "description": " [0x06c-0x06c] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field06D", + "offset_int": "0x6d", + "reg_width": 8, + "name": "dqsPadSettingOverride", + "description": " [0x06d-0x06d] Overriding pad setting of DQS", + "default_value_int": "0x0" + }, + { + "id": "Reserved06E", + "offset_int": "0x6e", + "reg_width": 16, + "name": "reserved8", + "description": " [0x06e-0x06f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "dataValidTime", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field078-bits0-15", + "width": 16, + "name": "dllAValidTime", + "access": "RW", + "description": " Data valid time for DLLA in terms of 0.1 ns" + }, + { + "id": "field078-bits16-31", + "width": 16, + "name": "dllBValidTime", + "access": "RW", + "description": " Data valid time for DLLB in terms of 0.1 ns" + } + ] + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "lookupTable_0", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "lookupTable_1", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "lookupTable_2", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "lookupTable_3", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "lookupTable_4", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "lookupTable_5", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "lookupTable_6", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "lookupTable_7", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "lookupTable_8", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "lookupTable_9", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "lookupTable_10", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "lookupTable_11", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "lookupTable_12", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "lookupTable_13", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "lookupTable_14", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "lookupTable_15", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "lookupTable_16", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "lookupTable_17", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "lookupTable_18", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "lookupTable_19", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "lookupTable_20", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "lookupTable_21", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "lookupTable_22", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "lookupTable_23", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "lookupTable_24", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "lookupTable_25", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "lookupTable_26", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "lookupTable_27", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "lookupTable_28", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "lookupTable_29", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "lookupTable_30", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "lookupTable_31", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "lookupTable_32", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "lookupTable_33", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "lookupTable_34", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "lookupTable_35", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "lookupTable_36", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "lookupTable_37", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "lookupTable_38", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "lookupTable_39", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "lookupTable_40", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "lookupTable_41", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "lookupTable_42", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "lookupTable_43", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "lookupTable_44", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "lookupTable_45", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "lookupTable_46", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "lookupTable_47", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "lookupTable_48", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "lookupTable_49", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "lookupTable_50", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "lookupTable_51", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "lookupTable_52", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "lookupTable_53", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "lookupTable_54", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "lookupTable_55", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "lookupTable_56", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "lookupTable_57", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "lookupTable_58", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "lookupTable_59", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "lookupTable_60", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "lookupTable_61", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "lookupTable_62", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "lookupTable_63", + "description": " [0x080-0x17f] Lookup table holds Flash command sequences", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved9_0", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved9_1", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved9_2", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved9_3", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same", + "default_value_int": "0x0" + }, + { + "id": "field1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " The data order is swapped in OPI DDR mode", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved10_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "reserved10_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "reserved10_2", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "reserved10_3", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "reserved10_4", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "flashStateCtx", + "description": " Flash State Context after being configured", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1D4-bits0-7", + "width": 8, + "name": "flashPorMode", + "access": "RW", + "description": " Flash POR Mode" + }, + { + "id": "field1D4-bits8-15", + "width": 8, + "name": "flashCurrentMode", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "width": 8 + }, + { + "id": "field1D4-bits24-31", + "width": 8, + "name": "flashRestoringSequence", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + } + ] + }, + { + "id": "Reserved1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "reserved11_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "reserved11_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "reserved11_2", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "reserved11_3", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "reserved11_4", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "reserved11_5", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "reserved11_6", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "reserved11_7", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "reserved11_8", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "reserved11_9", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/fuses.json new file mode 100644 index 0000000..054e34a --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9352/fuses.json @@ -0,0 +1,9828 @@ +{ + "cpu": "mimx9352", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Lock bits allowing to lock access to specified fuses" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCK_CFG0", + "description": "LOCK_CFG0", + "index_int": "0", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse0-bits-0-2", + "name": "BOOT_CFG_LOCK", + "description": "Boot Configuration Fuse Lock for Boot_CFG 0-3 fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "WP_OP", + "value": 3, + "description": "Write Protect + Over-ride Protect, the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect, the controlled field can be sensed only, can not be burned and can't be read from shadow registers", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect, the controlled field can be sensed only, can't be read from shadow registers and can not be over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-3-5", + "name": "HSW_CFG_LOCK", + "description": "Hardware and Software Configuration Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "Write Protect, the controlled field can not be burned" + }, + { + "name": "OP", + "value": 2, + "description": "Over-ride Protect, the controlled field shadow registers can not be over-written" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Over-ride + Write Protect, the controlled field can not be overridden nor burned" + }, + { + "name": "RP", + "value": 4, + "description": "Read Protect, the controlled field can be sensed only, but can't be read from shadow registers" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned" + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register" + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "LOCK_CFG_LOCK", + "description": "Lock for Fuse Lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse1", + "name": "LOCK_CFG1", + "description": "LOCK_CFG1", + "index_int": "0x0001", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse1-bits-3-5", + "name": "COM_DEVICE_ID0_LOCK", + "description": "Communication Device ID0 Lock - Ethernet", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect, the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect, the controlled field can be sensed only, can't be read from shadow registers and can not be burned", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect, the controlled field can be sensed only, can't be read from shadow registers and can not be over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks - Read, Write and Over-ride Protect, the controlled field can be sensed only, can't be read, burned or over-written", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse1-bits-6-8", + "name": "COM_DEVICE_ID1_LOCK", + "description": "Communication Device ID1 Lock - USB, Ethernet", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse2", + "name": "LOCK_CFG2", + "description": "LOCK_CFG2", + "index_int": "0x0002", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse2-bits-0-2", + "name": "OEM_SW_CFG_LOCK", + "description": "OEM SW Fuse Lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse2-bits-3-5", + "name": "ELE_OTFAD1_KEY_LOCK", + "description": "OTFAD Key Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1, + "id": "fuse2-bit-15", + "name": "BOOT2_CFG_LOCK_0", + "description": "Boot Configuration Fuse Lock for Boot_CFG 8-11 fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be burned)" + }, + { + "name": "WP", + "value": 1, + "description": "Write Protect, the controlled field can not be burned" + } + ] + } + ] + }, + { + "id": "fuse3", + "name": "LOCK_CFG3", + "description": "LOCK_CFG3", + "index_int": "0x0003", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1, + "id": "fuse3-bit-15", + "name": "BOOT2_CFG_LOCK_1", + "description": "Boot Configuration Fuse Lock for Boot_CFG 8-11 fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (Fuse can be over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "OP", + "value": 1, + "description": "Over-ride Protect, the controlled field shadow registers can not be over-written" + } + ] + } + ] + }, + { + "id": "fuse4", + "name": "LOCK_CFG4", + "description": "LOCK_CFG4", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse4-bits-6-8", + "name": "ELE_MISC1_LOCK", + "description": "ELE-AP Misc. NXP Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "WP_OP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect - the controlled field can be sensed and overridden, but can't be read nor burned", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect - the controlled field can be sensed and burned, but can't be read nor over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse4-bits-12-14", + "name": "ELE_OEM_SRKH_LOCK", + "description": "ELE-AP OEM SRK Hash Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1, + "id": "fuse4-bit-15", + "name": "BOOT2_CFG_LOCK_2", + "description": "Boot Configuration Fuse Lock for Boot_CFG 8-11 fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read sensed)" + }, + { + "name": "READ_PROTECT", + "value": 1, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + } + ] + } + ] + }, + { + "id": "Reserved5", + "name": "Reserved 0x5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0005", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved6", + "name": "Reserved 0x6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0006", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved7", + "name": "Reserved 0x7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0007", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved8", + "name": "Reserved 0x8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0008", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse9", + "name": "LOCK_CFG9", + "description": "LOCK_CFG9", + "index_int": "0x0009", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse9-bits-3-5", + "name": "GPR2_LOCK", + "description": "GPR2_CFG lock bits ", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse9-bits-6-8", + "name": "GPR3_LOCK", + "description": "GPR3_CFG lock bits ", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse9-bits-9-11", + "name": "GPR4_LOCK", + "description": "GPR4_CFG lock bits ", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0xA-0xB", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved10", + "name": "Reserved 0xA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000A", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved11", + "name": "Reserved 0xB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000B", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "ECID", + "description": "Device Unique ID" + }, + "registers": [ + { + "id": "fuse12", + "name": "ECID3", + "description": "Device Unique ID", + "index_int": "0x000C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse13", + "name": "ECID2", + "description": "Device Unique ID", + "index_int": "0x000D", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse14", + "name": "ECID1", + "description": "Device Unique ID", + "index_int": "0x000E", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse15", + "name": "ECID0", + "description": "Device Unique ID", + "index_int": "0x000F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + } + ] + }, + { + "group": { + "name": "Reserved 0x10-0x12", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved16", + "name": "Reserved 0x10", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0010", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 11 + } + ] + }, + { + "id": "Reserved17", + "name": "Reserved 0x11", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0011", + "is_reserved": true, + "reg_width": 16 + }, + { + "id": "Reserved18", + "name": "Reserved 0x12", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0012", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 15 + }, + { + "width": 1 + }, + { + "width": 15 + } + ] + } + ] + }, + { + "group": { + "name": "HW_CFG", + "description": "Hardware configuration" + }, + "registers": [ + { + "id": "fuse19", + "name": "HW_CFG1", + "description": "HW_CFG1", + "index_int": "0x0013", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse19-bits-0-3", + "name": "SI_REV", + "description": "Silicon Revision number. Lower 2 bits represent the minor number and upper 2 bits represent the TO letter. So, A0 would be represented with 0000, A1 with 0001 and B1 with 0101. " + }, + { + "width": 2, + "id": "fuse19-bits-4-5", + "name": "MARKET_SEGMENT", + "description": "Indicate Auto/Industrial/Commercial Market", + "values": [ + { + "name": "CONSUMER", + "value": 0, + "description": "Consumer 0C to 95C (P/N Char 5D, 8D)", + "deprecated_names": [ + "00" + ] + }, + { + "name": "EXT_CONSUMER", + "value": 1, + "description": "Ext. Consumer -20C to 105C (P/N Char 5E, 8E)", + "deprecated_names": [ + "01" + ] + }, + { + "name": "INDUSTRIAL", + "value": 2, + "description": "Industrial -40C to 105C (P/N Char 7C)" + }, + { + "name": "AUTOMOTIVE", + "value": 3, + "description": "Automotive -40C to 125C (P/N Char 4A,6A, 1A)" + } + ] + }, + { + "width": 6, + "id": "fuse19-bits-6-11", + "name": "SPEED_GRADING", + "description": "Burned by tester program, for indicating IC core speed. (Hot burn may not be used).", + "values": [ + { + "name": "SPEED_2300MHZ", + "value": 0, + "description": "2300 MHz, P/N Code 23" + }, + { + "name": "SPEED_2200MHZ", + "value": 1, + "description": "2200 MHz, P/N Code 22" + }, + { + "name": "SPEED_2100MHZ", + "value": 2, + "description": "2100 MHz, P/N Code 21" + }, + { + "name": "SPEED_2000MHZ", + "value": 3, + "description": "2000 MHz, P/N Code 20" + }, + { + "name": "SPEED_1900MHZ", + "value": 4, + "description": "1900 MHz, P/N Code 19" + }, + { + "name": "SPEED_1800MHZ", + "value": 5, + "description": "1800 MHz, P/N Code 18" + }, + { + "name": "SPEED_1700MHZ", + "value": 6, + "description": "1700 MHz, P/N Code 17" + }, + { + "name": "SPEED_1600MHZ", + "value": 7, + "description": "1600 MHz, P/N Code 16" + }, + { + "name": "SPEED_1500MHZ", + "value": 8, + "description": "1500 MHz, P/N Code 15" + }, + { + "name": "SPEED_1400MHZ", + "value": 9, + "description": "1400 MHz, P/N Code 14" + }, + { + "name": "SPEED_1300MHZ", + "value": 10, + "description": "1300 MHz, P/N Code 13" + }, + { + "name": "SPEED_1200MHZ", + "value": 11, + "description": "1200 MHz, P/N Code 12" + }, + { + "name": "SPEED_1100MHZ", + "value": 12, + "description": "1100 MHz, P/N Code 11" + }, + { + "name": "SPEED_1000MHZ", + "value": 13, + "description": "1000 MHz, P/N Code 10" + }, + { + "name": "SPEED_900MHZ", + "value": 14, + "description": "900 MHz, P/N Code 09" + }, + { + "name": "SPEED_800MHZ", + "value": 15, + "description": "800 MHz, P/N Code 08" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x14-0x17", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved20", + "name": "Reserved 0x14", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0014", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved21", + "name": "Reserved 0x15", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0015", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 23 + } + ] + }, + { + "id": "Reserved22", + "name": "Reserved 0x16", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0016", + "is_reserved": true + }, + { + "id": "Reserved23", + "name": "Reserved 0x17", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0017", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 25 + } + ] + } + ] + }, + { + "group": { + "name": "BOOT_CFG", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse24", + "name": "BOOT_CFG0", + "description": "BOOT_CFG0", + "index_int": "0x0018", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse24-bits-0-3", + "name": "Boot_Mode_Fuses", + "description": "Boot Mode Fuses\nBootRom will retrieve boot mode from these fuses instead of Boot_Mode pins if\n(BT_FUSE_SEL=1 && Boot_Mode=Internal Fuses)\nOr\n(Force FORCE_BT_FROM_FUSE=1)\n", + "values": [ + { + "name": "A55_INTERNAL_FUSES", + "value": 0, + "description": "Cortex-A55 boot from internal fuses" + }, + { + "name": "A55_SERIAL_DOWNLOADER", + "value": 1, + "description": "Cortex-A55 boot via Serial Downloader USB 1" + }, + { + "name": "A55_USDHC1_EMMC", + "value": 2, + "description": "Cortex-A55 boot from USDHC1 8-bit eMMC 5.1" + }, + { + "name": "A55_USDHC2_SD", + "value": 3, + "description": "Cortex-A55 boot from USDHC2 4-bit SD3.0" + }, + { + "name": "A55_FLEXSPI_NOR", + "value": 4, + "description": "Cortex-A55 boot from FlexSPI Serial NOR" + }, + { + "name": "A55_FLEXSPI_NAND", + "value": 5, + "description": "Cortex-A55 boot from FlexSPI Serial NAND 2K page" + }, + { + "name": "M33_INTERNAL_FUSES", + "value": 8, + "description": "Cortex-M33 boot from internal fuses" + }, + { + "name": "M33_SERIAL_DOWNLOADER", + "value": 9, + "description": "Cortex-M33 boot via Serial Downloader USB 1" + }, + { + "name": "M33_USDHC1_EMMC", + "value": 10, + "description": "Cortex-M33 boot from USDHC1 8-bit eMMC 5.1" + }, + { + "name": "M33_USDHC2_SD", + "value": 11, + "description": "Cortex-M33 boot from USDHC2 4-bit SD3.0" + }, + { + "name": "M33_FLEXSPI_NOR", + "value": 12, + "description": "Cortex-M33 boot from FlexSPI Serial NOR" + }, + { + "name": "M33_FLEXSPI_NAND", + "value": 13, + "description": "Cortex-M33 boot from FlexSPI Serial NAND 2K page" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-4", + "name": "Override_FlexSPI_NOR_Boot_Selection", + "description": "Override FlexSPI NOR Boot Selection", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Do not override" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override" + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-5-6", + "name": "FlexSPI_NOR_Boot_Override_Selection", + "description": "FlexSPI NOR Boot Override Selection", + "values": [ + { + "name": "FLEXSPI_HYPERFLASH", + "value": 0, + "description": "Flex SPI (Hyperflash 1.8V)" + }, + { + "name": "FLEXSPI_4B_READ", + "value": 1, + "description": "Flex SPI (Flash with 4B READ(0x13)default supported)" + }, + { + "name": "OCTAL_MICRON", + "value": 2, + "description": "Default Octal mode (Micron, Nice to have)" + }, + { + "name": "OCTAL_MXIC", + "value": 3, + "description": "Default Octal mode (Mxic, Nice to have)" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-7", + "name": "FlexSPI_NAND_4K_Page_Selection", + "description": "FlexSPI NAND 4K Page Selection", + "values": [ + { + "name": "DEFAULT_2K_PAGE", + "value": 0, + "description": "Not override the default selection (2K page)" + }, + { + "name": "OVERRIDE_4K_PAGE", + "value": 1, + "description": "Override, 4K page is selected" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-8", + "name": "uSDHC_Device_Type", + "description": "uSDHC Device Type", + "values": [ + { + "name": "EMMC", + "value": 0, + "description": "uSDHC_Device_Type: eMMC" + }, + { + "name": "SD", + "value": 1, + "description": "uSDHC_Device_Type: SD" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-9", + "name": "FLEXSPI_NOR_DATA_IOMUX_SION_EN", + "description": "FLEXSPI NOR DATA IOMUX SION EN", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "SION is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "SION is enabled" + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-10-11", + "name": "FLEXSPI_NOR_FCB_OFFSET", + "description": "FLEXSPI NOR FCB OFFSET", + "values": [ + { + "name": "OFFSET_400B", + "value": 0, + "description": "Select the offset of FlexSPI NOR FCB at 0x400B" + }, + { + "name": "OFFSET_600B", + "value": 1, + "description": "Select the offset of FlexSPI NOR FCB at 0x600B" + }, + { + "name": "OFFSET_800B", + "value": 2, + "description": "Select the offset of FlexSPI NOR FCB at 0x800B" + }, + { + "name": "OFFSET_A00B", + "value": 3, + "description": "Select the offset of FlexSPI NOR FCB at 0xA00B" + } + ] + }, + { + "width": 3, + "id": "fuse24-bits-12-14", + "name": "FLEXSPI_AUTOPROBE_FEQ_SEL", + "description": "FLEXSPI AUTOPROBE FEQ SEL", + "values": [ + { + "name": "FREQ_24MHZ", + "value": 0, + "description": "24MHz" + }, + { + "name": "FREQ_133MHZ", + "value": 1, + "description": "133 MHz" + }, + { + "name": "FREQ_166MHZ", + "value": 2, + "description": "166 MHz" + }, + { + "name": "FREQ_200MHZ", + "value": 3, + "description": "200 MHz" + }, + { + "name": "FREQ_80MHZ", + "value": 4, + "description": "80MHz" + }, + { + "name": "FREQ_100MHZ", + "value": 5, + "description": "100MHz" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-15", + "name": "FLEXSPI_FCB_COPY_FLAG", + "description": "FLEXSPI FCB COPY FLAG", + "values": [ + { + "name": "PORT_2", + "value": 0, + "description": "Port 2 (single boot mode)" + }, + { + "name": "PORT_3", + "value": 1, + "description": "Port 3 (single boot mode)" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-16", + "name": "SD_Loopback_Clock_Source_Sel", + "description": "SD Loopback clock Source Sel", + "deprecated_names": [ + "SD_Loopback_Clock_Source_Sel " + ], + "values": [ + { + "name": "THROUGH_SD_PAD", + "value": 0, + "description": "Through SD pad" + }, + { + "name": "DIRECT", + "value": 1, + "description": "Direct" + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-17-18", + "name": "SD_Speed_Selection", + "description": "SD Speed Selection", + "values": [ + { + "name": "NORMAL_SDR12", + "value": 0, + "description": "Normal/SDR12" + }, + { + "name": "HIGH_SDR25", + "value": 1, + "description": "High/SDR25" + }, + { + "name": "SDR50", + "value": 2, + "description": "SDR50" + }, + { + "name": "SDR104", + "value": 3, + "description": "SDR104" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-19", + "name": "eMMC_Speed_Selection", + "description": "eMMC Speed Selection", + "values": [ + { + "name": "NORMAL_SPEED", + "value": 0, + "description": "Normal Speed" + }, + { + "name": "HIGH_SPEED", + "value": 1, + "description": "High Speed" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-20", + "name": "eMMC_fast_boot", + "description": "eMMC fast boot", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-21", + "name": "RSVD_BOOT_CFG0_21", + "description": "BOOT_CFG0" + }, + { + "width": 1, + "id": "fuse24-bit-22", + "name": "eMMC_voltage_selection", + "description": "eMMC Voltage selection", + "values": [ + { + "name": "VOLTAGE_3V3", + "value": 0, + "description": "eMMC_voltage_selection: 3.3v" + }, + { + "name": "VOLTAGE_1V8", + "value": 1, + "description": "eMMC_voltage_selection: 1.8v" + } + ] + }, + { + "width": 5, + "id": "fuse24-bits-23-27", + "name": "FlexSPI NOR Reset Pin selections", + "description": "FlexDPI NOR Reset Pin selections", + "values": [ + { + "name": "GPIO_PIN_0", + "value": 0, + "description": "GPIO[x].0" + }, + { + "name": "GPIO_PIN_1", + "value": 1, + "description": "GPIO[x].1" + }, + { + "name": "GPIO_PIN_2", + "value": 2, + "description": "GPIO[x].2" + }, + { + "name": "GPIO_PIN_3", + "value": 3, + "description": "GPIO[x].3" + }, + { + "name": "GPIO_PIN_4", + "value": 4, + "description": "GPIO[x].4" + }, + { + "name": "GPIO_PIN_5", + "value": 5, + "description": "GPIO[x].5" + }, + { + "name": "GPIO_PIN_6", + "value": 6, + "description": "GPIO[x].6" + }, + { + "name": "GPIO_PIN_7", + "value": 7, + "description": "GPIO[x].7" + }, + { + "name": "GPIO_PIN_8", + "value": 8, + "description": "GPIO[x].8" + }, + { + "name": "GPIO_PIN_9", + "value": 9, + "description": "GPIO[x].9" + }, + { + "name": "GPIO_PIN_10", + "value": 10, + "description": "GPIO[x].10" + }, + { + "name": "GPIO_PIN_11", + "value": 11, + "description": "GPIO[x].11" + }, + { + "name": "GPIO_PIN_12", + "value": 12, + "description": "GPIO[x].12" + }, + { + "name": "GPIO_PIN_13", + "value": 13, + "description": "GPIO[x].13" + }, + { + "name": "GPIO_PIN_14", + "value": 14, + "description": "GPIO[x].14" + }, + { + "name": "GPIO_PIN_15", + "value": 15, + "description": "GPIO[x].15" + }, + { + "name": "GPIO_PIN_16", + "value": 16, + "description": "GPIO[x].16" + }, + { + "name": "GPIO_PIN_17", + "value": 17, + "description": "GPIO[x].17" + }, + { + "name": "GPIO_PIN_18", + "value": 18, + "description": "GPIO[x].18" + }, + { + "name": "GPIO_PIN_19", + "value": 19, + "description": "GPIO[x].19" + }, + { + "name": "GPIO_PIN_20", + "value": 20, + "description": "GPIO[x].20" + }, + { + "name": "GPIO_PIN_21", + "value": 21, + "description": "GPIO[x].21" + }, + { + "name": "GPIO_PIN_22", + "value": 22, + "description": "GPIO[x].22" + }, + { + "name": "GPIO_PIN_23", + "value": 23, + "description": "GPIO[x].23" + }, + { + "name": "GPIO_PIN_24", + "value": 24, + "description": "GPIO[x].24" + }, + { + "name": "GPIO_PIN_25", + "value": 25, + "description": "GPIO[x].25" + }, + { + "name": "GPIO_PIN_26", + "value": 26, + "description": "GPIO[x].26" + }, + { + "name": "GPIO_PIN_27", + "value": 27, + "description": "GPIO[x].27" + }, + { + "name": "GPIO_PIN_28", + "value": 28, + "description": "GPIO[x].28" + }, + { + "name": "GPIO_PIN_29", + "value": 29, + "description": "GPIO[x].29" + }, + { + "name": "GPIO_PIN_30", + "value": 30, + "description": "GPIO[x].30" + }, + { + "name": "GPIO_PIN_31", + "value": 31, + "description": "GPIO[x].31" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-28", + "name": "BT_FREQ_SEL", + "description": "BT FREQ SEL", + "values": [ + { + "name": "NORMAL_FREQ", + "value": 0, + "description": "Normal clock frequency" + }, + { + "name": "LOW_FREQ", + "value": 1, + "description": "Low clock frequency" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-29", + "name": "BT_FUSE_SEL", + "description": "BT FUSE SEL", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Boot fuses not programmed" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Boot fuses programmed yet" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-30", + "name": "Force_Boot_from_Fuse", + "description": "Force Boot from Fuse", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override Boot_Mode pins by boot mode fuses" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-31", + "name": "Force_Serial_Download", + "description": "Force Serial Download", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Normal boot mode selection applies" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override all other Boot_Mode & Boot Mode Fuses and enter Serial Download" + } + ] + } + ] + }, + { + "id": "fuse25", + "name": "BOOT_CFG1", + "description": "BOOT_CFG1", + "index_int": "0x0019", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse25-bit-0", + "name": "Fast_Boot_Acknowledge_Disable", + "description": "Fast Boot Acknowledge Disable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Boot Ack Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Boot Ack Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse25-bit-2", + "name": "uSDHC_Power_On_Polarity", + "description": "uSHDC Power On Polarity", + "values": [ + { + "name": "LOW", + "value": 0, + "description": "uSDHC_Power_On_Polarity: Low" + }, + { + "name": "HIGH", + "value": 1, + "description": "uSDHC_Power_On_Polarity: High" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-3", + "name": "uSDHC_Power_Cycle_Delay", + "description": "uSDHC Power Cycle Delay", + "values": [ + { + "name": "DELAY_5MS", + "value": 0, + "description": "uSDHC_Power_Cycle_Delay: 5 ms" + }, + { + "name": "DELAY_2_5MS", + "value": 1, + "description": "2.5 ms" + } + ] + }, + { + "width": 2, + "id": "fuse25-bits-4-5", + "name": "uSDHC_Power_Cycle_Interval", + "description": "uSDHC Power Cycle Interval", + "values": [ + { + "name": "INTERVAL_20MS", + "value": 0, + "description": "20 ms" + }, + { + "name": "INTERVAL_10MS", + "value": 1, + "description": "10 ms" + }, + { + "name": "INTERVAL_5MS", + "value": 2, + "description": "uSDHC_Power_Cycle_Interval: 5 ms" + }, + { + "name": "INTERVAL_2_5MS", + "value": 3, + "description": "2.5 ms" + } + ] + }, + { + "width": 2, + "id": "fuse25-bits-6-7", + "name": "SD_Calibration_Step", + "description": "SD Calibration Step", + "values": [ + { + "name": "DELAY_CELL_1", + "value": 0, + "description": "1 delay cell" + }, + { + "name": "DELAY_CELL_2", + "value": 1, + "description": "2 delay cell" + }, + { + "name": "DELAY_CELL_3", + "value": 2, + "description": "3 delay cell" + }, + { + "name": "DELAY_CELL_5", + "value": 3, + "description": "5 delay cell" + } + ] + }, + { + "width": 8, + "id": "fuse25-bits-8-15", + "name": "uSDHC_PAD_Settings_Low_bits", + "description": "uSDHC Pad Settings Low bits" + }, + { + "width": 4, + "id": "fuse25-bits-16-19", + "name": "uSDHC_PAD_Setting_High_bits", + "description": "uSDHC Pad Settings High bits", + "values": [ + { + "name": "SETTING_0", + "value": 0, + "description": "Override value 0 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_1", + "value": 1, + "description": "Override value 1 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_2", + "value": 2, + "description": "Override value 2 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_3", + "value": 3, + "description": "Override value 3 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_4", + "value": 4, + "description": "Override value 4 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_5", + "value": 5, + "description": "Override value 5 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_6", + "value": 6, + "description": "Override value 6 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_7", + "value": 7, + "description": "Override value 7 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_8", + "value": 8, + "description": "Override value 8 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_9", + "value": 9, + "description": "Override value 9 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_10", + "value": 10, + "description": "Override value 10 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_11", + "value": 11, + "description": "Override value 11 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_12", + "value": 12, + "description": "Override value 12 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_13", + "value": 13, + "description": "Override value 13 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_14", + "value": 14, + "description": "Override value 14 for uSDHC pad settings (High bits)" + }, + { + "name": "SETTING_15", + "value": 15, + "description": "Override value 15 for uSDHC pad settings (High bits)" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-20", + "name": "Power_Cycle_Enable", + "description": "Power Cycle Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "No power cycle" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-21", + "name": "uSDHC_Override_Pad_Settings", + "description": "uSDHC Override Pad Settings\n(using PAD_SETTINGS value)" + }, + { + "width": 1, + "id": "fuse25-bit-22", + "name": "uSDHC_DLL_Enable", + "description": "uSDHC DLL EnableEnable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable DLL for SD/eMMC" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enable DLL for SD/eMMC" + } + ] + }, + { + "width": 1 + }, + { + "width": 7, + "id": "fuse25-bits-24-30", + "name": "MMC_DLL_DLY", + "description": "MMC DLL DLY", + "values": [ + { + "name": "DLY_TICKS_0", + "value": 0, + "description": "Delay target for uSDHC DLL - 0 delay ticks" + }, + { + "name": "DLY_TICKS_1", + "value": 1, + "description": "Delay target for uSDHC DLL - 1 delay tick" + }, + { + "name": "DLY_TICKS_2", + "value": 2, + "description": "Delay target for uSDHC DLL - 2 delay ticks" + }, + { + "name": "DLY_TICKS_3", + "value": 3, + "description": "Delay target for uSDHC DLL - 3 delay ticks" + }, + { + "name": "DLY_TICKS_4", + "value": 4, + "description": "Delay target for uSDHC DLL - 4 delay ticks" + }, + { + "name": "DLY_TICKS_5", + "value": 5, + "description": "Delay target for uSDHC DLL - 5 delay ticks" + }, + { + "name": "DLY_TICKS_6", + "value": 6, + "description": "Delay target for uSDHC DLL - 6 delay ticks" + }, + { + "name": "DLY_TICKS_7", + "value": 7, + "description": "Delay target for uSDHC DLL - 7 delay ticks" + }, + { + "name": "DLY_TICKS_8", + "value": 8, + "description": "Delay target for uSDHC DLL - 8 delay ticks" + }, + { + "name": "DLY_TICKS_9", + "value": 9, + "description": "Delay target for uSDHC DLL - 9 delay ticks" + }, + { + "name": "DLY_TICKS_10", + "value": 10, + "description": "Delay target for uSDHC DLL - 10 delay ticks" + }, + { + "name": "DLY_TICKS_11", + "value": 11, + "description": "Delay target for uSDHC DLL - 11 delay ticks" + }, + { + "name": "DLY_TICKS_12", + "value": 12, + "description": "Delay target for uSDHC DLL - 12 delay ticks" + }, + { + "name": "DLY_TICKS_13", + "value": 13, + "description": "Delay target for uSDHC DLL - 13 delay ticks" + }, + { + "name": "DLY_TICKS_14", + "value": 14, + "description": "Delay target for uSDHC DLL - 14 delay ticks" + }, + { + "name": "DLY_TICKS_15", + "value": 15, + "description": "Delay target for uSDHC DLL - 15 delay ticks" + }, + { + "name": "DLY_TICKS_16", + "value": 16, + "description": "Delay target for uSDHC DLL - 16 delay ticks" + }, + { + "name": "DLY_TICKS_17", + "value": 17, + "description": "Delay target for uSDHC DLL - 17 delay ticks" + }, + { + "name": "DLY_TICKS_18", + "value": 18, + "description": "Delay target for uSDHC DLL - 18 delay ticks" + }, + { + "name": "DLY_TICKS_19", + "value": 19, + "description": "Delay target for uSDHC DLL - 19 delay ticks" + }, + { + "name": "DLY_TICKS_20", + "value": 20, + "description": "Delay target for uSDHC DLL - 20 delay ticks" + }, + { + "name": "DLY_TICKS_21", + "value": 21, + "description": "Delay target for uSDHC DLL - 21 delay ticks" + }, + { + "name": "DLY_TICKS_22", + "value": 22, + "description": "Delay target for uSDHC DLL - 22 delay ticks" + }, + { + "name": "DLY_TICKS_23", + "value": 23, + "description": "Delay target for uSDHC DLL - 23 delay ticks" + }, + { + "name": "DLY_TICKS_24", + "value": 24, + "description": "Delay target for uSDHC DLL - 24 delay ticks" + }, + { + "name": "DLY_TICKS_25", + "value": 25, + "description": "Delay target for uSDHC DLL - 25 delay ticks" + }, + { + "name": "DLY_TICKS_26", + "value": 26, + "description": "Delay target for uSDHC DLL - 26 delay ticks" + }, + { + "name": "DLY_TICKS_27", + "value": 27, + "description": "Delay target for uSDHC DLL - 27 delay ticks" + }, + { + "name": "DLY_TICKS_28", + "value": 28, + "description": "Delay target for uSDHC DLL - 28 delay ticks" + }, + { + "name": "DLY_TICKS_29", + "value": 29, + "description": "Delay target for uSDHC DLL - 29 delay ticks" + }, + { + "name": "DLY_TICKS_30", + "value": 30, + "description": "Delay target for uSDHC DLL - 30 delay ticks" + }, + { + "name": "DLY_TICKS_31", + "value": 31, + "description": "Delay target for uSDHC DLL - 31 delay ticks" + }, + { + "name": "DLY_TICKS_32", + "value": 32, + "description": "Delay target for uSDHC DLL - 32 delay ticks" + }, + { + "name": "DLY_TICKS_33", + "value": 33, + "description": "Delay target for uSDHC DLL - 33 delay ticks" + }, + { + "name": "DLY_TICKS_34", + "value": 34, + "description": "Delay target for uSDHC DLL - 34 delay ticks" + }, + { + "name": "DLY_TICKS_35", + "value": 35, + "description": "Delay target for uSDHC DLL - 35 delay ticks" + }, + { + "name": "DLY_TICKS_36", + "value": 36, + "description": "Delay target for uSDHC DLL - 36 delay ticks" + }, + { + "name": "DLY_TICKS_37", + "value": 37, + "description": "Delay target for uSDHC DLL - 37 delay ticks" + }, + { + "name": "DLY_TICKS_38", + "value": 38, + "description": "Delay target for uSDHC DLL - 38 delay ticks" + }, + { + "name": "DLY_TICKS_39", + "value": 39, + "description": "Delay target for uSDHC DLL - 39 delay ticks" + }, + { + "name": "DLY_TICKS_40", + "value": 40, + "description": "Delay target for uSDHC DLL - 40 delay ticks" + }, + { + "name": "DLY_TICKS_41", + "value": 41, + "description": "Delay target for uSDHC DLL - 41 delay ticks" + }, + { + "name": "DLY_TICKS_42", + "value": 42, + "description": "Delay target for uSDHC DLL - 42 delay ticks" + }, + { + "name": "DLY_TICKS_43", + "value": 43, + "description": "Delay target for uSDHC DLL - 43 delay ticks" + }, + { + "name": "DLY_TICKS_44", + "value": 44, + "description": "Delay target for uSDHC DLL - 44 delay ticks" + }, + { + "name": "DLY_TICKS_45", + "value": 45, + "description": "Delay target for uSDHC DLL - 45 delay ticks" + }, + { + "name": "DLY_TICKS_46", + "value": 46, + "description": "Delay target for uSDHC DLL - 46 delay ticks" + }, + { + "name": "DLY_TICKS_47", + "value": 47, + "description": "Delay target for uSDHC DLL - 47 delay ticks" + }, + { + "name": "DLY_TICKS_48", + "value": 48, + "description": "Delay target for uSDHC DLL - 48 delay ticks" + }, + { + "name": "DLY_TICKS_49", + "value": 49, + "description": "Delay target for uSDHC DLL - 49 delay ticks" + }, + { + "name": "DLY_TICKS_50", + "value": 50, + "description": "Delay target for uSDHC DLL - 50 delay ticks" + }, + { + "name": "DLY_TICKS_51", + "value": 51, + "description": "Delay target for uSDHC DLL - 51 delay ticks" + }, + { + "name": "DLY_TICKS_52", + "value": 52, + "description": "Delay target for uSDHC DLL - 52 delay ticks" + }, + { + "name": "DLY_TICKS_53", + "value": 53, + "description": "Delay target for uSDHC DLL - 53 delay ticks" + }, + { + "name": "DLY_TICKS_54", + "value": 54, + "description": "Delay target for uSDHC DLL - 54 delay ticks" + }, + { + "name": "DLY_TICKS_55", + "value": 55, + "description": "Delay target for uSDHC DLL - 55 delay ticks" + }, + { + "name": "DLY_TICKS_56", + "value": 56, + "description": "Delay target for uSDHC DLL - 56 delay ticks" + }, + { + "name": "DLY_TICKS_57", + "value": 57, + "description": "Delay target for uSDHC DLL - 57 delay ticks" + }, + { + "name": "DLY_TICKS_58", + "value": 58, + "description": "Delay target for uSDHC DLL - 58 delay ticks" + }, + { + "name": "DLY_TICKS_59", + "value": 59, + "description": "Delay target for uSDHC DLL - 59 delay ticks" + }, + { + "name": "DLY_TICKS_60", + "value": 60, + "description": "Delay target for uSDHC DLL - 60 delay ticks" + }, + { + "name": "DLY_TICKS_61", + "value": 61, + "description": "Delay target for uSDHC DLL - 61 delay ticks" + }, + { + "name": "DLY_TICKS_62", + "value": 62, + "description": "Delay target for uSDHC DLL - 62 delay ticks" + }, + { + "name": "DLY_TICKS_63", + "value": 63, + "description": "Delay target for uSDHC DLL - 63 delay ticks" + }, + { + "name": "DLY_TICKS_64", + "value": 64, + "description": "Delay target for uSDHC DLL - 64 delay ticks" + }, + { + "name": "DLY_TICKS_65", + "value": 65, + "description": "Delay target for uSDHC DLL - 65 delay ticks" + }, + { + "name": "DLY_TICKS_66", + "value": 66, + "description": "Delay target for uSDHC DLL - 66 delay ticks" + }, + { + "name": "DLY_TICKS_67", + "value": 67, + "description": "Delay target for uSDHC DLL - 67 delay ticks" + }, + { + "name": "DLY_TICKS_68", + "value": 68, + "description": "Delay target for uSDHC DLL - 68 delay ticks" + }, + { + "name": "DLY_TICKS_69", + "value": 69, + "description": "Delay target for uSDHC DLL - 69 delay ticks" + }, + { + "name": "DLY_TICKS_70", + "value": 70, + "description": "Delay target for uSDHC DLL - 70 delay ticks" + }, + { + "name": "DLY_TICKS_71", + "value": 71, + "description": "Delay target for uSDHC DLL - 71 delay ticks" + }, + { + "name": "DLY_TICKS_72", + "value": 72, + "description": "Delay target for uSDHC DLL - 72 delay ticks" + }, + { + "name": "DLY_TICKS_73", + "value": 73, + "description": "Delay target for uSDHC DLL - 73 delay ticks" + }, + { + "name": "DLY_TICKS_74", + "value": 74, + "description": "Delay target for uSDHC DLL - 74 delay ticks" + }, + { + "name": "DLY_TICKS_75", + "value": 75, + "description": "Delay target for uSDHC DLL - 75 delay ticks" + }, + { + "name": "DLY_TICKS_76", + "value": 76, + "description": "Delay target for uSDHC DLL - 76 delay ticks" + }, + { + "name": "DLY_TICKS_77", + "value": 77, + "description": "Delay target for uSDHC DLL - 77 delay ticks" + }, + { + "name": "DLY_TICKS_78", + "value": 78, + "description": "Delay target for uSDHC DLL - 78 delay ticks" + }, + { + "name": "DLY_TICKS_79", + "value": 79, + "description": "Delay target for uSDHC DLL - 79 delay ticks" + }, + { + "name": "DLY_TICKS_80", + "value": 80, + "description": "Delay target for uSDHC DLL - 80 delay ticks" + }, + { + "name": "DLY_TICKS_81", + "value": 81, + "description": "Delay target for uSDHC DLL - 81 delay ticks" + }, + { + "name": "DLY_TICKS_82", + "value": 82, + "description": "Delay target for uSDHC DLL - 82 delay ticks" + }, + { + "name": "DLY_TICKS_83", + "value": 83, + "description": "Delay target for uSDHC DLL - 83 delay ticks" + }, + { + "name": "DLY_TICKS_84", + "value": 84, + "description": "Delay target for uSDHC DLL - 84 delay ticks" + }, + { + "name": "DLY_TICKS_85", + "value": 85, + "description": "Delay target for uSDHC DLL - 85 delay ticks" + }, + { + "name": "DLY_TICKS_86", + "value": 86, + "description": "Delay target for uSDHC DLL - 86 delay ticks" + }, + { + "name": "DLY_TICKS_87", + "value": 87, + "description": "Delay target for uSDHC DLL - 87 delay ticks" + }, + { + "name": "DLY_TICKS_88", + "value": 88, + "description": "Delay target for uSDHC DLL - 88 delay ticks" + }, + { + "name": "DLY_TICKS_89", + "value": 89, + "description": "Delay target for uSDHC DLL - 89 delay ticks" + }, + { + "name": "DLY_TICKS_90", + "value": 90, + "description": "Delay target for uSDHC DLL - 90 delay ticks" + }, + { + "name": "DLY_TICKS_91", + "value": 91, + "description": "Delay target for uSDHC DLL - 91 delay ticks" + }, + { + "name": "DLY_TICKS_92", + "value": 92, + "description": "Delay target for uSDHC DLL - 92 delay ticks" + }, + { + "name": "DLY_TICKS_93", + "value": 93, + "description": "Delay target for uSDHC DLL - 93 delay ticks" + }, + { + "name": "DLY_TICKS_94", + "value": 94, + "description": "Delay target for uSDHC DLL - 94 delay ticks" + }, + { + "name": "DLY_TICKS_95", + "value": 95, + "description": "Delay target for uSDHC DLL - 95 delay ticks" + }, + { + "name": "DLY_TICKS_96", + "value": 96, + "description": "Delay target for uSDHC DLL - 96 delay ticks" + }, + { + "name": "DLY_TICKS_97", + "value": 97, + "description": "Delay target for uSDHC DLL - 97 delay ticks" + }, + { + "name": "DLY_TICKS_98", + "value": 98, + "description": "Delay target for uSDHC DLL - 98 delay ticks" + }, + { + "name": "DLY_TICKS_99", + "value": 99, + "description": "Delay target for uSDHC DLL - 99 delay ticks" + }, + { + "name": "DLY_TICKS_100", + "value": 100, + "description": "Delay target for uSDHC DLL - 100 delay ticks" + }, + { + "name": "DLY_TICKS_101", + "value": 101, + "description": "Delay target for uSDHC DLL - 101 delay ticks" + }, + { + "name": "DLY_TICKS_102", + "value": 102, + "description": "Delay target for uSDHC DLL - 102 delay ticks" + }, + { + "name": "DLY_TICKS_103", + "value": 103, + "description": "Delay target for uSDHC DLL - 103 delay ticks" + }, + { + "name": "DLY_TICKS_104", + "value": 104, + "description": "Delay target for uSDHC DLL - 104 delay ticks" + }, + { + "name": "DLY_TICKS_105", + "value": 105, + "description": "Delay target for uSDHC DLL - 105 delay ticks" + }, + { + "name": "DLY_TICKS_106", + "value": 106, + "description": "Delay target for uSDHC DLL - 106 delay ticks" + }, + { + "name": "DLY_TICKS_107", + "value": 107, + "description": "Delay target for uSDHC DLL - 107 delay ticks" + }, + { + "name": "DLY_TICKS_108", + "value": 108, + "description": "Delay target for uSDHC DLL - 108 delay ticks" + }, + { + "name": "DLY_TICKS_109", + "value": 109, + "description": "Delay target for uSDHC DLL - 109 delay ticks" + }, + { + "name": "DLY_TICKS_110", + "value": 110, + "description": "Delay target for uSDHC DLL - 110 delay ticks" + }, + { + "name": "DLY_TICKS_111", + "value": 111, + "description": "Delay target for uSDHC DLL - 111 delay ticks" + }, + { + "name": "DLY_TICKS_112", + "value": 112, + "description": "Delay target for uSDHC DLL - 112 delay ticks" + }, + { + "name": "DLY_TICKS_113", + "value": 113, + "description": "Delay target for uSDHC DLL - 113 delay ticks" + }, + { + "name": "DLY_TICKS_114", + "value": 114, + "description": "Delay target for uSDHC DLL - 114 delay ticks" + }, + { + "name": "DLY_TICKS_115", + "value": 115, + "description": "Delay target for uSDHC DLL - 115 delay ticks" + }, + { + "name": "DLY_TICKS_116", + "value": 116, + "description": "Delay target for uSDHC DLL - 116 delay ticks" + }, + { + "name": "DLY_TICKS_117", + "value": 117, + "description": "Delay target for uSDHC DLL - 117 delay ticks" + }, + { + "name": "DLY_TICKS_118", + "value": 118, + "description": "Delay target for uSDHC DLL - 118 delay ticks" + }, + { + "name": "DLY_TICKS_119", + "value": 119, + "description": "Delay target for uSDHC DLL - 119 delay ticks" + }, + { + "name": "DLY_TICKS_120", + "value": 120, + "description": "Delay target for uSDHC DLL - 120 delay ticks" + }, + { + "name": "DLY_TICKS_121", + "value": 121, + "description": "Delay target for uSDHC DLL - 121 delay ticks" + }, + { + "name": "DLY_TICKS_122", + "value": 122, + "description": "Delay target for uSDHC DLL - 122 delay ticks" + }, + { + "name": "DLY_TICKS_123", + "value": 123, + "description": "Delay target for uSDHC DLL - 123 delay ticks" + }, + { + "name": "DLY_TICKS_124", + "value": 124, + "description": "Delay target for uSDHC DLL - 124 delay ticks" + }, + { + "name": "DLY_TICKS_125", + "value": 125, + "description": "Delay target for uSDHC DLL - 125 delay ticks" + }, + { + "name": "DLY_TICKS_126", + "value": 126, + "description": "Delay target for uSDHC DLL - 126 delay ticks" + }, + { + "name": "DLY_TICKS_127", + "value": 127, + "description": "Delay target for uSDHC DLL - 127 delay ticks" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-31", + "name": "uSDHC_DLL_Select", + "description": "uSDHC DLL Select", + "values": [ + { + "name": "SLAVE_MODE", + "value": 0, + "description": "DLL Slave Mode" + }, + { + "name": "OVERRIDE_MODE", + "value": 1, + "description": "DLL Override Mode" + } + ] + } + ] + }, + { + "id": "fuse26", + "name": "BOOT_CFG2", + "description": "BOOT_CFG2", + "index_int": "0x001A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse26-bits-0-1", + "name": "FlexSPI_NAND_Column_Address_Width", + "description": "FlexSPI NAND Column Address Width", + "values": [ + { + "name": "WIDTH_12_BITS", + "value": 0, + "description": "12 bit column address width" + }, + { + "name": "WIDTH_13_BITS", + "value": 1, + "description": "13 bit column address width" + }, + { + "name": "WIDTH_14_BITS", + "value": 2, + "description": "14 bit column address width" + }, + { + "name": "WIDTH_15_BITS", + "value": 3, + "description": "15 bit column address width" + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-2-3", + "name": "FlexSPI_NAND_CS_Interval", + "description": "FlexSPI NAND CS Interval", + "values": [ + { + "name": "INTERVAL_100NS", + "value": 0, + "description": "100 ns" + }, + { + "name": "INTERVAL_200NS", + "value": 1, + "description": "200 ns" + }, + { + "name": "INTERVAL_400NS", + "value": 2, + "description": "400 ns" + }, + { + "name": "INTERVAL_50NS", + "value": 3, + "description": "50 ns" + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-4-5", + "name": "FlexSPI_NAND_Search_Count", + "description": "FlexSPI NAND Search Count", + "values": [ + { + "name": "COUNT_2", + "value": 0, + "description": "FlexSPI_NAND_Search_Count: 2" + }, + { + "name": "COUNT_4", + "value": 2, + "description": "FlexSPI_NAND_Search_Count: 4" + }, + { + "name": "COUNT_8", + "value": 3, + "description": "FlexSPI_NAND_Search_Count: 8" + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-6-7", + "name": "FlexSPI_NAND_Search_Stride", + "description": "FlexSPI NAND Search Stride", + "values": [ + { + "name": "PAGES_64", + "value": 0, + "description": "64 pages" + }, + { + "name": "PAGES_128", + "value": 1, + "description": "128 pages" + }, + { + "name": "PAGES_256", + "value": 2, + "description": "256 pages" + }, + { + "name": "PAGES_32", + "value": 3, + "description": "32 pages" + } + ] + }, + { + "width": 8, + "id": "fuse26-bits-8-15", + "name": "FlexSPI_DLL_Value", + "description": "FlexSPI DLL Value", + "values": [ + { + "name": "DLL_DELAY_MIN", + "value": 0, + "description": "The delay line value only for HyperFlash - minimum delay (0)" + }, + { + "name": "DLL_DELAY_1", + "value": 1, + "description": "The delay line value only for HyperFlash - delay value 1" + }, + { + "name": "DLL_DELAY_2", + "value": 2, + "description": "The delay line value only for HyperFlash - delay value 2" + }, + { + "name": "DLL_DELAY_3", + "value": 3, + "description": "The delay line value only for HyperFlash - delay value 3" + }, + { + "name": "DLL_DELAY_4", + "value": 4, + "description": "The delay line value only for HyperFlash - delay value 4" + }, + { + "name": "DLL_DELAY_5", + "value": 5, + "description": "The delay line value only for HyperFlash - delay value 5" + }, + { + "name": "DLL_DELAY_6", + "value": 6, + "description": "The delay line value only for HyperFlash - delay value 6" + }, + { + "name": "DLL_DELAY_7", + "value": 7, + "description": "The delay line value only for HyperFlash - delay value 7" + }, + { + "name": "DLL_DELAY_8", + "value": 8, + "description": "The delay line value only for HyperFlash - delay value 8" + }, + { + "name": "DLL_DELAY_9", + "value": 9, + "description": "The delay line value only for HyperFlash - delay value 9" + }, + { + "name": "DLL_DELAY_10", + "value": 10, + "description": "The delay line value only for HyperFlash - delay value 10" + }, + { + "name": "DLL_DELAY_11", + "value": 11, + "description": "The delay line value only for HyperFlash - delay value 11" + }, + { + "name": "DLL_DELAY_12", + "value": 12, + "description": "The delay line value only for HyperFlash - delay value 12" + }, + { + "name": "DLL_DELAY_13", + "value": 13, + "description": "The delay line value only for HyperFlash - delay value 13" + }, + { + "name": "DLL_DELAY_14", + "value": 14, + "description": "The delay line value only for HyperFlash - delay value 14" + }, + { + "name": "DLL_DELAY_15", + "value": 15, + "description": "The delay line value only for HyperFlash - delay value 15" + }, + { + "name": "DLL_DELAY_16", + "value": 16, + "description": "The delay line value only for HyperFlash - delay value 16" + }, + { + "name": "DLL_DELAY_17", + "value": 17, + "description": "The delay line value only for HyperFlash - delay value 17" + }, + { + "name": "DLL_DELAY_18", + "value": 18, + "description": "The delay line value only for HyperFlash - delay value 18" + }, + { + "name": "DLL_DELAY_19", + "value": 19, + "description": "The delay line value only for HyperFlash - delay value 19" + }, + { + "name": "DLL_DELAY_20", + "value": 20, + "description": "The delay line value only for HyperFlash - delay value 20" + }, + { + "name": "DLL_DELAY_21", + "value": 21, + "description": "The delay line value only for HyperFlash - delay value 21" + }, + { + "name": "DLL_DELAY_22", + "value": 22, + "description": "The delay line value only for HyperFlash - delay value 22" + }, + { + "name": "DLL_DELAY_23", + "value": 23, + "description": "The delay line value only for HyperFlash - delay value 23" + }, + { + "name": "DLL_DELAY_24", + "value": 24, + "description": "The delay line value only for HyperFlash - delay value 24" + }, + { + "name": "DLL_DELAY_25", + "value": 25, + "description": "The delay line value only for HyperFlash - delay value 25" + }, + { + "name": "DLL_DELAY_26", + "value": 26, + "description": "The delay line value only for HyperFlash - delay value 26" + }, + { + "name": "DLL_DELAY_27", + "value": 27, + "description": "The delay line value only for HyperFlash - delay value 27" + }, + { + "name": "DLL_DELAY_28", + "value": 28, + "description": "The delay line value only for HyperFlash - delay value 28" + }, + { + "name": "DLL_DELAY_29", + "value": 29, + "description": "The delay line value only for HyperFlash - delay value 29" + }, + { + "name": "DLL_DELAY_30", + "value": 30, + "description": "The delay line value only for HyperFlash - delay value 30" + }, + { + "name": "DLL_DELAY_31", + "value": 31, + "description": "The delay line value only for HyperFlash - delay value 31" + }, + { + "name": "DLL_DELAY_32", + "value": 32, + "description": "The delay line value only for HyperFlash - delay value 32" + }, + { + "name": "DLL_DELAY_33", + "value": 33, + "description": "The delay line value only for HyperFlash - delay value 33" + }, + { + "name": "DLL_DELAY_34", + "value": 34, + "description": "The delay line value only for HyperFlash - delay value 34" + }, + { + "name": "DLL_DELAY_35", + "value": 35, + "description": "The delay line value only for HyperFlash - delay value 35" + }, + { + "name": "DLL_DELAY_36", + "value": 36, + "description": "The delay line value only for HyperFlash - delay value 36" + }, + { + "name": "DLL_DELAY_37", + "value": 37, + "description": "The delay line value only for HyperFlash - delay value 37" + }, + { + "name": "DLL_DELAY_38", + "value": 38, + "description": "The delay line value only for HyperFlash - delay value 38" + }, + { + "name": "DLL_DELAY_39", + "value": 39, + "description": "The delay line value only for HyperFlash - delay value 39" + }, + { + "name": "DLL_DELAY_40", + "value": 40, + "description": "The delay line value only for HyperFlash - delay value 40" + }, + { + "name": "DLL_DELAY_41", + "value": 41, + "description": "The delay line value only for HyperFlash - delay value 41" + }, + { + "name": "DLL_DELAY_42", + "value": 42, + "description": "The delay line value only for HyperFlash - delay value 42" + }, + { + "name": "DLL_DELAY_43", + "value": 43, + "description": "The delay line value only for HyperFlash - delay value 43" + }, + { + "name": "DLL_DELAY_44", + "value": 44, + "description": "The delay line value only for HyperFlash - delay value 44" + }, + { + "name": "DLL_DELAY_45", + "value": 45, + "description": "The delay line value only for HyperFlash - delay value 45" + }, + { + "name": "DLL_DELAY_46", + "value": 46, + "description": "The delay line value only for HyperFlash - delay value 46" + }, + { + "name": "DLL_DELAY_47", + "value": 47, + "description": "The delay line value only for HyperFlash - delay value 47" + }, + { + "name": "DLL_DELAY_48", + "value": 48, + "description": "The delay line value only for HyperFlash - delay value 48" + }, + { + "name": "DLL_DELAY_49", + "value": 49, + "description": "The delay line value only for HyperFlash - delay value 49" + }, + { + "name": "DLL_DELAY_50", + "value": 50, + "description": "The delay line value only for HyperFlash - delay value 50" + }, + { + "name": "DLL_DELAY_51", + "value": 51, + "description": "The delay line value only for HyperFlash - delay value 51" + }, + { + "name": "DLL_DELAY_52", + "value": 52, + "description": "The delay line value only for HyperFlash - delay value 52" + }, + { + "name": "DLL_DELAY_53", + "value": 53, + "description": "The delay line value only for HyperFlash - delay value 53" + }, + { + "name": "DLL_DELAY_54", + "value": 54, + "description": "The delay line value only for HyperFlash - delay value 54" + }, + { + "name": "DLL_DELAY_55", + "value": 55, + "description": "The delay line value only for HyperFlash - delay value 55" + }, + { + "name": "DLL_DELAY_56", + "value": 56, + "description": "The delay line value only for HyperFlash - delay value 56" + }, + { + "name": "DLL_DELAY_57", + "value": 57, + "description": "The delay line value only for HyperFlash - delay value 57" + }, + { + "name": "DLL_DELAY_58", + "value": 58, + "description": "The delay line value only for HyperFlash - delay value 58" + }, + { + "name": "DLL_DELAY_59", + "value": 59, + "description": "The delay line value only for HyperFlash - delay value 59" + }, + { + "name": "DLL_DELAY_60", + "value": 60, + "description": "The delay line value only for HyperFlash - delay value 60" + }, + { + "name": "DLL_DELAY_61", + "value": 61, + "description": "The delay line value only for HyperFlash - delay value 61" + }, + { + "name": "DLL_DELAY_62", + "value": 62, + "description": "The delay line value only for HyperFlash - delay value 62" + }, + { + "name": "DLL_DELAY_63", + "value": 63, + "description": "The delay line value only for HyperFlash - delay value 63" + }, + { + "name": "DLL_DELAY_64", + "value": 64, + "description": "The delay line value only for HyperFlash - delay value 64" + }, + { + "name": "DLL_DELAY_65", + "value": 65, + "description": "The delay line value only for HyperFlash - delay value 65" + }, + { + "name": "DLL_DELAY_66", + "value": 66, + "description": "The delay line value only for HyperFlash - delay value 66" + }, + { + "name": "DLL_DELAY_67", + "value": 67, + "description": "The delay line value only for HyperFlash - delay value 67" + }, + { + "name": "DLL_DELAY_68", + "value": 68, + "description": "The delay line value only for HyperFlash - delay value 68" + }, + { + "name": "DLL_DELAY_69", + "value": 69, + "description": "The delay line value only for HyperFlash - delay value 69" + }, + { + "name": "DLL_DELAY_70", + "value": 70, + "description": "The delay line value only for HyperFlash - delay value 70" + }, + { + "name": "DLL_DELAY_71", + "value": 71, + "description": "The delay line value only for HyperFlash - delay value 71" + }, + { + "name": "DLL_DELAY_72", + "value": 72, + "description": "The delay line value only for HyperFlash - delay value 72" + }, + { + "name": "DLL_DELAY_73", + "value": 73, + "description": "The delay line value only for HyperFlash - delay value 73" + }, + { + "name": "DLL_DELAY_74", + "value": 74, + "description": "The delay line value only for HyperFlash - delay value 74" + }, + { + "name": "DLL_DELAY_75", + "value": 75, + "description": "The delay line value only for HyperFlash - delay value 75" + }, + { + "name": "DLL_DELAY_76", + "value": 76, + "description": "The delay line value only for HyperFlash - delay value 76" + }, + { + "name": "DLL_DELAY_77", + "value": 77, + "description": "The delay line value only for HyperFlash - delay value 77" + }, + { + "name": "DLL_DELAY_78", + "value": 78, + "description": "The delay line value only for HyperFlash - delay value 78" + }, + { + "name": "DLL_DELAY_79", + "value": 79, + "description": "The delay line value only for HyperFlash - delay value 79" + }, + { + "name": "DLL_DELAY_80", + "value": 80, + "description": "The delay line value only for HyperFlash - delay value 80" + }, + { + "name": "DLL_DELAY_81", + "value": 81, + "description": "The delay line value only for HyperFlash - delay value 81" + }, + { + "name": "DLL_DELAY_82", + "value": 82, + "description": "The delay line value only for HyperFlash - delay value 82" + }, + { + "name": "DLL_DELAY_83", + "value": 83, + "description": "The delay line value only for HyperFlash - delay value 83" + }, + { + "name": "DLL_DELAY_84", + "value": 84, + "description": "The delay line value only for HyperFlash - delay value 84" + }, + { + "name": "DLL_DELAY_85", + "value": 85, + "description": "The delay line value only for HyperFlash - delay value 85" + }, + { + "name": "DLL_DELAY_86", + "value": 86, + "description": "The delay line value only for HyperFlash - delay value 86" + }, + { + "name": "DLL_DELAY_87", + "value": 87, + "description": "The delay line value only for HyperFlash - delay value 87" + }, + { + "name": "DLL_DELAY_88", + "value": 88, + "description": "The delay line value only for HyperFlash - delay value 88" + }, + { + "name": "DLL_DELAY_89", + "value": 89, + "description": "The delay line value only for HyperFlash - delay value 89" + }, + { + "name": "DLL_DELAY_90", + "value": 90, + "description": "The delay line value only for HyperFlash - delay value 90" + }, + { + "name": "DLL_DELAY_91", + "value": 91, + "description": "The delay line value only for HyperFlash - delay value 91" + }, + { + "name": "DLL_DELAY_92", + "value": 92, + "description": "The delay line value only for HyperFlash - delay value 92" + }, + { + "name": "DLL_DELAY_93", + "value": 93, + "description": "The delay line value only for HyperFlash - delay value 93" + }, + { + "name": "DLL_DELAY_94", + "value": 94, + "description": "The delay line value only for HyperFlash - delay value 94" + }, + { + "name": "DLL_DELAY_95", + "value": 95, + "description": "The delay line value only for HyperFlash - delay value 95" + }, + { + "name": "DLL_DELAY_96", + "value": 96, + "description": "The delay line value only for HyperFlash - delay value 96" + }, + { + "name": "DLL_DELAY_97", + "value": 97, + "description": "The delay line value only for HyperFlash - delay value 97" + }, + { + "name": "DLL_DELAY_98", + "value": 98, + "description": "The delay line value only for HyperFlash - delay value 98" + }, + { + "name": "DLL_DELAY_99", + "value": 99, + "description": "The delay line value only for HyperFlash - delay value 99" + }, + { + "name": "DLL_DELAY_100", + "value": 100, + "description": "The delay line value only for HyperFlash - delay value 100" + }, + { + "name": "DLL_DELAY_101", + "value": 101, + "description": "The delay line value only for HyperFlash - delay value 101" + }, + { + "name": "DLL_DELAY_102", + "value": 102, + "description": "The delay line value only for HyperFlash - delay value 102" + }, + { + "name": "DLL_DELAY_103", + "value": 103, + "description": "The delay line value only for HyperFlash - delay value 103" + }, + { + "name": "DLL_DELAY_104", + "value": 104, + "description": "The delay line value only for HyperFlash - delay value 104" + }, + { + "name": "DLL_DELAY_105", + "value": 105, + "description": "The delay line value only for HyperFlash - delay value 105" + }, + { + "name": "DLL_DELAY_106", + "value": 106, + "description": "The delay line value only for HyperFlash - delay value 106" + }, + { + "name": "DLL_DELAY_107", + "value": 107, + "description": "The delay line value only for HyperFlash - delay value 107" + }, + { + "name": "DLL_DELAY_108", + "value": 108, + "description": "The delay line value only for HyperFlash - delay value 108" + }, + { + "name": "DLL_DELAY_109", + "value": 109, + "description": "The delay line value only for HyperFlash - delay value 109" + }, + { + "name": "DLL_DELAY_110", + "value": 110, + "description": "The delay line value only for HyperFlash - delay value 110" + }, + { + "name": "DLL_DELAY_111", + "value": 111, + "description": "The delay line value only for HyperFlash - delay value 111" + }, + { + "name": "DLL_DELAY_112", + "value": 112, + "description": "The delay line value only for HyperFlash - delay value 112" + }, + { + "name": "DLL_DELAY_113", + "value": 113, + "description": "The delay line value only for HyperFlash - delay value 113" + }, + { + "name": "DLL_DELAY_114", + "value": 114, + "description": "The delay line value only for HyperFlash - delay value 114" + }, + { + "name": "DLL_DELAY_115", + "value": 115, + "description": "The delay line value only for HyperFlash - delay value 115" + }, + { + "name": "DLL_DELAY_116", + "value": 116, + "description": "The delay line value only for HyperFlash - delay value 116" + }, + { + "name": "DLL_DELAY_117", + "value": 117, + "description": "The delay line value only for HyperFlash - delay value 117" + }, + { + "name": "DLL_DELAY_118", + "value": 118, + "description": "The delay line value only for HyperFlash - delay value 118" + }, + { + "name": "DLL_DELAY_119", + "value": 119, + "description": "The delay line value only for HyperFlash - delay value 119" + }, + { + "name": "DLL_DELAY_120", + "value": 120, + "description": "The delay line value only for HyperFlash - delay value 120" + }, + { + "name": "DLL_DELAY_121", + "value": 121, + "description": "The delay line value only for HyperFlash - delay value 121" + }, + { + "name": "DLL_DELAY_122", + "value": 122, + "description": "The delay line value only for HyperFlash - delay value 122" + }, + { + "name": "DLL_DELAY_123", + "value": 123, + "description": "The delay line value only for HyperFlash - delay value 123" + }, + { + "name": "DLL_DELAY_124", + "value": 124, + "description": "The delay line value only for HyperFlash - delay value 124" + }, + { + "name": "DLL_DELAY_125", + "value": 125, + "description": "The delay line value only for HyperFlash - delay value 125" + }, + { + "name": "DLL_DELAY_126", + "value": 126, + "description": "The delay line value only for HyperFlash - delay value 126" + }, + { + "name": "DLL_DELAY_127", + "value": 127, + "description": "The delay line value only for HyperFlash - delay value 127" + }, + { + "name": "DLL_DELAY_128", + "value": 128, + "description": "The delay line value only for HyperFlash - delay value 128" + }, + { + "name": "DLL_DELAY_129", + "value": 129, + "description": "The delay line value only for HyperFlash - delay value 129" + }, + { + "name": "DLL_DELAY_130", + "value": 130, + "description": "The delay line value only for HyperFlash - delay value 130" + }, + { + "name": "DLL_DELAY_131", + "value": 131, + "description": "The delay line value only for HyperFlash - delay value 131" + }, + { + "name": "DLL_DELAY_132", + "value": 132, + "description": "The delay line value only for HyperFlash - delay value 132" + }, + { + "name": "DLL_DELAY_133", + "value": 133, + "description": "The delay line value only for HyperFlash - delay value 133" + }, + { + "name": "DLL_DELAY_134", + "value": 134, + "description": "The delay line value only for HyperFlash - delay value 134" + }, + { + "name": "DLL_DELAY_135", + "value": 135, + "description": "The delay line value only for HyperFlash - delay value 135" + }, + { + "name": "DLL_DELAY_136", + "value": 136, + "description": "The delay line value only for HyperFlash - delay value 136" + }, + { + "name": "DLL_DELAY_137", + "value": 137, + "description": "The delay line value only for HyperFlash - delay value 137" + }, + { + "name": "DLL_DELAY_138", + "value": 138, + "description": "The delay line value only for HyperFlash - delay value 138" + }, + { + "name": "DLL_DELAY_139", + "value": 139, + "description": "The delay line value only for HyperFlash - delay value 139" + }, + { + "name": "DLL_DELAY_140", + "value": 140, + "description": "The delay line value only for HyperFlash - delay value 140" + }, + { + "name": "DLL_DELAY_141", + "value": 141, + "description": "The delay line value only for HyperFlash - delay value 141" + }, + { + "name": "DLL_DELAY_142", + "value": 142, + "description": "The delay line value only for HyperFlash - delay value 142" + }, + { + "name": "DLL_DELAY_143", + "value": 143, + "description": "The delay line value only for HyperFlash - delay value 143" + }, + { + "name": "DLL_DELAY_144", + "value": 144, + "description": "The delay line value only for HyperFlash - delay value 144" + }, + { + "name": "DLL_DELAY_145", + "value": 145, + "description": "The delay line value only for HyperFlash - delay value 145" + }, + { + "name": "DLL_DELAY_146", + "value": 146, + "description": "The delay line value only for HyperFlash - delay value 146" + }, + { + "name": "DLL_DELAY_147", + "value": 147, + "description": "The delay line value only for HyperFlash - delay value 147" + }, + { + "name": "DLL_DELAY_148", + "value": 148, + "description": "Delay line value 148 for HyperFlash" + }, + { + "name": "DLL_DELAY_149", + "value": 149, + "description": "Delay line value 149 for HyperFlash" + }, + { + "name": "DLL_DELAY_150", + "value": 150, + "description": "Delay line value 150 for HyperFlash" + }, + { + "name": "DLL_DELAY_151", + "value": 151, + "description": "Delay line value 151 for HyperFlash" + }, + { + "name": "DLL_DELAY_152", + "value": 152, + "description": "Delay line value 152 for HyperFlash" + }, + { + "name": "DLL_DELAY_153", + "value": 153, + "description": "Delay line value 153 for HyperFlash" + }, + { + "name": "DLL_DELAY_154", + "value": 154, + "description": "Delay line value 154 for HyperFlash" + }, + { + "name": "DLL_DELAY_155", + "value": 155, + "description": "Delay line value 155 for HyperFlash" + }, + { + "name": "DLL_DELAY_156", + "value": 156, + "description": "Delay line value 156 for HyperFlash" + }, + { + "name": "DLL_DELAY_157", + "value": 157, + "description": "Delay line value 157 for HyperFlash" + }, + { + "name": "DLL_DELAY_158", + "value": 158, + "description": "Delay line value 158 for HyperFlash" + }, + { + "name": "DLL_DELAY_159", + "value": 159, + "description": "Delay line value 159 for HyperFlash" + }, + { + "name": "DLL_DELAY_160", + "value": 160, + "description": "Delay line value 160 for HyperFlash" + }, + { + "name": "DLL_DELAY_161", + "value": 161, + "description": "Delay line value 161 for HyperFlash" + }, + { + "name": "DLL_DELAY_162", + "value": 162, + "description": "Delay line value 162 for HyperFlash" + }, + { + "name": "DLL_DELAY_163", + "value": 163, + "description": "Delay line value 163 for HyperFlash" + }, + { + "name": "DLL_DELAY_164", + "value": 164, + "description": "Delay line value 164 for HyperFlash" + }, + { + "name": "DLL_DELAY_165", + "value": 165, + "description": "Delay line value 165 for HyperFlash" + }, + { + "name": "DLL_DELAY_166", + "value": 166, + "description": "Delay line value 166" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-16", + "name": "SPI_Clock_Data_Phase_Control", + "description": "SPI Clock Data Phase Control ", + "values": [ + { + "name": "TX_FALL_RX_RISE", + "value": 0, + "description": "Tx on falling, Rx on rising" + }, + { + "name": "TX_RISE_RX_FALL", + "value": 1, + "description": "Tx on rising, Rx on falling" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-17", + "name": "SPI_SCLK_Active", + "description": "SPI SCLK Active", + "values": [ + { + "name": "ACTIVE_HIGH", + "value": 0, + "description": "Active high" + }, + { + "name": "ACTIVE_LOW", + "value": 1, + "description": "Active low" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-18", + "name": "SPI_SS_Active", + "description": "SPI SS Active", + "values": [ + { + "name": "ACTIVE_LOW", + "value": 0, + "description": "Active low" + }, + { + "name": "ACTIVE_HIGH", + "value": 1, + "description": "Active high" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-19", + "name": "Recovery_SPI_Addressing", + "description": "Recovery SPI Addressing", + "values": [ + { + "name": "ADDRESSING_3BYTE", + "value": 0, + "description": "3-bytes (24-bit)" + }, + { + "name": "ADDRESSING_2BYTE", + "value": 1, + "description": "2-bytes (16-bit)" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-20", + "name": "FLEXSPI_NOR_AUTO_PROBE_EN", + "description": "FlexSPI NOR auto probe enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Auto probe is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Auto probe is enabled" + } + ] + }, + { + "width": 3, + "id": "fuse26-bits-21-23", + "name": "FlexSPI_NAND_Busy_Bit_Offset_Override", + "description": "FlexSPI NAND Busy Bit Offset Override ", + "values": [ + { + "name": "BIT_OFFSET_0", + "value": 0, + "description": "Busy bit at offset 0 in 8-bit register" + }, + { + "name": "BIT_OFFSET_1", + "value": 1, + "description": "Busy bit at offset 1 in 8-bit register" + }, + { + "name": "BIT_OFFSET_2", + "value": 2, + "description": "Busy bit at offset 2 in 8-bit register" + }, + { + "name": "BIT_OFFSET_3", + "value": 3, + "description": "Busy bit at offset 3 in 8-bit register" + }, + { + "name": "BIT_OFFSET_4", + "value": 4, + "description": "Busy bit at offset 4 in 8-bit register" + }, + { + "name": "BIT_OFFSET_5", + "value": 5, + "description": "Busy bit at offset 5 in 8-bit register" + }, + { + "name": "BIT_OFFSET_6", + "value": 6, + "description": "Busy bit at offset 6 in 8-bit register" + }, + { + "name": "BIT_OFFSET_7", + "value": 7, + "description": "Busy bit at offset 7 in 8-bit register" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-24", + "name": "Recovery_CS_Select", + "description": "Recovery CS Select", + "values": [ + { + "name": "CS0", + "value": 0, + "description": "Recovery_CS_Select: CS0" + }, + { + "name": "CS1", + "value": 1, + "description": "Recovery_CS_Select: CS1" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-25", + "name": "RSVD_BOOT_CFG2_25", + "description": "BOOT_CFG2" + }, + { + "width": 2, + "id": "fuse26-bits-26-27", + "name": "Recovery_Port_Select", + "description": "Recovery Port Select", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + }, + { + "name": "LPSPI3", + "value": 2, + "description": "LPSPI3" + }, + { + "name": "LPSPI4", + "value": 3, + "description": "LPSPI4" + } + ] + }, + { + "width": 4, + "id": "fuse26-bits-28-31", + "name": "FLEXSPI_DUMMY_CYCLE_SEL", + "description": "FlexSPI Dummy Cycle Select", + "values": [ + { + "name": "CYCLES_0", + "value": 0, + "description": "0 cycle" + }, + { + "name": "CYCLES_1", + "value": 1, + "description": "1 cycle" + }, + { + "name": "CYCLES_2", + "value": 2, + "description": "2 cycles" + }, + { + "name": "CYCLES_3", + "value": 3, + "description": "3 cycles" + }, + { + "name": "CYCLES_4", + "value": 4, + "description": "4 cycles" + }, + { + "name": "CYCLES_5", + "value": 5, + "description": "5 cycles" + }, + { + "name": "CYCLES_6", + "value": 6, + "description": "6 cycles" + }, + { + "name": "CYCLES_7", + "value": 7, + "description": "7 cycles" + }, + { + "name": "CYCLES_8", + "value": 8, + "description": "8 cycles" + }, + { + "name": "CYCLES_9", + "value": 9, + "description": "9 cycles" + }, + { + "name": "CYCLES_10", + "value": 10, + "description": "10 cycles" + }, + { + "name": "CYCLES_11", + "value": 11, + "description": "11 cycles" + }, + { + "name": "CYCLES_12", + "value": 12, + "description": "12 cycles" + }, + { + "name": "CYCLES_13", + "value": 13, + "description": "13 cycles" + }, + { + "name": "CYCLES_14", + "value": 14, + "description": "14 cycles" + }, + { + "name": "CYCLES_15", + "value": 15, + "description": "15 cycles" + } + ] + } + ] + }, + { + "id": "fuse27", + "name": "BOOT_CFG3", + "description": "BOOT_CFG3", + "index_int": "0x001B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 3, + "id": "fuse27-bits-0-2", + "name": "FlexSPI_NOR_Reset_Pin_selection", + "description": "FlexSPI NOR Reset Pin Selection", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "Not reset boot device" + }, + { + "name": "GPIO_PORT1", + "value": 1, + "description": "GPIO port1" + }, + { + "name": "GPIO_PORT2", + "value": 2, + "description": "GPIO port2" + }, + { + "name": "GPIO_PORT3", + "value": 3, + "description": "GPIO port3" + }, + { + "name": "GPIO_PORT4", + "value": 4, + "description": "GPIO port4" + } + ] + }, + { + "width": 2, + "id": "fuse27-bits-3-4", + "name": "FLEXSPI_NOR_AUTO_PROBE type", + "description": "FLEXSPI NOR AUTO PROBE type", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MXIC_OCTAL", + "value": 1, + "description": "MxicOctal" + }, + { + "name": "MICRON_OCTAL", + "value": 2, + "description": "MicronOctal" + }, + { + "name": "ADESTO_OCTAL", + "value": 3, + "description": "AdestoOctal" + } + ] + }, + { + "width": 27 + } + ] + }, + { + "id": "Reserved28", + "name": "Reserved 0x1C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001C", + "is_reserved": true + }, + { + "id": "Reserved29", + "name": "Reserved 0x1D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001D", + "is_reserved": true + }, + { + "id": "Reserved30", + "name": "Reserved 0x1E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001E", + "is_reserved": true + }, + { + "id": "Reserved31", + "name": "Reserved 0x1F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001F", + "is_reserved": true + }, + { + "id": "fuse32", + "name": "BOOT_CFG8", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x0020", + "bitfields": [ + { + "width": 8 + }, + { + "width": 8, + "id": "fuse32-bits-8-15", + "name": "Secondary_boot_offset", + "description": "Secondary boot offset", + "values": [ + { + "name": "OFFSET_4MB", + "value": 0, + "description": "Offset = 4 MB" + }, + { + "name": "OFFSET_2MB", + "value": 1, + "description": "Offset = 2 MB" + }, + { + "name": "OFFSET_1MB", + "value": 2, + "description": "Offset = 1 MB" + }, + { + "name": "OFFSET_8MB", + "value": 3, + "description": "Offset = 8 MB" + }, + { + "name": "OFFSET_16MB", + "value": 4, + "description": "Offset = 16 MB" + }, + { + "name": "OFFSET_32MB", + "value": 5, + "description": "Offset = 32 MB" + }, + { + "name": "OFFSET_64MB", + "value": 6, + "description": "Offset = 64 MB" + }, + { + "name": "OFFSET_128MB", + "value": 7, + "description": "Offset = 128 MB" + }, + { + "name": "OFFSET_256MB", + "value": 8, + "description": "Offset = 256 MB" + }, + { + "name": "OFFSET_512MB", + "value": 9, + "description": "Offset = 512 MB" + }, + { + "name": "EMMC_LAST_128MB", + "value": 254, + "description": "EMMC last 128 MB" + }, + { + "name": "EMMC_LAST_24KB", + "value": 255, + "description": "EMMC last 24KB" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-16", + "name": "A55_D_Cache_Disable", + "description": "CA55 D Cache Disable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-17", + "name": "M33_D_Cache_Disable", + "description": "CM33 D Cache Disable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Enabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-18", + "name": "USB2_SDP_Disable", + "description": "USB2 SDP Disable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Not disable" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-19", + "name": "Disable_A55_SPI_Recovery", + "description": "Disable CA55 SPI Recovery", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-20", + "name": "Disable_M33_SPI_Recovery", + "description": "Disable CM33 SPI Recovery", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-21", + "name": "USB1_SDP_Disable", + "description": "USB1 SDP Disable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Not disable" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-23", + "name": "M33_WDOG_Enable", + "description": "CM33 WDOG Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-24", + "name": "A55_I_Cache_Dis", + "description": "CA55 I Cache Dis", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Enable CA55 I-Cache during ROM Boot" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Disable CA55 I-Cache during ROM Boot" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-25", + "name": "M33_I_Cache_Dis", + "description": "CM33 I Cache Dis", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Enable CM33 I-Cache during ROM Boot" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Disable CM33 I-Cache during ROM Boot" + } + ] + }, + { + "width": 2, + "id": "fuse32-bits-26-27", + "name": "WDOG_Timeout_Select", + "description": "WDOG Timeout Select", + "values": [ + { + "name": "TIMEOUT_32S", + "value": 0, + "description": "WDOG_Timeout_Select: 32 s" + }, + { + "name": "TIMEOUT_16S", + "value": 1, + "description": "WDOG_Timeout_Select: 16 s" + }, + { + "name": "TIMEOUT_8S", + "value": 2, + "description": "WDOG_Timeout_Select: 8 s" + }, + { + "name": "TIMEOUT_4S", + "value": 3, + "description": "WDOG_Timeout_Select: 4 s" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-28", + "name": "A55_WDOG_Enable", + "description": "CA55 WDOG Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-29", + "name": "USB_HID_EP1_Out_Disable", + "description": "USB HID EP1 Out Disable", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "USB EP1 Transfer(EP1 Out enable)" + }, + { + "name": "DISABLED", + "value": 1, + "description": "USB EP0 Transfer(EP1 Out disable)" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-30", + "name": "PLL_LATE_EN", + "description": "PLL LATE EN", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Configure PLLs before installing ROM patch" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Configure PLLs after install ROM patch" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse33", + "name": "BOOT_CFG9", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x0021", + "bitfields": [ + { + "width": 4 + }, + { + "width": 1, + "id": "fuse33-bit-4", + "name": "A55 Secure WDOG Enable(non-ROM)", + "description": "CA55 Secure WDOG Enable (non-ROM)", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse33-bit-6", + "name": "M33 TZ WDOG Enable(non-ROM)", + "description": "CM33 TZ WDOG Enable (non-ROM)", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse33-bit-8", + "name": "CM33 RST Release ACK(non-ROM)", + "description": "CM33 RST Release ACK (non-ROM)", + "values": [ + { + "name": "NO_ACK", + "value": 0, + "description": "No Ack from ELE-AP to release CM33 Reset" + }, + { + "name": "ACK_RELEASE", + "value": 1, + "description": "Ack from ELE-AP to release CM33 Reset" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-9", + "name": "CA55 RST Release ACK(non-ROM)", + "description": "CA55 RST Release ACK (non-ROM)", + "values": [ + { + "name": "NO_ACK", + "value": 0, + "description": "No Ack from ELE-AP to release CM33 Reset" + }, + { + "name": "ACK_RELEASE", + "value": 1, + "description": "Ack from ELE-AP to release CM33 Reset" + } + ] + }, + { + "width": 14 + }, + { + "width": 1, + "id": "fuse33-bit-24", + "name": "ELE SRAM REN PWRDN(non-ROM)", + "description": "ELE-AP SRAM REN PWRDN (non-ROM)", + "values": [ + { + "name": "RETAINED_64K", + "value": 0, + "description": "64K retained" + }, + { + "name": "NOT_RETAINED", + "value": 1, + "description": "I/D-MEM not retained" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse34", + "name": "BOOT_CFG10", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x0022", + "reg_width": 16, + "bitfields": [ + { + "width": 2, + "id": "fuse34-bits-0-1", + "name": "DAP_ACCESS_IRQ_STKYBIT_DISABLE", + "description": "Disable DAP Access IRQ sticky-bit qualification", + "values": [ + { + "name": "DIRECT_ACCESS", + "value": 0, + "description": "Disable DAP Access qualified by IRQ and sticky-bit logic. Direct DAP Access." + }, + { + "name": "QUALIFIED_ACCESS", + "value": 2, + "description": "Enable DAP Access qualified by IRQ and sticky-bit logic." + } + ] + }, + { + "width": 1, + "id": "fuse34-bit-2", + "name": "SDP_Disable", + "description": "SDP Disable ", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 11 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x23-0x37", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved35", + "name": "Reserved 0x23", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0023", + "is_reserved": true + }, + { + "id": "Reserved36", + "name": "Reserved 0x24", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0024", + "is_reserved": true + }, + { + "id": "Reserved37", + "name": "Reserved 0x25", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0025", + "is_reserved": true + }, + { + "id": "Reserved38", + "name": "Reserved 0x26", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0026", + "is_reserved": true + }, + { + "id": "Reserved39", + "name": "Reserved 0x27", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0027", + "is_reserved": true + }, + { + "id": "Reserved40", + "name": "Reserved 0x28", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0028", + "is_reserved": true, + "bitfields": [ + { + "width": 24 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved41", + "name": "Reserved 0x29", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0029", + "is_reserved": true, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 12 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved42", + "name": "Reserved 0x2A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002A", + "is_reserved": true, + "bitfields": [ + { + "width": 12 + }, + { + "width": 2 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved43", + "name": "Reserved 0x2B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002B", + "is_reserved": true, + "bitfields": [ + { + "width": 12 + }, + { + "width": 12 + }, + { + "width": 8 + } + ] + }, + { + "id": "Reserved44", + "name": "Reserved 0x2C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002C", + "is_reserved": true, + "bitfields": [ + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 9 + } + ] + }, + { + "id": "Reserved45", + "name": "Reserved 0x2D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002D", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 6 + }, + { + "width": 6 + }, + { + "width": 4 + }, + { + "width": 7 + }, + { + "width": 6 + }, + { + "width": 2 + } + ] + }, + { + "id": "Reserved46", + "name": "Reserved 0x2E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002E", + "is_reserved": true, + "bitfields": [ + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 19 + } + ] + }, + { + "id": "Reserved47", + "name": "Reserved 0x2F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002F", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved48", + "name": "Reserved 0x30", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0030", + "is_reserved": true + }, + { + "id": "Reserved49", + "name": "Reserved 0x31", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0031", + "is_reserved": true + }, + { + "id": "Reserved50", + "name": "Reserved 0x32", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0032", + "is_reserved": true + }, + { + "id": "Reserved51", + "name": "Reserved 0x33", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0033", + "is_reserved": true + }, + { + "id": "Reserved52", + "name": "Reserved 0x34", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0034", + "is_reserved": true + }, + { + "id": "Reserved53", + "name": "Reserved 0x35", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0035", + "is_reserved": true + }, + { + "id": "Reserved54", + "name": "Reserved 0x36", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0036", + "is_reserved": true + }, + { + "id": "Reserved55", + "name": "Reserved 0x37", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0037", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "ELE_MISC_CTRL", + "description": "ELE miscellaneous configuration" + }, + "registers": [ + { + "id": "fuse56", + "name": "ELE_MISC_CTRL0", + "description": "OEM controlled Fuse.", + "index_int": "0x0038", + "bitfields": [ + { + "width": 4, + "id": "fuse56-bits-0-3", + "name": "SOC_SCOPE_PRIMARY_DBG_DISABLE", + "description": "Debug Disable for CM33 ", + "values": [ + { + "name": "ALL_DEBUG_ENABLED", + "value": 0, + "description": "All debug features enabled (spiden, sniden, dbgen, niden all enabled)" + }, + { + "name": "NIDEN_DISABLED", + "value": 1, + "description": "Non-invasive debug in non-secure state disabled" + }, + { + "name": "DBGEN_DISABLED", + "value": 2, + "description": "Invasive debug in non-secure state disabled" + }, + { + "name": "NIDEN_DBGEN_DISABLED", + "value": 3, + "description": "Non-invasive and invasive debug in non-secure state disabled" + }, + { + "name": "SNIDEN_DISABLED", + "value": 4, + "description": "Secure non-invasive debug disabled" + }, + { + "name": "SNIDEN_NIDEN_DISABLED", + "value": 5, + "description": "Secure non-invasive debug and non-secure non-invasive debug disabled" + }, + { + "name": "SNIDEN_DBGEN_DISABLED", + "value": 6, + "description": "Secure non-invasive debug and non-secure invasive debug disabled" + }, + { + "name": "SNIDEN_NIDEN_DBGEN_DIS", + "value": 7, + "description": "Secure non-invasive debug and all non-secure debug disabled" + }, + { + "name": "SPIDEN_DISABLED", + "value": 8, + "description": "Secure invasive debug disabled" + }, + { + "name": "SPIDEN_NIDEN_DISABLED", + "value": 9, + "description": "Secure invasive debug and non-secure non-invasive debug disabled" + }, + { + "name": "SPIDEN_DBGEN_DISABLED", + "value": 10, + "description": "Secure invasive debug and non-secure invasive debug disabled" + }, + { + "name": "SPIDEN_NIDEN_DBGEN_DIS", + "value": 11, + "description": "Secure invasive debug and all non-secure debug disabled" + }, + { + "name": "SECURE_DEBUG_DISABLED", + "value": 12, + "description": "All secure debug features disabled" + }, + { + "name": "SEC_SPIDEN_NS_NIDEN_DIS", + "value": 13, + "description": "Secure invasive debug and non-secure non-invasive debug disabled" + }, + { + "name": "SEC_SPIDEN_NS_DBGEN_DIS", + "value": 14, + "description": "Secure invasive debug and non-secure invasive debug disabled" + }, + { + "name": "ALL_DEBUG_DISABLED", + "value": 15, + "description": "All debug features disabled (spiden, sniden, dbgen, niden all disabled)" + } + ] + }, + { + "width": 4, + "id": "fuse56-bits-4-7", + "name": "SOC_SCOPE1_DBG_DISABLE", + "description": "SOC SCOPE1 DBG DISABLE[3:0]", + "values": [ + { + "name": "ALL_DISABLED", + "value": 0, + "description": "All debug features disabled - spiden, sniden, dbgen, niden all disabled" + }, + { + "name": "NIDEN_ENABLED", + "value": 1, + "description": "Non-invasive debug enabled, invasive debug disabled" + }, + { + "name": "DBGEN_ENABLED", + "value": 2, + "description": "AXI non-secure trace buffer dump enabled, others disabled" + }, + { + "name": "DBGEN_NIDEN_ENABLED", + "value": 3, + "description": "AXI non-secure trace and non-invasive debug enabled" + }, + { + "name": "SNIDEN_ENABLED", + "value": 4, + "description": "Secure non-invasive debug enabled, others disabled" + }, + { + "name": "SNIDEN_NIDEN_ENABLED", + "value": 5, + "description": "Secure and non-secure non-invasive debug enabled" + }, + { + "name": "SNIDEN_DBGEN_ENABLED", + "value": 6, + "description": "Secure non-invasive and AXI non-secure trace enabled" + }, + { + "name": "SNIDEN_DBGEN_NIDEN", + "value": 7, + "description": "Secure non-invasive, AXI non-secure trace, non-invasive debug enabled" + }, + { + "name": "SPIDEN_ENABLED", + "value": 8, + "description": "AXI secure trace buffer dump enabled, others disabled" + }, + { + "name": "SPIDEN_NIDEN_ENABLED", + "value": 9, + "description": "AXI secure trace and non-invasive debug enabled" + }, + { + "name": "SPIDEN_DBGEN_ENABLED", + "value": 10, + "description": "AXI secure and non-secure trace buffer dump enabled" + }, + { + "name": "SPIDEN_DBGEN_NIDEN", + "value": 11, + "description": "AXI secure/non-secure trace and non-invasive debug enabled" + }, + { + "name": "SPIDEN_SNIDEN_ENABLED", + "value": 12, + "description": "AXI secure trace and secure non-invasive debug enabled" + }, + { + "name": "SPIDEN_SNIDEN_NIDEN", + "value": 13, + "description": "AXI secure trace, secure and non-secure non-invasive debug enabled" + }, + { + "name": "SPIDEN_SNIDEN_DBGEN", + "value": 14, + "description": "AXI secure/non-secure trace and secure non-invasive debug enabled" + }, + { + "name": "ALL_ENABLED", + "value": 15, + "description": "All debug features enabled - spiden, sniden, dbgen, niden all enabled" + } + ] + }, + { + "width": 4 + }, + { + "width": 4, + "id": "fuse56-bits-12-15", + "name": "SOC_SCOPE3_DBG_DISABLE", + "description": "SOC SCOPE3 DBG DISABLE[3:0]", + "values": [ + { + "name": "ALL_ENABLED", + "value": 0, + "description": "All debug features enabled (spiden, sniden, dbgen, niden all enabled)" + }, + { + "name": "NIDEN_DISABLED", + "value": 1, + "description": "Non-invasive debug disabled, others enabled" + }, + { + "name": "DBGEN_DISABLED", + "value": 2, + "description": "Invasive debug disabled, others enabled" + }, + { + "name": "DBG_NIDEN_DISABLED", + "value": 3, + "description": "Both invasive and non-invasive debug disabled" + }, + { + "name": "SNIDEN_DISABLED", + "value": 4, + "description": "Secure non-invasive debug disabled, others enabled" + }, + { + "name": "SEC_NIDEN_DISABLED", + "value": 5, + "description": "Secure and non-invasive debug disabled" + }, + { + "name": "SEC_DBG_DISABLED", + "value": 6, + "description": "Secure invasive and invasive debug disabled" + }, + { + "name": "SEC_ALL_DISABLED", + "value": 7, + "description": "All secure and non-secure invasive debug disabled" + }, + { + "name": "SPIDEN_DISABLED", + "value": 8, + "description": "Secure invasive debug disabled, others enabled" + }, + { + "name": "SEC_NINV_DISABLED", + "value": 9, + "description": "Secure invasive and non-invasive debug disabled" + }, + { + "name": "SEC_INV_DISABLED", + "value": 10, + "description": "Secure and invasive debug disabled" + }, + { + "name": "INV_DEBUG_DISABLED", + "value": 11, + "description": "All invasive debug disabled" + }, + { + "name": "SECURE_DBG_DISABLED", + "value": 12, + "description": "All secure debug disabled" + }, + { + "name": "SECURE_NINV_DISABLED", + "value": 13, + "description": "Secure debug and non-invasive debug disabled" + }, + { + "name": "SECURE_INV_DISABLED", + "value": 14, + "description": "Secure debug and invasive debug disabled" + }, + { + "name": "ALL_DISABLED", + "value": 15, + "description": "All debug features disabled (spiden, sniden, dbgen, niden all disabled)" + } + ] + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse57", + "name": "ELE_MISC_CTRL1", + "description": "OEM controlled Fuse.", + "index_int": "0x0039", + "bitfields": [ + { + "width": 4, + "id": "fuse57-bits-0-3", + "name": "SOC_SCOPE4_DBG_DISABLE", + "description": "SOC SCOPE4 DBG DISABLE[3:0]", + "values": [ + { + "name": "ALL_ENABLED", + "value": 0, + "description": "All debug features enabled (spiden, sniden, dbgen, niden all enabled)" + }, + { + "name": "NIDEN_DISABLED", + "value": 1, + "description": "Non-invasive debug in non-secure state disabled" + }, + { + "name": "DBGEN_DISABLED", + "value": 2, + "description": "Invasive debug in non-secure state disabled" + }, + { + "name": "NIDEN_DBGEN_DISABLED", + "value": 3, + "description": "Non-invasive and invasive debug in non-secure state disabled" + }, + { + "name": "SNIDEN_DISABLED", + "value": 4, + "description": "Secure non-invasive debug disabled, others enabled" + }, + { + "name": "SNIDEN_NIDEN_DISABLED", + "value": 5, + "description": "Secure non-invasive debug and non-secure non-invasive debug disabled" + }, + { + "name": "SNIDEN_DBGEN_DISABLED", + "value": 6, + "description": "Secure non-invasive debug and non-secure invasive debug disabled" + }, + { + "name": "SNIDEN_NIDEN_DBG_DIS", + "value": 7, + "description": "Secure non-invasive, non-invasive, and invasive debug disabled" + }, + { + "name": "SPIDEN_DISABLED", + "value": 8, + "description": "Secure invasive debug disabled, others enabled" + }, + { + "name": "SPIDEN_NIDEN_DISABLED", + "value": 9, + "description": "Secure invasive debug and non-secure non-invasive debug disabled" + }, + { + "name": "SPIDEN_DBGEN_DISABLED", + "value": 10, + "description": "Secure invasive debug and non-secure invasive debug disabled" + }, + { + "name": "SPIDEN_NIDEN_DBG_DIS", + "value": 11, + "description": "Secure invasive, non-invasive, and invasive debug disabled" + }, + { + "name": "SPIDEN_SNIDEN_DISABLED", + "value": 12, + "description": "Secure invasive and secure non-invasive debug disabled" + }, + { + "name": "SECURE_DBG_NIDEN_DIS", + "value": 13, + "description": "All secure debug and non-secure non-invasive debug disabled" + }, + { + "name": "SECURE_DBG_DBGEN_DIS", + "value": 14, + "description": "All secure debug and non-secure invasive debug disabled" + }, + { + "name": "ALL_DEBUG_DISABLED", + "value": 15, + "description": "All debug features disabled (spiden, sniden, dbgen, niden all disabled)" + } + ] + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse57-bit-8", + "name": "SJC_DISABLE", + "description": "Hardware disablement of SJC. Disables JTAG debugger, including ability for boundary scan.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "SJC is enabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "SJC is disabled" + } + ] + }, + { + "width": 7 + }, + { + "width": 4 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse58", + "name": "ELE_MISC_CTRL2", + "description": "OEM controlled Fuse.", + "index_int": "0x003A", + "reg_width": 16, + "bitfields": [ + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse58-bits-6-7", + "name": "OEM_GDET_DISABLE", + "description": "OEM GDET DISABLE", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Disable ELE-AP Glitch detector. This bit should only be set if security is not of concern. This bit can only be set in OEM OPEN" + }, + { + "name": "DISABLED", + "value": 1, + "description": "ELE-AP Glitch detector is enabled (default secure state)" + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-8", + "name": "SOC_GLBL_DBG_DISABLE", + "description": "SOC GLBL DBG DISABLE", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Global JTAG disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Global JTAG enable" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse58-bit-10", + "name": "TZ_GLBL_DBG_DISABLE", + "description": "TZ GLBL DBG DISABLE" + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse58-bit-12", + "name": "OEM_FDET_DISABLE", + "description": "OEM FDET DISABLE", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "ELE-AP Frequency detectors are enabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Disable ELE-AP Frequency detectors. This bit can only be set in OEM OPEN" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "Reserved59", + "name": "Reserved 0x3B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003B", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 6 + }, + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 6 + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse60", + "name": "ELE_MISC_CTRL4", + "description": "OEM and NXP controlled. NXP should set OP to 1 so the shadows cannot be overwritten.", + "index_int": "0x003C", + "reg_width": 16, + "bitfields": [ + { + "width": 12, + "id": "fuse60-bits-0-11", + "name": "EXPORT_CONTROL", + "description": "Each fuse disables the following : \n[11] : Reserved for NXP\n[10] : Reserved for NXP\n[9] : Reserved\n[8] : Reserved for ELE-AP\n[7] : CA55 Crypto extension\n[6] : Reserved\n[5] : Reserved\n[4] : OTFADs\n[3:0] : Reserved" + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse61", + "name": "ELE_MISC_CTRL5", + "description": "OEM and NXP controlled.", + "index_int": "0x003D", + "bitfields": [ + { + "width": 1, + "id": "fuse61-bit-0", + "name": "DFT_DISABLE", + "description": "DFT DISABLE", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "enabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "disabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x3E-0x3F", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved62", + "name": "Reserved 0x3E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003E", + "is_reserved": true, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved63", + "name": "Reserved 0x3F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "ELE_SRKH", + "description": "ELE SRK Hash" + }, + "registers": [ + { + "id": "fuse64", + "name": "ELE_SRKH0", + "description": "ELE_SRKH0", + "index_int": "0x0040" + }, + { + "id": "fuse65", + "name": "ELE_SRKH1", + "description": "ELE_SRKH1", + "index_int": "0x0041" + }, + { + "id": "fuse66", + "name": "ELE_SRKH2", + "description": "ELE_SRKH2", + "index_int": "0x0042" + }, + { + "id": "fuse67", + "name": "ELE_SRKH3", + "description": "ELE_SRKH3", + "index_int": "0x0043" + }, + { + "id": "fuse68", + "name": "ELE_SRKH4", + "description": "ELE_SRKH4", + "index_int": "0x0044" + }, + { + "id": "fuse69", + "name": "ELE_SRKH5", + "description": "ELE_SRKH5", + "index_int": "0x0045" + }, + { + "id": "fuse70", + "name": "ELE_SRKH6", + "description": "ELE_SRKH6", + "index_int": "0x0046" + }, + { + "id": "fuse71", + "name": "ELE_SRKH7", + "description": "ELE_SRKH7", + "index_int": "0x0047" + } + ] + }, + { + "group": { + "name": "Reserved 0x48-0x7F", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved72", + "name": "Reserved 0x48", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0048", + "is_reserved": true + }, + { + "id": "Reserved73", + "name": "Reserved 0x49", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0049", + "is_reserved": true + }, + { + "id": "Reserved74", + "name": "Reserved 0x4A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004A", + "is_reserved": true + }, + { + "id": "Reserved75", + "name": "Reserved 0x4B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004B", + "is_reserved": true + }, + { + "id": "Reserved76", + "name": "Reserved 0x4C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004C", + "is_reserved": true + }, + { + "id": "Reserved77", + "name": "Reserved 0x4D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004D", + "is_reserved": true + }, + { + "id": "Reserved78", + "name": "Reserved 0x4E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004E", + "is_reserved": true + }, + { + "id": "Reserved79", + "name": "Reserved 0x4F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004F", + "is_reserved": true + }, + { + "id": "Reserved80", + "name": "Reserved 0x50", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0050", + "is_reserved": true + }, + { + "id": "Reserved81", + "name": "Reserved 0x51", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0051", + "is_reserved": true + }, + { + "id": "Reserved82", + "name": "Reserved 0x52", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0052", + "is_reserved": true + }, + { + "id": "Reserved83", + "name": "Reserved 0x53", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0053", + "is_reserved": true + }, + { + "id": "Reserved84", + "name": "Reserved 0x54", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0054", + "is_reserved": true + }, + { + "id": "Reserved85", + "name": "Reserved 0x55", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0055", + "is_reserved": true + }, + { + "id": "Reserved86", + "name": "Reserved 0x56", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0056", + "is_reserved": true + }, + { + "id": "Reserved87", + "name": "Reserved 0x57", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0057", + "is_reserved": true + }, + { + "id": "Reserved88", + "name": "Reserved 0x58", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0058", + "is_reserved": true + }, + { + "id": "Reserved89", + "name": "Reserved 0x59", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0059", + "is_reserved": true + }, + { + "id": "Reserved90", + "name": "Reserved 0x5A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005A", + "is_reserved": true + }, + { + "id": "Reserved91", + "name": "Reserved 0x5B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005B", + "is_reserved": true + }, + { + "id": "Reserved92", + "name": "Reserved 0x5C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005C", + "is_reserved": true + }, + { + "id": "Reserved93", + "name": "Reserved 0x5D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005D", + "is_reserved": true + }, + { + "id": "Reserved94", + "name": "Reserved 0x5E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005E", + "is_reserved": true + }, + { + "id": "Reserved95", + "name": "Reserved 0x5F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005F", + "is_reserved": true + }, + { + "id": "Reserved96", + "name": "Reserved 0x60", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0060", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved97", + "name": "Reserved 0x61", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0061", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved98", + "name": "Reserved 0x62", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0062", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved99", + "name": "Reserved 0x63", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0063", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved100", + "name": "Reserved 0x64", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0064", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved101", + "name": "Reserved 0x65", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0065", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved102", + "name": "Reserved 0x66", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0066", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved103", + "name": "Reserved 0x67", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0067", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved104", + "name": "Reserved 0x68", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0068", + "is_reserved": true + }, + { + "id": "Reserved105", + "name": "Reserved 0x69", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0069", + "is_reserved": true + }, + { + "id": "Reserved106", + "name": "Reserved 0x6A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006A", + "is_reserved": true + }, + { + "id": "Reserved107", + "name": "Reserved 0x6B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006B", + "is_reserved": true + }, + { + "id": "Reserved108", + "name": "Reserved 0x6C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006C", + "is_reserved": true + }, + { + "id": "Reserved109", + "name": "Reserved 0x6D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006D", + "is_reserved": true + }, + { + "id": "Reserved110", + "name": "Reserved 0x6E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006E", + "is_reserved": true + }, + { + "id": "Reserved111", + "name": "Reserved 0x6F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006F", + "is_reserved": true + }, + { + "id": "Reserved112", + "name": "Reserved 0x70", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0070", + "is_reserved": true + }, + { + "id": "Reserved113", + "name": "Reserved 0x71", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0071", + "is_reserved": true + }, + { + "id": "Reserved114", + "name": "Reserved 0x72", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0072", + "is_reserved": true + }, + { + "id": "Reserved115", + "name": "Reserved 0x73", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0073", + "is_reserved": true + }, + { + "id": "Reserved116", + "name": "Reserved 0x74", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0074", + "is_reserved": true + }, + { + "id": "Reserved117", + "name": "Reserved 0x75", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0075", + "is_reserved": true + }, + { + "id": "Reserved118", + "name": "Reserved 0x76", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0076", + "is_reserved": true + }, + { + "id": "Reserved119", + "name": "Reserved 0x77", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0077", + "is_reserved": true + }, + { + "id": "Reserved120", + "name": "Reserved 0x78", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0078", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved121", + "name": "Reserved 0x79", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0079", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved122", + "name": "Reserved 0x7A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007A", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved123", + "name": "Reserved 0x7B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007B", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved124", + "name": "Reserved 0x7C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007C", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved125", + "name": "Reserved 0x7D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007D", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved126", + "name": "Reserved 0x7E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007E", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved127", + "name": "Reserved 0x7F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "OEM_SRKH", + "description": "OEM SRK Hash" + }, + "registers": [ + { + "id": "fuse128", + "name": "OEM_SRKH0", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0080", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse129", + "name": "OEM_SRKH1", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0081", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse130", + "name": "OEM_SRKH2", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0082", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse131", + "name": "OEM_SRKH3", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0083", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse132", + "name": "OEM_SRKH4", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0084", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse133", + "name": "OEM_SRKH5", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0085", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse134", + "name": "OEM_SRKH6", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0086", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse135", + "name": "OEM_SRKH7", + "description": "Hash of OEM SRK public keys stored in Container", + "index_int": "0x0087", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + } + ] + }, + { + "group": { + "name": "Reserved 0x88-0xB7", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved136", + "name": "Reserved 0x88", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0088", + "is_reserved": true + }, + { + "id": "Reserved137", + "name": "Reserved 0x89", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0089", + "is_reserved": true + }, + { + "id": "Reserved138", + "name": "Reserved 0x8A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008A", + "is_reserved": true + }, + { + "id": "Reserved139", + "name": "Reserved 0x8B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008B", + "is_reserved": true + }, + { + "id": "Reserved140", + "name": "Reserved 0x8C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008C", + "is_reserved": true + }, + { + "id": "Reserved141", + "name": "Reserved 0x8D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008D", + "is_reserved": true + }, + { + "id": "Reserved142", + "name": "Reserved 0x8E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008E", + "is_reserved": true + }, + { + "id": "Reserved143", + "name": "Reserved 0x8F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008F", + "is_reserved": true + }, + { + "id": "Reserved144", + "name": "Reserved 0x90", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0090", + "is_reserved": true + }, + { + "id": "Reserved145", + "name": "Reserved 0x91", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0091", + "is_reserved": true + }, + { + "id": "Reserved146", + "name": "Reserved 0x92", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0092", + "is_reserved": true + }, + { + "id": "Reserved147", + "name": "Reserved 0x93", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0093", + "is_reserved": true + }, + { + "id": "Reserved148", + "name": "Reserved 0x94", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0094", + "is_reserved": true + }, + { + "id": "Reserved149", + "name": "Reserved 0x95", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0095", + "is_reserved": true + }, + { + "id": "Reserved150", + "name": "Reserved 0x96", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0096", + "is_reserved": true + }, + { + "id": "Reserved151", + "name": "Reserved 0x97", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0097", + "is_reserved": true + }, + { + "id": "Reserved152", + "name": "Reserved 0x98", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0098", + "is_reserved": true + }, + { + "id": "Reserved153", + "name": "Reserved 0x99", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0099", + "is_reserved": true + }, + { + "id": "Reserved154", + "name": "Reserved 0x9A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009A", + "is_reserved": true + }, + { + "id": "Reserved155", + "name": "Reserved 0x9B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009B", + "is_reserved": true + }, + { + "id": "Reserved156", + "name": "Reserved 0x9C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009C", + "is_reserved": true + }, + { + "id": "Reserved157", + "name": "Reserved 0x9D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009D", + "is_reserved": true + }, + { + "id": "Reserved158", + "name": "Reserved 0x9E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009E", + "is_reserved": true + }, + { + "id": "Reserved159", + "name": "Reserved 0x9F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009F", + "is_reserved": true + }, + { + "id": "Reserved160", + "name": "Reserved 0xA0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A0", + "is_reserved": true + }, + { + "id": "Reserved161", + "name": "Reserved 0xA1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A1", + "is_reserved": true + }, + { + "id": "Reserved162", + "name": "Reserved 0xA2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A2", + "is_reserved": true + }, + { + "id": "Reserved163", + "name": "Reserved 0xA3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A3", + "is_reserved": true + }, + { + "id": "Reserved164", + "name": "Reserved 0xA4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A4", + "is_reserved": true + }, + { + "id": "Reserved165", + "name": "Reserved 0xA5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A5", + "is_reserved": true + }, + { + "id": "Reserved166", + "name": "Reserved 0xA6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A6", + "is_reserved": true + }, + { + "id": "Reserved167", + "name": "Reserved 0xA7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A7", + "is_reserved": true + }, + { + "id": "Reserved168", + "name": "Reserved 0xA8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A8", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved169", + "name": "Reserved 0xA9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A9", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved170", + "name": "Reserved 0xAA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AA", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved171", + "name": "Reserved 0xAB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AB", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved172", + "name": "Reserved 0xAC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AC", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved173", + "name": "Reserved 0xAD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AD", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved174", + "name": "Reserved 0xAE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AE", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved175", + "name": "Reserved 0xAF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AF", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved176", + "name": "Reserved 0xB0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B0", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 7 + }, + { + "width": 9 + } + ] + }, + { + "id": "Reserved177", + "name": "Reserved 0xB1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B1", + "is_reserved": true + }, + { + "id": "Reserved178", + "name": "Reserved 0xB2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B2", + "is_reserved": true + }, + { + "id": "Reserved179", + "name": "Reserved 0xB3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B3", + "is_reserved": true + }, + { + "id": "Reserved180", + "name": "Reserved 0xB4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B4", + "is_reserved": true + }, + { + "id": "Reserved181", + "name": "Reserved 0xB5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B5", + "is_reserved": true + }, + { + "id": "Reserved182", + "name": "Reserved 0xB6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B6", + "is_reserved": true, + "bitfields": [ + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 15 + } + ] + }, + { + "id": "Reserved183", + "name": "Reserved 0xB7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B7", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "OTFAD1", + "description": "OTFAD configuration" + }, + "registers": [ + { + "id": "fuse184", + "name": "OTFAD1_KEY3", + "description": "On the Fly Decryption module Key bits 127 - 96", + "index_int": "0x00B8", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse185", + "name": "OTFAD1_KEY2", + "description": "On the Fly Decryption module Key bits 95 - 64", + "index_int": "0x00B9", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse186", + "name": "OTFAD1_KEY1", + "description": "On the Fly Decryption module Key bits 63 - 32", + "index_int": "0x00BA", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse187", + "name": "OTFAD1_KEY0", + "description": "On the Fly Decryption module Key bits 31 - 0", + "index_int": "0x00BB", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse188", + "name": "OTFAD1_CFG4", + "description": "On the Fly Decryption module control bits.", + "index_int": "0x00BC", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 3 + }, + { + "width": 1, + "id": "fuse188-bit-3", + "name": "OTFAD1_ENABLE", + "description": "ENABLE OTFAD. ", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse188-bit-4", + "name": "OTFAD1_DISABLE_OVERRIDE", + "description": "OTFAD1 DISABLE OVERRIDE" + }, + { + "width": 1, + "id": "fuse188-bit-5", + "name": "OTFAD1_KEY_BLOB_EN", + "description": "OTFAD1 KEY BLOB EN" + }, + { + "width": 1, + "id": "fuse188-bit-6", + "name": "OTFAD1_KEY_SCRAMBLE_CRC_EN", + "description": "OTFAD1 KEY SCRAMBLE CRC EN" + }, + { + "width": 1, + "id": "fuse188-bit-7", + "name": "OTFAD1_KEY_SCRAMBLE_EN", + "description": "Enable OTFAD Key Scramble ", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 8, + "id": "fuse188-bits-8-15", + "name": "OTFAD1_KEY_SCRAMBLE_ALIGN", + "description": "OTFAD1 KEY SCRAMBLE ALIGN[7:0]" + }, + { + "width": 1, + "id": "fuse188-bit-16", + "name": "OTFAD1_RESTRICT_OTFAD_IPS", + "description": "OTFAD1 RESTRICT OTFAD IPS" + }, + { + "width": 15 + } + ] + }, + { + "id": "fuse189", + "name": "OTFAD1_KEY_SCRAMBLE", + "description": "OTFAD Key Scramble value", + "index_int": "0x00BD", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + } + ] + }, + { + "group": { + "name": "Reserved 0xBE-0x137", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved190", + "name": "Reserved 0xBE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BE", + "is_reserved": true, + "bitfields": [ + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 12 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved191", + "name": "Reserved 0xBF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BF", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved192", + "name": "Reserved 0xC0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C0", + "is_reserved": true + }, + { + "id": "Reserved193", + "name": "Reserved 0xC1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C1", + "is_reserved": true + }, + { + "id": "Reserved194", + "name": "Reserved 0xC2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C2", + "is_reserved": true + }, + { + "id": "Reserved195", + "name": "Reserved 0xC3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C3", + "is_reserved": true + }, + { + "id": "Reserved196", + "name": "Reserved 0xC4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C4", + "is_reserved": true + }, + { + "id": "Reserved197", + "name": "Reserved 0xC5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C5", + "is_reserved": true + }, + { + "id": "Reserved198", + "name": "Reserved 0xC6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C6", + "is_reserved": true + }, + { + "id": "Reserved199", + "name": "Reserved 0xC7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C7", + "is_reserved": true + }, + { + "id": "Reserved200", + "name": "Reserved 0xC8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C8", + "is_reserved": true + }, + { + "id": "Reserved201", + "name": "Reserved 0xC9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C9", + "is_reserved": true + }, + { + "id": "Reserved202", + "name": "Reserved 0xCA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CA", + "is_reserved": true + }, + { + "id": "Reserved203", + "name": "Reserved 0xCB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CB", + "is_reserved": true + }, + { + "id": "Reserved204", + "name": "Reserved 0xCC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CC", + "is_reserved": true + }, + { + "id": "Reserved205", + "name": "Reserved 0xCD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CD", + "is_reserved": true + }, + { + "id": "Reserved206", + "name": "Reserved 0xCE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CE", + "is_reserved": true + }, + { + "id": "Reserved207", + "name": "Reserved 0xCF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CF", + "is_reserved": true + }, + { + "id": "Reserved208", + "name": "Reserved 0xD0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D0", + "is_reserved": true + }, + { + "id": "Reserved209", + "name": "Reserved 0xD1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D1", + "is_reserved": true + }, + { + "id": "Reserved210", + "name": "Reserved 0xD2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D2", + "is_reserved": true + }, + { + "id": "Reserved211", + "name": "Reserved 0xD3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D3", + "is_reserved": true + }, + { + "id": "Reserved212", + "name": "Reserved 0xD4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D4", + "is_reserved": true + }, + { + "id": "Reserved213", + "name": "Reserved 0xD5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D5", + "is_reserved": true + }, + { + "id": "Reserved214", + "name": "Reserved 0xD6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D6", + "is_reserved": true + }, + { + "id": "Reserved215", + "name": "Reserved 0xD7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D7", + "is_reserved": true + }, + { + "id": "Reserved216", + "name": "Reserved 0xD8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D8", + "is_reserved": true + }, + { + "id": "Reserved217", + "name": "Reserved 0xD9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D9", + "is_reserved": true + }, + { + "id": "Reserved218", + "name": "Reserved 0xDA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DA", + "is_reserved": true + }, + { + "id": "Reserved219", + "name": "Reserved 0xDB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DB", + "is_reserved": true + }, + { + "id": "Reserved220", + "name": "Reserved 0xDC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DC", + "is_reserved": true + }, + { + "id": "Reserved221", + "name": "Reserved 0xDD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DD", + "is_reserved": true + }, + { + "id": "Reserved222", + "name": "Reserved 0xDE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DE", + "is_reserved": true + }, + { + "id": "Reserved223", + "name": "Reserved 0xDF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DF", + "is_reserved": true + }, + { + "id": "Reserved224", + "name": "Reserved 0xE0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E0", + "is_reserved": true + }, + { + "id": "Reserved225", + "name": "Reserved 0xE1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E1", + "is_reserved": true + }, + { + "id": "Reserved226", + "name": "Reserved 0xE2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E2", + "is_reserved": true + }, + { + "id": "Reserved227", + "name": "Reserved 0xE3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E3", + "is_reserved": true + }, + { + "id": "Reserved228", + "name": "Reserved 0xE4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E4", + "is_reserved": true + }, + { + "id": "Reserved229", + "name": "Reserved 0xE5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E5", + "is_reserved": true + }, + { + "id": "Reserved230", + "name": "Reserved 0xE6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E6", + "is_reserved": true + }, + { + "id": "Reserved231", + "name": "Reserved 0xE7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E7", + "is_reserved": true + }, + { + "id": "Reserved232", + "name": "Reserved 0xE8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E8", + "is_reserved": true + }, + { + "id": "Reserved233", + "name": "Reserved 0xE9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E9", + "is_reserved": true + }, + { + "id": "Reserved234", + "name": "Reserved 0xEA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EA", + "is_reserved": true + }, + { + "id": "Reserved235", + "name": "Reserved 0xEB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EB", + "is_reserved": true + }, + { + "id": "Reserved236", + "name": "Reserved 0xEC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EC", + "is_reserved": true + }, + { + "id": "Reserved237", + "name": "Reserved 0xED", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00ED", + "is_reserved": true + }, + { + "id": "Reserved238", + "name": "Reserved 0xEE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EE", + "is_reserved": true + }, + { + "id": "Reserved239", + "name": "Reserved 0xEF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EF", + "is_reserved": true + }, + { + "id": "Reserved240", + "name": "Reserved 0xF0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F0", + "is_reserved": true + }, + { + "id": "Reserved241", + "name": "Reserved 0xF1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F1", + "is_reserved": true + }, + { + "id": "Reserved242", + "name": "Reserved 0xF2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F2", + "is_reserved": true + }, + { + "id": "Reserved243", + "name": "Reserved 0xF3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F3", + "is_reserved": true + }, + { + "id": "Reserved244", + "name": "Reserved 0xF4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F4", + "is_reserved": true + }, + { + "id": "Reserved245", + "name": "Reserved 0xF5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F5", + "is_reserved": true + }, + { + "id": "Reserved246", + "name": "Reserved 0xF6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F6", + "is_reserved": true + }, + { + "id": "Reserved247", + "name": "Reserved 0xF7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F7", + "is_reserved": true + }, + { + "id": "Reserved248", + "name": "Reserved 0xF8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F8", + "is_reserved": true + }, + { + "id": "Reserved249", + "name": "Reserved 0xF9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F9", + "is_reserved": true + }, + { + "id": "Reserved250", + "name": "Reserved 0xFA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FA", + "is_reserved": true + }, + { + "id": "Reserved251", + "name": "Reserved 0xFB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FB", + "is_reserved": true + }, + { + "id": "Reserved252", + "name": "Reserved 0xFC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FC", + "is_reserved": true + }, + { + "id": "Reserved253", + "name": "Reserved 0xFD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FD", + "is_reserved": true + }, + { + "id": "Reserved254", + "name": "Reserved 0xFE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FE", + "is_reserved": true + }, + { + "id": "Reserved255", + "name": "Reserved 0xFF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FF", + "is_reserved": true + }, + { + "id": "Reserved256", + "name": "Reserved 0x100", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0100", + "is_reserved": true + }, + { + "id": "Reserved257", + "name": "Reserved 0x101", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0101", + "is_reserved": true + }, + { + "id": "Reserved258", + "name": "Reserved 0x102", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0102", + "is_reserved": true + }, + { + "id": "Reserved259", + "name": "Reserved 0x103", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0103", + "is_reserved": true + }, + { + "id": "Reserved260", + "name": "Reserved 0x104", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0104", + "is_reserved": true + }, + { + "id": "Reserved261", + "name": "Reserved 0x105", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0105", + "is_reserved": true + }, + { + "id": "Reserved262", + "name": "Reserved 0x106", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0106", + "is_reserved": true + }, + { + "id": "Reserved263", + "name": "Reserved 0x107", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0107", + "is_reserved": true + }, + { + "id": "Reserved264", + "name": "Reserved 0x108", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0108", + "is_reserved": true + }, + { + "id": "Reserved265", + "name": "Reserved 0x109", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0109", + "is_reserved": true + }, + { + "id": "Reserved266", + "name": "Reserved 0x10A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010A", + "is_reserved": true + }, + { + "id": "Reserved267", + "name": "Reserved 0x10B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010B", + "is_reserved": true + }, + { + "id": "Reserved268", + "name": "Reserved 0x10C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010C", + "is_reserved": true + }, + { + "id": "Reserved269", + "name": "Reserved 0x10D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010D", + "is_reserved": true + }, + { + "id": "Reserved270", + "name": "Reserved 0x10E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010E", + "is_reserved": true + }, + { + "id": "Reserved271", + "name": "Reserved 0x10F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010F", + "is_reserved": true + }, + { + "id": "Reserved272", + "name": "Reserved 0x110", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0110", + "is_reserved": true + }, + { + "id": "Reserved273", + "name": "Reserved 0x111", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0111", + "is_reserved": true + }, + { + "id": "Reserved274", + "name": "Reserved 0x112", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0112", + "is_reserved": true + }, + { + "id": "Reserved275", + "name": "Reserved 0x113", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0113", + "is_reserved": true + }, + { + "id": "Reserved276", + "name": "Reserved 0x114", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0114", + "is_reserved": true + }, + { + "id": "Reserved277", + "name": "Reserved 0x115", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0115", + "is_reserved": true + }, + { + "id": "Reserved278", + "name": "Reserved 0x116", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0116", + "is_reserved": true + }, + { + "id": "Reserved279", + "name": "Reserved 0x117", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0117", + "is_reserved": true + }, + { + "id": "Reserved280", + "name": "Reserved 0x118", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0118", + "is_reserved": true + }, + { + "id": "Reserved281", + "name": "Reserved 0x119", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0119", + "is_reserved": true + }, + { + "id": "Reserved282", + "name": "Reserved 0x11A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011A", + "is_reserved": true + }, + { + "id": "Reserved283", + "name": "Reserved 0x11B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011B", + "is_reserved": true + }, + { + "id": "Reserved284", + "name": "Reserved 0x11C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011C", + "is_reserved": true + }, + { + "id": "Reserved285", + "name": "Reserved 0x11D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011D", + "is_reserved": true + }, + { + "id": "Reserved286", + "name": "Reserved 0x11E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011E", + "is_reserved": true + }, + { + "id": "Reserved287", + "name": "Reserved 0x11F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011F", + "is_reserved": true + }, + { + "id": "Reserved288", + "name": "Reserved 0x120", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0120", + "is_reserved": true + }, + { + "id": "Reserved289", + "name": "Reserved 0x121", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0121", + "is_reserved": true + }, + { + "id": "Reserved290", + "name": "Reserved 0x122", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0122", + "is_reserved": true + }, + { + "id": "Reserved291", + "name": "Reserved 0x123", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0123", + "is_reserved": true + }, + { + "id": "Reserved292", + "name": "Reserved 0x124", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0124", + "is_reserved": true + }, + { + "id": "Reserved293", + "name": "Reserved 0x125", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0125", + "is_reserved": true + }, + { + "id": "Reserved294", + "name": "Reserved 0x126", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0126", + "is_reserved": true + }, + { + "id": "Reserved295", + "name": "Reserved 0x127", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0127", + "is_reserved": true + }, + { + "id": "Reserved296", + "name": "Reserved 0x128", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0128", + "is_reserved": true + }, + { + "id": "Reserved297", + "name": "Reserved 0x129", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0129", + "is_reserved": true + }, + { + "id": "Reserved298", + "name": "Reserved 0x12A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012A", + "is_reserved": true + }, + { + "id": "Reserved299", + "name": "Reserved 0x12B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012B", + "is_reserved": true + }, + { + "id": "Reserved300", + "name": "Reserved 0x12C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012C", + "is_reserved": true + }, + { + "id": "Reserved301", + "name": "Reserved 0x12D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012D", + "is_reserved": true + }, + { + "id": "Reserved302", + "name": "Reserved 0x12E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012E", + "is_reserved": true + }, + { + "id": "Reserved303", + "name": "Reserved 0x12F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012F", + "is_reserved": true + }, + { + "id": "Reserved304", + "name": "Reserved 0x130", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0130", + "is_reserved": true + }, + { + "id": "Reserved305", + "name": "Reserved 0x131", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0131", + "is_reserved": true + }, + { + "id": "Reserved306", + "name": "Reserved 0x132", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0132", + "is_reserved": true + }, + { + "id": "Reserved307", + "name": "Reserved 0x133", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0133", + "is_reserved": true + }, + { + "id": "Reserved308", + "name": "Reserved 0x134", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0134", + "is_reserved": true + }, + { + "id": "Reserved309", + "name": "Reserved 0x135", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0135", + "is_reserved": true + }, + { + "id": "Reserved310", + "name": "Reserved 0x136", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0136", + "is_reserved": true + }, + { + "id": "Reserved311", + "name": "Reserved 0x137", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0137", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "COM_DEVICE_ID_CFG", + "description": "Device communication config" + }, + "registers": [ + { + "id": "fuse312", + "name": "COM_DEVICE_ID_CFG0", + "description": "COM_DEVICE_ID_CFG0", + "index_int": "0x0138", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse312-bits-0-15", + "name": "USB_VID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "fuse312-bits-16-31", + "name": "USB1_PID", + "description": "USB1 Product ID" + } + ] + }, + { + "id": "fuse313", + "name": "COM_DEVICE_ID_CFG1", + "description": "COM_DEVICE_ID_CFG1", + "index_int": "0x0139", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse313-bits-0-15", + "name": "USB2_PID", + "description": "USB2 Product ID" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved314", + "name": "Reserved 0x13A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013A", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse315", + "name": "COM_DEVICE_ID_CFG3", + "description": "COM_DEVICE_ID_CFG3", + "index_int": "0x013B", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse315-bits-0-31", + "name": "MAC1_ADDR_31_0", + "description": "MAC_1 Address. Reserved for customer SW" + } + ] + }, + { + "id": "fuse316", + "name": "COM_DEVICE_ID_CFG4", + "description": "COM_DEVICE_ID_CFG4", + "index_int": "0x013C", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse316-bits-0-15", + "name": "MAC1_ADDR_47_32", + "description": "MAC_1 Address. Reserved for customer SW" + }, + { + "width": 16, + "id": "fuse316-bits-16-31", + "name": "MAC2_ADDR_15_0", + "description": "MAC_2 Address. Reserved for customer SW" + } + ] + }, + { + "id": "fuse317", + "name": "COM_DEVICE_ID_CFG5", + "description": "COM_DEVICE_ID_CFG5", + "index_int": "0x013D", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse317-bits-0-31", + "name": "MAC2_ADDR_47_16", + "description": "MAC_2 Address. Reserved for customer SW" + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x13E-0x146", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved318", + "name": "Reserved 0x13E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved319", + "name": "Reserved 0x13F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013F", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved320", + "name": "Reserved 0x140", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0140", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved321", + "name": "Reserved 0x141", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0141", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved322", + "name": "Reserved 0x142", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0142", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved323", + "name": "Reserved 0x143", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0143", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved324", + "name": "Reserved 0x144", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0144", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved325", + "name": "Reserved 0x145", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0145", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved326", + "name": "Reserved 0x146", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0146", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "OEM_SW_CFG", + "description": "OEM software configuration" + }, + "registers": [ + { + "id": "fuse327", + "name": "OEM_SW_CFG", + "description": "OEM Software Configuration", + "index_int": "0x0147", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Reserved 0x148-0x177", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved328", + "name": "Reserved 0x148", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0148", + "is_reserved": true + }, + { + "id": "Reserved329", + "name": "Reserved 0x149", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0149", + "is_reserved": true + }, + { + "id": "Reserved330", + "name": "Reserved 0x14A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014A", + "is_reserved": true + }, + { + "id": "Reserved331", + "name": "Reserved 0x14B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014B", + "is_reserved": true + }, + { + "id": "Reserved332", + "name": "Reserved 0x14C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014C", + "is_reserved": true + }, + { + "id": "Reserved333", + "name": "Reserved 0x14D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014D", + "is_reserved": true + }, + { + "id": "Reserved334", + "name": "Reserved 0x14E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014E", + "is_reserved": true + }, + { + "id": "Reserved335", + "name": "Reserved 0x14F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014F", + "is_reserved": true + }, + { + "id": "Reserved336", + "name": "Reserved 0x150", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0150", + "is_reserved": true + }, + { + "id": "Reserved337", + "name": "Reserved 0x151", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0151", + "is_reserved": true + }, + { + "id": "Reserved338", + "name": "Reserved 0x152", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0152", + "is_reserved": true + }, + { + "id": "Reserved339", + "name": "Reserved 0x153", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0153", + "is_reserved": true + }, + { + "id": "Reserved340", + "name": "Reserved 0x154", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0154", + "is_reserved": true + }, + { + "id": "Reserved341", + "name": "Reserved 0x155", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0155", + "is_reserved": true + }, + { + "id": "Reserved342", + "name": "Reserved 0x156", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0156", + "is_reserved": true + }, + { + "id": "Reserved343", + "name": "Reserved 0x157", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0157", + "is_reserved": true + }, + { + "id": "Reserved344", + "name": "Reserved 0x158", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0158", + "is_reserved": true + }, + { + "id": "Reserved345", + "name": "Reserved 0x159", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0159", + "is_reserved": true + }, + { + "id": "Reserved346", + "name": "Reserved 0x15A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015A", + "is_reserved": true + }, + { + "id": "Reserved347", + "name": "Reserved 0x15B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015B", + "is_reserved": true + }, + { + "id": "Reserved348", + "name": "Reserved 0x15C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015C", + "is_reserved": true + }, + { + "id": "Reserved349", + "name": "Reserved 0x15D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015D", + "is_reserved": true + }, + { + "id": "Reserved350", + "name": "Reserved 0x15E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015E", + "is_reserved": true + }, + { + "id": "Reserved351", + "name": "Reserved 0x15F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015F", + "is_reserved": true + }, + { + "id": "Reserved352", + "name": "Reserved 0x160", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0160", + "is_reserved": true + }, + { + "id": "Reserved353", + "name": "Reserved 0x161", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0161", + "is_reserved": true + }, + { + "id": "Reserved354", + "name": "Reserved 0x162", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0162", + "is_reserved": true + }, + { + "id": "Reserved355", + "name": "Reserved 0x163", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0163", + "is_reserved": true + }, + { + "id": "Reserved356", + "name": "Reserved 0x164", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0164", + "is_reserved": true + }, + { + "id": "Reserved357", + "name": "Reserved 0x165", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0165", + "is_reserved": true + }, + { + "id": "Reserved358", + "name": "Reserved 0x166", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0166", + "is_reserved": true + }, + { + "id": "Reserved359", + "name": "Reserved 0x167", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0167", + "is_reserved": true + }, + { + "id": "Reserved360", + "name": "Reserved 0x168", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0168", + "is_reserved": true + }, + { + "id": "Reserved361", + "name": "Reserved 0x169", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0169", + "is_reserved": true + }, + { + "id": "Reserved362", + "name": "Reserved 0x16A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016A", + "is_reserved": true + }, + { + "id": "Reserved363", + "name": "Reserved 0x16B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016B", + "is_reserved": true + }, + { + "id": "Reserved364", + "name": "Reserved 0x16C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016C", + "is_reserved": true + }, + { + "id": "Reserved365", + "name": "Reserved 0x16D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016D", + "is_reserved": true + }, + { + "id": "Reserved366", + "name": "Reserved 0x16E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016E", + "is_reserved": true + }, + { + "id": "Reserved367", + "name": "Reserved 0x16F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016F", + "is_reserved": true + }, + { + "id": "Reserved368", + "name": "Reserved 0x170", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0170", + "is_reserved": true + }, + { + "id": "Reserved369", + "name": "Reserved 0x171", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0171", + "is_reserved": true + }, + { + "id": "Reserved370", + "name": "Reserved 0x172", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0172", + "is_reserved": true + }, + { + "id": "Reserved371", + "name": "Reserved 0x173", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0173", + "is_reserved": true + }, + { + "id": "Reserved372", + "name": "Reserved 0x174", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0174", + "is_reserved": true + }, + { + "id": "Reserved373", + "name": "Reserved 0x175", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0175", + "is_reserved": true + }, + { + "id": "Reserved374", + "name": "Reserved 0x176", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0176", + "is_reserved": true + }, + { + "id": "Reserved375", + "name": "Reserved 0x177", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0177", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "GPR2_CFG", + "description": "General purpose fuse 2" + }, + "registers": [ + { + "id": "fuse376", + "name": "GPR2_CFG0", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x0178" + }, + { + "id": "fuse377", + "name": "GPR2_CFG1", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x0179", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse378", + "name": "GPR2_CFG2", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017A", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse379", + "name": "GPR2_CFG3", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017B" + }, + { + "id": "fuse380", + "name": "GPR2_CFG4", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse381", + "name": "GPR2_CFG5", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017D" + }, + { + "id": "fuse382", + "name": "GPR2_CFG6", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017E" + }, + { + "id": "fuse383", + "name": "GPR2_CFG7", + "description": "OEM Reserved - General Purpose Fuse 2", + "index_int": "0x017F" + } + ] + }, + { + "group": { + "name": "GPR3_CFG", + "description": "General purpose fuse 3" + }, + "registers": [ + { + "id": "fuse384", + "name": "GPR3_CFG0", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0180" + }, + { + "id": "fuse385", + "name": "GPR3_CFG1", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0181", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse386", + "name": "GPR3_CFG2", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0182" + }, + { + "id": "fuse387", + "name": "GPR3_CFG3", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0183" + }, + { + "id": "fuse388", + "name": "GPR3_CFG4", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0184" + }, + { + "id": "fuse389", + "name": "GPR3_CFG5", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0185" + }, + { + "id": "fuse390", + "name": "GPR3_CFG6", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0186" + }, + { + "id": "fuse391", + "name": "GPR3_CFG7", + "description": "OEM Reserved - General Purpose Fuse 3", + "index_int": "0x0187" + } + ] + }, + { + "group": { + "name": "GPR4_CFG", + "description": "General purpose fuse 4" + }, + "registers": [ + { + "id": "fuse392", + "name": "GPR4_CFG0", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x0188" + }, + { + "id": "fuse393", + "name": "GPR4_CFG1", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x0189" + }, + { + "id": "fuse394", + "name": "GPR4_CFG2", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018A" + }, + { + "id": "fuse395", + "name": "GPR4_CFG3", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018B" + }, + { + "id": "fuse396", + "name": "GPR4_CFG4", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse397", + "name": "GPR4_CFG5", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018D" + }, + { + "id": "fuse398", + "name": "GPR4_CFG6", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018E" + }, + { + "id": "fuse399", + "name": "GPR4_CFG7", + "description": "OEM Reserved - General Purpose Fuse 4", + "index_int": "0x018F" + } + ] + }, + { + "group": { + "name": "Reserved 0x190-0x1FF", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved400", + "name": "Reserved 0x190", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0190", + "is_reserved": true + }, + { + "id": "Reserved401", + "name": "Reserved 0x191", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0191", + "is_reserved": true + }, + { + "id": "Reserved402", + "name": "Reserved 0x192", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0192", + "is_reserved": true + }, + { + "id": "Reserved403", + "name": "Reserved 0x193", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0193", + "is_reserved": true + }, + { + "id": "Reserved404", + "name": "Reserved 0x194", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0194", + "is_reserved": true + }, + { + "id": "Reserved405", + "name": "Reserved 0x195", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0195", + "is_reserved": true + }, + { + "id": "Reserved406", + "name": "Reserved 0x196", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0196", + "is_reserved": true + }, + { + "id": "Reserved407", + "name": "Reserved 0x197", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0197", + "is_reserved": true + }, + { + "id": "Reserved408", + "name": "Reserved 0x198", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0198", + "is_reserved": true + }, + { + "id": "Reserved409", + "name": "Reserved 0x199", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0199", + "is_reserved": true + }, + { + "id": "Reserved410", + "name": "Reserved 0x19A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019A", + "is_reserved": true + }, + { + "id": "Reserved411", + "name": "Reserved 0x19B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019B", + "is_reserved": true + }, + { + "id": "Reserved412", + "name": "Reserved 0x19C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019C", + "is_reserved": true + }, + { + "id": "Reserved413", + "name": "Reserved 0x19D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019D", + "is_reserved": true + }, + { + "id": "Reserved414", + "name": "Reserved 0x19E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019E", + "is_reserved": true + }, + { + "id": "Reserved415", + "name": "Reserved 0x19F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x019F", + "is_reserved": true + }, + { + "id": "Reserved416", + "name": "Reserved 0x1A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A0", + "is_reserved": true + }, + { + "id": "Reserved417", + "name": "Reserved 0x1A1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A1", + "is_reserved": true + }, + { + "id": "Reserved418", + "name": "Reserved 0x1A2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A2", + "is_reserved": true + }, + { + "id": "Reserved419", + "name": "Reserved 0x1A3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A3", + "is_reserved": true + }, + { + "id": "Reserved420", + "name": "Reserved 0x1A4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A4", + "is_reserved": true + }, + { + "id": "Reserved421", + "name": "Reserved 0x1A5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A5", + "is_reserved": true + }, + { + "id": "Reserved422", + "name": "Reserved 0x1A6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A6", + "is_reserved": true + }, + { + "id": "Reserved423", + "name": "Reserved 0x1A7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A7", + "is_reserved": true + }, + { + "id": "Reserved424", + "name": "Reserved 0x1A8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A8", + "is_reserved": true + }, + { + "id": "Reserved425", + "name": "Reserved 0x1A9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A9", + "is_reserved": true + }, + { + "id": "Reserved426", + "name": "Reserved 0x1AA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AA", + "is_reserved": true + }, + { + "id": "Reserved427", + "name": "Reserved 0x1AB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AB", + "is_reserved": true + }, + { + "id": "Reserved428", + "name": "Reserved 0x1AC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AC", + "is_reserved": true + }, + { + "id": "Reserved429", + "name": "Reserved 0x1AD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AD", + "is_reserved": true + }, + { + "id": "Reserved430", + "name": "Reserved 0x1AE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AE", + "is_reserved": true + }, + { + "id": "Reserved431", + "name": "Reserved 0x1AF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AF", + "is_reserved": true + }, + { + "id": "Reserved432", + "name": "Reserved 0x1B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B0", + "is_reserved": true + }, + { + "id": "Reserved433", + "name": "Reserved 0x1B1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B1", + "is_reserved": true + }, + { + "id": "Reserved434", + "name": "Reserved 0x1B2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B2", + "is_reserved": true + }, + { + "id": "Reserved435", + "name": "Reserved 0x1B3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B3", + "is_reserved": true + }, + { + "id": "Reserved436", + "name": "Reserved 0x1B4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B4", + "is_reserved": true + }, + { + "id": "Reserved437", + "name": "Reserved 0x1B5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B5", + "is_reserved": true + }, + { + "id": "Reserved438", + "name": "Reserved 0x1B6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B6", + "is_reserved": true + }, + { + "id": "Reserved439", + "name": "Reserved 0x1B7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B7", + "is_reserved": true + }, + { + "id": "Reserved440", + "name": "Reserved 0x1B8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B8", + "is_reserved": true + }, + { + "id": "Reserved441", + "name": "Reserved 0x1B9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B9", + "is_reserved": true + }, + { + "id": "Reserved442", + "name": "Reserved 0x1BA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BA", + "is_reserved": true + }, + { + "id": "Reserved443", + "name": "Reserved 0x1BB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BB", + "is_reserved": true + }, + { + "id": "Reserved444", + "name": "Reserved 0x1BC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BC", + "is_reserved": true + }, + { + "id": "Reserved445", + "name": "Reserved 0x1BD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BD", + "is_reserved": true + }, + { + "id": "Reserved446", + "name": "Reserved 0x1BE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BE", + "is_reserved": true + }, + { + "id": "Reserved447", + "name": "Reserved 0x1BF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BF", + "is_reserved": true + }, + { + "id": "Reserved448", + "name": "Reserved 0x1C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C0", + "is_reserved": true + }, + { + "id": "Reserved449", + "name": "Reserved 0x1C1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C1", + "is_reserved": true + }, + { + "id": "Reserved450", + "name": "Reserved 0x1C2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C2", + "is_reserved": true + }, + { + "id": "Reserved451", + "name": "Reserved 0x1C3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C3", + "is_reserved": true + }, + { + "id": "Reserved452", + "name": "Reserved 0x1C4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C4", + "is_reserved": true + }, + { + "id": "Reserved453", + "name": "Reserved 0x1C5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C5", + "is_reserved": true + }, + { + "id": "Reserved454", + "name": "Reserved 0x1C6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C6", + "is_reserved": true + }, + { + "id": "Reserved455", + "name": "Reserved 0x1C7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C7", + "is_reserved": true + }, + { + "id": "Reserved456", + "name": "Reserved 0x1C8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C8", + "is_reserved": true + }, + { + "id": "Reserved457", + "name": "Reserved 0x1C9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01C9", + "is_reserved": true + }, + { + "id": "Reserved458", + "name": "Reserved 0x1CA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CA", + "is_reserved": true + }, + { + "id": "Reserved459", + "name": "Reserved 0x1CB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CB", + "is_reserved": true + }, + { + "id": "Reserved460", + "name": "Reserved 0x1CC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CC", + "is_reserved": true + }, + { + "id": "Reserved461", + "name": "Reserved 0x1CD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CD", + "is_reserved": true + }, + { + "id": "Reserved462", + "name": "Reserved 0x1CE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CE", + "is_reserved": true + }, + { + "id": "Reserved463", + "name": "Reserved 0x1CF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01CF", + "is_reserved": true + }, + { + "id": "Reserved464", + "name": "Reserved 0x1D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D0", + "is_reserved": true + }, + { + "id": "Reserved465", + "name": "Reserved 0x1D1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D1", + "is_reserved": true + }, + { + "id": "Reserved466", + "name": "Reserved 0x1D2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D2", + "is_reserved": true + }, + { + "id": "Reserved467", + "name": "Reserved 0x1D3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D3", + "is_reserved": true + }, + { + "id": "Reserved468", + "name": "Reserved 0x1D4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D4", + "is_reserved": true + }, + { + "id": "Reserved469", + "name": "Reserved 0x1D5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D5", + "is_reserved": true + }, + { + "id": "Reserved470", + "name": "Reserved 0x1D6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D6", + "is_reserved": true + }, + { + "id": "Reserved471", + "name": "Reserved 0x1D7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D7", + "is_reserved": true + }, + { + "id": "Reserved472", + "name": "Reserved 0x1D8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D8", + "is_reserved": true + }, + { + "id": "Reserved473", + "name": "Reserved 0x1D9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D9", + "is_reserved": true + }, + { + "id": "Reserved474", + "name": "Reserved 0x1DA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DA", + "is_reserved": true + }, + { + "id": "Reserved475", + "name": "Reserved 0x1DB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DB", + "is_reserved": true + }, + { + "id": "Reserved476", + "name": "Reserved 0x1DC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DC", + "is_reserved": true + }, + { + "id": "Reserved477", + "name": "Reserved 0x1DD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DD", + "is_reserved": true + }, + { + "id": "Reserved478", + "name": "Reserved 0x1DE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DE", + "is_reserved": true + }, + { + "id": "Reserved479", + "name": "Reserved 0x1DF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DF", + "is_reserved": true + }, + { + "id": "Reserved480", + "name": "Reserved 0x1E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E0", + "is_reserved": true + }, + { + "id": "Reserved481", + "name": "Reserved 0x1E1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E1", + "is_reserved": true + }, + { + "id": "Reserved482", + "name": "Reserved 0x1E2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E2", + "is_reserved": true + }, + { + "id": "Reserved483", + "name": "Reserved 0x1E3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E3", + "is_reserved": true + }, + { + "id": "Reserved484", + "name": "Reserved 0x1E4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E4", + "is_reserved": true, + "reg_width": 16 + }, + { + "id": "Reserved485", + "name": "Reserved 0x1E5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E5", + "is_reserved": true, + "reg_width": 16 + }, + { + "id": "Reserved486", + "name": "Reserved 0x1E6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E6", + "is_reserved": true, + "reg_width": 16 + }, + { + "id": "Reserved487", + "name": "Reserved 0x1E7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E7", + "is_reserved": true, + "reg_width": 16 + }, + { + "id": "Reserved488", + "name": "Reserved 0x1E8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E8", + "is_reserved": true + }, + { + "id": "Reserved489", + "name": "Reserved 0x1E9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E9", + "is_reserved": true + }, + { + "id": "Reserved490", + "name": "Reserved 0x1EA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EA", + "is_reserved": true + }, + { + "id": "Reserved491", + "name": "Reserved 0x1EB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EB", + "is_reserved": true + }, + { + "id": "Reserved492", + "name": "Reserved 0x1EC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EC", + "is_reserved": true + }, + { + "id": "Reserved493", + "name": "Reserved 0x1ED", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01ED", + "is_reserved": true + }, + { + "id": "Reserved494", + "name": "Reserved 0x1EE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EE", + "is_reserved": true + }, + { + "id": "Reserved495", + "name": "Reserved 0x1EF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EF", + "is_reserved": true + }, + { + "id": "Reserved496", + "name": "Reserved 0x1F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F0", + "is_reserved": true + }, + { + "id": "Reserved497", + "name": "Reserved 0x1F1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F1", + "is_reserved": true + }, + { + "id": "Reserved498", + "name": "Reserved 0x1F2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F2", + "is_reserved": true + }, + { + "id": "Reserved499", + "name": "Reserved 0x1F3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F3", + "is_reserved": true + }, + { + "id": "Reserved500", + "name": "Reserved 0x1F4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F4", + "is_reserved": true + }, + { + "id": "Reserved501", + "name": "Reserved 0x1F5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F5", + "is_reserved": true + }, + { + "id": "Reserved502", + "name": "Reserved 0x1F6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F6", + "is_reserved": true + }, + { + "id": "Reserved503", + "name": "Reserved 0x1F7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F7", + "is_reserved": true + }, + { + "id": "Reserved504", + "name": "Reserved 0x1F8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F8", + "is_reserved": true + }, + { + "id": "Reserved505", + "name": "Reserved 0x1F9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F9", + "is_reserved": true + }, + { + "id": "Reserved506", + "name": "Reserved 0x1FA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FA", + "is_reserved": true + }, + { + "id": "Reserved507", + "name": "Reserved 0x1FB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FB", + "is_reserved": true + }, + { + "id": "Reserved508", + "name": "Reserved 0x1FC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FC", + "is_reserved": true + }, + { + "id": "Reserved509", + "name": "Reserved 0x1FD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FD", + "is_reserved": true + }, + { + "id": "Reserved510", + "name": "Reserved 0x1FE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FE", + "is_reserved": true + }, + { + "id": "Reserved511", + "name": "Reserved 0x1FF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FF", + "is_reserved": true + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx943/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx943/database.yaml new file mode 100644 index 0000000..8788f70 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx943/database.yaml @@ -0,0 +1,408 @@ +# Copyright 2024-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: i.MX Application Processors + spsdk_predecessor_name: mx943 + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX94 + memory_map: + code-tcm_ns: + start_int: 0x0FF80000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + code-tcm_s: + start_int: 0x1FF80000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + system-tcm_ns: + start_int: 0x20000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + system-tcm_s: + start_int: 0x30000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_itcm_ns: + start_int: 0x20380000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_itcm_s: + start_int: 0x30380000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_dtcm_ns: + start_int: 0x20400000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_dtcm_s: + start_int: 0x30400000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + ocram_ns: + start_int: 0x20480000 + size_int: 0x60000 + external: false + non_xip_type: int_ram + ocram_s: + start_int: 0x30480000 + size_int: 0x60000 + external: false + non_xip_type: int_ram + flexspi1_ns: + start_int: 0x28000000 + size_int: 0x08000000 + external: true + mirror_of: flexspi1_s + flexspi1_s: + start_int: 0x38000000 + size_int: 0x08000000 + external: true + neutron_sram_ns: + start_int: 0x4AA00000 + size_int: 0x00100000 + external: false + mirror_of: neutron_sram_s + non_xip_type: int_ram + neutron_sram_s: + start_int: 0x5AA00000 + size_int: 0x00100000 + external: false + non_xip_type: int_ram + dram1_ns: + start_int: 0x80000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram1_s: + start_int: 0x90000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram2_ns: + start_int: 0xA0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram2_s: + start_int: 0xB0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram3_ns: + start_int: 0xC0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram3_s: + start_int: 0xD0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + isp: + rom: + protocol: sdps + interfaces: [usb] + usb: + - vid: 0x1FC9 + pid: 0x0027 + protocol_params: + no_cmd: True + hid_ep1: True + hid_pack_size: 1020 + +features: + # ======== Fuses description section ======== + fuses: + tool: nxpele + grouped_registers: + - uid: srkh + name: SRKH + width: 512 + reversed: True + config_as_hexstring: True + description: "SHA512 hash digest of hash of four SRK keys" + sub_regs: + [ + "fuse608", + "fuse609", + "fuse610", + "fuse611", + "fuse612", + "fuse613", + "fuse614", + "fuse615", + "fuse616", + "fuse617", + "fuse618", + "fuse619", + "fuse620", + "fuse621", + "fuse622", + "fuse623", + ] + - uid: pqc_srkh + name: PQC_SRKH + width: 512 + reversed: True + config_as_hexstring: True + description: "SHA512 hash digest of hash of four SRK keys" + sub_regs: + [ + "fuse624", + "fuse625", + "fuse626", + "fuse627", + "fuse628", + "fuse629", + "fuse630", + "fuse631", + "fuse632", + "fuse633", + "fuse634", + "fuse635", + "fuse636", + "fuse637", + "fuse638", + "fuse639", + ] + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x9380_0000 + size: 0x30000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_ahab_v2" + + # ======== DAT section ======== + dat: + socc: 0x4D5803AF # SOCC identification + based_on_ele: True # Flag if the implementation of DAT is based on EdgeLock Enclave + ele_cnt_version: 2 # DAT container is based on New AHAB container version 2 + dac_version_is_swapped: True + auth_beacon_length: 4 # The length in bytes of authentication beacon + sub_features: ["ele_pqc"] + test_address: 0x2048_0000 + dmbox_ap_ix: 0 + dac_rot_type: not_available # The Dac packet doesn't contains the ROT hash + + # ======== FCB section ======== + # fcb: + # mem_types: {} + + # ======== AHAB section ======== + ahab: + sub_features: [ahab_image, certificate_supported] + fuses_0: + _name: "AHAB SRKH" + srkh: "__srk_hash0" # SRK hash fuse + fuses_1: + _name: "AHAB SRKH PQC" + pqc_srkh: "__srk_hash1" # SRK PQC hash fuse + containers_max_cnt: 3 + valid_offset_minimal_alignment: 0x400 + container_types: [2] # Supported container types + core_ids: + DUMMY_CORE: [0, "dummy", "Virtual dummy core (used for data)"] + CORTEX_M33: [1, "cortex-m33", "Cortex M33 - Boot core"] + CORTEX_A55: [2, "cortex-a55", "Cortex A55"] + ELE: [6, "ele", "EdgeLock Enclave"] + V2X_1: [9, "v2x-1", "V2X 1"] + V2X_2: [10, "v2x-2", "V2X 2"] + CORTEX_M7_1: [11, "cortex-m7-1", "Cortex M7 Core ID 1"] + CORTEX_M7_2: [12, "cortex-m7-2", "Functional Safety Cortex M7"] + CORTEX_M33_2: [13, "cortex-m33-2", "Functional Safety Cortex M33"] + DDR: [14, "ddr", "DDR Core"] + + image_types: + application: + EXECUTABLE: [0x03, executable, Executable Image] + DATA: [0x04, data, Data Image] + OEI: [0x05, oei, OEI Image] + PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + DEK_VALIDATION_FCB_CHK: + [0x08, dek_validation_fcb_chk, DEK validation FCB check Image] + PROVISIONING_DATA: [0x09, provisioning_data, Provisioning data Image] + EXECUTABLE_FAST_BOOT_IMAGE: + [0x0A, executable_fast_boot_image, Executable fast boot Image] + OEI_DDR: [0x0D, oei_ddr, Executable boot Image] + V2X_DUMMY: [0x0E, v2x_dummy, V2X dummy Image] + ele: + ELE_AS_IMAGE: [0x05, ele_as_image, EdgeLock Enclave Image in OEM Image] + ELE: [0x06, ele, EdgeLock Enclave Image] + v2x: + V2X_AS_IMAGE: [0x0A, v2x_as_image, V2X image as OEM Image] + V2X_PRIMARY: [0x0B, v2x_primary, V2X primary Image] + V2X_SECONDARY: [0x0C, v2x_secondary, V2X secondary Image] + V2X_ROM_PATCH: [0x0D, v2x_rom_patch, V2X rom patch Image] + + image_types_mapping: + ele: [6] + v2x: [9, 10] + + # AHAB extra images + oei_ddr_load_address: 0x1ffc0000 + oei_ddr_entry_point: 0x1ffc0001 + oei_ddr_core_id: cortex-m33 + oei_ddr_image_type: oei + oei_ddr_image_size_alignment: 0x400 + oei_ddr_qb_data_mandatory: True + # oei_ddr_gap_after_image: 0x10000 + + oei_tcm_load_address: 0x1ffc0000 + oei_tcm_entry_point: 0x1ffc0001 + oei_tcm_core_id: cortex-m33 + oei_tcm_image_type: oei + oei_tcm_image_size_alignment: 0x400 + + system_manager_load_address: 0x1ffc0000 + system_manager_entry_point: 0x1ffc0000 + system_manager_core_id: cortex-m33 + system_manager_image_size_alignment: 0x400 + + cortex_m7_app_load_address: 0x303c0000 + cortex_m7_app_entry_point: 0 + cortex_m7_app_core_id: cortex-m7-1 + cortex_m7_app_meta_data_start_cpu_id: 1 + cortex_m7_app_image_size_alignment: 0x400 + + cortex_m7_2_app_load_address: 0x302C0000 + cortex_m7_2_app_entry_point: 0 + cortex_m7_2_app_core_id: cortex-m7-2 + cortex_m7_2_app_meta_data_start_cpu_id: 7 + cortex_m7_2_app_image_size_alignment: 0x400 + + cortex_m33_2_app_load_address: 0x309c0000 + cortex_m33_2_app_entry_point: 0x1ffc0000 + cortex_m33_2_app_core_id: cortex-m33-2 + cortex_m33_2_app_meta_data_start_cpu_id: 8 + cortex_m33_2_app_image_size_alignment: 0x400 + + spl_load_address: 0x20480000 + spl_core_id: cortex-a55 + spl_meta_data_start_cpu_id: 2 + spl_ddr_image_size_alignment: 0x400 + + atf_load_address: 0x8a200000 + atf_core_id: cortex-a55 + atf_meta_data_start_cpu_id: 2 + atf_image_size_alignment: 0x400 + + uboot_load_address: 0x90200000 + uboot_core_id: cortex-a55 + uboot_meta_data_start_cpu_id: 2 + uboot_image_size_alignment: 0x400 + + tee_load_address: 0x8c000000 + tee_core_id: cortex-a55 + tee_meta_data_start_cpu_id: 2 + tee_image_size_alignment: 0x400 + + kernel_load_address: 0x90400000 + kernel_core_id: cortex-a55 + kernel_meta_data_start_cpu_id: 2 + kernel_chunk_size: 0x700000 + kernel_image_size_alignment: 0x400 + + dtb_load_address: 0x93000000 + dtb_core_id: cortex-a55 + dtb_meta_data_start_cpu_id: 0 + dtb_entry_point: 0x0 + dtb_image_type: data + dtb_image_size_alignment: 0x400 + + extra_images: + [ + double_authentication, + oei_ddr, + oei_tcm, + system_manager, + cortex_m7_app, + cortex_m7_2_app, + cortex_m33_2_app, + spl, + atf, + uboot, + tee, + kernel, + dtb, + ] + # ======== EdgeLock Enclave section ======== + ele: {} + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + #not_used: 0xC00 + primary_image_container_set: 0x1_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc_boot: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + sd: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + # flexspi_nand: + # segments: + # xmcd: 0x00 + # primary_image_container_set: 0x400 + # secondary_image_container_set_ahab: -1 # Just behind previous segment + recovery_spi: + note: Connected to LPSPI1/2for Low power boot and LPSPI/3/4 for Single boot. SPI NOR recovery image + segments: + primary_image_container_set: 0x00 + secondary_image_container_set: -1 # Just behind previous segment + + # # ======== OTFAD section ======== + # otfad: + + # # ======== Device Hardware Security Module (HSM) section ======== + # devhsm: EdgeLock 2 Go + + # ======== Misc signing section ======== + signing: + pss_padding: true + + # ======== Fastboot ======== + fastboot: + address: 0x9280_0000 + size: 0x2000_0000 + + # ======== nxpuuu ========== + nxpuuu: {} + + # ===== TLV ===== + tlv_blob: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx943/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx943/fuses.json new file mode 100644 index 0000000..7bcfddc --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx943/fuses.json @@ -0,0 +1,12918 @@ +{ + "cpu": "MIMX943", + "groups": [ + { + "group": { + "name": "General", + "description": "General settings configuration" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCK_CFG0", + "description": "LOCK_CFG0", + "index_int": "0", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse0-bits-6-8", + "name": "HSW_CFG_LOCK", + "description": "Hardware and Software Configuration Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "Write Protect, the controlled field can not be burned" + }, + { + "name": "OP", + "value": 2, + "description": "Over-ride Protect, the controlled field shadow registers can not be over-written" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written" + }, + { + "name": "RP", + "value": 4, + "description": "Read Protect, the controlled field can be sensed only, but can't be read from shadow registers" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect - the controlled field can be sensed and overridden, but can't be read or burned" + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect - the controlled field can be sensed and burned, but can't be read or over-written" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks - the controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register" + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "LOCK_CFG_LOCK", + "description": "Lock for Fuse Lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse1", + "name": "LOCK_CFG1", + "description": "LOCK_CFG1", + "index_int": "0x0001", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse1-bits-3-5", + "name": "ELE_MISC1_LOCK", + "description": "Misc. Config lock 1 - Used to lock OEM owned configuration fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse2", + "name": "LOCK_CFG2", + "description": "LOCK_CFG2", + "index_int": "0x0002", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse2-bits-6-8", + "name": "ELE_IPED1_KEY_LOCK", + "description": "IPED1 config lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved3", + "name": "Reserved 0x3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0003", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse4", + "name": "LOCK_CFG4", + "description": "LOCK_CFG4", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse4-bits-12-14", + "name": "ELE_OEM_SRKH_LOCK", + "description": "OEM SRK Hash Lock ", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved5", + "name": "Reserved 0x5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0005", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse6", + "name": "LOCK_CFG6", + "description": "LOCK_CFG6", + "index_int": "0x0006", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse6-bits-0-2", + "name": "ELE_OEM_KEY_PROP_LOCK", + "description": "OEM Key Prop Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse6-bits-3-5", + "name": "ELE_UNIQ_ID_LOCK", + "description": "EdgeLock Enclave Unique ID Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "Write Protect, the controlled field can not be burned" + }, + { + "name": "OP", + "value": 2, + "description": "Over-ride Protect, the controlled field shadow registers can not be over-written" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Over-ride + Write Protect, the controlled field can not be overridden nor burned" + }, + { + "name": "RP", + "value": 4, + "description": "Read Protect, the controlled field can be sensed only, but can't be read from shadow registers" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned" + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register" + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse7", + "name": "LOCK_CFG7", + "description": "LOCK_CFG7", + "index_int": "0x0007", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse7-bits-6-8", + "name": "BOOT_CFG_LOCK", + "description": "Boot config lock - first set (BOOT_CFG0-7)", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "WP_OP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect - the controlled field can be sensed and overridden, but can't be read nor burned", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect - the controlled field can be sensed and burned, but can't be read nor over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-9-11", + "name": "BOOT2_CFG_LOCK", + "description": "Boot config lock - second set (BOOT_CFG8-11)", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "WP_OP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect - the controlled field can be sensed and overridden, but can't be read or burned", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect - the controlled field can be sensed and burned, but can't be read or over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-12-14", + "name": "GPR0_LOCK", + "description": "GPR 0 lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse8", + "name": "LOCK_CFG8", + "description": "LOCK_CFG8", + "index_int": "0x0008", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse8-bits-9-11", + "name": "ELE_OEM_PQC_SRKH_LOCK", + "description": "OEM post-quantum crypto SRKH Lock ", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "WP_OP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect - the controlled field can be sensed and overridden, but can't be read or burned", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect - the controlled field can be sensed and burned, but can't be read or over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse8-bits-12-14", + "name": "ELE_IPED0_KEY_LOCK", + "description": "IPED0 config lock bits " + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse9", + "name": "LOCK_CFG9", + "description": "LOCK_CFG9", + "index_int": "0x0009", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse9-bits-9-11", + "name": "V2X_SHE_MC_LOCK", + "description": "V2X SHE monotonic counter lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse9-bits-12-14", + "name": "V2X_SHE_KEY_LOCK", + "description": "V2X SHE key lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse10", + "name": "LOCK_CFG10", + "description": "LOCK_CFG10", + "index_int": "0x000A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse10-bits-0-2", + "name": "COM_DEVICE_ID1_LOCK", + "description": "Communication Device ID0 Lock - Ethernet", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse10-bits-3-5", + "name": "COM_DEVICE_ID0_LOCK", + "description": "Communication Device ID1 Lock - USB, Ethernet", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse10-bits-9-11", + "name": "BBSM_MC_LOCK", + "description": "Battery Backed Module Secure monotonic counter lock bits.", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse11", + "name": "LOCK_CFG11", + "description": "LOCK_CFG11", + "index_int": "0x000B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse11-bits-0-2", + "name": "GPR1_4_LOCK", + "description": "General Purpose groups 1-4 fuse lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse11-bits-3-5", + "name": "GPR5_8_LOCK", + "description": "General Purpose groups 5-8 fuse lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "WP_OP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect - the controlled field can be sensed and overridden, but can't be read or burned", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect - the controlled field can be sensed and burned, but can't be read or over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse11-bits-6-8", + "name": "GPR9_12_LOCK", + "description": "General Purpose groups 9-12 fuse lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "WP_OP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect - the controlled field can be sensed and overridden, but can't be read or burned", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect - the controlled field can be sensed and burned, but can't be read or over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse11-bits-9-11", + "name": "GPR13_16_LOCK", + "description": "General Purpose groups 13-16 fuse lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse11-bits-12-14", + "name": "GPR17_19_LOCK", + "description": "General Purpose groups 17-19 fuse lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse12", + "name": "ECID3", + "description": "Device Unique ID", + "index_int": "0x000C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse13", + "name": "ECID2", + "description": "Device Unique ID", + "index_int": "0x000D", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse14", + "name": "ECID1", + "description": "Device Unique ID", + "index_int": "0x000E", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse15", + "name": "ECID0", + "description": "Device Unique ID", + "index_int": "0x000F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "Reserved16", + "name": "Reserved 0x10", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0010", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 7 + }, + { + "width": 22 + } + ] + }, + { + "id": "Reserved17", + "name": "Reserved 0x11", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0011", + "is_reserved": true, + "bitfields": [ + { + "width": 4 + }, + { + "width": 8 + }, + { + "width": 2 + }, + { + "width": 6 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + } + ] + }, + { + "id": "Reserved18", + "name": "Reserved 0x12", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0012", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved19", + "name": "Reserved 0x13", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0013", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved20", + "name": "Reserved 0x14", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0014", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 19 + } + ] + }, + { + "id": "Reserved21", + "name": "Reserved 0x15", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0015", + "is_reserved": true + }, + { + "id": "Reserved22", + "name": "Reserved 0x16", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0016", + "is_reserved": true + }, + { + "id": "Reserved23", + "name": "Reserved 0x17", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0017", + "is_reserved": true + }, + { + "id": "fuse24", + "name": "BOOT_CFG0", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0018", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse24-bits-0-3", + "name": "Boot_Mode_Fuses", + "description": "Boot_Mode_Fuses", + "values": [ + { + "name": "BOOT_INTERNAL_FUSES", + "value": 8, + "description": "Cortex-M33 From internal fuses" + }, + { + "name": "BOOT_SERIAL_DOWNLOADER", + "value": 9, + "description": "Cortex-M33 Serial Downloader USB 1" + }, + { + "name": "BOOT_EMMC", + "value": 10, + "description": "Cortex-M33 USDHC1 8-bit eMMC 5.1" + }, + { + "name": "BOOT_SD_CARD", + "value": 11, + "description": "Cortex-M33 USDHC2 4-bit SD3.0" + }, + { + "name": "BOOT_SERIAL_NOR", + "value": 12, + "description": "Cortex-M33 xSPI Serial NOR" + }, + { + "name": "BOOT_SERIAL_NAND", + "value": 13, + "description": "Cortex-M33 xSPI Serial NAND 2K page" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-4", + "name": "Override_xSPI_NOR_Boot_Selection", + "description": "Override xSPI NOR Boot Selection", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Do not override", + "deprecated_names": [ + "0" + ] + }, + { + "name": "Override", + "value": 1, + "description": "Override" + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-5-6", + "name": "xSPI_NOR_Boot_Override_Selection", + "description": "xSPI NOR Boot Override Selection", + "values": [ + { + "name": "FLEXSPI_4B_READ", + "value": 1, + "description": "Flex SPI (Flash with 4B READ(0x13)default supported)", + "deprecated_names": [ + "01" + ] + }, + { + "name": "OCTAL_MICRON", + "value": 2, + "description": "Default Octal mode\u00a0(Micron, Nice to have)", + "deprecated_names": [ + "10" + ] + }, + { + "name": "OCTAL_MXIC", + "value": 3, + "description": "Default Octal mode (Mxic, Nice to have )", + "deprecated_names": [ + "11" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-7", + "name": "xSPI_NAND_4K_Page_Selection", + "description": "xSPI NAND 4K Page Selection", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Not override the default selection (2K page)", + "deprecated_names": [ + "0" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override, 4K page is selected.", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-8", + "name": "uSDHC_Device_Type", + "description": "uSDHC_Device_Type", + "values": [ + { + "name": "EMMC", + "value": 0, + "description": "uSDHC_Device_Type: eMMC" + }, + { + "name": "SD", + "value": 1, + "description": "uSDHC_Device_Type: SD" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-9", + "name": "XSPI_NOR_DATA_IOMUX_SION_EN", + "description": "xSPI NOR data IOMUX SION EN", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "SION is disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "SION is enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-10-11", + "name": "XSPI_NOR_FCB_OFFSET", + "description": "xSPI NOR FCB offset", + "values": [ + { + "name": "OFFSET_0X400", + "value": 0, + "description": "0x400", + "deprecated_names": [ + "0x400" + ] + }, + { + "name": "OFFSET_0X700", + "value": 1, + "description": "0x700", + "deprecated_names": [ + "0x700" + ] + }, + { + "name": "OFFSET_0XA00", + "value": 2, + "description": "0xa00", + "deprecated_names": [ + "0xa00" + ] + }, + { + "name": "OFFSET_0XD00", + "value": 3, + "description": "0xd00", + "deprecated_names": [ + "0xd00" + ] + } + ] + }, + { + "width": 3, + "id": "fuse24-bits-12-14", + "name": "XSPI_NOR_AUTO_PROBE_FEQ_SEL", + "description": "xSPI autoprobe freq sel", + "values": [ + { + "name": "FREQUENCY_100MHZ", + "value": 0, + "description": "100 MHz" + }, + { + "name": "FREQUENCY_133MHZ", + "value": 1, + "description": "133 MHz", + "deprecated_names": [ + "133_MHz" + ] + }, + { + "name": "FREQUENCY_166MHZ", + "value": 2, + "description": "166 MHz", + "deprecated_names": [ + "166_MHz" + ] + }, + { + "name": "FREQUENCY_200MHZ", + "value": 3, + "description": "200 MHz", + "deprecated_names": [ + "200_MHz" + ] + }, + { + "name": "FREQUENCY_80MHZ", + "value": 4, + "description": "80MHz", + "deprecated_names": [ + "80MHz" + ] + }, + { + "name": "FREQUENCY_60MHZ", + "value": 5, + "description": "60MHz", + "deprecated_names": [ + "60MHz" + ] + }, + { + "name": "FREQUENCY_33MHZ", + "value": 6, + "description": "33 MHz" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-15", + "name": "XSPI_NOR_FCB_CHECK", + "description": "xSPI FCB check flag", + "values": [ + { + "name": "IMPLEMENTED", + "value": 0, + "description": "FCB check is implemented" + }, + { + "name": "IGNORED", + "value": 1, + "description": "FCB check is ignored" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-16", + "name": "SD_Loopback_Clock_Source_Sel", + "description": "SD loopback clock source sel", + "values": [ + { + "name": "BIT_4_MODE", + "value": 0, + "description": "4 bit mode selection", + "deprecated_names": [ + "4_bit" + ] + }, + { + "name": "BIT_8_MODE", + "value": 1, + "description": "8 bit mode selection", + "deprecated_names": [ + "8_bit" + ] + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-17-18", + "name": "SD_Speed_Selection", + "description": "SD speed selection ", + "values": [ + { + "name": "NORMAL_SPEED", + "value": 0, + "description": "Normal Speed" + }, + { + "name": "HIGH_SPEED", + "value": 1, + "description": "High Speed" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-19", + "name": "eMMC_Speed_Selection", + "description": "eMMC speed selection", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-20", + "name": "eMMC_fast_boot", + "description": "eMMC fast boot", + "values": [ + { + "name": "BT_FREQ_SEL", + "value": 0, + "description": "See BT_FREQ_SEL BOOT_CFG0[28]", + "deprecated_names": [ + "0" + ] + }, + { + "name": "OVERDRIVE_FREQ", + "value": 1, + "description": "Overdrive Frequency Select.", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-21", + "name": "BT_FREQ_SEL_1", + "description": "Boot frequency / voltage select[0]", + "values": [ + { + "name": "BT_FREQ_SEL_MODE", + "value": 0, + "description": "See BT_FREQ_SEL for boot mode frequency and voltage.", + "deprecated_names": [ + "0" + ] + }, + { + "name": "OVERDRIVE_BOOT_MODE", + "value": 1, + "description": "Overdrive boot mode voltage and frequency.", + "deprecated_names": [ + "1", + "OVERDRIVE_MODE" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-22", + "name": "eMMC_voltage_selection", + "description": "eMMC voltage select", + "values": [ + { + "name": "VOLTAGE_3V3", + "value": 0, + "description": "eMMC_voltage_selection: 3.3v", + "deprecated_names": [ + "3.3v" + ] + }, + { + "name": "VOLTAGE_1V8", + "value": 1, + "description": "eMMC_voltage_selection: 1.8v", + "deprecated_names": [ + "1.8v" + ] + } + ] + }, + { + "width": 5, + "id": "fuse24-bits-23-27", + "name": "xSPI_NOR_Reset_Pin_selections", + "description": "xSPI NOR reset pin selections", + "values": [ + { + "name": "GPIO_PIN_0", + "value": 0, + "description": "GPIO[x].0", + "deprecated_names": [ + "GPIO[x].0" + ] + }, + { + "name": "GPIO_PIN_1", + "value": 1, + "description": "GPIO[x].1" + }, + { + "name": "GPIO_PIN_2", + "value": 2, + "description": "GPIO[x].2" + }, + { + "name": "GPIO_PIN_3", + "value": 3, + "description": "GPIO[x].3" + }, + { + "name": "GPIO_PIN_4", + "value": 4, + "description": "GPIO[x].4" + }, + { + "name": "GPIO_PIN_5", + "value": 5, + "description": "GPIO[x].5" + }, + { + "name": "GPIO_PIN_6", + "value": 6, + "description": "GPIO[x].6" + }, + { + "name": "GPIO_PIN_7", + "value": 7, + "description": "GPIO[x].7" + }, + { + "name": "GPIO_PIN_8", + "value": 8, + "description": "GPIO[x].8" + }, + { + "name": "GPIO_PIN_9", + "value": 9, + "description": "GPIO[x].9" + }, + { + "name": "GPIO_PIN_10", + "value": 10, + "description": "GPIO[x].10" + }, + { + "name": "GPIO_PIN_11", + "value": 11, + "description": "GPIO[x].11" + }, + { + "name": "GPIO_PIN_12", + "value": 12, + "description": "GPIO[x].12" + }, + { + "name": "GPIO_PIN_13", + "value": 13, + "description": "GPIO[x].13" + }, + { + "name": "GPIO_PIN_14", + "value": 14, + "description": "GPIO[x].14" + }, + { + "name": "GPIO_PIN_15", + "value": 15, + "description": "GPIO[x].15" + }, + { + "name": "GPIO_PIN_16", + "value": 16, + "description": "GPIO[x].16" + }, + { + "name": "GPIO_PIN_17", + "value": 17, + "description": "GPIO[x].17" + }, + { + "name": "GPIO_PIN_18", + "value": 18, + "description": "GPIO[x].18" + }, + { + "name": "GPIO_PIN_19", + "value": 19, + "description": "GPIO[x].19" + }, + { + "name": "GPIO_PIN_20", + "value": 20, + "description": "GPIO[x].20" + }, + { + "name": "GPIO_PIN_21", + "value": 21, + "description": "GPIO[x].21" + }, + { + "name": "GPIO_PIN_22", + "value": 22, + "description": "GPIO[x].22" + }, + { + "name": "GPIO_PIN_23", + "value": 23, + "description": "GPIO[x].23" + }, + { + "name": "GPIO_PIN_24", + "value": 24, + "description": "GPIO[x].24" + }, + { + "name": "GPIO_PIN_25", + "value": 25, + "description": "GPIO[x].25" + }, + { + "name": "GPIO_PIN_26", + "value": 26, + "description": "GPIO[x].26" + }, + { + "name": "GPIO_PIN_27", + "value": 27, + "description": "GPIO[x].27" + }, + { + "name": "GPIO_PIN_28", + "value": 28, + "description": "GPIO[x].28" + }, + { + "name": "GPIO_PIN_29", + "value": 29, + "description": "GPIO[x].29" + }, + { + "name": "GPIO_PIN_30", + "value": 30, + "description": "GPIO[x].30" + }, + { + "name": "GPIO_PIN_31", + "value": 31, + "description": "GPIO[x].31", + "deprecated_names": [ + "GPIO[x].31" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-28", + "name": "BT_FREQ_SEL", + "description": "Boot frequency / voltage select [0]", + "values": [ + { + "name": "NOMINAL", + "value": 0, + "description": "BT_FREQ_SEL_1 = 0 and BT_FREQ_SEL = 0, Nominal voltage and frequency." + }, + { + "name": "UNDERDRIVE", + "value": 1, + "description": "BT_FREQ_SEL_1 = 0 and BT_FREQ_SEL = 1, Underdrive voltage and frequency." + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-29", + "name": "BT_FUSE_SEL", + "description": "Boot Fuse indication", + "values": [ + { + "name": "NOT_PROGRAMMED", + "value": 0, + "description": "Boot fuses not programmed", + "deprecated_names": [ + "0", + "DISABLED" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Boot fuses programmed yet", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-30", + "name": "Force_Boot_from_Fuse", + "description": "Force boot from fuse", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disable", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override Boot_Mode pins by boot mode fuses", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-31", + "name": "Force_Serial_Download", + "description": "Force serial download", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Normal boot mode selection based on Boot_Mode and Boot Mode Fuses" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override all other Boot_Mode and Boot Mode Fuses and enter Serial Download" + } + ] + } + ] + }, + { + "id": "fuse25", + "name": "BOOT_CFG1", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0019", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse25-bit-0", + "name": "Fast_Boot_Acknowledge_Disable", + "description": "Fast boot acknowledge disable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Boot Ack Disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Boot Ack Enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-1", + "name": "uSDHC2_Device_Type", + "description": "uSDHC 2 Device Type", + "values": [ + { + "name": "SD_DEVICE", + "value": 0, + "description": "uSDHC2_Device_Type: SD", + "deprecated_names": [ + "SD" + ] + }, + { + "name": "EMMC_DEVICE", + "value": 1, + "description": "uSDHC2_Device_Type: eMMC", + "deprecated_names": [ + "eMMC" + ] + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-2", + "name": "uSDHC_Power_On_Polarity", + "description": "uSDHC power on polarity", + "values": [ + { + "name": "LOW", + "value": 0, + "description": "uSDHC_Power_On_Polarity: Low" + }, + { + "name": "HIGH", + "value": 1, + "description": "uSDHC_Power_On_Polarity: High" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-3", + "name": "uSDHC_Power_CycleDelay", + "description": "uSDHC power cycle delay", + "values": [ + { + "name": "DELAY_5MS", + "value": 0, + "description": "uSDHC_Power_CycleDelay: 5 ms", + "deprecated_names": [ + "5_ms" + ] + }, + { + "name": "DELAY_2_5MS", + "value": 1, + "description": "2.5 ms", + "deprecated_names": [ + "2.5_ms" + ] + } + ] + }, + { + "width": 2, + "id": "fuse25-bits-4-5", + "name": "uSDHC_Power_Cycle_Interval", + "description": "uSDHC power cycle interval", + "values": [ + { + "name": "INTERVAL_20MS", + "value": 0, + "description": "20 ms", + "deprecated_names": [ + "20_ms" + ] + }, + { + "name": "INTERVAL_10MS", + "value": 1, + "description": "10 ms", + "deprecated_names": [ + "10_ms" + ] + }, + { + "name": "INTERVAL_5MS", + "value": 2, + "description": "uSDHC_Power_Cycle_Interval: 5 ms", + "deprecated_names": [ + "5_ms" + ] + }, + { + "name": "INTERVAL_2_5MS", + "value": 3, + "description": "2.5 ms", + "deprecated_names": [ + "2.5_ms" + ] + } + ] + }, + { + "width": 2, + "id": "fuse25-bits-6-7", + "name": "SD_Calibration_Step", + "description": "SD calibration step ", + "values": [ + { + "name": "1_DELAY_CELL", + "value": 0, + "description": "1 delay cell" + }, + { + "name": "2_DELAY_CELL", + "value": 1, + "description": "2 delay cell" + }, + { + "name": "3_DELAY_CELL", + "value": 2, + "description": "3 delay cell" + }, + { + "name": "5_DELAY_CELL", + "value": 3, + "description": "5 delay cell" + } + ] + }, + { + "width": 8, + "id": "fuse25-bits-8-15", + "name": "uSDHC_PAD_Settings_Low_bits", + "description": "uSDHC pad settings low bits. The override value for uSDHC pad settings ", + "values": [ + { + "name": "MIN_DRIVE_SLOW", + "value": 0, + "description": "Minimum drive strength with slow slew rate", + "deprecated_names": [ + "11111111" + ] + }, + { + "name": "MIN_DRIVE_MEDIUM", + "value": 1, + "description": "Minimum drive strength with medium slew rate" + }, + { + "name": "MIN_DRIVE_FAST", + "value": 2, + "description": "Minimum drive strength with fast slew rate" + }, + { + "name": "LOW_DRIVE_NO_PULL", + "value": 3, + "description": "Low drive strength with no pull resistor" + }, + { + "name": "LOW_DRIVE_PULL_DOWN", + "value": 4, + "description": "Low drive strength with pull-down enabled" + }, + { + "name": "LOW_DRIVE_PULL_UP", + "value": 5, + "description": "Low drive strength with pull-up enabled" + }, + { + "name": "MED_DRIVE_NO_PULL", + "value": 6, + "description": "Medium drive strength with no pull resistor" + }, + { + "name": "MED_DRIVE_PULL_DOWN", + "value": 7, + "description": "Medium drive strength with pull-down enabled" + }, + { + "name": "MED_DRIVE_PULL_UP", + "value": 8, + "description": "Medium drive strength with pull-up enabled" + }, + { + "name": "HIGH_DRIVE_NO_PULL", + "value": 9, + "description": "High drive strength with no pull resistor" + }, + { + "name": "HIGH_DRIVE_PULL_DOWN", + "value": 10, + "description": "High drive strength with pull-down enabled" + }, + { + "name": "HIGH_DRIVE_PULL_UP", + "value": 11, + "description": "High drive strength with pull-up enabled" + }, + { + "name": "MAX_DRIVE_NO_PULL", + "value": 12, + "description": "Maximum drive strength with no pull resistor" + }, + { + "name": "MAX_DRIVE_PULL_DOWN", + "value": 13, + "description": "Maximum drive strength with pull-down enabled" + }, + { + "name": "MAX_DRIVE_PULL_UP", + "value": 14, + "description": "Maximum drive strength with pull-up enabled" + }, + { + "name": "LOWER_NIBBLE_SET", + "value": 15, + "description": "Lower 4 bits set (00001111)", + "deprecated_names": [ + "CUSTOM_CONFIG_1" + ] + }, + { + "name": "LOW_DRIVE_SLOW", + "value": 16, + "description": "Low drive strength with slow slew rate" + }, + { + "name": "LOW_DRIVE_MEDIUM", + "value": 17, + "description": "Low drive strength with medium slew rate" + }, + { + "name": "LOW_DRIVE_FAST", + "value": 18, + "description": "Low drive strength with fast slew rate" + }, + { + "name": "MED_DRIVE_SLOW", + "value": 32, + "description": "Medium drive strength with slow slew rate" + }, + { + "name": "MED_DRIVE_MEDIUM", + "value": 33, + "description": "Medium drive strength with medium slew rate" + }, + { + "name": "MED_DRIVE_FAST", + "value": 34, + "description": "Medium drive strength with fast slew rate" + }, + { + "name": "HIGH_DRIVE_SLOW", + "value": 48, + "description": "High drive strength with slow slew rate" + }, + { + "name": "HIGH_DRIVE_MEDIUM", + "value": 49, + "description": "High drive strength with medium slew rate" + }, + { + "name": "HIGH_DRIVE_FAST", + "value": 50, + "description": "High drive strength with fast slew rate" + }, + { + "name": "BIT_6_SET", + "value": 64, + "description": "Pad configuration option 64 (01000000)" + }, + { + "name": "BIT_7_SET", + "value": 128, + "description": "Pad configuration option 128 (10000000)" + }, + { + "name": "MAX_DRIVE_SLOW", + "value": 240, + "description": "Maximum drive strength with slow slew rate" + }, + { + "name": "MAX_DRIVE_MEDIUM", + "value": 241, + "description": "Maximum drive strength with medium slew rate" + }, + { + "name": "MAX_DRIVE_FAST", + "value": 242, + "description": "Maximum drive strength with fast slew rate" + }, + { + "name": "ALL_BITS_SET", + "value": 255, + "description": "Maximum drive strength with all features enabled", + "deprecated_names": [ + "MAX_ALL_SETTINGS" + ] + } + ] + }, + { + "width": 4, + "id": "fuse25-bits-16-19", + "name": "uSDHC_PAD_Setting_High_bits", + "description": "uSDHC pad settings high bits. The override value for uSDHC pad settings", + "values": [ + { + "name": "SETTING_0", + "value": 0, + "description": "uSDHC_PAD_Setting_High_bits: 1111", + "deprecated_names": [ + "1111" + ] + }, + { + "name": "SETTING_1", + "value": 1, + "description": "Pad setting level 1" + }, + { + "name": "SETTING_2", + "value": 2, + "description": "Pad setting level 2" + }, + { + "name": "SETTING_3", + "value": 3, + "description": "Pad setting level 3" + }, + { + "name": "SETTING_4", + "value": 4, + "description": "Pad setting level 4" + }, + { + "name": "SETTING_5", + "value": 5, + "description": "Pad setting level 5" + }, + { + "name": "SETTING_6", + "value": 6, + "description": "Pad setting level 6" + }, + { + "name": "SETTING_7", + "value": 7, + "description": "Pad setting level 7" + }, + { + "name": "SETTING_8", + "value": 8, + "description": "Pad setting level 8" + }, + { + "name": "SETTING_9", + "value": 9, + "description": "Pad setting level 9" + }, + { + "name": "SETTING_10", + "value": 10, + "description": "Pad setting level 10" + }, + { + "name": "SETTING_11", + "value": 11, + "description": "Pad setting level 11" + }, + { + "name": "SETTING_12", + "value": 12, + "description": "Pad setting level 12" + }, + { + "name": "SETTING_13", + "value": 13, + "description": "Pad setting level 13" + }, + { + "name": "SETTING_14", + "value": 14, + "description": "Pad setting level 14" + }, + { + "name": "SETTING_15", + "value": 15, + "description": "Pad setting level 15" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-20", + "name": "Power_Cycle_Enable", + "description": "Power cycle enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "No power cycle", + "deprecated_names": [ + "0" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-21", + "name": "uSDHC_Override_Pad_Settings", + "description": "uSDHC override pad settings " + }, + { + "width": 1, + "id": "fuse25-bit-22", + "name": "uSDHC_DLL_Enable", + "description": "uSDHC DLL enable ", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable DLL for SD/eMMC" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable DLL for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-23", + "name": "BT_FREQ_SET", + "description": "Boot Frequency Set", + "values": [ + { + "name": "NO_SET", + "value": 0, + "description": "BT_FREQ_SEL_1 and BT_FREQ_SEL have not been set" + }, + { + "name": "SET", + "value": 1, + "description": "BT_FREQ_SEL_1 and BT_FREQ_SEL have been set to indicate boot mode voltage." + } + ] + }, + { + "width": 7, + "id": "fuse25-bits-24-30", + "name": "MMC_DLL_DLY", + "description": "MMC DLL delay : Delay target for uSDHC DLL, it is applied to slave mode target delay or override mode target delay depends on DLL Override fuse bit value\n", + "values": [ + { + "name": "DELAY_MIN", + "value": 0, + "description": "Minimum delay value (0000000)", + "deprecated_names": [ + "1111111", + "DELAY_0" + ] + }, + { + "name": "DELAY_1", + "value": 1, + "description": "Delay value 1 - 0000001" + }, + { + "name": "DELAY_2", + "value": 2, + "description": "Delay value 2 - 0000010" + }, + { + "name": "DELAY_3", + "value": 3, + "description": "Delay value 3 - 0000011" + }, + { + "name": "DELAY_4", + "value": 4, + "description": "Delay value 4 - 0000100" + }, + { + "name": "DELAY_5", + "value": 5, + "description": "Delay value 5 - 0000101" + }, + { + "name": "DELAY_6", + "value": 6, + "description": "Delay value 6 - 0000110" + }, + { + "name": "DELAY_7", + "value": 7, + "description": "Delay value 7 - 0000111" + }, + { + "name": "DELAY_8", + "value": 8, + "description": "Delay value 8 - 0001000" + }, + { + "name": "DELAY_9", + "value": 9, + "description": "Delay value 9 - 0001001" + }, + { + "name": "DELAY_10", + "value": 10, + "description": "Delay value 10 - 0001010" + }, + { + "name": "DELAY_11", + "value": 11, + "description": "Delay value 11 - 0001011" + }, + { + "name": "DELAY_12", + "value": 12, + "description": "Delay value 12 - 0001100" + }, + { + "name": "DELAY_13", + "value": 13, + "description": "Delay value 13 - 0001101" + }, + { + "name": "DELAY_14", + "value": 14, + "description": "Delay value 14 - 0001110" + }, + { + "name": "DELAY_15", + "value": 15, + "description": "Delay value 15 - 0001111" + }, + { + "name": "DELAY_16", + "value": 16, + "description": "Delay value 16 - 0010000" + }, + { + "name": "DELAY_17", + "value": 17, + "description": "Delay value 17 - 0010001" + }, + { + "name": "DELAY_18", + "value": 18, + "description": "Delay value 18 - 0010010" + }, + { + "name": "DELAY_19", + "value": 19, + "description": "Delay value 19 - 0010011" + }, + { + "name": "DELAY_20", + "value": 20, + "description": "Delay value 20 - 0010100" + }, + { + "name": "DELAY_21", + "value": 21, + "description": "Delay value 21 - 0010101" + }, + { + "name": "DELAY_22", + "value": 22, + "description": "Delay value 22 - 0010110" + }, + { + "name": "DELAY_23", + "value": 23, + "description": "Delay value 23 - 0010111" + }, + { + "name": "DELAY_24", + "value": 24, + "description": "Delay value 24 - 0011000" + }, + { + "name": "DELAY_25", + "value": 25, + "description": "Delay value 25 - 0011001" + }, + { + "name": "DELAY_26", + "value": 26, + "description": "Delay value 26 - 0011010" + }, + { + "name": "DELAY_27", + "value": 27, + "description": "Delay value 27 - 0011011" + }, + { + "name": "DELAY_28", + "value": 28, + "description": "Delay value 28 - 0011100" + }, + { + "name": "DELAY_29", + "value": 29, + "description": "Delay value 29 - 0011101" + }, + { + "name": "DELAY_30", + "value": 30, + "description": "Delay value 30 - 0011110" + }, + { + "name": "DELAY_31", + "value": 31, + "description": "Delay value 31 - 0011111" + }, + { + "name": "DELAY_32", + "value": 32, + "description": "Delay value 32 - 0100000" + }, + { + "name": "DELAY_33", + "value": 33, + "description": "Delay value 33 - 0100001" + }, + { + "name": "DELAY_34", + "value": 34, + "description": "Delay value 34 - 0100010" + }, + { + "name": "DELAY_35", + "value": 35, + "description": "Delay value 35 - 0100011" + }, + { + "name": "DELAY_36", + "value": 36, + "description": "Delay value 36 - 0100100" + }, + { + "name": "DELAY_37", + "value": 37, + "description": "Delay value 37 - 0100101" + }, + { + "name": "DELAY_38", + "value": 38, + "description": "Delay value 38 - 0100110" + }, + { + "name": "DELAY_39", + "value": 39, + "description": "Delay value 39 - 0100111" + }, + { + "name": "DELAY_40", + "value": 40, + "description": "Delay value 40 - 0101000" + }, + { + "name": "DELAY_41", + "value": 41, + "description": "Delay value 41 - 0101001" + }, + { + "name": "DELAY_42", + "value": 42, + "description": "Delay value 42 - 0101010" + }, + { + "name": "DELAY_43", + "value": 43, + "description": "Delay value 43 - 0101011" + }, + { + "name": "DELAY_44", + "value": 44, + "description": "Delay value 44 - 0101100" + }, + { + "name": "DELAY_45", + "value": 45, + "description": "Delay value 45 - 0101101" + }, + { + "name": "DELAY_46", + "value": 46, + "description": "Delay value 46 - 0101110" + }, + { + "name": "DELAY_47", + "value": 47, + "description": "Delay value 47 - 0101111" + }, + { + "name": "DELAY_48", + "value": 48, + "description": "Delay value 48 - 0110000" + }, + { + "name": "DELAY_49", + "value": 49, + "description": "Delay value 49 - 0110001" + }, + { + "name": "DELAY_50", + "value": 50, + "description": "Delay value 50 - 0110010" + }, + { + "name": "DELAY_51", + "value": 51, + "description": "Delay value 51 - 0110011" + }, + { + "name": "DELAY_52", + "value": 52, + "description": "Delay value 52 - 0110100" + }, + { + "name": "DELAY_53", + "value": 53, + "description": "Delay value 53 - 0110101" + }, + { + "name": "DELAY_54", + "value": 54, + "description": "Delay value 54 - 0110110" + }, + { + "name": "DELAY_55", + "value": 55, + "description": "Delay value 55 - 0110111" + }, + { + "name": "DELAY_56", + "value": 56, + "description": "Delay value 56 - 0111000" + }, + { + "name": "DELAY_57", + "value": 57, + "description": "Delay value 57 - 0111001" + }, + { + "name": "DELAY_58", + "value": 58, + "description": "Delay value 58 - 0111010" + }, + { + "name": "DELAY_59", + "value": 59, + "description": "Delay value 59 - 0111011" + }, + { + "name": "DELAY_60", + "value": 60, + "description": "Delay value 60 - 0111100" + }, + { + "name": "DELAY_61", + "value": 61, + "description": "Delay value 61 - 0111101" + }, + { + "name": "DELAY_62", + "value": 62, + "description": "Delay value 62 - 0111110" + }, + { + "name": "DELAY_63", + "value": 63, + "description": "Delay value 63 - 0111111" + }, + { + "name": "DELAY_64", + "value": 64, + "description": "Delay value 64 - 1000000" + }, + { + "name": "DELAY_65", + "value": 65, + "description": "Delay value 65 - 1000001" + }, + { + "name": "DELAY_66", + "value": 66, + "description": "Delay value 66 - 1000010" + }, + { + "name": "DELAY_67", + "value": 67, + "description": "Delay value 67 - 1000011" + }, + { + "name": "DELAY_68", + "value": 68, + "description": "Delay value 68 - 1000100" + }, + { + "name": "DELAY_69", + "value": 69, + "description": "Delay value 69 - 1000101" + }, + { + "name": "DELAY_70", + "value": 70, + "description": "Delay value 70 - 1000110" + }, + { + "name": "DELAY_71", + "value": 71, + "description": "Delay value 71 - 1000111" + }, + { + "name": "DELAY_72", + "value": 72, + "description": "Delay value 72 - 1001000" + }, + { + "name": "DELAY_73", + "value": 73, + "description": "Delay value 73 - 1001001" + }, + { + "name": "DELAY_74", + "value": 74, + "description": "Delay value 74 - 1001010" + }, + { + "name": "DELAY_75", + "value": 75, + "description": "Delay value 75 - 1001011" + }, + { + "name": "DELAY_76", + "value": 76, + "description": "Delay value 76 - 1001100" + }, + { + "name": "DELAY_77", + "value": 77, + "description": "Delay value 77 - 1001101" + }, + { + "name": "DELAY_78", + "value": 78, + "description": "Delay value 78 - 1001110" + }, + { + "name": "DELAY_79", + "value": 79, + "description": "Delay value 79 - 1001111" + }, + { + "name": "DELAY_80", + "value": 80, + "description": "Delay value 80 - 1010000" + }, + { + "name": "DELAY_81", + "value": 81, + "description": "Delay value 81 - 1010001" + }, + { + "name": "DELAY_82", + "value": 82, + "description": "Delay value 82 - 1010010" + }, + { + "name": "DELAY_83", + "value": 83, + "description": "Delay value 83 - 1010011" + }, + { + "name": "DELAY_84", + "value": 84, + "description": "Delay value 84 - 1010100" + }, + { + "name": "DELAY_85", + "value": 85, + "description": "Delay value 85 - 1010101" + }, + { + "name": "DELAY_86", + "value": 86, + "description": "Delay value 86 - 1010110" + }, + { + "name": "DELAY_87", + "value": 87, + "description": "Delay value 87 - 1010111" + }, + { + "name": "DELAY_88", + "value": 88, + "description": "Delay value 88 - 1011000" + }, + { + "name": "DELAY_89", + "value": 89, + "description": "Delay value 89 - 1011001" + }, + { + "name": "DELAY_90", + "value": 90, + "description": "Delay value 90 - 1011010" + }, + { + "name": "DELAY_91", + "value": 91, + "description": "Delay value 91 - 1011011" + }, + { + "name": "DELAY_92", + "value": 92, + "description": "Delay value 92 - 1011100" + }, + { + "name": "DELAY_93", + "value": 93, + "description": "Delay value 93 - 1011101" + }, + { + "name": "DELAY_94", + "value": 94, + "description": "Delay value 94 - 1011110" + }, + { + "name": "DELAY_95", + "value": 95, + "description": "Delay value 95 - 1011111" + }, + { + "name": "DELAY_96", + "value": 96, + "description": "Delay value 96 - 1100000" + }, + { + "name": "DELAY_97", + "value": 97, + "description": "Delay value 97 - 1100001" + }, + { + "name": "DELAY_98", + "value": 98, + "description": "Delay value 98 - 1100010" + }, + { + "name": "DELAY_99", + "value": 99, + "description": "Delay value 99 - 1100011" + }, + { + "name": "DELAY_100", + "value": 100, + "description": "Delay value 100 - 1100100" + }, + { + "name": "DELAY_101", + "value": 101, + "description": "Delay value 101 - 1100101" + }, + { + "name": "DELAY_102", + "value": 102, + "description": "Delay value 102 - 1100110" + }, + { + "name": "DELAY_103", + "value": 103, + "description": "Delay value 103 - 1100111" + }, + { + "name": "DELAY_104", + "value": 104, + "description": "Delay value 104 - 1101000" + }, + { + "name": "DELAY_105", + "value": 105, + "description": "Delay value 105 - 1101001" + }, + { + "name": "DELAY_106", + "value": 106, + "description": "Delay value 106 - 1101010" + }, + { + "name": "DELAY_107", + "value": 107, + "description": "Delay value 107 - 1101011" + }, + { + "name": "DELAY_108", + "value": 108, + "description": "Delay value 108 - 1101100" + }, + { + "name": "DELAY_109", + "value": 109, + "description": "Delay value 109 - 1101101" + }, + { + "name": "DELAY_110", + "value": 110, + "description": "Delay value 110 - 1101110" + }, + { + "name": "DELAY_111", + "value": 111, + "description": "Delay value 111 - 1101111" + }, + { + "name": "DELAY_112", + "value": 112, + "description": "Delay value 112 - 1110000" + }, + { + "name": "DELAY_113", + "value": 113, + "description": "Delay value 113 - 1110001" + }, + { + "name": "DELAY_114", + "value": 114, + "description": "Delay value 114 - 1110010" + }, + { + "name": "DELAY_115", + "value": 115, + "description": "Delay value 115 - 1110011" + }, + { + "name": "DELAY_116", + "value": 116, + "description": "Delay value 116 - 1110100" + }, + { + "name": "DELAY_117", + "value": 117, + "description": "Delay value 117 - 1110101" + }, + { + "name": "DELAY_118", + "value": 118, + "description": "Delay value 118 - 1110110" + }, + { + "name": "DELAY_119", + "value": 119, + "description": "Delay value 119 - 1110111" + }, + { + "name": "DELAY_120", + "value": 120, + "description": "Delay value 120 - 1111000" + }, + { + "name": "DELAY_121", + "value": 121, + "description": "Delay value 121 - 1111001" + }, + { + "name": "DELAY_122", + "value": 122, + "description": "Delay value 122 - 1111010" + }, + { + "name": "DELAY_123", + "value": 123, + "description": "Delay value 123 - 1111011" + }, + { + "name": "DELAY_124", + "value": 124, + "description": "Delay value 124 - 1111100" + }, + { + "name": "DELAY_125", + "value": 125, + "description": "Delay value 125 - 1111101" + }, + { + "name": "DELAY_126", + "value": 126, + "description": "Delay value 126 - 1111110" + }, + { + "name": "DELAY_MAX", + "value": 127, + "description": "Maximum delay value (1111111)", + "deprecated_names": [ + "DELAY_127" + ] + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-31", + "name": "uSDHC_DLL_Select", + "description": "uSDHC DLL select", + "values": [ + { + "name": "DLL_SLAVE", + "value": 0, + "description": "DLL Slave Mode for" + }, + { + "name": "DLL_OVERRIDE", + "value": 1, + "description": "DLL Override Mode" + } + ] + } + ] + }, + { + "id": "fuse26", + "name": "BOOT_CFG2", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x001A", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse26-bits-0-1", + "name": "xSPI_NAND_Column_Address_Width", + "description": "xSPI NAND Column Address Width", + "values": [ + { + "name": "WIDTH_12_BITS", + "value": 0, + "description": "12-bit column address width" + }, + { + "name": "WIDTH_13_BITS", + "value": 1, + "description": "13-bit column address width" + }, + { + "name": "WIDTH_14_BITS", + "value": 2, + "description": "14-bit column address width" + }, + { + "name": "WIDTH_15_BITS", + "value": 3, + "description": "15-bit column address width" + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-2-3", + "name": "xSPI_NAND_CS_Interval", + "description": "xSPI NAND CS Interval", + "values": [ + { + "name": "INTERVAL_100NS", + "value": 0, + "description": "100 ns" + }, + { + "name": "INTERVAL_200NS", + "value": 1, + "description": "200 ns" + }, + { + "name": "INTERVAL_400NS", + "value": 2, + "description": "400 ns" + }, + { + "name": "INTERVAL_50NS", + "value": 3, + "description": "50 ns" + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-4-5", + "name": "xSPI_NAND_Search_Count", + "description": "xSPI NAND Search Count", + "values": [ + { + "name": "SEARCH_COUNT_2", + "value": 0, + "description": "xSPI_NAND_Search_Count: 2", + "deprecated_names": [ + "2" + ] + }, + { + "name": "2_redudant", + "value": 1, + "description": "2 redudant" + }, + { + "name": "SEARCH_COUNT_4", + "value": 2, + "description": "xSPI_NAND_Search_Count: 4", + "deprecated_names": [ + "4" + ] + }, + { + "name": "SEARCH_COUNT_8", + "value": 3, + "description": "xSPI_NAND_Search_Count: 8", + "deprecated_names": [ + "8" + ] + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-6-7", + "name": "xSPI_NAND_Search_Stride", + "description": "xSPI NAND Search Stride", + "values": [ + { + "name": "64_pages", + "value": 0, + "description": "64 pages" + }, + { + "name": "128_pages", + "value": 1, + "description": "128 pages" + }, + { + "name": "256_pages", + "value": 2, + "description": "256 pages" + }, + { + "name": "32_pages", + "value": 3, + "description": "32 pages" + } + ] + }, + { + "width": 8 + }, + { + "width": 1, + "id": "fuse26-bit-16", + "name": "SPI_Clock_Data_Phase_Control", + "description": "SPI clock data phase control ", + "values": [ + { + "name": "TX_FALL_RX_RISE", + "value": 0, + "description": "Tx on falling, Rx on rising", + "deprecated_names": [ + "0" + ] + }, + { + "name": "TX_RISE_RX_FALL", + "value": 1, + "description": "Tx on rising, Rx on falling", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-17", + "name": "SPI_SCLK_Active", + "description": "SPI SCLK active", + "values": [ + { + "name": "ACTIVE_HIGH", + "value": 0, + "description": "Active high" + }, + { + "name": "ACTIVE_LOW", + "value": 1, + "description": "Active low" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-18", + "name": "SPI_SS_Active", + "description": "SPI SS active", + "values": [ + { + "name": "ACTIVE_LOW", + "value": 0, + "description": "Active low" + }, + { + "name": "ACTIVE_HIGH", + "value": 1, + "description": "Active high" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-19", + "name": "Recovery_SPI_Addressing", + "description": "Recovery SPI addressing", + "values": [ + { + "name": "ADDRESSING_24BIT", + "value": 0, + "description": "3-bytes (24-bit)", + "deprecated_names": [ + "3-bytes" + ] + }, + { + "name": "ADDRESSING_16BIT", + "value": 1, + "description": "2-bytes (16-bit)", + "deprecated_names": [ + "2-bytes" + ] + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-20", + "name": "XSPI_NOR_AUTO_PROBE_EN", + "description": "xSPI NOR auto probe enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Auto probe is disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Auto probe is enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 3, + "id": "fuse26-bits-21-23", + "name": "xSPI_NAND_Busy_Bit_Offset_Override", + "description": "xSPI NAND busy bit offset override ", + "values": [ + { + "name": "BIT_OFFSET_0", + "value": 0, + "description": "Busy bit at offset 0 in 8-bit register" + }, + { + "name": "BIT_OFFSET_1", + "value": 1, + "description": "Busy bit at offset 1 in 8-bit register" + }, + { + "name": "BIT_OFFSET_2", + "value": 2, + "description": "Busy bit at offset 2 in 8-bit register" + }, + { + "name": "BIT_OFFSET_3", + "value": 3, + "description": "Busy bit at offset 3 in 8-bit register" + }, + { + "name": "BIT_OFFSET_4", + "value": 4, + "description": "Busy bit at offset 4 in 8-bit register" + }, + { + "name": "BIT_OFFSET_5", + "value": 5, + "description": "Busy bit at offset 5 in 8-bit register" + }, + { + "name": "BIT_OFFSET_6", + "value": 6, + "description": "Busy bit at offset 6 in 8-bit register" + }, + { + "name": "BIT_OFFSET_7", + "value": 7, + "description": "Busy bit at offset 7 in 8-bit register" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-24", + "name": "Recovery_CS_Select", + "description": "Recovery CS select", + "values": [ + { + "name": "CS0", + "value": 0, + "description": "Recovery_CS_Select: CS0" + }, + { + "name": "CS1", + "value": 1, + "description": "Recovery_CS_Select: CS1" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse26-bits-26-27", + "name": "Recovery_Port_Select", + "description": "Recovery Port Select in LP boot mode ", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + } + ] + }, + { + "width": 4, + "id": "fuse26-bits-28-31", + "name": "XSPI_DUMMY_CYCLE_SEL", + "description": "xSPI Dummy Cycle Select", + "values": [ + { + "name": "0_cycle", + "value": 0, + "description": "0 cycle" + }, + { + "name": "CYCLE_1", + "value": 1, + "description": "1 cycle" + }, + { + "name": "CYCLE_2", + "value": 2, + "description": "2 cycles" + }, + { + "name": "CYCLE_3", + "value": 3, + "description": "3 cycles" + }, + { + "name": "CYCLE_4", + "value": 4, + "description": "4 cycles" + }, + { + "name": "CYCLE_5", + "value": 5, + "description": "5 cycles" + }, + { + "name": "CYCLE_6", + "value": 6, + "description": "6 cycles" + }, + { + "name": "CYCLE_7", + "value": 7, + "description": "7 cycles" + }, + { + "name": "CYCLE_8", + "value": 8, + "description": "8 cycles" + }, + { + "name": "CYCLE_9", + "value": 9, + "description": "9 cycles" + }, + { + "name": "CYCLE_10", + "value": 10, + "description": "10 cycles" + }, + { + "name": "CYCLE_11", + "value": 11, + "description": "11 cycles" + }, + { + "name": "CYCLE_12", + "value": 12, + "description": "12 cycles" + }, + { + "name": "CYCLE_13", + "value": 13, + "description": "13 cycles" + }, + { + "name": "CYCLE_14", + "value": 14, + "description": "14 cycles" + }, + { + "name": "15_cycles", + "value": 15, + "description": "15 cycles" + } + ] + } + ] + }, + { + "id": "Reserved27", + "name": "Reserved 0x1B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001B", + "is_reserved": true, + "bitfields": [ + { + "width": 24 + }, + { + "width": 8 + } + ] + }, + { + "id": "fuse28", + "name": "BOOT_CFG4", + "description": "BOOT Configuration", + "index_int": "0x001C", + "bitfields": [ + { + "width": 32, + "id": "fuse28-bits-0-31", + "name": "XSPI_FLASH_SDR_DLLCRA", + "description": "The fuse value is used to override the XSPI register DLLCRA in SDR mode.\nIf a customizable value is available in FCB, it will be used to override the register." + } + ] + }, + { + "id": "fuse29", + "name": "BOOT_CFG5", + "description": "BOOT Configuration", + "index_int": "0x001D", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse29-bits-0-31", + "name": "XSPI_FLASH_SDR_SMPR", + "description": "The fuse value is used to override the XSPI register SMPR in SDR mode.\nIf a customizable value is available in FCB, it will be used to override the register." + } + ] + }, + { + "id": "fuse30", + "name": "BOOT_CFG6", + "description": "BOOT Configuration", + "index_int": "0x001E", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse30-bits-0-31", + "name": "XSPI_DLASH_DDR_DLLCRA", + "description": "The fuse value is used to override the XSPI register DLLCRA in DDR mode.\nIf a customizable value is available in FCB, it will be used to override the register." + } + ] + }, + { + "id": "fuse31", + "name": "BOOT_CFG7", + "description": "BOOT Configuration", + "index_int": "0x001F", + "bitfields": [ + { + "width": 32, + "id": "fuse31-bits-0-31", + "name": "XSPI_FLASH_DDR_SMPR", + "description": "The fuse value is used to override the XSPI register SMPR in DDR mode.\nIf a customizable value is available in FCB, it will be used to override the register." + } + ] + }, + { + "id": "fuse32", + "name": "BOOT_CFG8", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0020", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-1", + "name": "BBNSM_EN", + "description": "BBNSM enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-2", + "name": "SION_EN", + "description": "SION enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-3", + "name": "CCM_CLKO_MUX", + "description": "CCM Clock Mux Select", + "values": [ + { + "name": "CCM_CLKO", + "value": 0, + "description": "Default, Select CCM CLKO", + "deprecated_names": [ + "0" + ] + }, + { + "name": "Select_GPIO", + "value": 1, + "description": "Select GPIO" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-4", + "name": "ROMCP_LOCK", + "description": "Rom CP Lock", + "values": [ + { + "name": "NOT_LOCKED", + "value": 0, + "description": "Not Locked" + }, + { + "name": "LOCKED", + "value": 1, + "description": "Locked" + } + ] + }, + { + "width": 3 + }, + { + "width": 8, + "id": "fuse32-bits-8-15", + "name": "Secondary_boot_offset", + "description": "Secondary boot offset", + "values": [ + { + "name": "OFFSET_4MB", + "value": 0, + "description": "Secondary_boot_offset: 4 MB", + "deprecated_names": [ + "4_MB" + ] + }, + { + "name": "OFFSET_2MB", + "value": 1, + "description": "Secondary_boot_offset: 2 MB", + "deprecated_names": [ + "2_MB" + ] + }, + { + "name": "OFFSET_1MB", + "value": 2, + "description": "Secondary_boot_offset: 1 MB", + "deprecated_names": [ + "1_MB" + ] + }, + { + "name": "OFFSET_8MB", + "value": 3, + "description": "Secondary_boot_offset: 8 MB", + "deprecated_names": [ + "8_MB" + ] + }, + { + "name": "OFFSET_16MB", + "value": 4, + "description": "Secondary_boot_offset: 8MB", + "deprecated_names": [ + "8MB" + ] + }, + { + "name": "OFFSET_32MB", + "value": 5, + "description": "Secondary_boot_offset: 32MB", + "deprecated_names": [ + "32MB" + ] + }, + { + "name": "OFFSET_64MB", + "value": 6, + "description": "Offset = 64 MB" + }, + { + "name": "OFFSET_128MB", + "value": 7, + "description": "Offset = 128 MB" + }, + { + "name": "OFFSET_256MB", + "value": 8, + "description": "Offset = 256 MB" + }, + { + "name": "OFFSET_512MB", + "value": 9, + "description": "Offset = 512 MB", + "deprecated_names": [ + "512_MB" + ] + }, + { + "name": "EMMC_LAST_128MB", + "value": 254, + "description": "EMMC last 128 MB", + "deprecated_names": [ + "last_128_MB" + ] + }, + { + "name": "EMMC_LAST_24KB", + "value": 255, + "description": "EMMC last 24KB", + "deprecated_names": [ + "last_24_KB" + ] + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-17", + "name": "M33_D_Cache_Disable", + "description": "M33 D cache disable", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-19", + "name": "M33_Recovery_Disable", + "description": "Disable A55 SPI recovery", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-20", + "name": "M33_Recovery_Device", + "description": "Disable M33 SPI recovery", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-22", + "name": "AHAB_Reauth", + "description": "AHAB reauth", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Re-authenticate the whole boot code after standby exit is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Re-authenticate the whole boot code after standby exit is enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-23", + "name": "M33_WDOG_Enable", + "description": "M33 WDOG enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-24", + "name": "A55_I_Cache_Dis", + "description": "A55 I cache dis", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable A55 I-Cache during ROM Boot" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable A55 I-Cache during ROM Boot" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-25", + "name": "M33_I_Cache_Dis", + "description": "M33 I cache dis", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable M33 I-Cache during ROM Boot" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable M33 I-Cache during ROM Boot" + } + ] + }, + { + "width": 2, + "id": "fuse32-bits-26-27", + "name": "WDOG_Timeout_Select", + "description": "WDOG timeout select", + "values": [ + { + "name": "TIMEOUT_2S", + "value": 0, + "description": "WDOG_Timeout_Select: 2 s", + "deprecated_names": [ + "2_s" + ] + }, + { + "name": "TIMEOUT_1_5S", + "value": 1, + "description": "1.5 s", + "deprecated_names": [ + "1.5_s" + ] + }, + { + "name": "TIMEOUT_1S", + "value": 2, + "description": "WDOG_Timeout_Select: 1 s", + "deprecated_names": [ + "1_s" + ] + }, + { + "name": "TIMEOUT_0_5S", + "value": 3, + "description": "0.5 s", + "deprecated_names": [ + "0.5_s" + ] + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-29", + "name": "USB_HID_EP1_Out_Disable", + "description": "USB HID EP1 out disable", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "USB EP1 Transfer(EP1 Out enable)" + }, + { + "name": "DISABLED", + "value": 1, + "description": "USB EP1 Transfer(EP1 Out disable)" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-30", + "name": "PLL_LATE_EN", + "description": "PLL late en", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Configure PLLs before installing ROM patch", + "deprecated_names": [ + "0" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Configure PLLs after install ROM patch", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-31", + "name": "M33_TCM_MBIST_AT_BOOT_EN", + "description": "M33 TCM MBIST at boot enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + } + ] + }, + { + "id": "fuse33", + "name": "BOOT_CFG9", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0021", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse33-bits-7-8", + "name": "XSPI_HOLD_TIME", + "description": "Delay XSPI_HOLD_TIME until the nor flash getting ready when powered on if needed.\n500us is an estimated time from powered on to the start of xspi initialization.", + "values": [ + { + "name": "DELAY_500US", + "value": 0, + "description": "delay 500us" + }, + { + "name": "DELAY_1MS", + "value": 1, + "description": "delay 1ms" + }, + { + "name": "DELAY_3MS", + "value": 2, + "description": "delay 3ms" + }, + { + "name": "DELAY_10MS", + "value": 3, + "description": "delay 10ms" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 7, + "id": "fuse33-bits-13-19", + "name": "XSPI_DELAY_CELL_NUM", + "description": "Fuse configured SLV_DLY_COARSE in DLLCR. The value in the field is multiplied by kxSpiHighdllDelayCellUnit_Min to calculate the read delay in each delay tap. \nThe read delay for each delay tap is calculated as : \nXSPI_DELAY_CELL_NUM * kxSpiHighdllDelayCellUnit_Min(ps)\nwhere kxSpiHighdllDelayCellUnit_Min = 30ps\nNote: This fuse only works when frequency is under 60M for external input DQS.", + "values": [ + { + "name": "DELAY_CELLS_0", + "value": 0, + "description": "No delay cells active" + }, + { + "name": "DELAY_CELLS_1", + "value": 1, + "description": "1 delay cell active" + }, + { + "name": "DELAY_CELLS_2", + "value": 2, + "description": "2 delay cells active" + }, + { + "name": "DELAY_CELLS_3", + "value": 3, + "description": "3 delay cells active" + }, + { + "name": "DELAY_CELLS_4", + "value": 4, + "description": "4 delay cells active" + }, + { + "name": "DELAY_CELLS_5", + "value": 5, + "description": "5 delay cells active" + }, + { + "name": "DELAY_CELLS_6", + "value": 6, + "description": "6 delay cells active" + }, + { + "name": "DELAY_CELLS_7", + "value": 7, + "description": "7 delay cells active" + }, + { + "name": "DELAY_CELLS_8", + "value": 8, + "description": "8 delay cells active" + }, + { + "name": "DELAY_CELLS_9", + "value": 9, + "description": "9 delay cells active" + }, + { + "name": "DELAY_CELLS_10", + "value": 10, + "description": "10 delay cells active" + }, + { + "name": "DELAY_CELLS_11", + "value": 11, + "description": "11 delay cells active" + }, + { + "name": "DELAY_CELLS_12", + "value": 12, + "description": "12 delay cells active" + }, + { + "name": "DELAY_CELLS_13", + "value": 13, + "description": "13 delay cells active" + }, + { + "name": "DELAY_CELLS_14", + "value": 14, + "description": "14 delay cells active" + }, + { + "name": "DELAY_CELLS_15", + "value": 15, + "description": "15 delay cells active" + }, + { + "name": "DELAY_CELLS_16", + "value": 16, + "description": "16 delay cells" + }, + { + "name": "DELAY_CELLS_17", + "value": 17, + "description": "17 delay cells" + }, + { + "name": "DELAY_CELLS_18", + "value": 18, + "description": "18 delay cells" + }, + { + "name": "DELAY_CELLS_19", + "value": 19, + "description": "19 delay cells" + }, + { + "name": "DELAY_CELLS_20", + "value": 20, + "description": "20 delay cells" + }, + { + "name": "DELAY_CELLS_21", + "value": 21, + "description": "21 delay cells" + }, + { + "name": "DELAY_CELLS_22", + "value": 22, + "description": "22 delay cells" + }, + { + "name": "DELAY_CELLS_23", + "value": 23, + "description": "23 delay cells" + }, + { + "name": "DELAY_CELLS_24", + "value": 24, + "description": "24 delay cells" + }, + { + "name": "DELAY_CELLS_25", + "value": 25, + "description": "25 delay cells" + }, + { + "name": "DELAY_CELLS_26", + "value": 26, + "description": "26 delay cells" + }, + { + "name": "DELAY_CELLS_27", + "value": 27, + "description": "27 delay cells" + }, + { + "name": "DELAY_CELLS_28", + "value": 28, + "description": "28 delay cells" + }, + { + "name": "DELAY_CELLS_29", + "value": 29, + "description": "29 delay cells" + }, + { + "name": "DELAY_CELLS_30", + "value": 30, + "description": "30 delay cells" + }, + { + "name": "DELAY_CELLS_31", + "value": 31, + "description": "31 delay cells" + }, + { + "name": "DELAY_CELLS_32", + "value": 32, + "description": "32 delay cells" + }, + { + "name": "DELAY_CELLS_33", + "value": 33, + "description": "33 delay cells" + }, + { + "name": "DELAY_CELLS_34", + "value": 34, + "description": "34 delay cells" + }, + { + "name": "DELAY_CELLS_35", + "value": 35, + "description": "35 delay cells" + }, + { + "name": "DELAY_CELLS_36", + "value": 36, + "description": "36 delay cells" + }, + { + "name": "DELAY_CELLS_37", + "value": 37, + "description": "37 delay cells" + }, + { + "name": "DELAY_CELLS_38", + "value": 38, + "description": "38 delay cells" + }, + { + "name": "DELAY_CELLS_39", + "value": 39, + "description": "39 delay cells" + }, + { + "name": "DELAY_CELLS_40", + "value": 40, + "description": "40 delay cells" + }, + { + "name": "DELAY_CELLS_41", + "value": 41, + "description": "41 delay cells" + }, + { + "name": "DELAY_CELLS_42", + "value": 42, + "description": "42 delay cells" + }, + { + "name": "DELAY_CELLS_43", + "value": 43, + "description": "43 delay cells" + }, + { + "name": "DELAY_CELLS_44", + "value": 44, + "description": "44 delay cells" + }, + { + "name": "DELAY_CELLS_45", + "value": 45, + "description": "45 delay cells" + }, + { + "name": "DELAY_CELLS_46", + "value": 46, + "description": "46 delay cells" + }, + { + "name": "DELAY_CELLS_47", + "value": 47, + "description": "47 delay cells" + }, + { + "name": "DELAY_CELLS_48", + "value": 48, + "description": "48 delay cells" + }, + { + "name": "DELAY_CELLS_49", + "value": 49, + "description": "49 delay cells" + }, + { + "name": "DELAY_CELLS_50", + "value": 50, + "description": "50 delay cells" + }, + { + "name": "DELAY_CELLS_51", + "value": 51, + "description": "51 delay cells" + }, + { + "name": "DELAY_CELLS_52", + "value": 52, + "description": "52 delay cells" + }, + { + "name": "DELAY_CELLS_53", + "value": 53, + "description": "53 delay cells" + }, + { + "name": "DELAY_CELLS_54", + "value": 54, + "description": "54 delay cells" + }, + { + "name": "DELAY_CELLS_55", + "value": 55, + "description": "55 delay cells" + }, + { + "name": "DELAY_CELLS_56", + "value": 56, + "description": "56 delay cells" + }, + { + "name": "DELAY_CELLS_57", + "value": 57, + "description": "57 delay cells" + }, + { + "name": "DELAY_CELLS_58", + "value": 58, + "description": "58 delay cells" + }, + { + "name": "DELAY_CELLS_59", + "value": 59, + "description": "59 delay cells" + }, + { + "name": "DELAY_CELLS_60", + "value": 60, + "description": "60 delay cells" + }, + { + "name": "DELAY_CELLS_61", + "value": 61, + "description": "61 delay cells" + }, + { + "name": "DELAY_CELLS_62", + "value": 62, + "description": "62 delay cells" + }, + { + "name": "DELAY_CELLS_63", + "value": 63, + "description": "63 delay cells" + }, + { + "name": "DELAY_CELLS_64", + "value": 64, + "description": "64 delay cells" + }, + { + "name": "DELAY_CELLS_65", + "value": 65, + "description": "65 delay cells" + }, + { + "name": "DELAY_CELLS_66", + "value": 66, + "description": "66 delay cells" + }, + { + "name": "DELAY_CELLS_67", + "value": 67, + "description": "67 delay cells" + }, + { + "name": "DELAY_CELLS_68", + "value": 68, + "description": "68 delay cells" + }, + { + "name": "DELAY_CELLS_69", + "value": 69, + "description": "69 delay cells" + }, + { + "name": "DELAY_CELLS_70", + "value": 70, + "description": "70 delay cells" + }, + { + "name": "DELAY_CELLS_71", + "value": 71, + "description": "71 delay cells" + }, + { + "name": "DELAY_CELLS_72", + "value": 72, + "description": "72 delay cells" + }, + { + "name": "DELAY_CELLS_73", + "value": 73, + "description": "73 delay cells" + }, + { + "name": "DELAY_CELLS_74", + "value": 74, + "description": "74 delay cells" + }, + { + "name": "DELAY_CELLS_75", + "value": 75, + "description": "75 delay cells" + }, + { + "name": "DELAY_CELLS_76", + "value": 76, + "description": "76 delay cells" + }, + { + "name": "DELAY_CELLS_77", + "value": 77, + "description": "77 delay cells" + }, + { + "name": "DELAY_CELLS_78", + "value": 78, + "description": "78 delay cells" + }, + { + "name": "DELAY_CELLS_79", + "value": 79, + "description": "79 delay cells" + }, + { + "name": "DELAY_CELLS_80", + "value": 80, + "description": "80 delay cells" + }, + { + "name": "DELAY_CELLS_81", + "value": 81, + "description": "81 delay cells" + }, + { + "name": "DELAY_CELLS_82", + "value": 82, + "description": "82 delay cells" + }, + { + "name": "DELAY_CELLS_83", + "value": 83, + "description": "83 delay cells" + }, + { + "name": "DELAY_CELLS_84", + "value": 84, + "description": "84 delay cells" + }, + { + "name": "DELAY_CELLS_85", + "value": 85, + "description": "85 delay cells" + }, + { + "name": "DELAY_CELLS_86", + "value": 86, + "description": "86 delay cells" + }, + { + "name": "DELAY_CELLS_87", + "value": 87, + "description": "87 delay cells" + }, + { + "name": "DELAY_CELLS_88", + "value": 88, + "description": "88 delay cells" + }, + { + "name": "DELAY_CELLS_89", + "value": 89, + "description": "89 delay cells" + }, + { + "name": "DELAY_CELLS_90", + "value": 90, + "description": "90 delay cells" + }, + { + "name": "DELAY_CELLS_91", + "value": 91, + "description": "91 delay cells" + }, + { + "name": "DELAY_CELLS_92", + "value": 92, + "description": "92 delay cells" + }, + { + "name": "DELAY_CELLS_93", + "value": 93, + "description": "93 delay cells" + }, + { + "name": "DELAY_CELLS_94", + "value": 94, + "description": "94 delay cells" + }, + { + "name": "DELAY_CELLS_95", + "value": 95, + "description": "95 delay cells" + }, + { + "name": "DELAY_CELLS_96", + "value": 96, + "description": "96 delay cells" + }, + { + "name": "DELAY_CELLS_97", + "value": 97, + "description": "97 delay cells" + }, + { + "name": "DELAY_CELLS_98", + "value": 98, + "description": "98 delay cells" + }, + { + "name": "DELAY_CELLS_99", + "value": 99, + "description": "99 delay cells" + }, + { + "name": "DELAY_CELLS_100", + "value": 100, + "description": "100 delay cells" + }, + { + "name": "DELAY_CELLS_101", + "value": 101, + "description": "101 delay cells" + }, + { + "name": "DELAY_CELLS_102", + "value": 102, + "description": "102 delay cells" + }, + { + "name": "DELAY_CELLS_103", + "value": 103, + "description": "103 delay cells" + }, + { + "name": "DELAY_CELLS_104", + "value": 104, + "description": "104 delay cells" + }, + { + "name": "DELAY_CELLS_105", + "value": 105, + "description": "105 delay cells" + }, + { + "name": "DELAY_CELLS_106", + "value": 106, + "description": "106 delay cells" + }, + { + "name": "DELAY_CELLS_107", + "value": 107, + "description": "107 delay cells" + }, + { + "name": "DELAY_CELLS_108", + "value": 108, + "description": "108 delay cells" + }, + { + "name": "DELAY_CELLS_109", + "value": 109, + "description": "109 delay cells" + }, + { + "name": "DELAY_CELLS_110", + "value": 110, + "description": "110 delay cells" + }, + { + "name": "DELAY_CELLS_111", + "value": 111, + "description": "111 delay cells" + }, + { + "name": "DELAY_CELLS_112", + "value": 112, + "description": "112 delay cells" + }, + { + "name": "DELAY_CELLS_113", + "value": 113, + "description": "113 delay cells" + }, + { + "name": "DELAY_CELLS_114", + "value": 114, + "description": "114 delay cells" + }, + { + "name": "DELAY_CELLS_115", + "value": 115, + "description": "115 delay cells" + }, + { + "name": "DELAY_CELLS_116", + "value": 116, + "description": "116 delay cells" + }, + { + "name": "DELAY_CELLS_117", + "value": 117, + "description": "117 delay cells" + }, + { + "name": "DELAY_CELLS_118", + "value": 118, + "description": "118 delay cells" + }, + { + "name": "DELAY_CELLS_119", + "value": 119, + "description": "119 delay cells" + }, + { + "name": "DELAY_CELLS_120", + "value": 120, + "description": "120 delay cells" + }, + { + "name": "DELAY_CELLS_121", + "value": 121, + "description": "121 delay cells" + }, + { + "name": "DELAY_CELLS_122", + "value": 122, + "description": "122 delay cells" + }, + { + "name": "DELAY_CELLS_123", + "value": 123, + "description": "123 delay cells" + }, + { + "name": "DELAY_CELLS_124", + "value": 124, + "description": "124 delay cells" + }, + { + "name": "DELAY_CELLS_125", + "value": 125, + "description": "125 delay cells" + }, + { + "name": "DELAY_CELLS_126", + "value": 126, + "description": "126 delay cells" + }, + { + "name": "DELAY_CELLS_127", + "value": 127, + "description": "127 delay cells" + } + ] + }, + { + "width": 3, + "id": "fuse33-bits-20-22", + "name": "XSPI_FLASH_ENHANCE_MODE", + "description": "Boot Configuration See tab BOOT_CFG", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "kSerialNorEnhanceMode_Disabled" + }, + { + "name": "DATA_ORDER_SWAPPED", + "value": 3, + "description": "kSerialNorEnhanceMode_DataOrderSwapped" + }, + { + "name": "INTERNAL_LOOPBACK", + "value": 5, + "description": "kSerialNorEnhanceMode_InternalLoopback" + }, + { + "name": "SPI_MODE", + "value": 6, + "description": "kSerialNorEnhanceMode_SpiMode" + }, + { + "name": "EXT_DQS", + "value": 7, + "description": "kSerialNorEnhanceMode_ExtDqs" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-23", + "name": "XSPI_DQS_INTERNAL_LOOPBACK_EN", + "description": "Boot Configuration See tab BOOT_CFG" + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse33-bit-25", + "name": "DOUBLE_AUTH_EN", + "description": "Enable double authentication of NXP FW using OEM signing key", + "values": [ + { + "name": "NXP", + "value": 0, + "description": "Do not enable double authentication of NXP FW" + }, + { + "name": "NXP_OEM", + "value": 1, + "description": "NXP FW will be signed by NXP and OEM." + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-26", + "name": "IPED0_ENABLE", + "description": "Enable IPED0 at boot", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "No inline decryption enabled for IPED0", + "deprecated_names": [ + "NXP" + ] + }, + { + "name": "NXP_OEM", + "value": 1, + "description": "NXP FW will be signed by NXP and OEM." + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "fuse33-bits-28-30", + "name": "DEVICE_BOOT_OFFSET", + "description": "Device Boot Offset." + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved34", + "name": "Reserved 0x22", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0022", + "is_reserved": true, + "bitfields": [ + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 27 + } + ] + }, + { + "id": "fuse35", + "name": "BOOT_CFG11", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x0023", + "bitfields": [ + { + "width": 1, + "id": "fuse35-bit-0", + "name": "USB2_SDP_Enable", + "description": "USB2 Serial Download Port Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "USB2 SDP is Disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "USB2 SDP is Enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-1", + "name": "USB1_SDP_Disable", + "description": "USB1 Serial Download Port Disable", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "USB1 SDP is Enabled", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "USB1 SDP is Disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 28 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved36", + "name": "Reserved 0x24", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0024", + "is_reserved": true, + "reg_width": 16 + }, + { + "id": "Reserved37", + "name": "Reserved 0x25", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0025", + "is_reserved": true, + "reg_width": 16 + }, + { + "id": "Reserved38", + "name": "Reserved 0x26", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0026", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved39", + "name": "Reserved 0x27", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0027", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved40", + "name": "Reserved 0x28", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0028", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved41", + "name": "Reserved 0x29", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0029", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved42", + "name": "Reserved 0x2A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002A", + "is_reserved": true, + "bitfields": [ + { + "width": 12 + }, + { + "width": 6 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 8 + } + ] + }, + { + "id": "Reserved43", + "name": "Reserved 0x2B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002B", + "is_reserved": true, + "bitfields": [ + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved44", + "name": "Reserved 0x2C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002C", + "is_reserved": true, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved45", + "name": "Reserved 0x2D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002D", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 7 + }, + { + "width": 6 + }, + { + "width": 6 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved46", + "name": "Reserved 0x2E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002E", + "is_reserved": true, + "bitfields": [ + { + "width": 7 + }, + { + "width": 7 + }, + { + "width": 6 + }, + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved47", + "name": "Reserved 0x2F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002F", + "is_reserved": true, + "bitfields": [ + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 8 + } + ] + }, + { + "id": "fuse48", + "name": "OTP_UNIQ_ID3", + "description": "Used by EdgeLock Enclave for:", + "index_int": "0x0030", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse49", + "name": "OTP_UNIQ_ID2", + "description": "Used by EdgeLock Enclave for:", + "index_int": "0x0031", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse50", + "name": "OTP_UNIQ_ID1", + "description": "Used by EdgeLock Enclave for:", + "index_int": "0x0032", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse51", + "name": "OTP_UNIQ_ID0", + "description": "Used by EdgeLock Enclave for:", + "index_int": "0x0033", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "Reserved52", + "name": "Reserved 0x34", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0034", + "is_reserved": true + }, + { + "id": "Reserved53", + "name": "Reserved 0x35", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0035", + "is_reserved": true + }, + { + "id": "Reserved54", + "name": "Reserved 0x36", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0036", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved55", + "name": "Reserved 0x37", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0037", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "fuse56", + "name": "ELE_MISC_CTRL0", + "description": "OEM controlled Fuse.", + "index_int": "0x0038", + "reg_width": 16, + "bitfields": [ + { + "width": 4, + "id": "fuse56-bits-0-3", + "name": "SOC_SCOPE_PRIMARY_DBG_DISABLE", + "description": "Debug Disable for CM33 domain. The 4 bits correspond to : {spiden,sniden,dbgen,niden} ", + "values": [ + { + "name": "ALL_DOMAINS_ENABLED", + "value": 0, + "description": "1111 : Any debug domain can be disabled individually.", + "deprecated_names": [ + "0000" + ] + }, + { + "name": "DOMAIN_0_DISABLED", + "value": 1, + "description": "Debug domain 0 disabled, others enabled" + }, + { + "name": "DOMAIN_1_DISABLED", + "value": 2, + "description": "Debug domain 1 disabled, others enabled" + }, + { + "name": "DOMAINS_0_1_DISABLED", + "value": 3, + "description": "Debug domains 0-1 disabled, others enabled" + }, + { + "name": "DOMAIN_2_DISABLED", + "value": 4, + "description": "Debug domain 2 disabled, others enabled" + }, + { + "name": "DOMAINS_0_2_DISABLED", + "value": 5, + "description": "Debug domains 0,2 disabled, others enabled" + }, + { + "name": "DOMAINS_1_2_DISABLED", + "value": 6, + "description": "Debug domains 1-2 disabled, others enabled" + }, + { + "name": "DOMAINS_0_1_2_DISABLED", + "value": 7, + "description": "Debug domains 0-2 disabled, domain 3 enabled" + }, + { + "name": "DOMAIN_3_DISABLED", + "value": 8, + "description": "Debug domain 3 disabled, others enabled" + }, + { + "name": "DOMAINS_0_3_DISABLED", + "value": 9, + "description": "Debug domains 0,3 disabled, others enabled" + }, + { + "name": "DOMAINS_1_3_DISABLED", + "value": 10, + "description": "Debug domains 1,3 disabled, others enabled" + }, + { + "name": "DOMAINS_0_1_3_DISABLED", + "value": 11, + "description": "Debug domains 0-1,3 disabled, domain 2 enabled" + }, + { + "name": "DOMAINS_2_3_DISABLED", + "value": 12, + "description": "Debug domains 2-3 disabled, others enabled" + }, + { + "name": "DOMAINS_0_2_3_DISABLED", + "value": 13, + "description": "Debug domains 0,2-3 disabled, domain 1 enabled" + }, + { + "name": "DOMAINS_1_2_3_DISABLED", + "value": 14, + "description": "Debug domains 1-3 disabled, domain 0 enabled" + }, + { + "name": "ALL_DOMAINS_DISABLED", + "value": 15, + "description": "All debug domains are disabled" + } + ] + }, + { + "width": 4, + "id": "fuse56-bits-4-7", + "name": "SOC_SCOPE1_DBG_DISABLE", + "description": "Debug disable for Trace Memory controller. The 4 bits correspond to : {spiden,sniden,dbgen,niden}", + "values": [ + { + "name": "ALL_DOMAINS_ENABLED", + "value": 0, + "description": "1111 : Any debug domain can be disabled individually.", + "deprecated_names": [ + "0000" + ] + }, + { + "name": "DOMAIN_0_DISABLED", + "value": 1, + "description": "Debug domain 0 is disabled" + }, + { + "name": "DOMAIN_1_DISABLED", + "value": 2, + "description": "Debug domain 1 is disabled" + }, + { + "name": "DOMAIN_0_1_DISABLED", + "value": 3, + "description": "Debug domains 0 and 1 are disabled" + }, + { + "name": "DOMAIN_2_DISABLED", + "value": 4, + "description": "Debug domain 2 is disabled" + }, + { + "name": "DOMAIN_0_2_DISABLED", + "value": 5, + "description": "Debug domains 0 and 2 are disabled" + }, + { + "name": "DOMAIN_1_2_DISABLED", + "value": 6, + "description": "Debug domains 1 and 2 are disabled" + }, + { + "name": "DOMAIN_0_1_2_DISABLED", + "value": 7, + "description": "Debug domains 0, 1 and 2 are disabled" + }, + { + "name": "DOMAIN_3_DISABLED", + "value": 8, + "description": "Debug domain 3 is disabled" + }, + { + "name": "DOMAIN_0_3_DISABLED", + "value": 9, + "description": "Debug domains 0 and 3 are disabled" + }, + { + "name": "DOMAIN_1_3_DISABLED", + "value": 10, + "description": "Debug domains 1 and 3 are disabled" + }, + { + "name": "DOMAIN_0_1_3_DISABLED", + "value": 11, + "description": "Debug domains 0, 1 and 3 are disabled" + }, + { + "name": "DOMAIN_2_3_DISABLED", + "value": 12, + "description": "Debug domains 2 and 3 are disabled" + }, + { + "name": "DOMAIN_0_2_3_DISABLED", + "value": 13, + "description": "Debug domains 0, 2 and 3 are disabled" + }, + { + "name": "DOMAIN_1_2_3_DISABLED", + "value": 14, + "description": "Debug domains 1, 2 and 3 are disabled" + }, + { + "name": "ALL_DOMAINS_DISABLED", + "value": 15, + "description": "All debug domains are disabled" + } + ] + }, + { + "width": 4, + "id": "fuse56-bits-8-11", + "name": "SOC_SCOPE2_DBG_DISABLE", + "description": "Debug disable for Cortex M70, M71 and M33_sync . The 4 bits correspond to : {spiden,sniden,dbgen,niden}", + "values": [ + { + "name": "ALL_DOMAINS_ENABLED", + "value": 0, + "description": "1111 : Any debug domain can be disabled individually.", + "deprecated_names": [ + "0000" + ] + }, + { + "name": "DOMAIN_0_DISABLED", + "value": 1, + "description": "Debug domain 0 is disabled" + }, + { + "name": "DOMAIN_1_DISABLED", + "value": 2, + "description": "Debug domain 1 is disabled" + }, + { + "name": "DOMAINS_0_1_DISABLED", + "value": 3, + "description": "Debug domains 0 and 1 are disabled" + }, + { + "name": "DOMAIN_2_DISABLED", + "value": 4, + "description": "Debug domain 2 is disabled" + }, + { + "name": "DOMAINS_0_2_DISABLED", + "value": 5, + "description": "Debug domains 0 and 2 are disabled" + }, + { + "name": "DOMAINS_1_2_DISABLED", + "value": 6, + "description": "Debug domains 1 and 2 are disabled" + }, + { + "name": "DOMAINS_0_1_2_DISABLED", + "value": 7, + "description": "Debug domains 0, 1 and 2 are disabled" + }, + { + "name": "DOMAIN_3_DISABLED", + "value": 8, + "description": "Debug domain 3 is disabled" + }, + { + "name": "DOMAINS_0_3_DISABLED", + "value": 9, + "description": "Debug domains 0 and 3 are disabled" + }, + { + "name": "DOMAINS_1_3_DISABLED", + "value": 10, + "description": "Debug domains 1 and 3 are disabled" + }, + { + "name": "DOMAINS_0_1_3_DISABLED", + "value": 11, + "description": "Debug domains 0, 1 and 3 are disabled" + }, + { + "name": "DOMAINS_2_3_DISABLED", + "value": 12, + "description": "Debug domains 2 and 3 are disabled" + }, + { + "name": "DOMAINS_0_2_3_DISABLED", + "value": 13, + "description": "Debug domains 0, 2 and 3 are disabled" + }, + { + "name": "DOMAINS_1_2_3_DISABLED", + "value": 14, + "description": "Debug domains 1, 2 and 3 are disabled" + }, + { + "name": "ALL_DOMAINS_DISABLED", + "value": 15, + "description": "All debug domains are disabled" + } + ] + }, + { + "width": 4, + "id": "fuse56-bits-12-15", + "name": "SOC_SCOPE3_DBG_DISABLE", + "description": "Debug disable for DAP AHB-AP. The 4 bits correspond to : {spiden,sniden,dbgen,niden}", + "values": [ + { + "name": "ALL_ENABLED", + "value": 0, + "description": "1111 : Any debug domain can be disabled individually.", + "deprecated_names": [ + "0000" + ] + }, + { + "name": "DOMAIN_0_DISABLED", + "value": 1, + "description": "Debug domain 0 is disabled" + }, + { + "name": "DOMAIN_1_DISABLED", + "value": 2, + "description": "Debug domain 1 is disabled" + }, + { + "name": "DOMAINS_0_1_DISABLED", + "value": 3, + "description": "Debug domains 0 and 1 are disabled" + }, + { + "name": "DOMAIN_2_DISABLED", + "value": 4, + "description": "Debug domain 2 is disabled" + }, + { + "name": "DOMAINS_0_2_DISABLED", + "value": 5, + "description": "Debug domains 0 and 2 are disabled" + }, + { + "name": "DOMAINS_1_2_DISABLED", + "value": 6, + "description": "Debug domains 1 and 2 are disabled" + }, + { + "name": "DOMAIN_012_DISABLED", + "value": 7, + "description": "Debug domains 0, 1 and 2 disabled", + "deprecated_names": [ + "DOMAINS_0_1_2_DISABLED" + ] + }, + { + "name": "DOMAIN_3_DISABLED", + "value": 8, + "description": "Debug domain 3 is disabled" + }, + { + "name": "DOMAINS_0_3_DISABLED", + "value": 9, + "description": "Debug domains 0 and 3 are disabled" + }, + { + "name": "DOMAINS_1_3_DISABLED", + "value": 10, + "description": "Debug domains 1 and 3 are disabled" + }, + { + "name": "DOMAIN_013_DISABLED", + "value": 11, + "description": "Debug domains 0, 1 and 3 disabled", + "deprecated_names": [ + "DOMAINS_0_1_3_DISABLED" + ] + }, + { + "name": "DOMAINS_2_3_DISABLED", + "value": 12, + "description": "Debug domains 2 and 3 are disabled" + }, + { + "name": "DOMAIN_023_DISABLED", + "value": 13, + "description": "Debug domains 0, 2 and 3 disabled", + "deprecated_names": [ + "DOMAINS_0_2_3_DISABLED" + ] + }, + { + "name": "DOMAIN_123_DISABLED", + "value": 14, + "description": "Debug domains 1, 2 and 3 disabled", + "deprecated_names": [ + "DOMAINS_1_2_3_DISABLED" + ] + }, + { + "name": "ALL_DISABLED", + "value": 15, + "description": "All debug domains disabled" + } + ] + } + ] + }, + { + "id": "fuse57", + "name": "ELE_MISC_CTRL1", + "description": "OEM controlled Fuse.", + "index_int": "0x0039", + "reg_width": 16, + "bitfields": [ + { + "width": 4, + "id": "fuse57-bits-0-3", + "name": "SOC_SCOPE4_DBG_DISABLE", + "description": "Debug disable for apps cores, Cortex A55. The 4 bits correspond to : {spiden,sniden,dbgen,niden}", + "values": [ + { + "name": "ALL_ENABLED", + "value": 0, + "description": "1111 : Any debug domain can be disabled individually.", + "deprecated_names": [ + "0000" + ] + }, + { + "name": "DOMAIN_0_DISABLED", + "value": 1, + "description": "Debug domain 0 disabled, others enabled" + }, + { + "name": "DOMAIN_1_DISABLED", + "value": 2, + "description": "Debug domain 1 disabled, others enabled" + }, + { + "name": "DOMAIN_0_1_DISABLED", + "value": 3, + "description": "Debug domains 0-1 disabled, others enabled" + }, + { + "name": "DOMAIN_2_DISABLED", + "value": 4, + "description": "Debug domain 2 disabled, others enabled" + }, + { + "name": "DOMAIN_0_2_DISABLED", + "value": 5, + "description": "Debug domains 0,2 disabled, others enabled" + }, + { + "name": "DOMAIN_1_2_DISABLED", + "value": 6, + "description": "Debug domains 1-2 disabled, others enabled" + }, + { + "name": "DOMAIN_0_1_2_DISABLED", + "value": 7, + "description": "Debug domains 0-2 disabled, domain 3 enabled" + }, + { + "name": "DOMAIN_3_DISABLED", + "value": 8, + "description": "Debug domain 3 disabled, others enabled" + }, + { + "name": "DOMAIN_0_3_DISABLED", + "value": 9, + "description": "Debug domains 0,3 disabled, others enabled" + }, + { + "name": "DOMAIN_1_3_DISABLED", + "value": 10, + "description": "Debug domains 1,3 disabled, others enabled" + }, + { + "name": "DOMAIN_0_1_3_DISABLED", + "value": 11, + "description": "Debug domains 0-1,3 disabled, domain 2 enabled" + }, + { + "name": "DOMAIN_2_3_DISABLED", + "value": 12, + "description": "Debug domains 2-3 disabled, others enabled" + }, + { + "name": "DOMAIN_0_2_3_DISABLED", + "value": 13, + "description": "Debug domains 0,2-3 disabled, domain 1 enabled" + }, + { + "name": "DOMAIN_1_2_3_DISABLED", + "value": 14, + "description": "Debug domains 1-3 disabled, domain 0 enabled" + }, + { + "name": "ALL_DISABLED", + "value": 15, + "description": "All debug domains disabled" + } + ] + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse58", + "name": "ELE_MISC_CTRL2", + "description": "OEM controlled Fuse.", + "index_int": "0x003A", + "reg_width": 16, + "bitfields": [ + { + "width": 1, + "id": "fuse58-bit-0", + "name": "OEM_AGDET_DISABLE", + "description": "Disable for analog glitch detector during boot", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Sensor is enabled if it passes NXP tests", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "Sensor is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-1", + "name": "OEM_VDET_DISABLE", + "description": "Disable for voltage detector during boot", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Sensor is enabled if it passes NXP tests", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "Sensor is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-2", + "name": "OEM_TMPSNS_DISABLE", + "description": "Disable for temperature sensor during boot", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Sensor is enabled if it passes NXP tests", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "Sensor is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-3", + "name": "OEM_DGDET_DISABLE", + "description": "Disable for digital glitch detector during boot", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Sensor is enabled if it passes NXP tests", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "Sensor is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-4", + "name": "FAST_BOOT_DISABLE", + "description": "OEM controlled Fuse.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Fastboot enabled", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "Fastboot is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-5", + "name": "SJC_DISABLE", + "description": "Hardware disablement of SJC. Disables JTAG debugger, including ability for boundary scan.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "SJC is enabled", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "SJC is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse58-bit-8", + "name": "SOC_GLBL_DBG_DISABLE", + "description": "Disable all debug. ", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Debug is enabled", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "Debug is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse58-bit-10", + "name": "TZ_GLBL_DBG_DISABLE", + "description": "Disables all secure debug. ", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Trustzone Debug can be enabled", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "Trustzone Debug is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse58-bit-12", + "name": "OEM_FDET_DISABLE", + "description": "Disable for Frequency detector during boot", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Sensor is enabled if it passes NXP testing", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "Sensor is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-13", + "name": "ALLOW_FIPS_UNAPPROVED_ALGOS", + "description": "If FIPS mode is enabled, Allow FIPS unapproved algorithms", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow FIPS algorithms if FIPS_ENABLE is set." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Even though FIPS_ENABLE is set, allow FIPS unapproved algorithms", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-14", + "name": "CRRM_ENABLE", + "description": "Enable CRRM feature. See SRM for details. ", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "CRRM is not enabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "CRRM is enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-15", + "name": "OSCCA_SELFTEST_DISABLE", + "description": "Disable OSCCA selftest", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "In OSCCA mode, perform OSCCA selftest", + "deprecated_names": [ + "0" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "In OSCCA mode, disable OSCCA self-test", + "deprecated_names": [ + "1" + ] + } + ] + } + ] + }, + { + "id": "Reserved59", + "name": "Reserved 0x3B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003B", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse60", + "name": "ELE_MISC_CTRL4", + "description": "OEM and NXP controlled. NXP should set OP to 1 so the shadows cannot be overwritten.", + "index_int": "0x003C", + "reg_width": 16, + "bitfields": [ + { + "width": 12, + "id": "fuse60-bits-0-11", + "name": "EXPORT_CONTROL", + "description": "Each fuse disables the following : \n[11] : Reserved for ELE\n[10] : Reserved for ELE\n[9] : Reserved\n[8] : Reserved for ELE\n[7] : A55 Crypto extension\n[6] : Reserved\n[5] : Reserved\n[4] : OTFADs\n[3]: Reserved for V2X\n[2]: Reserved for V2X \n[1]: Reserved for V2X \n[0]: IEE", + "values": [ + { + "name": "ALL_ENABLED", + "value": 0, + "description": "All crypto accelerators are enabled" + }, + { + "name": "AES_DISABLED", + "value": 1, + "description": "AES crypto accelerator is disabled", + "deprecated_names": [ + "ACCEL_0_DISABLED" + ] + }, + { + "name": "SHA_DISABLED", + "value": 2, + "description": "SHA crypto accelerator is disabled", + "deprecated_names": [ + "ACCEL_1_DISABLED" + ] + }, + { + "name": "RSA_DISABLED", + "value": 4, + "description": "RSA crypto accelerator is disabled", + "deprecated_names": [ + "ACCEL_2_DISABLED" + ] + }, + { + "name": "ECC_DISABLED", + "value": 8, + "description": "ECC crypto accelerator is disabled", + "deprecated_names": [ + "ACCEL_3_DISABLED" + ] + }, + { + "name": "DES_DISABLED", + "value": 16, + "description": "DES crypto accelerator is disabled", + "deprecated_names": [ + "ACCEL_4_DISABLED" + ] + }, + { + "name": "RNG_DISABLED", + "value": 32, + "description": "Random Number Generator is disabled", + "deprecated_names": [ + "ACCEL_5_DISABLED" + ] + }, + { + "name": "PKC_DISABLED", + "value": 64, + "description": "Public Key Crypto accelerator is disabled", + "deprecated_names": [ + "ACCEL_6_DISABLED" + ] + }, + { + "name": "HASH_DISABLED", + "value": 128, + "description": "Hash crypto accelerator is disabled", + "deprecated_names": [ + "ACCEL_7_DISABLED" + ] + }, + { + "name": "CIPHER_DISABLED", + "value": 256, + "description": "Cipher crypto accelerator is disabled", + "deprecated_names": [ + "ACCEL_8_DISABLED" + ] + }, + { + "name": "MAC_DISABLED", + "value": 512, + "description": "MAC crypto accelerator is disabled", + "deprecated_names": [ + "ACCEL_9_DISABLED" + ] + }, + { + "name": "KDF_DISABLED", + "value": 1024, + "description": "Key Derivation Function accelerator is disabled", + "deprecated_names": [ + "ACCEL_10_DISABLED" + ] + }, + { + "name": "TRNG_DISABLED", + "value": 2048, + "description": "True Random Number Generator is disabled", + "deprecated_names": [ + "ACCEL_11_DISABLED" + ] + }, + { + "name": "ALL_DISABLED", + "value": 4095, + "description": "All crypto accelerators are disabled" + } + ] + }, + { + "width": 3, + "id": "fuse60-bits-12-14", + "name": "ELE_BOOT_CRYPTO", + "description": "Determine boot algorithms to be used", + "values": [ + { + "name": "CLASSIC_BOOT", + "value": 0, + "description": "Classic boot" + }, + { + "name": "HYBRID_BOOT", + "value": 1, + "description": "Hybrid boot (Classic + PQC)", + "deprecated_names": [ + "001" + ] + }, + { + "name": "PQC_BOOT_ONLY", + "value": 2, + "description": "PQC boot only" + }, + { + "name": "REVERT_CLASSIC", + "value": 4, + "description": "Revert to Classic boot" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved61", + "name": "Reserved 0x3D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003D", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved62", + "name": "Reserved 0x3E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003E", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 2 + }, + { + "width": 2 + } + ] + }, + { + "id": "fuse63", + "name": "ELE_MISC_CTRL7", + "description": "OEM and NXP controlled. NXP should set OP to 1 so the shadows cannot be overwritten.", + "index_int": "0x003F", + "reg_width": 16, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4, + "id": "fuse63-bits-4-7", + "name": "OEM_PQC_SRK_RVK", + "description": "Revoke bits that correspond to the revoked public keys in the OEM container. These cannot be written using the write fuse command. When the corresponding key in the container is revoked, and the commit command is run after boot, then ELE will set the fuse to match the container. " + }, + { + "width": 4 + }, + { + "width": 4, + "id": "fuse63-bits-12-15", + "name": "OEM_SRK_RVK", + "description": "Revoke bits that correspond to the revoked public keys in the OEM container. These cannot be written using the write fuse command. When the corresponding key in the container is revoked, and the commit command is run after boot, then ELE will set the fuse to match the container. " + } + ] + }, + { + "id": "Reserved64", + "name": "Reserved 0x40", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0040", + "is_reserved": true + }, + { + "id": "Reserved65", + "name": "Reserved 0x41", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0041", + "is_reserved": true + }, + { + "id": "Reserved66", + "name": "Reserved 0x42", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0042", + "is_reserved": true + }, + { + "id": "Reserved67", + "name": "Reserved 0x43", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0043", + "is_reserved": true + }, + { + "id": "Reserved68", + "name": "Reserved 0x44", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0044", + "is_reserved": true + }, + { + "id": "Reserved69", + "name": "Reserved 0x45", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0045", + "is_reserved": true + }, + { + "id": "Reserved70", + "name": "Reserved 0x46", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0046", + "is_reserved": true + }, + { + "id": "Reserved71", + "name": "Reserved 0x47", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0047", + "is_reserved": true + }, + { + "id": "Reserved72", + "name": "Reserved 0x48", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0048", + "is_reserved": true + }, + { + "id": "Reserved73", + "name": "Reserved 0x49", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0049", + "is_reserved": true + }, + { + "id": "Reserved74", + "name": "Reserved 0x4A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004A", + "is_reserved": true + }, + { + "id": "Reserved75", + "name": "Reserved 0x4B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004B", + "is_reserved": true + }, + { + "id": "Reserved76", + "name": "Reserved 0x4C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004C", + "is_reserved": true + }, + { + "id": "Reserved77", + "name": "Reserved 0x4D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004D", + "is_reserved": true + }, + { + "id": "Reserved78", + "name": "Reserved 0x4E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004E", + "is_reserved": true + }, + { + "id": "Reserved79", + "name": "Reserved 0x4F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004F", + "is_reserved": true + }, + { + "id": "Reserved80", + "name": "Reserved 0x50", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0050", + "is_reserved": true + }, + { + "id": "Reserved81", + "name": "Reserved 0x51", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0051", + "is_reserved": true + }, + { + "id": "Reserved82", + "name": "Reserved 0x52", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0052", + "is_reserved": true + }, + { + "id": "Reserved83", + "name": "Reserved 0x53", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0053", + "is_reserved": true + }, + { + "id": "Reserved84", + "name": "Reserved 0x54", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0054", + "is_reserved": true + }, + { + "id": "Reserved85", + "name": "Reserved 0x55", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0055", + "is_reserved": true + }, + { + "id": "Reserved86", + "name": "Reserved 0x56", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0056", + "is_reserved": true + }, + { + "id": "Reserved87", + "name": "Reserved 0x57", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0057", + "is_reserved": true + }, + { + "id": "Reserved88", + "name": "Reserved 0x58", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0058", + "is_reserved": true + }, + { + "id": "Reserved89", + "name": "Reserved 0x59", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0059", + "is_reserved": true + }, + { + "id": "Reserved90", + "name": "Reserved 0x5A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005A", + "is_reserved": true + }, + { + "id": "Reserved91", + "name": "Reserved 0x5B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005B", + "is_reserved": true + }, + { + "id": "Reserved92", + "name": "Reserved 0x5C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005C", + "is_reserved": true + }, + { + "id": "Reserved93", + "name": "Reserved 0x5D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005D", + "is_reserved": true + }, + { + "id": "Reserved94", + "name": "Reserved 0x5E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005E", + "is_reserved": true + }, + { + "id": "Reserved95", + "name": "Reserved 0x5F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005F", + "is_reserved": true + }, + { + "id": "Reserved96", + "name": "Reserved 0x60", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0060", + "is_reserved": true + }, + { + "id": "Reserved97", + "name": "Reserved 0x61", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0061", + "is_reserved": true + }, + { + "id": "Reserved98", + "name": "Reserved 0x62", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0062", + "is_reserved": true + }, + { + "id": "Reserved99", + "name": "Reserved 0x63", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0063", + "is_reserved": true + }, + { + "id": "Reserved100", + "name": "Reserved 0x64", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0064", + "is_reserved": true + }, + { + "id": "Reserved101", + "name": "Reserved 0x65", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0065", + "is_reserved": true + }, + { + "id": "Reserved102", + "name": "Reserved 0x66", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0066", + "is_reserved": true + }, + { + "id": "Reserved103", + "name": "Reserved 0x67", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0067", + "is_reserved": true + }, + { + "id": "Reserved104", + "name": "Reserved 0x68", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0068", + "is_reserved": true + }, + { + "id": "Reserved105", + "name": "Reserved 0x69", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0069", + "is_reserved": true + }, + { + "id": "Reserved106", + "name": "Reserved 0x6A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006A", + "is_reserved": true + }, + { + "id": "Reserved107", + "name": "Reserved 0x6B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006B", + "is_reserved": true + }, + { + "id": "Reserved108", + "name": "Reserved 0x6C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006C", + "is_reserved": true + }, + { + "id": "Reserved109", + "name": "Reserved 0x6D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006D", + "is_reserved": true + }, + { + "id": "Reserved110", + "name": "Reserved 0x6E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006E", + "is_reserved": true + }, + { + "id": "Reserved111", + "name": "Reserved 0x6F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006F", + "is_reserved": true + }, + { + "id": "Reserved112", + "name": "Reserved 0x70", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0070", + "is_reserved": true + }, + { + "id": "Reserved113", + "name": "Reserved 0x71", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0071", + "is_reserved": true + }, + { + "id": "Reserved114", + "name": "Reserved 0x72", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0072", + "is_reserved": true + }, + { + "id": "Reserved115", + "name": "Reserved 0x73", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0073", + "is_reserved": true + }, + { + "id": "Reserved116", + "name": "Reserved 0x74", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0074", + "is_reserved": true + }, + { + "id": "Reserved117", + "name": "Reserved 0x75", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0075", + "is_reserved": true + }, + { + "id": "Reserved118", + "name": "Reserved 0x76", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0076", + "is_reserved": true + }, + { + "id": "Reserved119", + "name": "Reserved 0x77", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0077", + "is_reserved": true + }, + { + "id": "Reserved120", + "name": "Reserved 0x78", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0078", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved121", + "name": "Reserved 0x79", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0079", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved122", + "name": "Reserved 0x7A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007A", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved123", + "name": "Reserved 0x7B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007B", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved124", + "name": "Reserved 0x7C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007C", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved125", + "name": "Reserved 0x7D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007D", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved126", + "name": "Reserved 0x7E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007E", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved127", + "name": "Reserved 0x7F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved128", + "name": "Reserved 0x80", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0080", + "is_reserved": true + }, + { + "id": "Reserved129", + "name": "Reserved 0x81", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0081", + "is_reserved": true + }, + { + "id": "Reserved130", + "name": "Reserved 0x82", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0082", + "is_reserved": true + }, + { + "id": "Reserved131", + "name": "Reserved 0x83", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0083", + "is_reserved": true + }, + { + "id": "Reserved132", + "name": "Reserved 0x84", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0084", + "is_reserved": true + }, + { + "id": "Reserved133", + "name": "Reserved 0x85", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0085", + "is_reserved": true + }, + { + "id": "Reserved134", + "name": "Reserved 0x86", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0086", + "is_reserved": true + }, + { + "id": "Reserved135", + "name": "Reserved 0x87", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0087", + "is_reserved": true + }, + { + "id": "Reserved136", + "name": "Reserved 0x88", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0088", + "is_reserved": true + }, + { + "id": "Reserved137", + "name": "Reserved 0x89", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0089", + "is_reserved": true + }, + { + "id": "Reserved138", + "name": "Reserved 0x8A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008A", + "is_reserved": true + }, + { + "id": "Reserved139", + "name": "Reserved 0x8B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008B", + "is_reserved": true + }, + { + "id": "Reserved140", + "name": "Reserved 0x8C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008C", + "is_reserved": true + }, + { + "id": "Reserved141", + "name": "Reserved 0x8D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008D", + "is_reserved": true + }, + { + "id": "Reserved142", + "name": "Reserved 0x8E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008E", + "is_reserved": true + }, + { + "id": "Reserved143", + "name": "Reserved 0x8F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008F", + "is_reserved": true + }, + { + "id": "Reserved144", + "name": "Reserved 0x90", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0090", + "is_reserved": true + }, + { + "id": "Reserved145", + "name": "Reserved 0x91", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0091", + "is_reserved": true + }, + { + "id": "Reserved146", + "name": "Reserved 0x92", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0092", + "is_reserved": true + }, + { + "id": "Reserved147", + "name": "Reserved 0x93", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0093", + "is_reserved": true + }, + { + "id": "Reserved148", + "name": "Reserved 0x94", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0094", + "is_reserved": true + }, + { + "id": "Reserved149", + "name": "Reserved 0x95", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0095", + "is_reserved": true + }, + { + "id": "Reserved150", + "name": "Reserved 0x96", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0096", + "is_reserved": true + }, + { + "id": "Reserved151", + "name": "Reserved 0x97", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0097", + "is_reserved": true + }, + { + "id": "Reserved152", + "name": "Reserved 0x98", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0098", + "is_reserved": true + }, + { + "id": "Reserved153", + "name": "Reserved 0x99", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0099", + "is_reserved": true + }, + { + "id": "Reserved154", + "name": "Reserved 0x9A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009A", + "is_reserved": true + }, + { + "id": "Reserved155", + "name": "Reserved 0x9B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009B", + "is_reserved": true + }, + { + "id": "Reserved156", + "name": "Reserved 0x9C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009C", + "is_reserved": true + }, + { + "id": "Reserved157", + "name": "Reserved 0x9D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009D", + "is_reserved": true + }, + { + "id": "Reserved158", + "name": "Reserved 0x9E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009E", + "is_reserved": true + }, + { + "id": "Reserved159", + "name": "Reserved 0x9F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009F", + "is_reserved": true + }, + { + "id": "Reserved160", + "name": "Reserved 0xA0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A0", + "is_reserved": true + }, + { + "id": "Reserved161", + "name": "Reserved 0xA1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A1", + "is_reserved": true + }, + { + "id": "Reserved162", + "name": "Reserved 0xA2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A2", + "is_reserved": true + }, + { + "id": "Reserved163", + "name": "Reserved 0xA3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A3", + "is_reserved": true + }, + { + "id": "Reserved164", + "name": "Reserved 0xA4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A4", + "is_reserved": true + }, + { + "id": "Reserved165", + "name": "Reserved 0xA5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A5", + "is_reserved": true + }, + { + "id": "Reserved166", + "name": "Reserved 0xA6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A6", + "is_reserved": true + }, + { + "id": "Reserved167", + "name": "Reserved 0xA7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A7", + "is_reserved": true + }, + { + "id": "Reserved168", + "name": "Reserved 0xA8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A8", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved169", + "name": "Reserved 0xA9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A9", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved170", + "name": "Reserved 0xAA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AA", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved171", + "name": "Reserved 0xAB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AB", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved172", + "name": "Reserved 0xAC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AC", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved173", + "name": "Reserved 0xAD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AD", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved174", + "name": "Reserved 0xAE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AE", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved175", + "name": "Reserved 0xAF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AF", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved176", + "name": "Reserved 0xB0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B0", + "is_reserved": true + }, + { + "id": "Reserved177", + "name": "Reserved 0xB1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B1", + "is_reserved": true + }, + { + "id": "Reserved178", + "name": "Reserved 0xB2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B2", + "is_reserved": true + }, + { + "id": "Reserved179", + "name": "Reserved 0xB3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B3", + "is_reserved": true + }, + { + "id": "fuse180", + "name": "IPED0_KEY0", + "description": "IPED Key for IPED connected to cSPI interface 0", + "index_int": "0x00B4", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse181", + "name": "IPED0_KEY1", + "description": "IPED Key for IPED connected to cSPI interface 0", + "index_int": "0x00B5", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse182", + "name": "IPED0_KEY2", + "description": "IPED Key for IPED connected to cSPI interface 0", + "index_int": "0x00B6", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse183", + "name": "IPED0_KEY3", + "description": "IPED Key for IPED connected to cSPI interface 0", + "index_int": "0x00B7", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse184", + "name": "IPED1_KEY0", + "description": "IPED Key for IPED connected to cSPI interface 1", + "index_int": "0x00B8", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse185", + "name": "IPED1_KEY1", + "description": "IPED Key for IPED connected to cSPI interface 1", + "index_int": "0x00B9", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse186", + "name": "IPED1_KEY2", + "description": "IPED Key for IPED connected to cSPI interface 1", + "index_int": "0x00BA", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse187", + "name": "IPED1_KEY3", + "description": "IPED Key for IPED connected to cSPI interface 1", + "index_int": "0x00BB", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "Reserved188", + "name": "Reserved 0xBC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BC", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved189", + "name": "Reserved 0xBD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BD", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved190", + "name": "Reserved 0xBE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BE", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved191", + "name": "Reserved 0xBF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BF", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved192", + "name": "Reserved 0xC0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C0", + "is_reserved": true + }, + { + "id": "Reserved193", + "name": "Reserved 0xC1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C1", + "is_reserved": true + }, + { + "id": "Reserved194", + "name": "Reserved 0xC2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C2", + "is_reserved": true + }, + { + "id": "Reserved195", + "name": "Reserved 0xC3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C3", + "is_reserved": true + }, + { + "id": "Reserved196", + "name": "Reserved 0xC4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C4", + "is_reserved": true + }, + { + "id": "Reserved197", + "name": "Reserved 0xC5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C5", + "is_reserved": true + }, + { + "id": "Reserved198", + "name": "Reserved 0xC6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C6", + "is_reserved": true + }, + { + "id": "Reserved199", + "name": "Reserved 0xC7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C7", + "is_reserved": true + }, + { + "id": "Reserved200", + "name": "Reserved 0xC8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C8", + "is_reserved": true + }, + { + "id": "Reserved201", + "name": "Reserved 0xC9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C9", + "is_reserved": true + }, + { + "id": "Reserved202", + "name": "Reserved 0xCA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CA", + "is_reserved": true + }, + { + "id": "Reserved203", + "name": "Reserved 0xCB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CB", + "is_reserved": true + }, + { + "id": "Reserved204", + "name": "Reserved 0xCC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CC", + "is_reserved": true + }, + { + "id": "Reserved205", + "name": "Reserved 0xCD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CD", + "is_reserved": true + }, + { + "id": "Reserved206", + "name": "Reserved 0xCE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CE", + "is_reserved": true + }, + { + "id": "Reserved207", + "name": "Reserved 0xCF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CF", + "is_reserved": true + }, + { + "id": "Reserved208", + "name": "Reserved 0xD0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D0", + "is_reserved": true + }, + { + "id": "Reserved209", + "name": "Reserved 0xD1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D1", + "is_reserved": true + }, + { + "id": "Reserved210", + "name": "Reserved 0xD2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D2", + "is_reserved": true + }, + { + "id": "Reserved211", + "name": "Reserved 0xD3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D3", + "is_reserved": true + }, + { + "id": "Reserved212", + "name": "Reserved 0xD4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D4", + "is_reserved": true + }, + { + "id": "Reserved213", + "name": "Reserved 0xD5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D5", + "is_reserved": true + }, + { + "id": "Reserved214", + "name": "Reserved 0xD6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D6", + "is_reserved": true + }, + { + "id": "Reserved215", + "name": "Reserved 0xD7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D7", + "is_reserved": true + }, + { + "id": "Reserved216", + "name": "Reserved 0xD8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D8", + "is_reserved": true + }, + { + "id": "Reserved217", + "name": "Reserved 0xD9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D9", + "is_reserved": true + }, + { + "id": "Reserved218", + "name": "Reserved 0xDA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DA", + "is_reserved": true + }, + { + "id": "Reserved219", + "name": "Reserved 0xDB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DB", + "is_reserved": true + }, + { + "id": "Reserved220", + "name": "Reserved 0xDC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DC", + "is_reserved": true + }, + { + "id": "Reserved221", + "name": "Reserved 0xDD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DD", + "is_reserved": true + }, + { + "id": "Reserved222", + "name": "Reserved 0xDE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DE", + "is_reserved": true + }, + { + "id": "Reserved223", + "name": "Reserved 0xDF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DF", + "is_reserved": true + }, + { + "id": "Reserved224", + "name": "Reserved 0xE0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E0", + "is_reserved": true + }, + { + "id": "Reserved225", + "name": "Reserved 0xE1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E1", + "is_reserved": true + }, + { + "id": "Reserved226", + "name": "Reserved 0xE2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E2", + "is_reserved": true + }, + { + "id": "Reserved227", + "name": "Reserved 0xE3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E3", + "is_reserved": true + }, + { + "id": "Reserved228", + "name": "Reserved 0xE4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E4", + "is_reserved": true + }, + { + "id": "Reserved229", + "name": "Reserved 0xE5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E5", + "is_reserved": true + }, + { + "id": "Reserved230", + "name": "Reserved 0xE6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E6", + "is_reserved": true + }, + { + "id": "Reserved231", + "name": "Reserved 0xE7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E7", + "is_reserved": true + }, + { + "id": "Reserved232", + "name": "Reserved 0xE8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E8", + "is_reserved": true + }, + { + "id": "Reserved233", + "name": "Reserved 0xE9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E9", + "is_reserved": true + }, + { + "id": "Reserved234", + "name": "Reserved 0xEA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EA", + "is_reserved": true + }, + { + "id": "Reserved235", + "name": "Reserved 0xEB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EB", + "is_reserved": true + }, + { + "id": "Reserved236", + "name": "Reserved 0xEC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EC", + "is_reserved": true + }, + { + "id": "Reserved237", + "name": "Reserved 0xED", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00ED", + "is_reserved": true + }, + { + "id": "Reserved238", + "name": "Reserved 0xEE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EE", + "is_reserved": true + }, + { + "id": "Reserved239", + "name": "Reserved 0xEF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EF", + "is_reserved": true + }, + { + "id": "Reserved240", + "name": "Reserved 0xF0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F0", + "is_reserved": true + }, + { + "id": "Reserved241", + "name": "Reserved 0xF1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F1", + "is_reserved": true + }, + { + "id": "Reserved242", + "name": "Reserved 0xF2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F2", + "is_reserved": true + }, + { + "id": "Reserved243", + "name": "Reserved 0xF3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F3", + "is_reserved": true + }, + { + "id": "Reserved244", + "name": "Reserved 0xF4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F4", + "is_reserved": true + }, + { + "id": "Reserved245", + "name": "Reserved 0xF5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F5", + "is_reserved": true + }, + { + "id": "Reserved246", + "name": "Reserved 0xF6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F6", + "is_reserved": true + }, + { + "id": "Reserved247", + "name": "Reserved 0xF7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F7", + "is_reserved": true + }, + { + "id": "Reserved248", + "name": "Reserved 0xF8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F8", + "is_reserved": true + }, + { + "id": "Reserved249", + "name": "Reserved 0xF9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F9", + "is_reserved": true + }, + { + "id": "Reserved250", + "name": "Reserved 0xFA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FA", + "is_reserved": true + }, + { + "id": "Reserved251", + "name": "Reserved 0xFB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FB", + "is_reserved": true + }, + { + "id": "Reserved252", + "name": "Reserved 0xFC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FC", + "is_reserved": true + }, + { + "id": "Reserved253", + "name": "Reserved 0xFD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FD", + "is_reserved": true + }, + { + "id": "Reserved254", + "name": "Reserved 0xFE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FE", + "is_reserved": true + }, + { + "id": "Reserved255", + "name": "Reserved 0xFF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FF", + "is_reserved": true + }, + { + "id": "Reserved256", + "name": "Reserved 0x100", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0100", + "is_reserved": true + }, + { + "id": "Reserved257", + "name": "Reserved 0x101", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0101", + "is_reserved": true + }, + { + "id": "Reserved258", + "name": "Reserved 0x102", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0102", + "is_reserved": true + }, + { + "id": "Reserved259", + "name": "Reserved 0x103", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0103", + "is_reserved": true + }, + { + "id": "Reserved260", + "name": "Reserved 0x104", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0104", + "is_reserved": true + }, + { + "id": "Reserved261", + "name": "Reserved 0x105", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0105", + "is_reserved": true + }, + { + "id": "Reserved262", + "name": "Reserved 0x106", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0106", + "is_reserved": true + }, + { + "id": "Reserved263", + "name": "Reserved 0x107", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0107", + "is_reserved": true + }, + { + "id": "Reserved264", + "name": "Reserved 0x108", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0108", + "is_reserved": true + }, + { + "id": "Reserved265", + "name": "Reserved 0x109", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0109", + "is_reserved": true + }, + { + "id": "Reserved266", + "name": "Reserved 0x10A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010A", + "is_reserved": true + }, + { + "id": "Reserved267", + "name": "Reserved 0x10B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010B", + "is_reserved": true + }, + { + "id": "Reserved268", + "name": "Reserved 0x10C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010C", + "is_reserved": true + }, + { + "id": "Reserved269", + "name": "Reserved 0x10D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010D", + "is_reserved": true + }, + { + "id": "Reserved270", + "name": "Reserved 0x10E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010E", + "is_reserved": true + }, + { + "id": "Reserved271", + "name": "Reserved 0x10F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010F", + "is_reserved": true + }, + { + "id": "Reserved272", + "name": "Reserved 0x110", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0110", + "is_reserved": true + }, + { + "id": "Reserved273", + "name": "Reserved 0x111", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0111", + "is_reserved": true + }, + { + "id": "Reserved274", + "name": "Reserved 0x112", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0112", + "is_reserved": true + }, + { + "id": "Reserved275", + "name": "Reserved 0x113", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0113", + "is_reserved": true + }, + { + "id": "Reserved276", + "name": "Reserved 0x114", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0114", + "is_reserved": true + }, + { + "id": "Reserved277", + "name": "Reserved 0x115", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0115", + "is_reserved": true + }, + { + "id": "Reserved278", + "name": "Reserved 0x116", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0116", + "is_reserved": true + }, + { + "id": "Reserved279", + "name": "Reserved 0x117", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0117", + "is_reserved": true + }, + { + "id": "Reserved280", + "name": "Reserved 0x118", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0118", + "is_reserved": true + }, + { + "id": "Reserved281", + "name": "Reserved 0x119", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0119", + "is_reserved": true + }, + { + "id": "Reserved282", + "name": "Reserved 0x11A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011A", + "is_reserved": true + }, + { + "id": "Reserved283", + "name": "Reserved 0x11B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011B", + "is_reserved": true + }, + { + "id": "Reserved284", + "name": "Reserved 0x11C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011C", + "is_reserved": true + }, + { + "id": "Reserved285", + "name": "Reserved 0x11D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011D", + "is_reserved": true + }, + { + "id": "Reserved286", + "name": "Reserved 0x11E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011E", + "is_reserved": true + }, + { + "id": "Reserved287", + "name": "Reserved 0x11F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x011F", + "is_reserved": true + }, + { + "id": "Reserved288", + "name": "Reserved 0x120", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0120", + "is_reserved": true + }, + { + "id": "Reserved289", + "name": "Reserved 0x121", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0121", + "is_reserved": true + }, + { + "id": "Reserved290", + "name": "Reserved 0x122", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0122", + "is_reserved": true + }, + { + "id": "Reserved291", + "name": "Reserved 0x123", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0123", + "is_reserved": true + }, + { + "id": "Reserved292", + "name": "Reserved 0x124", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0124", + "is_reserved": true + }, + { + "id": "Reserved293", + "name": "Reserved 0x125", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0125", + "is_reserved": true + }, + { + "id": "Reserved294", + "name": "Reserved 0x126", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0126", + "is_reserved": true + }, + { + "id": "Reserved295", + "name": "Reserved 0x127", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0127", + "is_reserved": true + }, + { + "id": "Reserved296", + "name": "Reserved 0x128", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0128", + "is_reserved": true + }, + { + "id": "Reserved297", + "name": "Reserved 0x129", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0129", + "is_reserved": true + }, + { + "id": "Reserved298", + "name": "Reserved 0x12A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012A", + "is_reserved": true + }, + { + "id": "Reserved299", + "name": "Reserved 0x12B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012B", + "is_reserved": true + }, + { + "id": "Reserved300", + "name": "Reserved 0x12C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012C", + "is_reserved": true + }, + { + "id": "Reserved301", + "name": "Reserved 0x12D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012D", + "is_reserved": true + }, + { + "id": "Reserved302", + "name": "Reserved 0x12E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012E", + "is_reserved": true + }, + { + "id": "Reserved303", + "name": "Reserved 0x12F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012F", + "is_reserved": true + }, + { + "id": "Reserved304", + "name": "Reserved 0x130", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0130", + "is_reserved": true + }, + { + "id": "Reserved305", + "name": "Reserved 0x131", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0131", + "is_reserved": true + }, + { + "id": "Reserved306", + "name": "Reserved 0x132", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0132", + "is_reserved": true + }, + { + "id": "Reserved307", + "name": "Reserved 0x133", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0133", + "is_reserved": true + }, + { + "id": "Reserved308", + "name": "Reserved 0x134", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0134", + "is_reserved": true + }, + { + "id": "Reserved309", + "name": "Reserved 0x135", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0135", + "is_reserved": true + }, + { + "id": "Reserved310", + "name": "Reserved 0x136", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0136", + "is_reserved": true + }, + { + "id": "Reserved311", + "name": "Reserved 0x137", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0137", + "is_reserved": true + }, + { + "id": "fuse312", + "name": "V2X_SHE_SECRET_KEY0", + "description": "V2X SHE Key", + "index_int": "0x0138", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse313", + "name": "V2X_SHE_SECRET_KEY1", + "description": "V2X SHE Key", + "index_int": "0x0139", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse314", + "name": "V2X_SHE_SECRET_KEY2", + "description": "V2X SHE Key", + "index_int": "0x013A", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse315", + "name": "V2X_SHE_SECRET_KEY3", + "description": "V2X SHE Key", + "index_int": "0x013B", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse316", + "name": "V2X_SHE_PRNG_KEY0", + "description": "V2X SHE Key", + "index_int": "0x013C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse317", + "name": "V2X_SHE_PRNG_KEY1", + "description": "V2X SHE Key", + "index_int": "0x013D", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse318", + "name": "V2X_SHE_PRNG_KEY2", + "description": "V2X SHE Key", + "index_int": "0x013E", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse319", + "name": "V2X_SHE_PRNG_KEY3", + "description": "V2X SHE Key", + "index_int": "0x013F", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "Reserved320", + "name": "Reserved 0x140", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0140", + "is_reserved": true + }, + { + "id": "Reserved321", + "name": "Reserved 0x141", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0141", + "is_reserved": true + }, + { + "id": "Reserved322", + "name": "Reserved 0x142", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0142", + "is_reserved": true + }, + { + "id": "Reserved323", + "name": "Reserved 0x143", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0143", + "is_reserved": true + }, + { + "id": "Reserved324", + "name": "Reserved 0x144", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0144", + "is_reserved": true + }, + { + "id": "Reserved325", + "name": "Reserved 0x145", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0145", + "is_reserved": true + }, + { + "id": "Reserved326", + "name": "Reserved 0x146", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0146", + "is_reserved": true + }, + { + "id": "Reserved327", + "name": "Reserved 0x147", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0147", + "is_reserved": true + }, + { + "id": "Reserved328", + "name": "Reserved 0x148", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0148", + "is_reserved": true + }, + { + "id": "Reserved329", + "name": "Reserved 0x149", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0149", + "is_reserved": true + }, + { + "id": "Reserved330", + "name": "Reserved 0x14A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014A", + "is_reserved": true + }, + { + "id": "Reserved331", + "name": "Reserved 0x14B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014B", + "is_reserved": true + }, + { + "id": "Reserved332", + "name": "Reserved 0x14C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014C", + "is_reserved": true + }, + { + "id": "Reserved333", + "name": "Reserved 0x14D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014D", + "is_reserved": true + }, + { + "id": "Reserved334", + "name": "Reserved 0x14E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014E", + "is_reserved": true + }, + { + "id": "Reserved335", + "name": "Reserved 0x14F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014F", + "is_reserved": true + }, + { + "id": "fuse336", + "name": "GPR1_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0150" + }, + { + "id": "fuse337", + "name": "GPR1_CFG1", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0151" + }, + { + "id": "fuse338", + "name": "GPR1_CFG2", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0152", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse339", + "name": "GPR1_CFG3", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0153" + }, + { + "id": "fuse340", + "name": "GPR1_CFG4", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0154", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse341", + "name": "GPR1_CFG5", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0155", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse342", + "name": "GPR1_CFG6", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0156" + }, + { + "id": "fuse343", + "name": "GPR1_CFG7", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0157" + }, + { + "id": "fuse344", + "name": "GPR2_CFG0", + "description": "General purpose fuse", + "index_int": "0x0158" + }, + { + "id": "fuse345", + "name": "GPR2_CFG1", + "description": "General purpose fuse", + "index_int": "0x0159", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse346", + "name": "GPR2_CFG2", + "description": "General purpose fuse", + "index_int": "0x015A" + }, + { + "id": "fuse347", + "name": "GPR2_CFG3", + "description": "General purpose fuse", + "index_int": "0x015B" + }, + { + "id": "fuse348", + "name": "GPR2_CFG4", + "description": "General purpose fuse", + "index_int": "0x015C" + }, + { + "id": "fuse349", + "name": "GPR2_CFG5", + "description": "General purpose fuse", + "index_int": "0x015D" + }, + { + "id": "fuse350", + "name": "GPR2_CFG6", + "description": "General purpose fuse", + "index_int": "0x015E" + }, + { + "id": "fuse351", + "name": "GPR2_CFG7", + "description": "General purpose fuse", + "index_int": "0x015F" + }, + { + "id": "fuse352", + "name": "GPR3_CFG0", + "description": "General purpose fuse", + "index_int": "0x0160", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse353", + "name": "GPR3_CFG1", + "description": "General purpose fuse", + "index_int": "0x0161" + }, + { + "id": "fuse354", + "name": "GPR3_CFG2", + "description": "General purpose fuse", + "index_int": "0x0162" + }, + { + "id": "fuse355", + "name": "GPR3_CFG3", + "description": "General purpose fuse", + "index_int": "0x0163", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse356", + "name": "GPR3_CFG4", + "description": "General purpose fuse", + "index_int": "0x0164" + }, + { + "id": "fuse357", + "name": "GPR3_CFG5", + "description": "General purpose fuse", + "index_int": "0x0165" + }, + { + "id": "fuse358", + "name": "GPR3_CFG6", + "description": "General purpose fuse", + "index_int": "0x0166" + }, + { + "id": "fuse359", + "name": "GPR3_CFG7", + "description": "General purpose fuse", + "index_int": "0x0167", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse360", + "name": "GPR4_CFG0", + "description": "General purpose fuse", + "index_int": "0x0168", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse361", + "name": "GPR4_CFG1", + "description": "General purpose fuse", + "index_int": "0x0169", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse362", + "name": "GPR4_CFG2", + "description": "General purpose fuse", + "index_int": "0x016A" + }, + { + "id": "fuse363", + "name": "GPR4_CFG3", + "description": "General purpose fuse", + "index_int": "0x016B" + }, + { + "id": "fuse364", + "name": "GPR4_CFG4", + "description": "General purpose fuse", + "index_int": "0x016C" + }, + { + "id": "fuse365", + "name": "GPR4_CFG5", + "description": "General purpose fuse", + "index_int": "0x016D" + }, + { + "id": "fuse366", + "name": "GPR4_CFG6", + "description": "General purpose fuse", + "index_int": "0x016E" + }, + { + "id": "fuse367", + "name": "GPR4_CFG7", + "description": "General purpose fuse", + "index_int": "0x016F" + }, + { + "id": "fuse368", + "name": "GPR5_CFG0", + "description": "General purpose fuse", + "index_int": "0x0170", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse369", + "name": "GPR5_CFG1", + "description": "General purpose fuse", + "index_int": "0x0171" + }, + { + "id": "fuse370", + "name": "GPR5_CFG2", + "description": "General purpose fuse", + "index_int": "0x0172" + }, + { + "id": "fuse371", + "name": "GPR5_CFG3", + "description": "General purpose fuse", + "index_int": "0x0173", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse372", + "name": "GPR5_CFG4", + "description": "General purpose fuse", + "index_int": "0x0174" + }, + { + "id": "fuse373", + "name": "GPR5_CFG5", + "description": "General purpose fuse", + "index_int": "0x0175" + }, + { + "id": "fuse374", + "name": "GPR5_CFG6", + "description": "General purpose fuse", + "index_int": "0x0176" + }, + { + "id": "fuse375", + "name": "GPR5_CFG7", + "description": "General purpose fuse", + "index_int": "0x0177" + }, + { + "id": "fuse376", + "name": "GPR6_CFG0", + "description": "General purpose fuse", + "index_int": "0x0178" + }, + { + "id": "fuse377", + "name": "GPR6_CFG1", + "description": "General purpose fuse", + "index_int": "0x0179" + }, + { + "id": "fuse378", + "name": "GPR6_CFG2", + "description": "General purpose fuse", + "index_int": "0x017A" + }, + { + "id": "fuse379", + "name": "GPR6_CFG3", + "description": "General purpose fuse", + "index_int": "0x017B" + }, + { + "id": "fuse380", + "name": "GPR6_CFG4", + "description": "General purpose fuse", + "index_int": "0x017C" + }, + { + "id": "fuse381", + "name": "GPR6_CFG5", + "description": "General purpose fuse", + "index_int": "0x017D" + }, + { + "id": "fuse382", + "name": "GPR6_CFG6", + "description": "General purpose fuse", + "index_int": "0x017E" + }, + { + "id": "fuse383", + "name": "GPR6_CFG7", + "description": "General purpose fuse", + "index_int": "0x017F" + }, + { + "id": "fuse384", + "name": "GPR7_CFG0", + "description": "General purpose fuse", + "index_int": "0x0180" + }, + { + "id": "fuse385", + "name": "GPR7_CFG1", + "description": "General purpose fuse", + "index_int": "0x0181" + }, + { + "id": "fuse386", + "name": "GPR7_CFG2", + "description": "General purpose fuse", + "index_int": "0x0182" + }, + { + "id": "fuse387", + "name": "GPR7_CFG3", + "description": "General purpose fuse", + "index_int": "0x0183" + }, + { + "id": "fuse388", + "name": "GPR7_CFG4", + "description": "General purpose fuse", + "index_int": "0x0184" + }, + { + "id": "fuse389", + "name": "GPR7_CFG5", + "description": "General purpose fuse", + "index_int": "0x0185" + }, + { + "id": "fuse390", + "name": "GPR7_CFG6", + "description": "General purpose fuse", + "index_int": "0x0186" + }, + { + "id": "fuse391", + "name": "GPR7_CFG7", + "description": "General purpose fuse", + "index_int": "0x0187" + }, + { + "id": "fuse392", + "name": "GPR8_CFG0", + "description": "General purpose fuse", + "index_int": "0x0188" + }, + { + "id": "fuse393", + "name": "GPR8_CFG1", + "description": "General purpose fuse", + "index_int": "0x0189" + }, + { + "id": "fuse394", + "name": "GPR8_CFG2", + "description": "General purpose fuse", + "index_int": "0x018A" + }, + { + "id": "fuse395", + "name": "GPR8_CFG3", + "description": "General purpose fuse", + "index_int": "0x018B" + }, + { + "id": "fuse396", + "name": "GPR8_CFG4", + "description": "General purpose fuse", + "index_int": "0x018C" + }, + { + "id": "fuse397", + "name": "GPR8_CFG5", + "description": "General purpose fuse", + "index_int": "0x018D" + }, + { + "id": "fuse398", + "name": "GPR8_CFG6", + "description": "General purpose fuse", + "index_int": "0x018E" + }, + { + "id": "fuse399", + "name": "GPR8_CFG7", + "description": "General purpose fuse", + "index_int": "0x018F" + }, + { + "id": "fuse400", + "name": "GPR9_CFG0", + "description": "General purpose fuse", + "index_int": "0x0190" + }, + { + "id": "fuse401", + "name": "GPR9_CFG1", + "description": "General purpose fuse", + "index_int": "0x0191" + }, + { + "id": "fuse402", + "name": "GPR9_CFG2", + "description": "General purpose fuse", + "index_int": "0x0192" + }, + { + "id": "fuse403", + "name": "GPR9_CFG3", + "description": "General purpose fuse", + "index_int": "0x0193" + }, + { + "id": "fuse404", + "name": "GPR9_CFG4", + "description": "General purpose fuse", + "index_int": "0x0194" + }, + { + "id": "fuse405", + "name": "GPR9_CFG5", + "description": "General purpose fuse", + "index_int": "0x0195" + }, + { + "id": "fuse406", + "name": "GPR9_CFG6", + "description": "General purpose fuse", + "index_int": "0x0196" + }, + { + "id": "fuse407", + "name": "GPR9_CFG7", + "description": "General purpose fuse", + "index_int": "0x0197" + }, + { + "id": "fuse408", + "name": "GPR10_CFG0", + "description": "General purpose fuse", + "index_int": "0x0198" + }, + { + "id": "fuse409", + "name": "GPR10_CFG1", + "description": "General purpose fuse", + "index_int": "0x0199" + }, + { + "id": "fuse410", + "name": "GPR10_CFG2", + "description": "General purpose fuse", + "index_int": "0x019A" + }, + { + "id": "fuse411", + "name": "GPR10_CFG3", + "description": "General purpose fuse", + "index_int": "0x019B" + }, + { + "id": "fuse412", + "name": "GPR10_CFG4", + "description": "General purpose fuse", + "index_int": "0x019C" + }, + { + "id": "fuse413", + "name": "GPR10_CFG5", + "description": "General purpose fuse", + "index_int": "0x019D" + }, + { + "id": "fuse414", + "name": "GPR10_CFG6", + "description": "General purpose fuse", + "index_int": "0x019E" + }, + { + "id": "fuse415", + "name": "GPR10_CFG7", + "description": "General purpose fuse", + "index_int": "0x019F" + }, + { + "id": "fuse416", + "name": "GPR11_CFG0", + "description": "General purpose fuse", + "index_int": "0x01A0" + }, + { + "id": "fuse417", + "name": "GPR11_CFG1", + "description": "General purpose fuse", + "index_int": "0x01A1" + }, + { + "id": "fuse418", + "name": "GPR11_CFG2", + "description": "General purpose fuse", + "index_int": "0x01A2" + }, + { + "id": "fuse419", + "name": "GPR11_CFG3", + "description": "General purpose fuse", + "index_int": "0x01A3" + }, + { + "id": "fuse420", + "name": "GPR11_CFG4", + "description": "General purpose fuse", + "index_int": "0x01A4" + }, + { + "id": "fuse421", + "name": "GPR11_CFG5", + "description": "General purpose fuse", + "index_int": "0x01A5" + }, + { + "id": "fuse422", + "name": "GPR11_CFG6", + "description": "General purpose fuse", + "index_int": "0x01A6" + }, + { + "id": "fuse423", + "name": "GPR11_CFG7", + "description": "General purpose fuse", + "index_int": "0x01A7" + }, + { + "id": "fuse424", + "name": "GPR12_CFG0", + "description": "General purpose fuse", + "index_int": "0x01A8" + }, + { + "id": "fuse425", + "name": "GPR12_CFG1", + "description": "General purpose fuse", + "index_int": "0x01A9" + }, + { + "id": "fuse426", + "name": "GPR12_CFG2", + "description": "General purpose fuse", + "index_int": "0x01AA" + }, + { + "id": "fuse427", + "name": "GPR12_CFG3", + "description": "General purpose fuse", + "index_int": "0x01AB" + }, + { + "id": "fuse428", + "name": "GPR12_CFG4", + "description": "General purpose fuse", + "index_int": "0x01AC" + }, + { + "id": "fuse429", + "name": "GPR12_CFG5", + "description": "General purpose fuse", + "index_int": "0x01AD" + }, + { + "id": "fuse430", + "name": "GPR12_CFG6", + "description": "General purpose fuse", + "index_int": "0x01AE" + }, + { + "id": "fuse431", + "name": "GPR12_CFG7", + "description": "General purpose fuse", + "index_int": "0x01AF" + }, + { + "id": "fuse432", + "name": "GPR13_CFG0", + "description": "General purpose fuse", + "index_int": "0x01B0" + }, + { + "id": "fuse433", + "name": "GPR13_CFG1", + "description": "General purpose fuse", + "index_int": "0x01B1" + }, + { + "id": "fuse434", + "name": "GPR13_CFG2", + "description": "General purpose fuse", + "index_int": "0x01B2" + }, + { + "id": "fuse435", + "name": "GPR13_CFG3", + "description": "General purpose fuse", + "index_int": "0x01B3" + }, + { + "id": "fuse436", + "name": "GPR13_CFG4", + "description": "General purpose fuse", + "index_int": "0x01B4" + }, + { + "id": "fuse437", + "name": "GPR13_CFG5", + "description": "General purpose fuse", + "index_int": "0x01B5" + }, + { + "id": "fuse438", + "name": "GPR13_CFG6", + "description": "General purpose fuse", + "index_int": "0x01B6" + }, + { + "id": "fuse439", + "name": "GPR13_CFG7", + "description": "General purpose fuse", + "index_int": "0x01B7" + }, + { + "id": "fuse440", + "name": "GPR14_CFG0", + "description": "General purpose fuse", + "index_int": "0x01B8" + }, + { + "id": "fuse441", + "name": "GPR14_CFG1", + "description": "General purpose fuse", + "index_int": "0x01B9" + }, + { + "id": "fuse442", + "name": "GPR14_CFG2", + "description": "General purpose fuse", + "index_int": "0x01BA" + }, + { + "id": "fuse443", + "name": "GPR14_CFG3", + "description": "General purpose fuse", + "index_int": "0x01BB" + }, + { + "id": "fuse444", + "name": "GPR14_CFG4", + "description": "General purpose fuse", + "index_int": "0x01BC" + }, + { + "id": "fuse445", + "name": "GPR14_CFG5", + "description": "General purpose fuse", + "index_int": "0x01BD" + }, + { + "id": "fuse446", + "name": "GPR14_CFG6", + "description": "General purpose fuse", + "index_int": "0x01BE" + }, + { + "id": "fuse447", + "name": "GPR14_CFG7", + "description": "General purpose fuse", + "index_int": "0x01BF" + }, + { + "id": "fuse448", + "name": "GPR15_CFG0", + "description": "General purpose fuse", + "index_int": "0x01C0" + }, + { + "id": "fuse449", + "name": "GPR15_CFG1", + "description": "General purpose fuse", + "index_int": "0x01C1" + }, + { + "id": "fuse450", + "name": "GPR15_CFG2", + "description": "General purpose fuse", + "index_int": "0x01C2" + }, + { + "id": "fuse451", + "name": "GPR15_CFG3", + "description": "General purpose fuse", + "index_int": "0x01C3" + }, + { + "id": "fuse452", + "name": "GPR15_CFG4", + "description": "General purpose fuse", + "index_int": "0x01C4" + }, + { + "id": "fuse453", + "name": "GPR15_CFG5", + "description": "General purpose fuse", + "index_int": "0x01C5" + }, + { + "id": "fuse454", + "name": "GPR15_CFG6", + "description": "General purpose fuse", + "index_int": "0x01C6" + }, + { + "id": "fuse455", + "name": "GPR15_CFG7", + "description": "General purpose fuse", + "index_int": "0x01C7" + }, + { + "id": "fuse456", + "name": "GPR16_CFG0", + "description": "General purpose fuse", + "index_int": "0x01C8" + }, + { + "id": "fuse457", + "name": "GPR16_CFG1", + "description": "General purpose fuse", + "index_int": "0x01C9" + }, + { + "id": "fuse458", + "name": "GPR16_CFG2", + "description": "General purpose fuse", + "index_int": "0x01CA" + }, + { + "id": "fuse459", + "name": "GPR16_CFG3", + "description": "General purpose fuse", + "index_int": "0x01CB", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse460", + "name": "GPR16_CFG4", + "description": "General purpose fuse", + "index_int": "0x01CC", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse461", + "name": "GPR16_CFG5", + "description": "General purpose fuse", + "index_int": "0x01CD", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse462", + "name": "GPR16_CFG6", + "description": "General purpose fuse", + "index_int": "0x01CE" + }, + { + "id": "fuse463", + "name": "GPR16_CFG7", + "description": "General purpose fuse", + "index_int": "0x01CF" + }, + { + "id": "fuse464", + "name": "GPR17_CFG0", + "description": "General purpose fuse", + "index_int": "0x01D0" + }, + { + "id": "fuse465", + "name": "GPR17_CFG1", + "description": "General purpose fuse", + "index_int": "0x01D1" + }, + { + "id": "fuse466", + "name": "GPR17_CFG2", + "description": "General purpose fuse", + "index_int": "0x01D2" + }, + { + "id": "fuse467", + "name": "GPR17_CFG3", + "description": "General purpose fuse", + "index_int": "0x01D3" + }, + { + "id": "fuse468", + "name": "GPR17_CFG4", + "description": "General purpose fuse", + "index_int": "0x01D4" + }, + { + "id": "fuse469", + "name": "GPR17_CFG5", + "description": "General purpose fuse", + "index_int": "0x01D5" + }, + { + "id": "fuse470", + "name": "GPR17_CFG6", + "description": "General purpose fuse", + "index_int": "0x01D6" + }, + { + "id": "fuse471", + "name": "GPR17_CFG7", + "description": "General purpose fuse", + "index_int": "0x01D7" + }, + { + "id": "fuse472", + "name": "GPR18_CFG0", + "description": "General purpose fuse", + "index_int": "0x01D8", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse473", + "name": "GPR18_CFG1", + "description": "General purpose fuse", + "index_int": "0x01D9", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse474", + "name": "GPR18_CFG2", + "description": "General purpose fuse", + "index_int": "0x01DA" + }, + { + "id": "fuse475", + "name": "GPR18_CFG3", + "description": "General purpose fuse", + "index_int": "0x01DB" + }, + { + "id": "fuse476", + "name": "GPR18_CFG4", + "description": "General purpose fuse", + "index_int": "0x01DC" + }, + { + "id": "fuse477", + "name": "GPR18_CFG5", + "description": "General purpose fuse", + "index_int": "0x01DD" + }, + { + "id": "fuse478", + "name": "GPR18_CFG6", + "description": "General purpose fuse", + "index_int": "0x01DE" + }, + { + "id": "fuse479", + "name": "GPR18_CFG7", + "description": "General purpose fuse", + "index_int": "0x01DF" + }, + { + "id": "fuse480", + "name": "GPR19_CFG0", + "description": "General purpose fuse", + "index_int": "0x01E0", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse481", + "name": "GPR19_CFG1", + "description": "General purpose fuse", + "index_int": "0x01E1" + }, + { + "id": "fuse482", + "name": "GPR19_CFG2", + "description": "General purpose fuse", + "index_int": "0x01E2" + }, + { + "id": "fuse483", + "name": "GPR19_CFG3", + "description": "General purpose fuse", + "index_int": "0x01E3" + }, + { + "id": "fuse484", + "name": "GPR19_CFG4", + "description": "General purpose fuse", + "index_int": "0x01E4" + }, + { + "id": "fuse485", + "name": "GPR19_CFG5", + "description": "General purpose fuse", + "index_int": "0x01E5" + }, + { + "id": "fuse486", + "name": "GPR19_CFG6", + "description": "General purpose fuse", + "index_int": "0x01E6" + }, + { + "id": "fuse487", + "name": "GPR19_CFG7", + "description": "General purpose fuse", + "index_int": "0x01E7" + }, + { + "id": "Reserved488", + "name": "Reserved 0x1E8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E8", + "is_reserved": true + }, + { + "id": "Reserved489", + "name": "Reserved 0x1E9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E9", + "is_reserved": true + }, + { + "id": "Reserved490", + "name": "Reserved 0x1EA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EA", + "is_reserved": true + }, + { + "id": "Reserved491", + "name": "Reserved 0x1EB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EB", + "is_reserved": true + }, + { + "id": "Reserved492", + "name": "Reserved 0x1EC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EC", + "is_reserved": true + }, + { + "id": "Reserved493", + "name": "Reserved 0x1ED", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01ED", + "is_reserved": true + }, + { + "id": "Reserved494", + "name": "Reserved 0x1EE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EE", + "is_reserved": true + }, + { + "id": "Reserved495", + "name": "Reserved 0x1EF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EF", + "is_reserved": true + }, + { + "id": "Reserved496", + "name": "Reserved 0x1F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F0", + "is_reserved": true + }, + { + "id": "Reserved497", + "name": "Reserved 0x1F1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F1", + "is_reserved": true + }, + { + "id": "Reserved498", + "name": "Reserved 0x1F2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F2", + "is_reserved": true + }, + { + "id": "Reserved499", + "name": "Reserved 0x1F3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F3", + "is_reserved": true + }, + { + "id": "Reserved500", + "name": "Reserved 0x1F4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F4", + "is_reserved": true + }, + { + "id": "Reserved501", + "name": "Reserved 0x1F5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F5", + "is_reserved": true + }, + { + "id": "Reserved502", + "name": "Reserved 0x1F6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F6", + "is_reserved": true + }, + { + "id": "Reserved503", + "name": "Reserved 0x1F7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F7", + "is_reserved": true + }, + { + "id": "Reserved504", + "name": "Reserved 0x1F8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F8", + "is_reserved": true + }, + { + "id": "Reserved505", + "name": "Reserved 0x1F9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F9", + "is_reserved": true + }, + { + "id": "Reserved506", + "name": "Reserved 0x1FA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FA", + "is_reserved": true + }, + { + "id": "Reserved507", + "name": "Reserved 0x1FB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FB", + "is_reserved": true + }, + { + "id": "Reserved508", + "name": "Reserved 0x1FC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FC", + "is_reserved": true + }, + { + "id": "Reserved509", + "name": "Reserved 0x1FD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FD", + "is_reserved": true + }, + { + "id": "Reserved510", + "name": "Reserved 0x1FE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FE", + "is_reserved": true + }, + { + "id": "Reserved511", + "name": "Reserved 0x1FF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FF", + "is_reserved": true + }, + { + "id": "Reserved512", + "name": "Reserved 0x200", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0200", + "is_reserved": true + }, + { + "id": "Reserved513", + "name": "Reserved 0x201", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0201", + "is_reserved": true + }, + { + "id": "Reserved514", + "name": "Reserved 0x202", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0202", + "is_reserved": true + }, + { + "id": "Reserved515", + "name": "Reserved 0x203", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0203", + "is_reserved": true + }, + { + "id": "Reserved516", + "name": "Reserved 0x204", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0204", + "is_reserved": true + }, + { + "id": "Reserved517", + "name": "Reserved 0x205", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0205", + "is_reserved": true + }, + { + "id": "Reserved518", + "name": "Reserved 0x206", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0206", + "is_reserved": true + }, + { + "id": "Reserved519", + "name": "Reserved 0x207", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0207", + "is_reserved": true + }, + { + "id": "Reserved520", + "name": "Reserved 0x208", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0208", + "is_reserved": true, + "bitfields": [ + { + "width": 12 + }, + { + "width": 20 + } + ] + }, + { + "id": "Reserved521", + "name": "Reserved 0x209", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0209", + "is_reserved": true + }, + { + "id": "Reserved522", + "name": "Reserved 0x20A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020A", + "is_reserved": true + }, + { + "id": "Reserved523", + "name": "Reserved 0x20B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020B", + "is_reserved": true + }, + { + "id": "Reserved524", + "name": "Reserved 0x20C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020C", + "is_reserved": true, + "bitfields": [ + { + "width": 9 + }, + { + "width": 23 + } + ] + }, + { + "id": "Reserved525", + "name": "Reserved 0x20D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020D", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved526", + "name": "Reserved 0x20E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020E", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved527", + "name": "Reserved 0x20F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 1 + }, + { + "width": 15 + } + ] + }, + { + "id": "Reserved528", + "name": "Reserved 0x210", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0210", + "is_reserved": true + }, + { + "id": "Reserved529", + "name": "Reserved 0x211", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0211", + "is_reserved": true + }, + { + "id": "fuse530", + "name": "COM_DEVICE_ID_CFG0", + "description": "COM_DEVICE_ID_CFG0", + "index_int": "0x0212", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse530-bits-0-15", + "name": "USB_VID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "fuse530-bits-16-31", + "name": "USB1_PID", + "description": "USB1 Product ID" + } + ] + }, + { + "id": "fuse531", + "name": "COM_DEVICE_ID_CFG1", + "description": "COM_DEVICE_ID_CFG1", + "index_int": "0x0213", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse531-bits-0-15", + "name": "USB2_PID", + "description": "USB2 Product ID" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved532", + "name": "Reserved 0x214", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0214", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse533", + "name": "COM_DEVICE_ID_CFG3", + "description": "COM_DEVICE_ID_CFG3", + "index_int": "0x0215", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse533-bits-0-7", + "name": "MAC_ADDR_47_39", + "description": "MAC Base Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse533-bits-8-15", + "name": "MAC_ADDR_39_32", + "description": "MAC Base Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse533-bits-16-23", + "name": "MAC_ADDR_31_24", + "description": "MAC Base Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse533-bits-24-31", + "name": "MAC_ADDR_23_16", + "description": "MAC Base Address. Reserved for customer SW" + } + ] + }, + { + "id": "fuse534", + "name": "COM_DEVICE_ID_CFG4", + "description": "COM_DEVICE_ID_CFG4", + "index_int": "0x0216", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse534-bits-0-7", + "name": "MAC_ADDR_15_8", + "description": "MAC Base Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse534-bits-8-15", + "name": "MAC_ADDR_7_0", + "description": "MAC Base Address. Reserved for customer SW" + }, + { + "width": 8 + }, + { + "width": 8, + "id": "fuse534-bits-24-31", + "name": "NUM_OF_MACS", + "description": "Number of MACs supported. Reserved for customer SW" + } + ] + }, + { + "id": "Reserved535", + "name": "Reserved 0x217", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0217", + "is_reserved": true, + "bitfields": [ + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + } + ] + }, + { + "id": "Reserved536", + "name": "Reserved 0x218", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0218", + "is_reserved": true + }, + { + "id": "Reserved537", + "name": "Reserved 0x219", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0219", + "is_reserved": true + }, + { + "id": "Reserved538", + "name": "Reserved 0x21A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x021A", + "is_reserved": true + }, + { + "id": "Reserved539", + "name": "Reserved 0x21B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x021B", + "is_reserved": true + }, + { + "id": "Reserved540", + "name": "Reserved 0x21C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x021C", + "is_reserved": true + }, + { + "id": "Reserved541", + "name": "Reserved 0x21D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x021D", + "is_reserved": true + }, + { + "id": "Reserved542", + "name": "Reserved 0x21E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x021E", + "is_reserved": true + }, + { + "id": "Reserved543", + "name": "Reserved 0x21F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x021F", + "is_reserved": true + }, + { + "id": "Reserved544", + "name": "Reserved 0x220", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0220", + "is_reserved": true + }, + { + "id": "Reserved545", + "name": "Reserved 0x221", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0221", + "is_reserved": true + }, + { + "id": "Reserved546", + "name": "Reserved 0x222", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0222", + "is_reserved": true + }, + { + "id": "Reserved547", + "name": "Reserved 0x223", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0223", + "is_reserved": true + }, + { + "id": "Reserved548", + "name": "Reserved 0x224", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0224", + "is_reserved": true + }, + { + "id": "Reserved549", + "name": "Reserved 0x225", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0225", + "is_reserved": true + }, + { + "id": "Reserved550", + "name": "Reserved 0x226", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0226", + "is_reserved": true + }, + { + "id": "Reserved551", + "name": "Reserved 0x227", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0227", + "is_reserved": true + }, + { + "id": "Reserved552", + "name": "Reserved 0x228", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0228", + "is_reserved": true + }, + { + "id": "Reserved553", + "name": "Reserved 0x229", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0229", + "is_reserved": true + }, + { + "id": "Reserved554", + "name": "Reserved 0x22A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x022A", + "is_reserved": true + }, + { + "id": "Reserved555", + "name": "Reserved 0x22B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x022B", + "is_reserved": true + }, + { + "id": "Reserved556", + "name": "Reserved 0x22C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x022C", + "is_reserved": true + }, + { + "id": "Reserved557", + "name": "Reserved 0x22D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x022D", + "is_reserved": true + }, + { + "id": "Reserved558", + "name": "Reserved 0x22E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x022E", + "is_reserved": true + }, + { + "id": "Reserved559", + "name": "Reserved 0x22F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x022F", + "is_reserved": true + }, + { + "id": "Reserved560", + "name": "Reserved 0x230", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0230", + "is_reserved": true + }, + { + "id": "Reserved561", + "name": "Reserved 0x231", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0231", + "is_reserved": true + }, + { + "id": "Reserved562", + "name": "Reserved 0x232", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0232", + "is_reserved": true + }, + { + "id": "Reserved563", + "name": "Reserved 0x233", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0233", + "is_reserved": true + }, + { + "id": "Reserved564", + "name": "Reserved 0x234", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0234", + "is_reserved": true + }, + { + "id": "Reserved565", + "name": "Reserved 0x235", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0235", + "is_reserved": true + }, + { + "id": "Reserved566", + "name": "Reserved 0x236", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0236", + "is_reserved": true + }, + { + "id": "Reserved567", + "name": "Reserved 0x237", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0237", + "is_reserved": true + }, + { + "id": "Reserved568", + "name": "Reserved 0x238", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0238", + "is_reserved": true + }, + { + "id": "Reserved569", + "name": "Reserved 0x239", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0239", + "is_reserved": true + }, + { + "id": "Reserved570", + "name": "Reserved 0x23A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x023A", + "is_reserved": true + }, + { + "id": "Reserved571", + "name": "Reserved 0x23B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x023B", + "is_reserved": true + }, + { + "id": "Reserved572", + "name": "Reserved 0x23C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x023C", + "is_reserved": true + }, + { + "id": "Reserved573", + "name": "Reserved 0x23D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x023D", + "is_reserved": true + }, + { + "id": "Reserved574", + "name": "Reserved 0x23E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x023E", + "is_reserved": true + }, + { + "id": "Reserved575", + "name": "Reserved 0x23F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x023F", + "is_reserved": true + }, + { + "id": "Reserved576", + "name": "Reserved 0x240", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0240", + "is_reserved": true + }, + { + "id": "Reserved577", + "name": "Reserved 0x241", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0241", + "is_reserved": true + }, + { + "id": "Reserved578", + "name": "Reserved 0x242", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0242", + "is_reserved": true + }, + { + "id": "Reserved579", + "name": "Reserved 0x243", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0243", + "is_reserved": true + }, + { + "id": "Reserved580", + "name": "Reserved 0x244", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0244", + "is_reserved": true + }, + { + "id": "Reserved581", + "name": "Reserved 0x245", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0245", + "is_reserved": true + }, + { + "id": "Reserved582", + "name": "Reserved 0x246", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0246", + "is_reserved": true + }, + { + "id": "Reserved583", + "name": "Reserved 0x247", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0247", + "is_reserved": true + }, + { + "id": "Reserved584", + "name": "Reserved 0x248", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0248", + "is_reserved": true + }, + { + "id": "Reserved585", + "name": "Reserved 0x249", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0249", + "is_reserved": true + }, + { + "id": "Reserved586", + "name": "Reserved 0x24A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x024A", + "is_reserved": true + }, + { + "id": "Reserved587", + "name": "Reserved 0x24B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x024B", + "is_reserved": true + }, + { + "id": "Reserved588", + "name": "Reserved 0x24C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x024C", + "is_reserved": true + }, + { + "id": "Reserved589", + "name": "Reserved 0x24D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x024D", + "is_reserved": true + }, + { + "id": "Reserved590", + "name": "Reserved 0x24E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x024E", + "is_reserved": true + }, + { + "id": "Reserved591", + "name": "Reserved 0x24F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x024F", + "is_reserved": true + }, + { + "id": "Reserved592", + "name": "Reserved 0x250", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0250", + "is_reserved": true + }, + { + "id": "Reserved593", + "name": "Reserved 0x251", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0251", + "is_reserved": true + }, + { + "id": "Reserved594", + "name": "Reserved 0x252", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0252", + "is_reserved": true + }, + { + "id": "Reserved595", + "name": "Reserved 0x253", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0253", + "is_reserved": true + }, + { + "id": "Reserved596", + "name": "Reserved 0x254", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0254", + "is_reserved": true + }, + { + "id": "Reserved597", + "name": "Reserved 0x255", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0255", + "is_reserved": true + }, + { + "id": "Reserved598", + "name": "Reserved 0x256", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0256", + "is_reserved": true + }, + { + "id": "Reserved599", + "name": "Reserved 0x257", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0257", + "is_reserved": true + }, + { + "id": "Reserved600", + "name": "Reserved 0x258", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0258", + "is_reserved": true + }, + { + "id": "Reserved601", + "name": "Reserved 0x259", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0259", + "is_reserved": true + }, + { + "id": "Reserved602", + "name": "Reserved 0x25A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025A", + "is_reserved": true + }, + { + "id": "Reserved603", + "name": "Reserved 0x25B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025B", + "is_reserved": true + }, + { + "id": "Reserved604", + "name": "Reserved 0x25C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025C", + "is_reserved": true + }, + { + "id": "Reserved605", + "name": "Reserved 0x25D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025D", + "is_reserved": true + }, + { + "id": "Reserved606", + "name": "Reserved 0x25E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025E", + "is_reserved": true + }, + { + "id": "Reserved607", + "name": "Reserved 0x25F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025F", + "is_reserved": true + }, + { + "id": "fuse608", + "name": "OEM_SRKH0", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x0260", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse609", + "name": "OEM_SRKH1", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x0261", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse610", + "name": "OEM_SRKH2", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x0262", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse611", + "name": "OEM_SRKH3", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x0263", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse612", + "name": "OEM_SRKH4", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x0264", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse613", + "name": "OEM_SRKH5", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x0265", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse614", + "name": "OEM_SRKH6", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x0266", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse615", + "name": "OEM_SRKH7", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x0267", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse616", + "name": "OEM_SRKH8", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x0268" + }, + { + "id": "fuse617", + "name": "OEM_SRKH9", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x0269" + }, + { + "id": "fuse618", + "name": "OEM_SRKH10", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x026A" + }, + { + "id": "fuse619", + "name": "OEM_SRKH11", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x026B", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse620", + "name": "OEM_SRKH12", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x026C" + }, + { + "id": "fuse621", + "name": "OEM_SRKH13", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x026D", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse622", + "name": "OEM_SRKH14", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x026E" + }, + { + "id": "fuse623", + "name": "OEM_SRKH15", + "description": "Hash of OEM public key tree in FW container", + "index_int": "0x026F" + }, + { + "id": "fuse624", + "name": "OEM_PQC_SRKH0", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x0270", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse625", + "name": "OEM_PQC_SRKH1", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x0271", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse626", + "name": "OEM_PQC_SRKH2", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x0272", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse627", + "name": "OEM_PQC_SRKH3", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x0273", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse628", + "name": "OEM_PQC_SRKH4", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x0274", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse629", + "name": "OEM_PQC_SRKH5", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x0275", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse630", + "name": "OEM_PQC_SRKH6", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x0276", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse631", + "name": "OEM_PQC_SRKH7", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x0277", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse632", + "name": "OEM_PQC_SRKH8", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x0278", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse633", + "name": "OEM_PQC_SRKH9", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x0279", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse634", + "name": "OEM_PQC_SRKH10", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x027A", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse635", + "name": "OEM_PQC_SRKH11", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x027B", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse636", + "name": "OEM_PQC_SRKH12", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x027C", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse637", + "name": "OEM_PQC_SRKH13", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x027D", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse638", + "name": "OEM_PQC_SRKH14", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x027E", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse639", + "name": "OEM_PQC_SRKH15", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x027F", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "Reserved640", + "name": "Reserved 0x280", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0280", + "is_reserved": true + }, + { + "id": "Reserved641", + "name": "Reserved 0x281", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0281", + "is_reserved": true + }, + { + "id": "Reserved642", + "name": "Reserved 0x282", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0282", + "is_reserved": true + }, + { + "id": "Reserved643", + "name": "Reserved 0x283", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0283", + "is_reserved": true + }, + { + "id": "Reserved644", + "name": "Reserved 0x284", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0284", + "is_reserved": true + }, + { + "id": "Reserved645", + "name": "Reserved 0x285", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0285", + "is_reserved": true + }, + { + "id": "Reserved646", + "name": "Reserved 0x286", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0286", + "is_reserved": true + }, + { + "id": "Reserved647", + "name": "Reserved 0x287", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0287", + "is_reserved": true + }, + { + "id": "Reserved648", + "name": "Reserved 0x288", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0288", + "is_reserved": true + }, + { + "id": "Reserved649", + "name": "Reserved 0x289", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0289", + "is_reserved": true + }, + { + "id": "Reserved650", + "name": "Reserved 0x28A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x028A", + "is_reserved": true + }, + { + "id": "Reserved651", + "name": "Reserved 0x28B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x028B", + "is_reserved": true + }, + { + "id": "Reserved652", + "name": "Reserved 0x28C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x028C", + "is_reserved": true + }, + { + "id": "Reserved653", + "name": "Reserved 0x28D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x028D", + "is_reserved": true + }, + { + "id": "Reserved654", + "name": "Reserved 0x28E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x028E", + "is_reserved": true + }, + { + "id": "Reserved655", + "name": "Reserved 0x28F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x028F", + "is_reserved": true + }, + { + "id": "Reserved656", + "name": "Reserved 0x290", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0290", + "is_reserved": true + }, + { + "id": "Reserved657", + "name": "Reserved 0x291", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0291", + "is_reserved": true + }, + { + "id": "Reserved658", + "name": "Reserved 0x292", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0292", + "is_reserved": true + }, + { + "id": "Reserved659", + "name": "Reserved 0x293", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0293", + "is_reserved": true + }, + { + "id": "Reserved660", + "name": "Reserved 0x294", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0294", + "is_reserved": true + }, + { + "id": "Reserved661", + "name": "Reserved 0x295", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0295", + "is_reserved": true + }, + { + "id": "Reserved662", + "name": "Reserved 0x296", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0296", + "is_reserved": true + }, + { + "id": "Reserved663", + "name": "Reserved 0x297", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0297", + "is_reserved": true + }, + { + "id": "Reserved664", + "name": "Reserved 0x298", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0298", + "is_reserved": true + }, + { + "id": "Reserved665", + "name": "Reserved 0x299", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0299", + "is_reserved": true + }, + { + "id": "Reserved666", + "name": "Reserved 0x29A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x029A", + "is_reserved": true + }, + { + "id": "Reserved667", + "name": "Reserved 0x29B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x029B", + "is_reserved": true + }, + { + "id": "Reserved668", + "name": "Reserved 0x29C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x029C", + "is_reserved": true + }, + { + "id": "Reserved669", + "name": "Reserved 0x29D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x029D", + "is_reserved": true + }, + { + "id": "Reserved670", + "name": "Reserved 0x29E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x029E", + "is_reserved": true + }, + { + "id": "Reserved671", + "name": "Reserved 0x29F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x029F", + "is_reserved": true + }, + { + "id": "Reserved672", + "name": "Reserved 0x2A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02A0", + "is_reserved": true + }, + { + "id": "Reserved673", + "name": "Reserved 0x2A1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02A1", + "is_reserved": true + }, + { + "id": "Reserved674", + "name": "Reserved 0x2A2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02A2", + "is_reserved": true + }, + { + "id": "Reserved675", + "name": "Reserved 0x2A3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02A3", + "is_reserved": true + }, + { + "id": "Reserved676", + "name": "Reserved 0x2A4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02A4", + "is_reserved": true + }, + { + "id": "Reserved677", + "name": "Reserved 0x2A5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02A5", + "is_reserved": true + }, + { + "id": "Reserved678", + "name": "Reserved 0x2A6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02A6", + "is_reserved": true + }, + { + "id": "Reserved679", + "name": "Reserved 0x2A7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02A7", + "is_reserved": true + }, + { + "id": "Reserved680", + "name": "Reserved 0x2A8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02A8", + "is_reserved": true + }, + { + "id": "Reserved681", + "name": "Reserved 0x2A9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02A9", + "is_reserved": true + }, + { + "id": "Reserved682", + "name": "Reserved 0x2AA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02AA", + "is_reserved": true + }, + { + "id": "Reserved683", + "name": "Reserved 0x2AB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02AB", + "is_reserved": true + }, + { + "id": "Reserved684", + "name": "Reserved 0x2AC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02AC", + "is_reserved": true + }, + { + "id": "Reserved685", + "name": "Reserved 0x2AD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02AD", + "is_reserved": true + }, + { + "id": "Reserved686", + "name": "Reserved 0x2AE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02AE", + "is_reserved": true + }, + { + "id": "Reserved687", + "name": "Reserved 0x2AF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02AF", + "is_reserved": true + }, + { + "id": "Reserved688", + "name": "Reserved 0x2B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02B0", + "is_reserved": true + }, + { + "id": "Reserved689", + "name": "Reserved 0x2B1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02B1", + "is_reserved": true + }, + { + "id": "Reserved690", + "name": "Reserved 0x2B2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02B2", + "is_reserved": true + }, + { + "id": "Reserved691", + "name": "Reserved 0x2B3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02B3", + "is_reserved": true + }, + { + "id": "Reserved692", + "name": "Reserved 0x2B4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02B4", + "is_reserved": true + }, + { + "id": "Reserved693", + "name": "Reserved 0x2B5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02B5", + "is_reserved": true + }, + { + "id": "Reserved694", + "name": "Reserved 0x2B6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02B6", + "is_reserved": true + }, + { + "id": "Reserved695", + "name": "Reserved 0x2B7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02B7", + "is_reserved": true + }, + { + "id": "Reserved696", + "name": "Reserved 0x2B8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02B8", + "is_reserved": true + }, + { + "id": "Reserved697", + "name": "Reserved 0x2B9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02B9", + "is_reserved": true + }, + { + "id": "Reserved698", + "name": "Reserved 0x2BA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02BA", + "is_reserved": true + }, + { + "id": "Reserved699", + "name": "Reserved 0x2BB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02BB", + "is_reserved": true + }, + { + "id": "Reserved700", + "name": "Reserved 0x2BC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02BC", + "is_reserved": true + }, + { + "id": "Reserved701", + "name": "Reserved 0x2BD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02BD", + "is_reserved": true + }, + { + "id": "Reserved702", + "name": "Reserved 0x2BE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02BE", + "is_reserved": true + }, + { + "id": "Reserved703", + "name": "Reserved 0x2BF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02BF", + "is_reserved": true + }, + { + "id": "Reserved704", + "name": "Reserved 0x2C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02C0", + "is_reserved": true + }, + { + "id": "Reserved705", + "name": "Reserved 0x2C1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02C1", + "is_reserved": true + }, + { + "id": "Reserved706", + "name": "Reserved 0x2C2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02C2", + "is_reserved": true + }, + { + "id": "Reserved707", + "name": "Reserved 0x2C3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02C3", + "is_reserved": true + }, + { + "id": "Reserved708", + "name": "Reserved 0x2C4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02C4", + "is_reserved": true + }, + { + "id": "Reserved709", + "name": "Reserved 0x2C5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02C5", + "is_reserved": true + }, + { + "id": "Reserved710", + "name": "Reserved 0x2C6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02C6", + "is_reserved": true + }, + { + "id": "Reserved711", + "name": "Reserved 0x2C7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02C7", + "is_reserved": true + }, + { + "id": "Reserved712", + "name": "Reserved 0x2C8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02C8", + "is_reserved": true + }, + { + "id": "Reserved713", + "name": "Reserved 0x2C9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02C9", + "is_reserved": true + }, + { + "id": "Reserved714", + "name": "Reserved 0x2CA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02CA", + "is_reserved": true + }, + { + "id": "Reserved715", + "name": "Reserved 0x2CB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02CB", + "is_reserved": true + }, + { + "id": "Reserved716", + "name": "Reserved 0x2CC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02CC", + "is_reserved": true + }, + { + "id": "Reserved717", + "name": "Reserved 0x2CD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02CD", + "is_reserved": true + }, + { + "id": "Reserved718", + "name": "Reserved 0x2CE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02CE", + "is_reserved": true + }, + { + "id": "Reserved719", + "name": "Reserved 0x2CF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02CF", + "is_reserved": true + }, + { + "id": "Reserved720", + "name": "Reserved 0x2D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02D0", + "is_reserved": true + }, + { + "id": "Reserved721", + "name": "Reserved 0x2D1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02D1", + "is_reserved": true + }, + { + "id": "Reserved722", + "name": "Reserved 0x2D2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02D2", + "is_reserved": true + }, + { + "id": "Reserved723", + "name": "Reserved 0x2D3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02D3", + "is_reserved": true + }, + { + "id": "Reserved724", + "name": "Reserved 0x2D4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02D4", + "is_reserved": true + }, + { + "id": "Reserved725", + "name": "Reserved 0x2D5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02D5", + "is_reserved": true + }, + { + "id": "Reserved726", + "name": "Reserved 0x2D6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02D6", + "is_reserved": true + }, + { + "id": "Reserved727", + "name": "Reserved 0x2D7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02D7", + "is_reserved": true + }, + { + "id": "Reserved728", + "name": "Reserved 0x2D8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02D8", + "is_reserved": true + }, + { + "id": "Reserved729", + "name": "Reserved 0x2D9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02D9", + "is_reserved": true + }, + { + "id": "Reserved730", + "name": "Reserved 0x2DA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02DA", + "is_reserved": true + }, + { + "id": "Reserved731", + "name": "Reserved 0x2DB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02DB", + "is_reserved": true + }, + { + "id": "Reserved732", + "name": "Reserved 0x2DC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02DC", + "is_reserved": true + }, + { + "id": "Reserved733", + "name": "Reserved 0x2DD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02DD", + "is_reserved": true + }, + { + "id": "Reserved734", + "name": "Reserved 0x2DE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02DE", + "is_reserved": true + }, + { + "id": "Reserved735", + "name": "Reserved 0x2DF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02DF", + "is_reserved": true + }, + { + "id": "Reserved736", + "name": "Reserved 0x2E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02E0", + "is_reserved": true + }, + { + "id": "Reserved737", + "name": "Reserved 0x2E1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02E1", + "is_reserved": true + }, + { + "id": "Reserved738", + "name": "Reserved 0x2E2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02E2", + "is_reserved": true + }, + { + "id": "Reserved739", + "name": "Reserved 0x2E3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02E3", + "is_reserved": true + }, + { + "id": "Reserved740", + "name": "Reserved 0x2E4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02E4", + "is_reserved": true + }, + { + "id": "Reserved741", + "name": "Reserved 0x2E5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02E5", + "is_reserved": true + }, + { + "id": "Reserved742", + "name": "Reserved 0x2E6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02E6", + "is_reserved": true + }, + { + "id": "Reserved743", + "name": "Reserved 0x2E7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02E7", + "is_reserved": true + }, + { + "id": "Reserved744", + "name": "Reserved 0x2E8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02E8", + "is_reserved": true + }, + { + "id": "Reserved745", + "name": "Reserved 0x2E9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02E9", + "is_reserved": true + }, + { + "id": "Reserved746", + "name": "Reserved 0x2EA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02EA", + "is_reserved": true + }, + { + "id": "Reserved747", + "name": "Reserved 0x2EB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02EB", + "is_reserved": true + }, + { + "id": "Reserved748", + "name": "Reserved 0x2EC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02EC", + "is_reserved": true + }, + { + "id": "Reserved749", + "name": "Reserved 0x2ED", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02ED", + "is_reserved": true + }, + { + "id": "Reserved750", + "name": "Reserved 0x2EE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02EE", + "is_reserved": true + }, + { + "id": "Reserved751", + "name": "Reserved 0x2EF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02EF", + "is_reserved": true + }, + { + "id": "Reserved752", + "name": "Reserved 0x2F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02F0", + "is_reserved": true + }, + { + "id": "Reserved753", + "name": "Reserved 0x2F1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02F1", + "is_reserved": true + }, + { + "id": "Reserved754", + "name": "Reserved 0x2F2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02F2", + "is_reserved": true + }, + { + "id": "Reserved755", + "name": "Reserved 0x2F3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02F3", + "is_reserved": true + }, + { + "id": "Reserved756", + "name": "Reserved 0x2F4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02F4", + "is_reserved": true + }, + { + "id": "Reserved757", + "name": "Reserved 0x2F5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02F5", + "is_reserved": true + }, + { + "id": "Reserved758", + "name": "Reserved 0x2F6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02F6", + "is_reserved": true + }, + { + "id": "Reserved759", + "name": "Reserved 0x2F7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02F7", + "is_reserved": true + }, + { + "id": "Reserved760", + "name": "Reserved 0x2F8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02F8", + "is_reserved": true + }, + { + "id": "Reserved761", + "name": "Reserved 0x2F9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02F9", + "is_reserved": true + }, + { + "id": "Reserved762", + "name": "Reserved 0x2FA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02FA", + "is_reserved": true + }, + { + "id": "Reserved763", + "name": "Reserved 0x2FB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02FB", + "is_reserved": true + }, + { + "id": "Reserved764", + "name": "Reserved 0x2FC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02FC", + "is_reserved": true + }, + { + "id": "Reserved765", + "name": "Reserved 0x2FD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02FD", + "is_reserved": true + }, + { + "id": "Reserved766", + "name": "Reserved 0x2FE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02FE", + "is_reserved": true + }, + { + "id": "Reserved767", + "name": "Reserved 0x2FF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x02FF", + "is_reserved": true + }, + { + "id": "Reserved768", + "name": "Reserved 0x300", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0300", + "is_reserved": true + }, + { + "id": "Reserved769", + "name": "Reserved 0x301", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0301", + "is_reserved": true + }, + { + "id": "Reserved770", + "name": "Reserved 0x302", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0302", + "is_reserved": true + }, + { + "id": "Reserved771", + "name": "Reserved 0x303", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0303", + "is_reserved": true + }, + { + "id": "Reserved772", + "name": "Reserved 0x304", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0304", + "is_reserved": true + }, + { + "id": "Reserved773", + "name": "Reserved 0x305", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0305", + "is_reserved": true + }, + { + "id": "Reserved774", + "name": "Reserved 0x306", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0306", + "is_reserved": true + }, + { + "id": "Reserved775", + "name": "Reserved 0x307", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0307", + "is_reserved": true + }, + { + "id": "Reserved776", + "name": "Reserved 0x308", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0308", + "is_reserved": true + }, + { + "id": "Reserved777", + "name": "Reserved 0x309", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0309", + "is_reserved": true + }, + { + "id": "Reserved778", + "name": "Reserved 0x30A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x030A", + "is_reserved": true + }, + { + "id": "Reserved779", + "name": "Reserved 0x30B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x030B", + "is_reserved": true + }, + { + "id": "Reserved780", + "name": "Reserved 0x30C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x030C", + "is_reserved": true + }, + { + "id": "Reserved781", + "name": "Reserved 0x30D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x030D", + "is_reserved": true + }, + { + "id": "Reserved782", + "name": "Reserved 0x30E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x030E", + "is_reserved": true + }, + { + "id": "Reserved783", + "name": "Reserved 0x30F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x030F", + "is_reserved": true + }, + { + "id": "Reserved784", + "name": "Reserved 0x310", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0310", + "is_reserved": true + }, + { + "id": "Reserved785", + "name": "Reserved 0x311", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0311", + "is_reserved": true + }, + { + "id": "Reserved786", + "name": "Reserved 0x312", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0312", + "is_reserved": true + }, + { + "id": "Reserved787", + "name": "Reserved 0x313", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0313", + "is_reserved": true + }, + { + "id": "Reserved788", + "name": "Reserved 0x314", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0314", + "is_reserved": true + }, + { + "id": "Reserved789", + "name": "Reserved 0x315", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0315", + "is_reserved": true + }, + { + "id": "Reserved790", + "name": "Reserved 0x316", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0316", + "is_reserved": true + }, + { + "id": "Reserved791", + "name": "Reserved 0x317", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0317", + "is_reserved": true + }, + { + "id": "Reserved792", + "name": "Reserved 0x318", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0318", + "is_reserved": true + }, + { + "id": "Reserved793", + "name": "Reserved 0x319", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0319", + "is_reserved": true + }, + { + "id": "Reserved794", + "name": "Reserved 0x31A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x031A", + "is_reserved": true + }, + { + "id": "Reserved795", + "name": "Reserved 0x31B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x031B", + "is_reserved": true + }, + { + "id": "Reserved796", + "name": "Reserved 0x31C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x031C", + "is_reserved": true + }, + { + "id": "Reserved797", + "name": "Reserved 0x31D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x031D", + "is_reserved": true + }, + { + "id": "Reserved798", + "name": "Reserved 0x31E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x031E", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved799", + "name": "Reserved 0x31F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x031F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 2 + }, + { + "width": 4 + }, + { + "width": 10 + } + ] + }, + { + "id": "Reserved800", + "name": "Reserved 0x320", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0320", + "is_reserved": true + }, + { + "id": "Reserved801", + "name": "Reserved 0x321", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0321", + "is_reserved": true + }, + { + "id": "Reserved802", + "name": "Reserved 0x322", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0322", + "is_reserved": true + }, + { + "id": "Reserved803", + "name": "Reserved 0x323", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0323", + "is_reserved": true + }, + { + "id": "Reserved804", + "name": "Reserved 0x324", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0324", + "is_reserved": true + }, + { + "id": "Reserved805", + "name": "Reserved 0x325", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0325", + "is_reserved": true + }, + { + "id": "Reserved806", + "name": "Reserved 0x326", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0326", + "is_reserved": true + }, + { + "id": "Reserved807", + "name": "Reserved 0x327", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0327", + "is_reserved": true + }, + { + "id": "Reserved808", + "name": "Reserved 0x328", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0328", + "is_reserved": true + }, + { + "id": "Reserved809", + "name": "Reserved 0x329", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0329", + "is_reserved": true + }, + { + "id": "Reserved810", + "name": "Reserved 0x32A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x032A", + "is_reserved": true + }, + { + "id": "Reserved811", + "name": "Reserved 0x32B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x032B", + "is_reserved": true + }, + { + "id": "Reserved812", + "name": "Reserved 0x32C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x032C", + "is_reserved": true + }, + { + "id": "Reserved813", + "name": "Reserved 0x32D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x032D", + "is_reserved": true + }, + { + "id": "Reserved814", + "name": "Reserved 0x32E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x032E", + "is_reserved": true + }, + { + "id": "Reserved815", + "name": "Reserved 0x32F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x032F", + "is_reserved": true + }, + { + "id": "Reserved816", + "name": "Reserved 0x330", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0330", + "is_reserved": true + }, + { + "id": "Reserved817", + "name": "Reserved 0x331", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0331", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx95294/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx95294/database.yaml new file mode 100644 index 0000000..8ef235c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx95294/database.yaml @@ -0,0 +1,454 @@ +# Copyright 2025-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimx9596 + +revisions: + a0: {} + +latest: a0 + +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: i.MX Application Processors + spsdk_predecessor_name: mx952 + web: https://www.nxp.com/products/i.MX-952 + memory_map: + # M33 Code TCM (256KB) + code-tcm_ns: + start_int: 0x0FF80000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + code-tcm_s: + start_int: 0x1FF80000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + # M33 System TCM (256KB) + system-tcm_ns: + start_int: 0x20000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + system-tcm_s: + start_int: 0x30000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + # M7 DTCM (256KB) - at 0x20000000 for M7 view + cm7_dtcm_ns: + start_int: 0x20000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + # M7 ITCM (256KB) - at 0x00000000 for M7 view + cm7_itcm_ns: + start_int: 0x00000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + # OCRAM (352KB) + ocram_ns: + start_int: 0x20480000 + size_int: 0x58000 + external: false + non_xip_type: int_ram + ocram_s: + start_int: 0x30480000 + size_int: 0x58000 + external: false + non_xip_type: int_ram + # External Serial Peripheral Interface (XSPI1/FlexSPI1) + flexspi1_ns: + start_int: 0x28000000 + size_int: 0x08000000 + external: true + mirror_of: flexspi1_s + flexspi1_s: + start_int: 0x38000000 + size_int: 0x08000000 + external: true + # Neutron SRAM (400KB) + neutron_sram_ns: + start_int: 0x4AA00000 + size_int: 0x64000 + external: false + mirror_of: neutron_sram_s + non_xip_type: int_ram + neutron_sram_s: + start_int: 0x5AA00000 + size_int: 0x64000 + external: false + non_xip_type: int_ram + # # OCRAM_C (96KB) + # ocram_c_ns: + # start_int: 0x4AF80000 + # size_int: 0x18000 + # external: false + # mirror_of: ocram_c_s + # non_xip_type: int_ram + # ocram_c_s: + # start_int: 0x5AF80000 + # size_int: 0x18000 + # external: false + # non_xip_type: int_ram + # # OCRAM_D (36KB) + # ocram_d_ns: + # start_int: 0x4B300000 + # size_int: 0x9000 + # external: false + # mirror_of: ocram_d_s + # non_xip_type: int_ram + # ocram_d_s: + # start_int: 0x5B300000 + # size_int: 0x9000 + # external: false + # non_xip_type: int_ram + # DRAM regions (256MB each) + dram1_ns: + start_int: 0x80000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram1_s: + start_int: 0x90000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram2_ns: + start_int: 0xA0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram2_s: + start_int: 0xB0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram3_ns: + start_int: 0xC0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram3_s: + start_int: 0xD0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + isp: + rom: + protocol: sdps + interfaces: [usb] + usb: + - vid: 0x1FC9 + pid: 0x0028 + protocol_params: + no_cmd: True + hid_ep1: True + hid_pack_size: 1020 + +features: + # ======== Fuses description section ======== + fuses: + tool: nxpele + grouped_registers: + - uid: otfad1_key + name: OTFAD1_KEY + width: 128 + reverse_subregs_order: True + reversed: True + config_as_hexstring: true + description: OTFAD1 Key known as KEK. + sub_regs: [fuse184, fuse185, fuse186, fuse187] + - uid: srkh + name: SRKH + width: 512 + reversed: True + config_as_hexstring: True + description: "SHA512 hash digest of hash of four SRK keys" + sub_regs: + [ + "fuse128", + "fuse129", + "fuse130", + "fuse131", + "fuse132", + "fuse133", + "fuse134", + "fuse135", + "fuse136", + "fuse137", + "fuse138", + "fuse139", + "fuse140", + "fuse141", + "fuse142", + "fuse143", + ] + + - uid: pqc_srkh + name: PQC_SRKH + width: 512 + reversed: True + config_as_hexstring: True + description: "SHA512 hash digest of hash of four SRK keys" + sub_regs: + [ + "fuse448", + "fuse449", + "fuse450", + "fuse451", + "fuse452", + "fuse453", + "fuse454", + "fuse455", + "fuse456", + "fuse457", + "fuse458", + "fuse459", + "fuse460", + "fuse461", + "fuse462", + "fuse463", + ] + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x9280_0000 + size: 0x30000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_ahab_v2" + + # ======== DAT section ======== + dat: + socc: 0x4D58005F # SOCC identification + based_on_ele: True # Flag if the implementation of DAT is based on EdgeLock Enclave + dat_is_using_sha256_always: True + auth_beacon_length: 4 # The length in bytes of authentication beacon + ele_cnt_version: 2 + dac_version_is_swapped: True + sub_features: ["ele_pqc"] + test_address: 0x2048_0000 + dmbox_ap_ix: 0 + dac_rot_type: not_available # The Dac packet doesn't contains the ROT hash + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: ../mimx9596/fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== AHAB section ======== + ahab: + sub_features: [ahab_image, certificate_supported] + containers_max_cnt: 3 + valid_offset_minimal_alignment: 0x400 + container_types: [2, 1] # Supported container types (keep order 2, 1 - this defines default 2) + fuses_0: + _name: "AHAB SRKH" + srkh: "__srk_hash0" # SRK hash fuse + fuses_1: + _name: "AHAB SRKH PQC" + pqc_srkh: "__srk_hash1" # SRK PQC hash fuse + + core_ids: + DUMMY_CORE: [0, "dummy", "Virtual dummy core (used for data)"] + CORTEX_M33: [1, "cortex-m33", "Cortex M33 - Boot core"] + CORTEX_A55: [2, "cortex-a55", "Cortex A55"] + ELE: [6, "ele", "EdgeLock Enclave"] + V2X_1: [9, "v2x-1", "V2X 1"] + V2X_2: [10, "v2x-2", "V2X 2"] + CORTEX_M7_1: [11, "cortex-m7-1", "Cortex M7 Core ID 1"] + DDR: [14, "ddr", "DDR Core"] + + image_types: + application: + EXECUTABLE: [0x03, executable, Executable Image] + DATA: [0x04, data, Data Image] + OEI: [0x05, oei, OEI Image] + PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + DEK_VALIDATION_FCB_CHK: + [0x08, dek_validation_fcb_chk, DEK validation FCB check Image] + PROVISIONING_DATA: [0x09, provisioning_data, Provisioning data Image] + EXECUTABLE_FAST_BOOT_IMAGE: + [0x0A, executable_fast_boot_image, Executable fast boot Image] + OEI_DDR: [0x0D, oei_ddr, Executable boot Image] + V2X_DUMMY: [0x0E, v2x_dummy, V2X dummy Image] + + ele: + ELE_AS_IMAGE: [0x05, ele_as_image, EdgeLock Enclave Image in OEM Image] + ELE: [0x06, ele, EdgeLock Enclave Image] + + v2x: + V2X_AS_IMAGE: [0x0A, v2x_as_image, V2X image as OEM Image] + V2X_PRIMARY: [0x0B, v2x_primary, V2X primary Image] + V2X_SECONDARY: [0x0C, v2x_secondary, V2X secondary Image] + V2X_ROM_PATCH: [0x0D, v2x_rom_patch, V2X rom patch Image] + + image_types_mapping: + ele: [6] + v2x: [9, 10] + + # AHAB extra images + oei_ddr_load_address: 0x1ffc0000 + oei_ddr_entry_point: 0x1ffc0001 + oei_ddr_core_id: cortex-m33 + oei_ddr_image_type: oei + oei_ddr_image_size_alignment: 0x400 + oei_ddr_gap_after_image: 0 + oei_ddr_qb_data_dummy: True + + oei_tcm_load_address: 0x1ffc0000 + oei_tcm_entry_point: 0x1ffc0001 + oei_tcm_core_id: cortex-m33 + oei_tcm_image_type: oei + oei_tcm_image_size_alignment: 0x400 + + system_manager_load_address: 0x1ffc0000 + system_manager_entry_point: 0x1ffc0000 + system_manager_core_id: cortex-m33 + system_manager_image_size_alignment: 0x400 + + cortex_m7_app_load_address: 0x303c0000 + cortex_m7_app_entry_point: 0 + cortex_m7_app_core_id: cortex-m7-1 + cortex_m7_app_meta_data_start_cpu_id: 1 + cortex_m7_app_image_size_alignment: 0x400 + + spl_load_address: 0x20480000 + spl_core_id: cortex-a55 + spl_meta_data_start_cpu_id: 2 + spl_ddr_image_size_alignment: 0x400 + + v2x_dummy_load_address: 0x8b000000 + v2x_dummy_image_type: v2x_dummy + v2x_dummy_core_id: cortex-m33 + + atf_load_address: 0x8a200000 + atf_core_id: cortex-a55 + atf_meta_data_start_cpu_id: 2 + atf_image_size_alignment: 0x400 + + uboot_load_address: 0x90200000 + uboot_core_id: cortex-a55 + uboot_meta_data_start_cpu_id: 2 + uboot_image_size_alignment: 0x400 + + tee_load_address: 0x8c000000 + tee_core_id: cortex-a55 + tee_meta_data_start_cpu_id: 2 + tee_image_size_alignment: 0x400 + + kernel_load_address: 0x90400000 + kernel_core_id: cortex-a55 + kernel_meta_data_start_cpu_id: 2 + kernel_chunk_size: 0x700000 + kernel_revisions_to_split: [a0, a1] + kernel_image_size_alignment: 0x400 + + dtb_load_address: 0x93000000 + dtb_core_id: cortex-a55 + dtb_meta_data_start_cpu_id: 0 + dtb_entry_point: 0x0 + dtb_image_type: data + dtb_image_size_alignment: 0x400 + + extra_images: + [ + double_authentication, + oei_ddr, + oei_tcm, + system_manager, + cortex_m7_app, + v2x_dummy, + spl, + atf, + uboot, + tee, + kernel, + dtb, + ] + # ======== EdgeLock Enclave section ======== + ele: {} + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + #not_used: 0xC00 + primary_image_container_set: 0x1_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + sd: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + # flexspi_nand: + # segments: + # xmcd: 0x00 + # primary_image_container_set: 0x400 + # secondary_image_container_set_ahab: -1 # Just behind previous segment + recovery_spi: + note: Connected to LPSPI1/2for Low power boot and LPSPI/3/4 for Single boot. SPI NOR recovery image + segments: + primary_image_container_set: 0x00 + secondary_image_container_set: -1 # Just behind previous segment + + # # ======== OTFAD section ======== + otfad: + keyblob_byte_swap_cnt: 8 + sb_21_supported: False + has_kek_fuses: True + supports_key_scrambling: True + + fuses_1: # Fuses for OTFAD1 + _name: Configuration of fuses for OTFAD1 + _no_verify: True + fuse188: # OTFAD CFG Fuse + fuse188-bit-3: 1 # OTFAD Enable + fuse188-bit-7: __scramble_enabled # OTFAD enable scrambling + fuse188-bits-8-15: __key_scramble_align # OTFAD scramble align + fuse189: __key_scramble_mask # OTFAD Scramble Key + otfad1_key: __kek # OTFAD Key + + additional_template: ["otfad_scramble"] + additional_template_text: | + Is important to use physical addresses (non-secure) in settings of OTFAD to proper run the decryption on device. + For example: + In case of using FlexSPI2 the secure base address address is 0x1400_0000. But in setting of the OTFAD use 0x0400_0000 as a base address. + The code must be still linked on secure base address 0x1400_0000 to proper run of OTFAD hardware. + + Same is for FlexSPI1, but instead of 0x3800_0000 base address, the 0x2800_0000 must be used in OTFAD configuration. + + # # ======== Device Hardware Security Module (HSM) section ======== + # devhsm: EdgeLock 2 Go + + # ======== Misc signing section ======== + signing: + pss_padding: true + + # ======== Fastboot ======== + fastboot: + address: 0x9280_0000 + size: 0x2000_0000 + + # ======== nxpuuu ========== + nxpuuu: {} + # ===== TLV ===== + tlv_blob: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx95294/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx95294/fuses.json new file mode 100644 index 0000000..f8164e4 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx95294/fuses.json @@ -0,0 +1,11632 @@ +{ + "cpu": "mimx95294", + "shadow_reg_base_addr_int": "0x00000000", + "groups": [ + { + "group": { + "name": "LOCK_CFG", + "description": "LOCK_CFG" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCK_CFG0", + "description": "LOCK_CFG0", + "index_int": "0", + "shadow_reg_offset_int": "0", + "access": "RO", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse0-bits12-14", + "name": "LOCK_CFG_LOCK", + "description": "Lock for Fuse Lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse1", + "name": "LOCK_CFG1", + "description": "LOCK_CFG1", + "index_int": "0x0001", + "shadow_reg_offset_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "id": "fuse1-bits3-5", + "name": "SENTINEL_MISC1_LOCK", + "description": "Sentinel Misc. Config lock 1 - Used to lock OEM owned configuration fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse2", + "name": "LOCK_CFG2", + "description": "LOCK_CFG2", + "index_int": "0x0002", + "shadow_reg_offset_int": "0x0008", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "id": "fuse2-bits6-8", + "name": "SENTINEL_IPED_KEY_LOCK", + "description": "Sentinel IPED0 config lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved3", + "name": "Reserved 0x3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0003", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse4", + "name": "LOCK_CFG4", + "description": "LOCK_CFG4", + "index_int": "0x0004", + "shadow_reg_offset_int": "0x0010", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "id": "fuse4-bits12-14", + "name": "SENTINEL_OEM_SRKH0_LOCK", + "description": "Sentinel OEM SRK Hash Lock (First bank)", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved5", + "name": "Reserved 0x5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0005", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse6", + "name": "LOCK_CFG6", + "description": "LOCK_CFG6", + "index_int": "0x0006", + "shadow_reg_offset_int": "0x0018", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "id": "fuse6-bits9-11", + "name": "GPR0_LOCK", + "description": "GPR0 lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse7", + "name": "LOCK_CFG7", + "description": "LOCK_CFG7", + "index_int": "0x0007", + "shadow_reg_offset_int": "0x001C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse7-bits3-5", + "name": "OEM_SW_CFG_LOCK", + "description": "OEM SW CFG lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse7-bits6-8", + "name": "BOOT_CFG_LOCK", + "description": "Boot config lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse7-bits9-11", + "name": "BOOT2_CFG_LOCK", + "description": "Boot config lock Second set", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse7-bits12-14", + "name": "GPR1_LOCK", + "description": "GPR 1 lock bis", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse8", + "name": "LOCK_CFG8", + "description": "LOCK_CFG8", + "index_int": "0x0008", + "shadow_reg_offset_int": "0x0020", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "id": "fuse8-bits9-11", + "name": "SENTINEL_OEM_SRKH1_LOCK", + "description": "Sentinel OEM SRKH Lock (Second set for SRKH[511:256])", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse8-bits12-14", + "name": "SENTINEL_OEM_PQC_SRKH_LOCK", + "description": "OEM PQC hash of public keys" + }, + { + "width": 1, + "access": "RO" + } + ] + }, + { + "id": "fuse9", + "name": "LOCK_CFG9", + "description": "LOCK_CFG9", + "index_int": "0x0009", + "shadow_reg_offset_int": "0x0024", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "id": "fuse9-bits9-11", + "name": "V2X_SHE_MC_LOCK", + "description": "V2X SHE monotonic counter lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse9-bits12-14", + "name": "V2X_SHE_KEY_LOCK", + "description": "V2X SHE key lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1, + "access": "RO" + } + ] + }, + { + "id": "fuse10", + "name": "LOCK_CFG10", + "description": "LOCK_CFG10", + "index_int": "0x000A", + "shadow_reg_offset_int": "0x0028", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse10-bits0-2", + "name": "COM_DEVICE_ID1_LOCK", + "description": "Communication Device ID0 Lock - Ethernet", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse10-bits3-5", + "name": "COM_DEVICE_ID0_LOCK", + "description": "Communication Device ID1 Lock - USB, Ethernet", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 3, + "id": "fuse10-bits9-11", + "name": "BBSM_MC_LOCK", + "description": "BBSM monotonic counter lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "access": "RO" + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse11", + "name": "LOCK_CFG11", + "description": "LOCK_CFG11", + "index_int": "0x000B", + "shadow_reg_offset_int": "0x002C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse11-bits0-2", + "name": "GPR2_LOCK", + "description": "General Purpose group 2 Fuse Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse11-bits3-5", + "name": "GPR3_LOCK", + "description": "General Purpose group 3 Fuse Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse11-bits6-8", + "name": "GPR4_LOCK", + "description": "General Purpose group 4 Fuse Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse11-bits9-11", + "name": "GPR5_LOCK", + "description": "General Purpose group 5 Fuse Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse11-bits12-14", + "name": "GPR6_LOCK", + "description": "General Purpose group 6 Fuse Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "TESTER0_CFG", + "description": "TESTER0_CFG" + }, + "registers": [ + { + "id": "Reserved12", + "name": "Reserved 0xC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved13", + "name": "Reserved 0xD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved14", + "name": "Reserved 0xE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved15", + "name": "Reserved 0xF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x000F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved16", + "name": "Reserved 0x10", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0010", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 7 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 19 + } + ] + } + ] + }, + { + "group": { + "name": "HSW_CFG", + "description": "HSW_CFG" + }, + "registers": [ + { + "id": "Reserved17", + "name": "Reserved 0x11", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0011", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 4 + }, + { + "width": 8 + }, + { + "width": 2 + }, + { + "width": 6 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved18", + "name": "Reserved 0x12", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0012", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved19", + "name": "Reserved 0x13", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0013", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved20", + "name": "Reserved 0x14", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0014", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 21 + } + ] + } + ] + }, + { + "group": { + "name": "ANALOG_CFG", + "description": "ANALOG_CFG" + }, + "registers": [ + { + "id": "Reserved21", + "name": "Reserved 0x15", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0015", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved22", + "name": "Reserved 0x16", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0016", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved23", + "name": "Reserved 0x17", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0017", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved38", + "name": "Reserved 0x26", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0026", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved39", + "name": "Reserved 0x27", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0027", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved40", + "name": "Reserved 0x28", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0028", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved41", + "name": "Reserved 0x29", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0029", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved42", + "name": "Reserved 0x2A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002A", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 12 + }, + { + "width": 6 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 8 + } + ] + }, + { + "id": "Reserved43", + "name": "Reserved 0x2B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002B", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved44", + "name": "Reserved 0x2C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "BOOT_CFG", + "description": "BOOT_CFG" + }, + "registers": [ + { + "id": "fuse24", + "name": "BOOT_CFG0", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0018", + "shadow_reg_offset_int": "0x0060", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse24-bits0-3", + "name": "BOOT_MODE_FUSES", + "description": "Boot_Mode_Fuses" + }, + { + "width": 1, + "id": "fuse24-bit4", + "name": "OVERRIDE_XSPI_NOR_BOOT_SELECTION", + "description": "Override xSPI NOR Boot Selection" + }, + { + "width": 2, + "id": "fuse24-bits5-6", + "name": "XSPI_NOR_BOOT_OVERRIDE_SELECTION", + "description": "xSPI NOR Boot Override Selection" + }, + { + "width": 1, + "id": "fuse24-bit7", + "name": "XSPI_NAND_4K_PAGE_SELECTION", + "description": "xSPI NAND 4K Page Selection" + }, + { + "width": 1, + "id": "fuse24-bit8", + "name": "USDHC_DEVICE_TYPE", + "description": "uSDHC_Device_Type" + }, + { + "width": 1, + "id": "fuse24-bit9", + "name": "XSPI_NOR_DATA_IOMUX_SION_EN", + "description": "xSPI NOR data IOMUX SION EN" + }, + { + "width": 2, + "id": "fuse24-bits10-11", + "name": "XSPI_NOR_FCB_OFFSET", + "description": "xSPI NOR FCB offset" + }, + { + "width": 3, + "id": "fuse24-bits12-14", + "name": "XSPI_NOR_AUTO_PROBE_FEQ_SEL", + "description": "xSPI autoprobe freq sel" + }, + { + "width": 1, + "id": "fuse24-bit15", + "name": "XSPI_NOR_FCB_CHECK", + "description": "xSPI FCB copy flag" + }, + { + "width": 1, + "id": "fuse24-bit16", + "name": "SD_LOOPBACK_CLOCK_SOURCE_SEL", + "description": "SD loopback clock source sel" + }, + { + "width": 2, + "id": "fuse24-bits17-18", + "name": "SD_SPEED_SELECTION", + "description": "SD speed selection" + }, + { + "width": 1, + "id": "fuse24-bit19", + "name": "EMMC_SPEED_SELECTION", + "description": "eMMC speed selection" + }, + { + "width": 1, + "id": "fuse24-bit20", + "name": "EMMC_FAST_BOOT", + "description": "eMMC fast boot" + }, + { + "width": 1, + "id": "fuse24-bit21", + "name": "BT_FREQ_SEL_1", + "description": "Boot frequency / voltage select[0]" + }, + { + "width": 1, + "id": "fuse24-bit22", + "name": "EMMC_VOLTAGE_SELECTION", + "description": "eMMC voltage select" + }, + { + "width": 5, + "id": "fuse24-bits23-27", + "name": "XSPI_NOR_RESET_PIN_SELECTIONS", + "description": "xSPI NOR reset pin selections" + }, + { + "width": 1, + "id": "fuse24-bit28", + "name": "BT_FREQ_SEL", + "description": "Boot frequency / voltage select [0]" + }, + { + "width": 1, + "id": "fuse24-bit29", + "name": "BT_FUSE_SEL", + "description": "Boot Fuse indication" + }, + { + "width": 1, + "id": "fuse24-bit30", + "name": "FORCE_BOOT_FROM_FUSE", + "description": "Force boot from fuse" + }, + { + "width": 1, + "id": "fuse24-bit31", + "name": "FORCE_SERIAL_DOWNLOAD", + "description": "Force serial download", + "access": "RO" + } + ] + }, + { + "id": "fuse25", + "name": "BOOT_CFG1", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0019", + "shadow_reg_offset_int": "0x0064", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse25-bit0", + "name": "FAST_BOOT_ACKNOWLEDGE_DISABLE", + "description": "Fast boot acknowledge disable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Boot Ack Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Boot Ack Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit1", + "name": "USDHC2_DEVICE_TYPE", + "description": "uSDHC 2 Device Type", + "values": [ + { + "name": "SD_DEVICE", + "value": 0, + "description": "SD" + }, + { + "name": "EMMC_DEVICE", + "value": 1, + "description": "eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit2", + "name": "USDHC_POWER_ON_POLARITY", + "description": "uSDHC power on polarity", + "values": [ + { + "name": "LOW", + "value": 0, + "description": "Low" + }, + { + "name": "HIGH", + "value": 1, + "description": "High" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit3", + "name": "USDHC_POWER_CYCLEDELAY", + "description": "uSDHC power cycle delay", + "values": [ + { + "name": "INTERVAL_5MS", + "value": 0, + "description": "5 ms" + }, + { + "name": "INTERVAL_2_5MS", + "value": 1, + "description": "2.5 ms" + } + ] + }, + { + "width": 2, + "id": "fuse25-bits4-5", + "name": "USDHC_POWER_CYCLE_INTERVAL", + "description": "uSDHC power cycle interval", + "values": [ + { + "name": "INTERVAL_20MS", + "value": 0, + "description": "20 ms" + }, + { + "name": "INTERVAL_10MS", + "value": 1, + "description": "10 ms" + } + ] + }, + { + "width": 2, + "id": "fuse25-bits6-7", + "name": "SD_CALIBRATION_STEP", + "description": "SD calibration step", + "values": [ + { + "name": "1_delay_cell", + "value": 0, + "description": "1 delay cell" + }, + { + "name": "2_delay_cell", + "value": 1, + "description": "2 delay cell" + } + ] + }, + { + "width": 8, + "id": "fuse25-bits8-15", + "name": "USDHC_PAD_SETTINGS_LOW_BITS", + "description": "uSDHC pad settings low bits. The override value for uSDHC pad settings", + "values": [ + { + "name": "11111111", + "value": 0, + "description": "11111111" + } + ] + }, + { + "width": 4, + "id": "fuse25-bits16-19", + "name": "USDHC_PAD_SETTING_HIGH_BITS", + "description": "uSDHC pad settings high bits. The override value for uSDHC pad settings", + "values": [ + { + "name": "1111", + "value": 0, + "description": "1111" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit20", + "name": "POWER_CYCLE_ENABLE", + "description": "Power cycle enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "No power cycle" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit21", + "name": "USDHC_OVERRIDE_PAD_SETTINGS", + "description": "uSDHC override pad settings" + }, + { + "width": 1, + "id": "fuse25-bit22", + "name": "USDHC_DLL_ENABLE", + "description": "uSDHC DLL enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable DLL for SD/eMMC" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable DLL for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit23", + "name": "BT_FREQ_SET", + "description": "BT_FREQ_SET", + "values": [ + { + "name": "SET", + "value": 1, + "description": "BT_FREQ_SEL_1 and BT_FREQ_SEL have been set to indicate boot mode voltage." + }, + { + "name": "NO_SET", + "value": 0, + "description": "BT_FREQ_SEL_1 and BT_FREQ_SEL have not been set" + } + ] + }, + { + "width": 7, + "id": "fuse25-bits24-30", + "name": "MMC_DLL_DLY", + "description": "MMC DLL delay : Delay target for uSDHC DLL, it is applied to slave mode target delay or override mode target delay depends on DLL Override fuse bit value", + "values": [ + { + "name": "1111111", + "value": 0, + "description": "1111111" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit31", + "name": "USDHC_DLL_SELECT", + "description": "uSDHC DLL select", + "values": [ + { + "name": "DLL_SLAVE", + "value": 0, + "description": "DLL Slave Mode for" + }, + { + "name": "DLL_OVERRIDE", + "value": 1, + "description": "DLL Override Mode" + } + ] + } + ] + }, + { + "id": "fuse26", + "name": "BOOT_CFG2", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x001A", + "shadow_reg_offset_int": "0x0068", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse26-bits0-1", + "name": "XSPI_NAND_COLUMN_ADDRESS_WIDTH", + "description": "xSPI NAND Column Address Width" + }, + { + "width": 2, + "id": "fuse26-bits2-3", + "name": "XSPI_NAND_CS_INTERVAL", + "description": "xSPI NAND CS Interval" + }, + { + "width": 2, + "id": "fuse26-bits4-5", + "name": "XSPI_NAND_SEARCH_COUNT", + "description": "xSPI NAND Search Count" + }, + { + "width": 2, + "id": "fuse26-bits6-7", + "name": "XSPI_NAND_SEARCH_STRIDE", + "description": "xSPI NAND Search Stride" + }, + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse26-bit19", + "name": "RECOVERY_SPI_ADDRESSING", + "description": "Recovery SPI addressing" + }, + { + "width": 1, + "id": "fuse26-bit20", + "name": "XSPI_NOR_AUTO_PROBE_EN", + "description": "xSPI NOR auto probe enable" + }, + { + "width": 3, + "id": "fuse26-bits21-23", + "name": "XSPI_NAND_BUSY_BIT_OFFSET_OVERRIDE", + "description": "xSPI NAND busy bit offset override" + }, + { + "width": 1, + "id": "fuse26-bit24", + "name": "RECOVERY_CS_SELECT", + "description": "Recovery CS select" + }, + { + "width": 1, + "id": "fuse26-bit25", + "name": "POWER_UP_M7", + "description": "Power up M7" + }, + { + "width": 2, + "id": "fuse26-bits26-27", + "name": "RECOVERY_PORT_SELECT", + "description": "Recovery Port Select" + }, + { + "width": 4, + "id": "fuse26-bits28-31", + "name": "XSPI_DUMMY_CYCLE_SEL", + "description": "xSPI Dummy Cycle Select" + } + ] + }, + { + "id": "fuse27", + "name": "BOOT_CFG3", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x001B", + "shadow_reg_offset_int": "0x006C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 3, + "id": "fuse27-bits0-2", + "name": "XSPI_NOR_RESET_PORT", + "description": "xSPI NOR Reset Pin Selection" + }, + { + "width": 3, + "id": "fuse27-bits3-5", + "name": "XSPI_NOR_AUTO_PROBE_TYPE", + "description": "xSPI NOR AUTO PROBE type" + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse27-bits7-8", + "name": "XSPI_HOLD_TIME", + "description": "xSPI Auto probe DDR support" + }, + { + "width": 1, + "id": "fuse27-bit9", + "name": "XSPI_DUMMY_CYCLE_UPPER_SEL", + "description": "xSPI dummy cycle select 1" + }, + { + "width": 1, + "id": "fuse27-bit10", + "name": "EDMA_INIT_M7_TCM", + "description": "eDMA initialize M7 TCM" + }, + { + "width": 2 + }, + { + "width": 4, + "id": "fuse27-bits13-16", + "name": "XSPI_DELAY_CELL_NUM", + "description": "XSPI_DELAY_CELL_NUM" + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse27-bits20-22", + "name": "XSPI_FLASH_ENHANCE_MODE", + "description": "XSPI_FLASH_ENHANCE_MODE" + }, + { + "width": 1 + }, + { + "width": 8, + "id": "fuse27-bits24-31", + "name": "CA55_MFI_MAX_FREQ_FUSE", + "description": "A55 Max. Frequency Support" + } + ] + }, + { + "id": "fuse28", + "name": "BOOT_CFG4", + "description": "BOOT Configuration", + "index_int": "0x001C", + "shadow_reg_offset_int": "0x0070", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse28-bits0-31", + "name": "XSPI_FLASH_DLLCRA", + "description": "The fuse value is used to override the XSPI register DLLCRA in SDR mode.\nIf a customizable value is available in FCB, it will be used to override the register." + } + ] + }, + { + "id": "fuse29", + "name": "BOOT_CFG5", + "description": "BOOT Configuration", + "index_int": "0x001D", + "shadow_reg_offset_int": "0x0074", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse30", + "name": "BOOT_CFG6", + "description": "BOOT Configuration", + "index_int": "0x001E", + "shadow_reg_offset_int": "0x0078", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse31", + "name": "BOOT_CFG7", + "description": "BOOT Configuration", + "index_int": "0x001F", + "shadow_reg_offset_int": "0x007C", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse32", + "name": "BOOT_CFG8", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0020", + "shadow_reg_offset_int": "0x0080", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit1", + "name": "BBNSM_EN", + "description": "BBNSM enable" + }, + { + "width": 1, + "id": "fuse32-bit2", + "name": "SION_EN", + "description": "SION_EN" + }, + { + "width": 1, + "id": "fuse32-bit3", + "name": "CCM_CLKO_MUX", + "description": "CCM_CLKO_MUX" + }, + { + "width": 1, + "id": "fuse32-bit4", + "name": "ROMCP_LOCK", + "description": "ROMCP_LOCK" + }, + { + "width": 3 + }, + { + "width": 8, + "id": "fuse32-bits8-15", + "name": "SECONDARY_BOOT_OFFSET", + "description": "Secondary boot offset" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit19", + "name": "M33_RECOVERY_DISABLE", + "description": "Disable A55 SPI recovery" + }, + { + "width": 1, + "id": "fuse32-bit20", + "name": "M33_RECOVERY_DEVICE", + "description": "Disable M33 SPI recovery" + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit22", + "name": "AHAB_REAUTH", + "description": "AHAB reauth" + }, + { + "width": 1, + "id": "fuse32-bit23", + "name": "M33_WDOG_ENABLE", + "description": "M33 WDOG enable" + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit25", + "name": "M33_I_CACHE_DIS", + "description": "M33 I cache dis" + }, + { + "width": 2, + "id": "fuse32-bits26-27", + "name": "WDOG_TIMEOUT_SELECT", + "description": "WDOG timeout select" + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit29", + "name": "USB_HID_EP1_OUT_DISABLE", + "description": "USB HID EP1 out disable" + }, + { + "width": 1, + "id": "fuse32-bit30", + "name": "PLL_LATE_EN", + "description": "PLL late en" + }, + { + "width": 1, + "id": "fuse32-bit31", + "name": "M33_TCM_MBIST_AT_BOOT_EN", + "description": "M33 TCM MBIST at boot enable" + } + ] + }, + { + "id": "fuse33", + "name": "BOOT_CFG9", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0021", + "shadow_reg_offset_int": "0x0084", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse33-bit6", + "name": "M33_TZ_WDOG_ENABLE", + "description": "M33 TZ WDOG Enable (non-ROM)" + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse33-bit8", + "name": "CM33_RST_RELEASE_ACK", + "description": "CM33 RST Release ACK (non-ROM)", + "values": [ + { + "name": "NO_ACK", + "value": 0, + "description": "No Ack from Sentinel to release M33 Reset" + }, + { + "name": "ACK_RECEIVED", + "value": 1, + "description": "Ack from Sentinel to release M33 Reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse33-bit11", + "name": "REC_DEVICE_BOOT_OFFSET_ENABLE", + "description": "Enable application of device boot offset for USB, and LPSPI boot devices" + }, + { + "width": 1, + "id": "fuse33-bit12", + "name": "DEVICE_BOOT_OFFSET_MULTIPLIER", + "description": "defining boot offset multiplier" + }, + { + "width": 3, + "id": "fuse33-bits13-15", + "name": "DEVICE_BOOT_OFFSET", + "description": "device boot offset" + }, + { + "width": 8 + }, + { + "width": 1, + "id": "fuse33-bit24", + "name": "SENTINEL_SRAM_REN_PWRDN", + "description": "Enable double authentication of NXP code." + }, + { + "width": 1, + "id": "fuse33-bit25", + "name": "DOUBLE_AUTH_EN", + "description": "Enable double authentication of NXP code." + }, + { + "width": 1, + "id": "fuse33-bit26", + "name": "IPED0_ENABLE", + "description": "IPED0_ENABLE" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 3 + } + ] + }, + { + "id": "fuse34", + "name": "BOOT_CFG10", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0022", + "shadow_reg_offset_int": "0x0088", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 2 + }, + { + "width": 1, + "id": "fuse34-bit2", + "name": "SDP_DISABLE", + "description": "if blow to 1, ROM code disable USB SDP (Serial download protocol) at all." + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 27, + "access": "RO" + } + ] + }, + { + "id": "fuse35", + "name": "BOOT_CFG11", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x0023", + "shadow_reg_offset_int": "0x008C", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse35-bit1", + "name": "USB_SDP_PORT_SEL", + "description": "USB1 Serial Download Port Disable" + }, + { + "width": 28 + }, + { + "width": 1, + "id": "fuse35-bit30", + "name": "XSPI_SWRST_EN", + "description": "XSPI_SWRST_EN" + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "RESERVED", + "description": "RESERVED" + }, + "registers": [ + { + "id": "fuse36", + "name": "GPR0_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0024", + "shadow_reg_offset_int": "0x0090", + "access": "RO", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse36-bits0-15", + "name": "GPR0_CFG0", + "description": "GPR0_CFG0" + } + ] + }, + { + "id": "fuse37", + "name": "GPR0_CFG1", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0025", + "shadow_reg_offset_int": "0x0094", + "access": "RO", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse37-bits0-15", + "name": "GPR0_CFG1", + "description": "GPR0_CFG1" + } + ] + }, + { + "id": "Reserved80", + "name": "Reserved 0x50", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0050", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved81", + "name": "Reserved 0x51", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0051", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved82", + "name": "Reserved 0x52", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0052", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved83", + "name": "Reserved 0x53", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0053", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved84", + "name": "Reserved 0x54", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0054", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved85", + "name": "Reserved 0x55", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0055", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved86", + "name": "Reserved 0x56", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0056", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved87", + "name": "Reserved 0x57", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0057", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved136", + "name": "Reserved 0x88", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0088", + "is_reserved": true + }, + { + "id": "Reserved137", + "name": "Reserved 0x89", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0089", + "is_reserved": true + }, + { + "id": "Reserved138", + "name": "Reserved 0x8A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008A", + "is_reserved": true + }, + { + "id": "Reserved139", + "name": "Reserved 0x8B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008B", + "is_reserved": true + }, + { + "id": "Reserved140", + "name": "Reserved 0x8C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008C", + "is_reserved": true + }, + { + "id": "Reserved141", + "name": "Reserved 0x8D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008D", + "is_reserved": true + }, + { + "id": "Reserved142", + "name": "Reserved 0x8E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008E", + "is_reserved": true + }, + { + "id": "Reserved143", + "name": "Reserved 0x8F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x008F", + "is_reserved": true + }, + { + "id": "fuse180", + "name": "GPR1_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x00B4", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse180-bits0-31", + "name": "GPR1_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse181", + "name": "GPR1_CFG1", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x00B5", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse181-bits0-31", + "name": "GPR1_CFG1", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse182", + "name": "GPR1_CFG2", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x00B6", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse182-bits0-31", + "name": "GPR1_CFG2", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse183", + "name": "GPR1_CFG3", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x00B7", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse183-bits0-31", + "name": "GPR1_CFG3", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "Reserved188", + "name": "Reserved 0xBC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BC", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved189", + "name": "Reserved 0xBD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BD", + "is_reserved": true, + "access": "RO" + }, + { + "id": "fuse320", + "name": "GPR3_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0140", + "shadow_reg_offset_int": "0x0500", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse320-bits0-31", + "name": "GPR3_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + } + ] + }, + { + "group": { + "name": "SENTINEL", + "description": "SENTINEL" + }, + "registers": [ + { + "id": "Reserved45", + "name": "Reserved 0x2D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 7 + }, + { + "width": 6 + }, + { + "width": 6 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved46", + "name": "Reserved 0x2E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 7 + }, + { + "width": 7 + }, + { + "width": 6 + }, + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved47", + "name": "Reserved 0x2F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 8 + } + ] + }, + { + "id": "Reserved48", + "name": "Reserved 0x30", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0030", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved49", + "name": "Reserved 0x31", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0031", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved50", + "name": "Reserved 0x32", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0032", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved51", + "name": "Reserved 0x33", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0033", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved52", + "name": "Reserved 0x34", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0034", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved53", + "name": "Reserved 0x35", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0035", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved54", + "name": "Reserved 0x36", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0036", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved55", + "name": "Reserved 0x37", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0037", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "fuse56", + "name": "SENTINEL_MISC_CTRL0", + "description": "OEM controlled Fuse.", + "index_int": "0x0038", + "shadow_reg_offset_int": "0x00E0", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 4, + "id": "fuse56-bits0-3", + "name": "SOC_SCOPE_PRIMARY_DBG_DISABLE", + "description": "Debug Disable for CM33 domain. The 4 bits correspond to : {spiden,sniden,dbgen,niden}" + }, + { + "width": 4, + "id": "fuse56-bits4-7", + "name": "SOC_SCOPE1_DBG_DISABLE", + "description": "Debug disable for Trace Memory controller. The 4 bits correspond to : {spiden,sniden,dbgen,niden}" + }, + { + "width": 4, + "id": "fuse56-bits8-11", + "name": "SOC_SCOPE2_DBG_DISABLE", + "description": "Debug disable for CM7. The 4 bits correspond to : {spiden,sniden,dbgen,niden}" + }, + { + "width": 4, + "id": "fuse56-bits12-15", + "name": "SOC_SCOPE3_DBG_DISABLE", + "description": "Debug disable for DAP AHB-AP. The 4 bits correspond to : {spiden,sniden,dbgen,niden}" + } + ] + }, + { + "id": "fuse57", + "name": "SENTINEL_MISC_CTRL1", + "description": "OEM controlled Fuse.", + "index_int": "0x0039", + "shadow_reg_offset_int": "0x00E4", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 4, + "id": "fuse57-bits0-3", + "name": "SOC_SCOPE4_DBG_DISABLE", + "description": "Debug disable for apps cores, Camera SS and GPU. The 4 bits correspond to : {spiden,sniden,dbgen,niden}" + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse58", + "name": "SENTINEL_MISC_CTRL2", + "description": "OEM controlled Fuse.", + "index_int": "0x003A", + "shadow_reg_offset_int": "0x00E8", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 1, + "id": "fuse58-bit0", + "name": "OEM_AGDET_DISABLE", + "description": "Disable for analog glitch detector during boot" + }, + { + "width": 1, + "id": "fuse58-bit1", + "name": "OEM_VDET_DISABLE", + "description": "Disable for voltage detector during boot" + }, + { + "width": 1, + "id": "fuse58-bit2", + "name": "OEM_TMPSNS_DISABLE", + "description": "Disable for temperature sensor during boot" + }, + { + "width": 1, + "id": "fuse58-bit3", + "name": "OEM_DGDET_DISABLE", + "description": "Disable for digital glitch detector during boot" + }, + { + "width": 1, + "id": "fuse58-bit4", + "name": "FAST_BOOT_ENABLE", + "description": "Enable Fast boot datapath" + }, + { + "width": 1, + "id": "fuse58-bit5", + "name": "SJC_DISABLE", + "description": "Hardware disablement of SJC. Disables JTAG debugger, including ability for boundary scan.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "SJC is enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "SJC is disabled" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse58-bit8", + "name": "SOC_GLBL_DBG_DISABLE", + "description": "Disable all debug." + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse58-bit10", + "name": "TZ_GLBL_DBG_DISABLE", + "description": "TZ_GLBL_DBG_DISABLE" + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse58-bit12", + "name": "OEM_FDET_DISABLE", + "description": "Disable for Frequency detector during boot" + }, + { + "width": 1, + "id": "fuse58-bit13", + "name": "ALLOW_FIPS_UNAPPROVED_ALGOS", + "description": "If FIPS mode is enabled, Allow FIPS unapproved algorithms", + "access": "RO", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow FIPS algorithms if FIPS_ENABLE is set." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Even though FIPS_ENABLE is set, allow FIPS unapproved algorithms" + } + ] + }, + { + "width": 1, + "id": "fuse58-bit14", + "name": "CRRM_ENABLE", + "description": "Enable CRRM feature. See SRM for details.", + "access": "RO", + "values": [ + { + "name": "ENABLED", + "value": 1, + "description": "CRRM is enabled" + }, + { + "name": "DISABLED", + "value": 0, + "description": "CRRM is not enabled" + } + ] + }, + { + "width": 1, + "id": "fuse58-bit15", + "name": "OSCCA_SELFTEST_DISABLE", + "description": "Disable OSCCA selftest", + "access": "RO", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "In OSCCA mode, perform OSCCA selftest" + }, + { + "name": "DISABLED", + "value": 1, + "description": "In OSCCA mode, disable OSCCA self-test" + } + ] + } + ] + }, + { + "id": "Reserved59", + "name": "Reserved 0x3B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003B", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 1, + "access": "RO" + }, + { + "width": 2, + "access": "RO" + }, + { + "width": 1, + "access": "RO" + }, + { + "width": 1 + }, + { + "width": 1, + "access": "RO" + }, + { + "width": 1, + "access": "RO" + }, + { + "width": 1 + }, + { + "width": 1, + "access": "RO" + }, + { + "width": 1, + "access": "RO" + }, + { + "width": 1, + "access": "RO" + }, + { + "width": 1 + }, + { + "width": 4, + "access": "RO" + } + ] + }, + { + "id": "fuse60", + "name": "SENTINEL_MISC_CTRL4", + "description": "OEM and NXP controlled. NXP should set OP to 1 so the shadows cannot be overwritten.", + "index_int": "0x003C", + "shadow_reg_offset_int": "0x00F0", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 12, + "id": "fuse60-bits0-11", + "name": "EXPORT_CONTROL", + "description": "Each fuse disables the following : \n[11] : SGI in S401\n[10] : PKC in S401 \n[9] : Reserved\n[8] : Reserved for S401\n[7] : A55 Crypto extension\n[6] : M7 MMCAU (Reserved)\n[5] : M33 MMCAU (Reserved)\n[4] : IPED (Reserved)\n[3]: V2X SGI\n[2]: V2X PKC\n[1]: V2X BA414\n[0]: IEE", + "access": "RO" + }, + { + "width": 3, + "id": "fuse60-bits12-14", + "name": "SENTINEL_BOOT_CRYPTO", + "description": "Boot Cryptographic selection between Classic, PQC and Hybrid." + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved61", + "name": "Reserved 0x3D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003D", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved62", + "name": "Reserved 0x3E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003E", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 2 + }, + { + "width": 2 + } + ] + }, + { + "id": "fuse63", + "name": "SENTINEL_MISC_CTRL7", + "description": "OEM and NXP controlled. NXP should set OP to 1 so the shadows cannot be overwritten.", + "index_int": "0x003F", + "shadow_reg_offset_int": "0x00FC", + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4, + "id": "fuse63-bits12-15", + "name": "OEM_SRK_RVK", + "description": "OEM key revoke fuses for tree of public keys" + } + ] + }, + { + "id": "Reserved64", + "name": "Reserved 0x40", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0040", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved65", + "name": "Reserved 0x41", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0041", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved66", + "name": "Reserved 0x42", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0042", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved67", + "name": "Reserved 0x43", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0043", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved68", + "name": "Reserved 0x44", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0044", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved69", + "name": "Reserved 0x45", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0045", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved70", + "name": "Reserved 0x46", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0046", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved71", + "name": "Reserved 0x47", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0047", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved72", + "name": "Reserved 0x48", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0048", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved73", + "name": "Reserved 0x49", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0049", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved74", + "name": "Reserved 0x4A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004A", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved75", + "name": "Reserved 0x4B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004B", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved76", + "name": "Reserved 0x4C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved77", + "name": "Reserved 0x4D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved78", + "name": "Reserved 0x4E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved79", + "name": "Reserved 0x4F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved88", + "name": "Reserved 0x58", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0058", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved89", + "name": "Reserved 0x59", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0059", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved90", + "name": "Reserved 0x5A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005A", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved91", + "name": "Reserved 0x5B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005B", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved92", + "name": "Reserved 0x5C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005C", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved93", + "name": "Reserved 0x5D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved94", + "name": "Reserved 0x5E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved95", + "name": "Reserved 0x5F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005F", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved96", + "name": "Reserved 0x60", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0060", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved97", + "name": "Reserved 0x61", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0061", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved98", + "name": "Reserved 0x62", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0062", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved99", + "name": "Reserved 0x63", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0063", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved100", + "name": "Reserved 0x64", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0064", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved101", + "name": "Reserved 0x65", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0065", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved102", + "name": "Reserved 0x66", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0066", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved103", + "name": "Reserved 0x67", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0067", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved104", + "name": "Reserved 0x68", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0068", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved105", + "name": "Reserved 0x69", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0069", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved106", + "name": "Reserved 0x6A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006A", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved107", + "name": "Reserved 0x6B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006B", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved108", + "name": "Reserved 0x6C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved109", + "name": "Reserved 0x6D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved110", + "name": "Reserved 0x6E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved111", + "name": "Reserved 0x6F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved112", + "name": "Reserved 0x70", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0070", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved113", + "name": "Reserved 0x71", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0071", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved114", + "name": "Reserved 0x72", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0072", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved115", + "name": "Reserved 0x73", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0073", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved116", + "name": "Reserved 0x74", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0074", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved117", + "name": "Reserved 0x75", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0075", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved118", + "name": "Reserved 0x76", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0076", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved119", + "name": "Reserved 0x77", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0077", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved120", + "name": "Reserved 0x78", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0078", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved121", + "name": "Reserved 0x79", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0079", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved122", + "name": "Reserved 0x7A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007A", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved123", + "name": "Reserved 0x7B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007B", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved124", + "name": "Reserved 0x7C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007C", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved125", + "name": "Reserved 0x7D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007D", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved126", + "name": "Reserved 0x7E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007E", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved127", + "name": "Reserved 0x7F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007F", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "fuse128", + "name": "OEM_SRKH0", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0080", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse128-bits0-31", + "name": "OEM_SRKH[31:0]", + "description": "HASH of OEM SRK table in container for boot image." + } + ] + }, + { + "id": "fuse129", + "name": "OEM_SRKH1", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0081", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse129-bits0-31", + "name": "OEM_SRKH[63:32]", + "description": "HASH of OEM SRK table in container for boot image." + } + ] + }, + { + "id": "fuse130", + "name": "OEM_SRKH2", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0082", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse130-bits0-31", + "name": "OEM_SRKH[95:64]", + "description": "HASH of OEM SRK table in container for boot image." + } + ] + }, + { + "id": "fuse131", + "name": "OEM_SRKH3", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0083", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse131-bits0-31", + "name": "OEM_SRKH[127:96]", + "description": "HASH of OEM SRK table in container for boot image." + } + ] + }, + { + "id": "fuse132", + "name": "OEM_SRKH4", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0084", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse132-bits0-31", + "name": "OEM_SRKH[159:128]", + "description": "HASH of OEM SRK table in container for boot image." + } + ] + }, + { + "id": "fuse133", + "name": "OEM_SRKH5", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0085", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse133-bits0-31", + "name": "OEM_SRKH[191:160]", + "description": "HASH of OEM SRK table in container for boot image." + } + ] + }, + { + "id": "fuse134", + "name": "OEM_SRKH6", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0086", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse134-bits0-31", + "name": "OEM_SRKH[223:192]", + "description": "HASH of OEM SRK table in container for boot image." + } + ] + }, + { + "id": "fuse135", + "name": "OEM_SRKH7", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0087", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse135-bits0-31", + "name": "OEM_SRKH[255:224]", + "description": "HASH of OEM SRK table in container for boot image." + } + ] + }, + { + "id": "fuse136", + "name": "OEM_SRKH8", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0088", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse137", + "name": "OEM_SRKH9", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0089", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse138", + "name": "OEM_SRKH10", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008A", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse139", + "name": "OEM_SRKH11", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008B", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse140", + "name": "OEM_SRKH12", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008C", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse141", + "name": "OEM_SRKH13", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008D", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse142", + "name": "OEM_SRKH14", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008E", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse143", + "name": "OEM_SRKH15", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008F", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "Reserved144", + "name": "Reserved 0x90", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0090", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved145", + "name": "Reserved 0x91", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0091", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved146", + "name": "Reserved 0x92", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0092", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved147", + "name": "Reserved 0x93", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0093", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved148", + "name": "Reserved 0x94", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0094", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved149", + "name": "Reserved 0x95", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0095", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved150", + "name": "Reserved 0x96", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0096", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved151", + "name": "Reserved 0x97", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0097", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved152", + "name": "Reserved 0x98", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0098", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved153", + "name": "Reserved 0x99", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0099", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved154", + "name": "Reserved 0x9A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009A", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved155", + "name": "Reserved 0x9B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009B", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved156", + "name": "Reserved 0x9C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved157", + "name": "Reserved 0x9D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved158", + "name": "Reserved 0x9E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved159", + "name": "Reserved 0x9F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved160", + "name": "Reserved 0xA0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A0", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved161", + "name": "Reserved 0xA1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A1", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved162", + "name": "Reserved 0xA2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A2", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved163", + "name": "Reserved 0xA3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A3", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved164", + "name": "Reserved 0xA4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A4", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved165", + "name": "Reserved 0xA5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A5", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved166", + "name": "Reserved 0xA6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A6", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved167", + "name": "Reserved 0xA7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A7", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved168", + "name": "Reserved 0xA8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A8", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved169", + "name": "Reserved 0xA9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A9", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved170", + "name": "Reserved 0xAA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AA", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved171", + "name": "Reserved 0xAB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AB", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved172", + "name": "Reserved 0xAC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AC", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved173", + "name": "Reserved 0xAD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AD", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved174", + "name": "Reserved 0xAE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AE", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved175", + "name": "Reserved 0xAF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AF", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved190", + "name": "Reserved 0xBE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BE", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved288", + "name": "Reserved 0x120", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0120", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved289", + "name": "Reserved 0x121", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0121", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved290", + "name": "Reserved 0x122", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0122", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved291", + "name": "Reserved 0x123", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0123", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved292", + "name": "Reserved 0x124", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0124", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved293", + "name": "Reserved 0x125", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0125", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved294", + "name": "Reserved 0x126", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0126", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved295", + "name": "Reserved 0x127", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0127", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved296", + "name": "Reserved 0x128", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0128", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved297", + "name": "Reserved 0x129", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0129", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved298", + "name": "Reserved 0x12A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012A", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved299", + "name": "Reserved 0x12B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012B", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved300", + "name": "Reserved 0x12C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved301", + "name": "Reserved 0x12D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved302", + "name": "Reserved 0x12E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved303", + "name": "Reserved 0x12F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved304", + "name": "Reserved 0x130", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0130", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved305", + "name": "Reserved 0x131", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0131", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved306", + "name": "Reserved 0x132", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0132", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved307", + "name": "Reserved 0x133", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0133", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved308", + "name": "Reserved 0x134", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0134", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved309", + "name": "Reserved 0x135", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0135", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved310", + "name": "Reserved 0x136", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0136", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved311", + "name": "Reserved 0x137", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0137", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved312", + "name": "Reserved 0x138", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0138", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 12 + }, + { + "width": 20 + } + ] + }, + { + "id": "Reserved316", + "name": "Reserved 0x13C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013C", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "OEM", + "description": "OEM group" + }, + "registers": [ + { + "id": "Reserved176", + "name": "Reserved 0xB0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B0", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved177", + "name": "Reserved 0xB1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B1", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved178", + "name": "Reserved 0xB2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B2", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved179", + "name": "Reserved 0xB3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B3", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "fuse313", + "name": "GPR2_CFG0", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0139", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse314", + "name": "GPR2_CFG1", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x013A", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse315", + "name": "GPR2_CFG2", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x013B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse376", + "name": "GPR4_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0178", + "shadow_reg_offset_int": "0x05E0", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse376-bits0-31", + "name": "GPR4_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse377", + "name": "GPR4_CFG1", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0179", + "shadow_reg_offset_int": "0x05E4", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse377-bits0-31", + "name": "GPR4_CFG1", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse378", + "name": "GPR4_CFG2", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017A", + "shadow_reg_offset_int": "0x05E8", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse378-bits0-31", + "name": "GPR4_CFG2", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse379", + "name": "GPR4_CFG3", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017B", + "shadow_reg_offset_int": "0x05EC", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse379-bits0-31", + "name": "GPR4_CFG3", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse380", + "name": "GPR4_CFG4", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017C", + "shadow_reg_offset_int": "0x05F0", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse380-bits0-31", + "name": "GPR4_CFG4", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse381", + "name": "GPR4_CFG5", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017D", + "shadow_reg_offset_int": "0x05F4", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse381-bits0-31", + "name": "GPR4_CFG5", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse382", + "name": "GPR4_CFG6", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017E", + "shadow_reg_offset_int": "0x05F8", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse382-bits0-31", + "name": "GPR4_CFG6", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse383", + "name": "GPR4_CFG7", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017F", + "shadow_reg_offset_int": "0x05FC", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse383-bits0-31", + "name": "GPR4_CFG7", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse384", + "name": "GPR4_CFG8", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0180", + "shadow_reg_offset_int": "0x0600", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse384-bits0-31", + "name": "GPR4_CFG8", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse385", + "name": "GPR4_CFG9", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0181", + "shadow_reg_offset_int": "0x0604", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse385-bits0-31", + "name": "GPR4_CFG9", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse386", + "name": "GPR4_CFG10", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0182", + "shadow_reg_offset_int": "0x0608", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse386-bits0-31", + "name": "GPR4_CFG10", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse387", + "name": "GPR4_CFG11", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0183", + "shadow_reg_offset_int": "0x060C", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse387-bits0-31", + "name": "GPR4_CFG11", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse388", + "name": "GPR4_CFG12", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0184", + "shadow_reg_offset_int": "0x0610", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse388-bits0-31", + "name": "GPR4_CFG12", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse389", + "name": "GPR4_CFG13", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0185", + "shadow_reg_offset_int": "0x0614", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse389-bits0-31", + "name": "GPR4_CFG13", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse390", + "name": "GPR4_CFG14", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0186", + "shadow_reg_offset_int": "0x0618", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse390-bits0-31", + "name": "GPR4_CFG14", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse391", + "name": "GPR4_CFG15", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0187", + "shadow_reg_offset_int": "0x061C", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse391-bits0-31", + "name": "GPR4_CFG15", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed." + } + ] + }, + { + "id": "fuse392", + "name": "GPR5_CFG0", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0188", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse392-bits0-31", + "name": "GPR5_CFG0", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse393", + "name": "GPR5_CFG1", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0189", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse393-bits0-31", + "name": "GPR5_CFG1", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse394", + "name": "GPR5_CFG2", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x018A", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse394-bits0-31", + "name": "GPR5_CFG2", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse395", + "name": "GPR5_CFG3", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x018B", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse395-bits0-31", + "name": "GPR5_CFG3", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse396", + "name": "GPR5_CFG4", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x018C", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse396-bits0-31", + "name": "GPR5_CFG4", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse397", + "name": "GPR5_CFG5", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x018D", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse397-bits0-31", + "name": "GPR5_CFG5", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse398", + "name": "GPR5_CFG6", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x018E", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse398-bits0-31", + "name": "GPR5_CFG6", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse399", + "name": "GPR5_CFG7", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x018F", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse399-bits0-31", + "name": "GPR5_CFG7", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse400", + "name": "GPR5_CFG8", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0190", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse400-bits0-31", + "name": "GPR5_CFG8", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse401", + "name": "GPR5_CFG9", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0191", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse401-bits0-31", + "name": "GPR5_CFG9", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse402", + "name": "GPR5_CFG10", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0192", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse402-bits0-31", + "name": "GPR5_CFG10", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse403", + "name": "GPR5_CFG11", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0193", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse403-bits0-31", + "name": "GPR5_CFG11", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse404", + "name": "GPR5_CFG12", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0194", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse404-bits0-31", + "name": "GPR5_CFG12", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse405", + "name": "GPR5_CFG13", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0195", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse405-bits0-31", + "name": "GPR5_CFG13", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse406", + "name": "GPR5_CFG14", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0196", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse406-bits0-31", + "name": "GPR5_CFG14", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse407", + "name": "GPR5_CFG15", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0197", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse407-bits0-31", + "name": "GPR5_CFG15", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse408", + "name": "GPR6_CFG0", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0198", + "access": "RO", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse408-bits0-15", + "name": "GPR6_CFG0", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse409", + "name": "GPR6_CFG1", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x0199", + "access": "RO", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse409-bits0-15", + "name": "GPR6_CFG1", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse410", + "name": "GPR6_CFG2", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x019A", + "access": "RO", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse410-bits0-15", + "name": "GPR6_CFG2", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse411", + "name": "GPR6_CFG3", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x019B", + "access": "RO", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse411-bits0-15", + "name": "GPR6_CFG3", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse412", + "name": "GPR6_CFG4", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x019C", + "access": "RO", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse412-bits0-15", + "name": "GPR6_CFG4", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse413", + "name": "GPR6_CFG5", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x019D", + "access": "RO", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse413-bits0-15", + "name": "GPR6_CFG5", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse414", + "name": "GPR6_CFG6", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x019E", + "access": "RO", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse414-bits0-15", + "name": "GPR6_CFG6", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "fuse415", + "name": "GPR6_CFG7", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls.", + "index_int": "0x019F", + "access": "RO", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse415-bits0-15", + "name": "GPR6_CFG7", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure Sentinel API calls." + } + ] + }, + { + "id": "Reserved416", + "name": "Reserved 0x1A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A0", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved417", + "name": "Reserved 0x1A1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A1", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved418", + "name": "Reserved 0x1A2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A2", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved419", + "name": "Reserved 0x1A3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A3", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved420", + "name": "Reserved 0x1A4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A4", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved421", + "name": "Reserved 0x1A5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A5", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved422", + "name": "Reserved 0x1A6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A6", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved423", + "name": "Reserved 0x1A7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A7", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved424", + "name": "Reserved 0x1A8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A8", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved425", + "name": "Reserved 0x1A9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A9", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved426", + "name": "Reserved 0x1AA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AA", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved427", + "name": "Reserved 0x1AB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AB", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved428", + "name": "Reserved 0x1AC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AC", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved429", + "name": "Reserved 0x1AD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AD", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved430", + "name": "Reserved 0x1AE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AE", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved431", + "name": "Reserved 0x1AF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AF", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved432", + "name": "Reserved 0x1B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B0", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved433", + "name": "Reserved 0x1B1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B1", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved434", + "name": "Reserved 0x1B2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B2", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved435", + "name": "Reserved 0x1B3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B3", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved436", + "name": "Reserved 0x1B4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B4", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved437", + "name": "Reserved 0x1B5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B5", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved438", + "name": "Reserved 0x1B6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B6", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved439", + "name": "Reserved 0x1B7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B7", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved440", + "name": "Reserved 0x1B8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B8", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved441", + "name": "Reserved 0x1B9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B9", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved442", + "name": "Reserved 0x1BA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BA", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved443", + "name": "Reserved 0x1BB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BB", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved444", + "name": "Reserved 0x1BC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BC", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved445", + "name": "Reserved 0x1BD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BD", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved446", + "name": "Reserved 0x1BE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BE", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved447", + "name": "Reserved 0x1BF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BF", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "fuse448", + "name": "OEM_PQC_SRKH0", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01C0", + "shadow_reg_offset_int": "0x0700", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse448-bits0-31", + "name": "OEM_PQC_SRKH[31:0]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse449", + "name": "OEM_PQC_SRKH1", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01C1", + "shadow_reg_offset_int": "0x0704", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse449-bits0-31", + "name": "OEM_PQC_SRKH[63:32]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse450", + "name": "OEM_PQC_SRKH2", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01C2", + "shadow_reg_offset_int": "0x0708", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse450-bits0-31", + "name": "OEM_PQC_SRKH[95:64]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse451", + "name": "OEM_PQC_SRKH3", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01C3", + "shadow_reg_offset_int": "0x070C", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse451-bits0-31", + "name": "OEM_PQC_SRKH[127:96]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse452", + "name": "OEM_PQC_SRKH4", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01C4", + "shadow_reg_offset_int": "0x0710", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse452-bits0-31", + "name": "OEM_PQC_SRKH[159:128]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse453", + "name": "OEM_PQC_SRKH5", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01C5", + "shadow_reg_offset_int": "0x0714", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse453-bits0-31", + "name": "OEM_PQC_SRKH[191:160]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse454", + "name": "OEM_PQC_SRKH6", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01C6", + "shadow_reg_offset_int": "0x0718", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse454-bits0-31", + "name": "OEM_PQC_SRKH[223:192]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse455", + "name": "OEM_PQC_SRKH7", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01C7", + "shadow_reg_offset_int": "0x071C", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse455-bits0-31", + "name": "OEM_PQC_SRKH[255:224]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse456", + "name": "OEM_PQC_SRKH8", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01C8", + "shadow_reg_offset_int": "0x0720", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse456-bits0-31", + "name": "OEM_PQC_SRKH[287:256]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse457", + "name": "OEM_PQC_SRKH9", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01C9", + "shadow_reg_offset_int": "0x0724", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse457-bits0-31", + "name": "OEM_PQC_SRKH[319:288]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse458", + "name": "OEM_PQC_SRKH10", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01CA", + "shadow_reg_offset_int": "0x0728", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse458-bits0-31", + "name": "OEM_PQC_SRKH[351:320]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse459", + "name": "OEM_PQC_SRKH11", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01CB", + "shadow_reg_offset_int": "0x072C", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse459-bits0-31", + "name": "OEM_PQC_SRKH[383:352]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse460", + "name": "OEM_PQC_SRKH12", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01CC", + "shadow_reg_offset_int": "0x0730", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse460-bits0-31", + "name": "OEM_PQC_SRKH[415:384]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse461", + "name": "OEM_PQC_SRKH13", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01CD", + "shadow_reg_offset_int": "0x0734", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse461-bits0-31", + "name": "OEM_PQC_SRKH[447:416]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse462", + "name": "OEM_PQC_SRKH14", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01CE", + "shadow_reg_offset_int": "0x0738", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse462-bits0-31", + "name": "OEM_PQC_SRKH[479:448]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + }, + { + "id": "fuse463", + "name": "OEM_PQC_SRKH15", + "description": "Hash of OEM PQC public keys in FW container", + "index_int": "0x01CF", + "shadow_reg_offset_int": "0x073C", + "access": "RW", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse463-bits0-31", + "name": "OEM_PQC_SRKH[511:480]", + "description": "Hash of OEM PQC public keys in FW container" + } + ] + } + ] + }, + { + "group": { + "name": "PRINCE", + "description": "PRINCE" + }, + "registers": [ + { + "id": "fuse184", + "name": "IPED_KEY0", + "description": "128-bit IPED key for key blob unwrap. Key blob is in primary boot image", + "index_int": "0x00B8", + "shadow_reg_offset_int": "0x02E0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse184-bits0-31", + "name": "IPED_KEY[31:0]", + "description": "128-bit IPED key for key blob unwrap. Key blob is in primary boot image" + } + ] + }, + { + "id": "fuse185", + "name": "IPED_KEY1", + "description": "128-bit IPED key for key blob unwrap. Key blob is in primary boot image", + "index_int": "0x00B9", + "shadow_reg_offset_int": "0x02E4", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse185-bits0-31", + "name": "IPED_KEY[63:32]", + "description": "128-bit IPED key for key blob unwrap. Key blob is in primary boot image" + } + ] + }, + { + "id": "fuse186", + "name": "IPED_KEY2", + "description": "128-bit IPED key for key blob unwrap. Key blob is in primary boot image", + "index_int": "0x00BA", + "shadow_reg_offset_int": "0x02E8", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse186-bits0-31", + "name": "IPED_KEY[95:64]", + "description": "128-bit IPED key for key blob unwrap. Key blob is in primary boot image" + } + ] + }, + { + "id": "fuse187", + "name": "IPED_KEY3", + "description": "128-bit IPED key for key blob unwrap. Key blob is in primary boot image", + "index_int": "0x00BB", + "shadow_reg_offset_int": "0x02EC", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse187-bits0-31", + "name": "IPED_KEY[127:96]", + "description": "128-bit IPED key for key blob unwrap. Key blob is in primary boot image" + } + ] + }, + { + "id": "Reserved608", + "name": "Reserved 0x260", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0260", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved609", + "name": "Reserved 0x261", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0261", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "V2X", + "description": "V2X group" + }, + "registers": [ + { + "id": "Reserved191", + "name": "Reserved 0xBF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BF", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 9 + }, + { + "width": 23 + } + ] + }, + { + "id": "Reserved272", + "name": "Reserved 0x110", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0110", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved273", + "name": "Reserved 0x111", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0111", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved274", + "name": "Reserved 0x112", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0112", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved275", + "name": "Reserved 0x113", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0113", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved276", + "name": "Reserved 0x114", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0114", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved277", + "name": "Reserved 0x115", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0115", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved278", + "name": "Reserved 0x116", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0116", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved279", + "name": "Reserved 0x117", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0117", + "is_reserved": true, + "access": "RO" + }, + { + "id": "fuse280", + "name": "V2X_SHE_SECRET_KEY0", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol", + "index_int": "0x0118", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse280-bits0-31", + "name": "V2X_SHE_SECRET_KEY[31:0]", + "description": "V2X SHE secret key -f used to export or import material to she, using key_update protocol" + } + ] + }, + { + "id": "fuse281", + "name": "V2X_SHE_SECRET_KEY1", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol", + "index_int": "0x0119", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse281-bits0-31", + "name": "V2X_SHE_SECRET_KEY[63:32]", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol" + } + ] + }, + { + "id": "fuse282", + "name": "V2X_SHE_SECRET_KEY2", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol", + "index_int": "0x011A", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse282-bits0-31", + "name": "V2X_SHE_SECRET_KEY[95:64]", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol" + } + ] + }, + { + "id": "fuse283", + "name": "V2X_SHE_SECRET_KEY3", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol", + "index_int": "0x011B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse283-bits0-31", + "name": "V2X_SHE_SECRET_KEY[127:96]", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol" + } + ] + }, + { + "id": "fuse284", + "name": "V2X_SHE_PRNG_KEY0", + "description": "V2X SHE PRNG value", + "index_int": "0x011C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse284-bits0-31", + "name": "V2X_SHE_PRNG_KEY[31:0]", + "description": "V2X SHE PRNG value" + } + ] + }, + { + "id": "fuse285", + "name": "V2X_SHE_PRNG_KEY1", + "description": "V2X SHE PRNG value", + "index_int": "0x011D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse285-bits0-31", + "name": "V2X_SHE_PRNG_KEY[63:32]", + "description": "V2X SHE PRNG value" + } + ] + }, + { + "id": "fuse286", + "name": "V2X_SHE_PRNG_KEY2", + "description": "V2X SHE PRNG value", + "index_int": "0x011E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse286-bits0-31", + "name": "V2X_SHE_PRNG_KEY[95:64]", + "description": "V2X SHE PRNG value" + } + ] + }, + { + "id": "fuse287", + "name": "V2X_SHE_PRNG_KEY3", + "description": "V2X SHE PRNG value", + "index_int": "0x011F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse287-bits0-31", + "name": "V2X_SHE_PRNG_KEY[127:96]", + "description": "V2X SHE PRNG value" + } + ] + }, + { + "id": "Reserved317", + "name": "Reserved 0x13D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013D", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved318", + "name": "Reserved 0x13E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013E", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved319", + "name": "Reserved 0x13F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013F", + "is_reserved": true, + "access": "RO", + "reg_width": 16, + "bitfields": [ + { + "width": 1 + }, + { + "width": 15 + } + ] + }, + { + "id": "fuse528", + "name": "V2X_SHE_MONO_CNT0", + "description": "V2X_SHE_MONO_CNT0", + "index_int": "0x0210", + "shadow_reg_offset_int": "0x0840", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse528-bits0-31", + "name": "V2X_SHE_MONO_CNT[31:0]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse529", + "name": "V2X_SHE_MONO_CNT1", + "description": "V2X_SHE_MONO_CNT1", + "index_int": "0x0211", + "shadow_reg_offset_int": "0x0844", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse529-bits0-31", + "name": "V2X_SHE_MONO_CNT[63:32]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse530", + "name": "V2X_SHE_MONO_CNT2", + "description": "V2X_SHE_MONO_CNT2", + "index_int": "0x0212", + "shadow_reg_offset_int": "0x0848", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse530-bits0-31", + "name": "V2X_SHE_MONO_CNT[95:64]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse531", + "name": "V2X_SHE_MONO_CNT3", + "description": "V2X_SHE_MONO_CNT3", + "index_int": "0x0213", + "shadow_reg_offset_int": "0x084C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse531-bits0-31", + "name": "V2X_SHE_MONO_CNT[127:96]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse532", + "name": "V2X_SHE_MONO_CNT4", + "description": "V2X_SHE_MONO_CNT4", + "index_int": "0x0214", + "shadow_reg_offset_int": "0x0850", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse532-bits0-31", + "name": "V2X_SHE_MONO_CNT[159:128]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse533", + "name": "V2X_SHE_MONO_CNT5", + "description": "V2X_SHE_MONO_CNT5", + "index_int": "0x0215", + "shadow_reg_offset_int": "0x0854", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse533-bits0-31", + "name": "V2X_SHE_MONO_CNT[191:160]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse534", + "name": "V2X_SHE_MONO_CNT6", + "description": "V2X_SHE_MONO_CNT6", + "index_int": "0x0216", + "shadow_reg_offset_int": "0x0858", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse534-bits0-31", + "name": "V2X_SHE_MONO_CNT[223:192]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse535", + "name": "V2X_SHE_MONO_CNT7", + "description": "V2X_SHE_MONO_CNT7", + "index_int": "0x0217", + "shadow_reg_offset_int": "0x085C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse535-bits0-31", + "name": "V2X_SHE_MONO_CNT[255:224]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse536", + "name": "V2X_SHE_MONO_CNT8", + "description": "V2X_SHE_MONO_CNT8", + "index_int": "0x0218", + "shadow_reg_offset_int": "0x0860", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse536-bits0-31", + "name": "V2X_SHE_MONO_CNT[287:256]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse537", + "name": "V2X_SHE_MONO_CNT9", + "description": "V2X_SHE_MONO_CNT9", + "index_int": "0x0219", + "shadow_reg_offset_int": "0x0864", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse537-bits0-31", + "name": "V2X_SHE_MONO_CNT[319:288]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse538", + "name": "V2X_SHE_MONO_CNT10", + "description": "V2X_SHE_MONO_CNT10", + "index_int": "0x021A", + "shadow_reg_offset_int": "0x0868", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse538-bits0-31", + "name": "V2X_SHE_MONO_CNT[351:320]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse539", + "name": "V2X_SHE_MONO_CNT11", + "description": "V2X_SHE_MONO_CNT11", + "index_int": "0x021B", + "shadow_reg_offset_int": "0x086C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse539-bits0-31", + "name": "V2X_SHE_MONO_CNT[383:352]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse540", + "name": "V2X_SHE_MONO_CNT12", + "description": "V2X_SHE_MONO_CNT12", + "index_int": "0x021C", + "shadow_reg_offset_int": "0x0870", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse540-bits0-31", + "name": "V2X_SHE_MONO_CNT[415:384]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse541", + "name": "V2X_SHE_MONO_CNT13", + "description": "V2X_SHE_MONO_CNT13", + "index_int": "0x021D", + "shadow_reg_offset_int": "0x0874", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse541-bits0-31", + "name": "V2X_SHE_MONO_CNT[447:416]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse542", + "name": "V2X_SHE_MONO_CNT14", + "description": "V2X_SHE_MONO_CNT14", + "index_int": "0x021E", + "shadow_reg_offset_int": "0x0878", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse542-bits0-31", + "name": "V2X_SHE_MONO_CNT[479:448]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse543", + "name": "V2X_SHE_MONO_CNT15", + "description": "V2X_SHE_MONO_CNT15", + "index_int": "0x021F", + "shadow_reg_offset_int": "0x087C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse543-bits0-31", + "name": "V2X_SHE_MONO_CNT[511:480]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse544", + "name": "V2X_SHE_MONO_CNT16", + "description": "V2X_SHE_MONO_CNT16", + "index_int": "0x0220", + "shadow_reg_offset_int": "0x0880", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse544-bits0-31", + "name": "V2X_SHE_MONO_CNT[543:512]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse545", + "name": "V2X_SHE_MONO_CNT17", + "description": "V2X_SHE_MONO_CNT17", + "index_int": "0x0221", + "shadow_reg_offset_int": "0x0884", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse545-bits0-31", + "name": "V2X_SHE_MONO_CNT[575:544]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse546", + "name": "V2X_SHE_MONO_CNT18", + "description": "V2X_SHE_MONO_CNT18", + "index_int": "0x0222", + "shadow_reg_offset_int": "0x0888", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse546-bits0-31", + "name": "V2X_SHE_MONO_CNT[607:576]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse547", + "name": "V2X_SHE_MONO_CNT19", + "description": "V2X_SHE_MONO_CNT19", + "index_int": "0x0223", + "shadow_reg_offset_int": "0x088C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse547-bits0-31", + "name": "V2X_SHE_MONO_CNT[639:608]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse548", + "name": "V2X_SHE_MONO_CNT20", + "description": "V2X_SHE_MONO_CNT20", + "index_int": "0x0224", + "shadow_reg_offset_int": "0x0890", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse548-bits0-31", + "name": "V2X_SHE_MONO_CNT[671:640]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse549", + "name": "V2X_SHE_MONO_CNT21", + "description": "V2X_SHE_MONO_CNT21", + "index_int": "0x0225", + "shadow_reg_offset_int": "0x0894", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse549-bits0-31", + "name": "V2X_SHE_MONO_CNT[703:672]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse550", + "name": "V2X_SHE_MONO_CNT22", + "description": "V2X_SHE_MONO_CNT22", + "index_int": "0x0226", + "shadow_reg_offset_int": "0x0898", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse550-bits0-31", + "name": "V2X_SHE_MONO_CNT[735:704]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse551", + "name": "V2X_SHE_MONO_CNT23", + "description": "V2X_SHE_MONO_CNT23", + "index_int": "0x0227", + "shadow_reg_offset_int": "0x089C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse551-bits0-31", + "name": "V2X_SHE_MONO_CNT[767:736]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse552", + "name": "V2X_SHE_MONO_CNT24", + "description": "V2X_SHE_MONO_CNT24", + "index_int": "0x0228", + "shadow_reg_offset_int": "0x08A0", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse552-bits0-31", + "name": "V2X_SHE_MONO_CNT[799:768]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse553", + "name": "V2X_SHE_MONO_CNT25", + "description": "V2X_SHE_MONO_CNT25", + "index_int": "0x0229", + "shadow_reg_offset_int": "0x08A4", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse553-bits0-31", + "name": "V2X_SHE_MONO_CNT[831:800]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse554", + "name": "V2X_SHE_MONO_CNT26", + "description": "V2X_SHE_MONO_CNT26", + "index_int": "0x022A", + "shadow_reg_offset_int": "0x08A8", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse554-bits0-31", + "name": "V2X_SHE_MONO_CNT[863:832]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse555", + "name": "V2X_SHE_MONO_CNT27", + "description": "V2X_SHE_MONO_CNT27", + "index_int": "0x022B", + "shadow_reg_offset_int": "0x08AC", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse555-bits0-31", + "name": "V2X_SHE_MONO_CNT[895:864]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse556", + "name": "V2X_SHE_MONO_CNT28", + "description": "V2X_SHE_MONO_CNT28", + "index_int": "0x022C", + "shadow_reg_offset_int": "0x08B0", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse556-bits0-31", + "name": "V2X_SHE_MONO_CNT[927:896]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse557", + "name": "V2X_SHE_MONO_CNT29", + "description": "V2X_SHE_MONO_CNT29", + "index_int": "0x022D", + "shadow_reg_offset_int": "0x08B4", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse557-bits0-31", + "name": "V2X_SHE_MONO_CNT[959:928]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse558", + "name": "V2X_SHE_MONO_CNT30", + "description": "V2X_SHE_MONO_CNT30", + "index_int": "0x022E", + "shadow_reg_offset_int": "0x08B8", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse558-bits0-31", + "name": "V2X_SHE_MONO_CNT[991:960]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse559", + "name": "V2X_SHE_MONO_CNT31", + "description": "V2X_SHE_MONO_CNT31", + "index_int": "0x022F", + "shadow_reg_offset_int": "0x08BC", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse559-bits0-31", + "name": "V2X_SHE_MONO_CNT[1023:992]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse560", + "name": "V2X_SHE_MONO_CNT32", + "description": "V2X_SHE_MONO_CNT32", + "index_int": "0x0230", + "shadow_reg_offset_int": "0x08C0", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse560-bits0-31", + "name": "V2X_SHE_MONO_CNT[1055:1024]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse561", + "name": "V2X_SHE_MONO_CNT33", + "description": "V2X_SHE_MONO_CNT33", + "index_int": "0x0231", + "shadow_reg_offset_int": "0x08C4", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse561-bits0-31", + "name": "V2X_SHE_MONO_CNT[1087:1056]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse562", + "name": "V2X_SHE_MONO_CNT34", + "description": "V2X_SHE_MONO_CNT34", + "index_int": "0x0232", + "shadow_reg_offset_int": "0x08C8", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse562-bits0-31", + "name": "V2X_SHE_MONO_CNT[1119:1088]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse563", + "name": "V2X_SHE_MONO_CNT35", + "description": "V2X_SHE_MONO_CNT35", + "index_int": "0x0233", + "shadow_reg_offset_int": "0x08CC", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse563-bits0-31", + "name": "V2X_SHE_MONO_CNT[1151:1120]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse564", + "name": "V2X_SHE_MONO_CNT36", + "description": "V2X_SHE_MONO_CNT36", + "index_int": "0x0234", + "shadow_reg_offset_int": "0x08D0", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse564-bits0-31", + "name": "V2X_SHE_MONO_CNT[1183:1152]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse565", + "name": "V2X_SHE_MONO_CNT37", + "description": "V2X_SHE_MONO_CNT37", + "index_int": "0x0235", + "shadow_reg_offset_int": "0x08D4", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse565-bits0-31", + "name": "V2X_SHE_MONO_CNT[1215:1184]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse566", + "name": "V2X_SHE_MONO_CNT38", + "description": "V2X_SHE_MONO_CNT38", + "index_int": "0x0236", + "shadow_reg_offset_int": "0x08D8", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse566-bits0-31", + "name": "V2X_SHE_MONO_CNT[1247:1216]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse567", + "name": "V2X_SHE_MONO_CNT39", + "description": "V2X_SHE_MONO_CNT39", + "index_int": "0x0237", + "shadow_reg_offset_int": "0x08DC", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse567-bits0-31", + "name": "V2X_SHE_MONO_CNT[1279:1248]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse568", + "name": "V2X_SHE_MONO_CNT40", + "description": "V2X_SHE_MONO_CNT40", + "index_int": "0x0238", + "shadow_reg_offset_int": "0x08E0", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse568-bits0-31", + "name": "V2X_SHE_MONO_CNT[1311:1280]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse569", + "name": "V2X_SHE_MONO_CNT41", + "description": "V2X_SHE_MONO_CNT41", + "index_int": "0x0239", + "shadow_reg_offset_int": "0x08E4", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse569-bits0-31", + "name": "V2X_SHE_MONO_CNT[1343:1312]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse570", + "name": "V2X_SHE_MONO_CNT42", + "description": "V2X_SHE_MONO_CNT42", + "index_int": "0x023A", + "shadow_reg_offset_int": "0x08E8", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse570-bits0-31", + "name": "V2X_SHE_MONO_CNT[1375:1344]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse571", + "name": "V2X_SHE_MONO_CNT43", + "description": "V2X_SHE_MONO_CNT43", + "index_int": "0x023B", + "shadow_reg_offset_int": "0x08EC", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse571-bits0-31", + "name": "V2X_SHE_MONO_CNT[1407:1376]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse572", + "name": "V2X_SHE_MONO_CNT44", + "description": "V2X_SHE_MONO_CNT44", + "index_int": "0x023C", + "shadow_reg_offset_int": "0x08F0", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse572-bits0-31", + "name": "V2X_SHE_MONO_CNT[1439:1408]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse573", + "name": "V2X_SHE_MONO_CNT45", + "description": "V2X_SHE_MONO_CNT45", + "index_int": "0x023D", + "shadow_reg_offset_int": "0x08F4", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse573-bits0-31", + "name": "V2X_SHE_MONO_CNT[1471:1440]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse574", + "name": "V2X_SHE_MONO_CNT46", + "description": "V2X_SHE_MONO_CNT46", + "index_int": "0x023E", + "shadow_reg_offset_int": "0x08F8", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse574-bits0-31", + "name": "V2X_SHE_MONO_CNT[1503:1472]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse575", + "name": "V2X_SHE_MONO_CNT47", + "description": "V2X_SHE_MONO_CNT47", + "index_int": "0x023F", + "shadow_reg_offset_int": "0x08FC", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse575-bits0-31", + "name": "V2X_SHE_MONO_CNT[1535:1504]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse576", + "name": "V2X_SHE_MONO_CNT48", + "description": "V2X_SHE_MONO_CNT48", + "index_int": "0x0240", + "shadow_reg_offset_int": "0x0900", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse576-bits0-31", + "name": "V2X_SHE_MONO_CNT[1567:1536]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse577", + "name": "V2X_SHE_MONO_CNT49", + "description": "V2X_SHE_MONO_CNT49", + "index_int": "0x0241", + "shadow_reg_offset_int": "0x0904", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse577-bits0-31", + "name": "V2X_SHE_MONO_CNT[1599:1568]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse578", + "name": "V2X_SHE_MONO_CNT50", + "description": "V2X_SHE_MONO_CNT50", + "index_int": "0x0242", + "shadow_reg_offset_int": "0x0908", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse578-bits0-31", + "name": "V2X_SHE_MONO_CNT[1631:1600]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse579", + "name": "V2X_SHE_MONO_CNT51", + "description": "V2X_SHE_MONO_CNT51", + "index_int": "0x0243", + "shadow_reg_offset_int": "0x090C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse579-bits0-31", + "name": "V2X_SHE_MONO_CNT[1663:1632]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse580", + "name": "V2X_SHE_MONO_CNT52", + "description": "V2X_SHE_MONO_CNT52", + "index_int": "0x0244", + "shadow_reg_offset_int": "0x0910", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse580-bits0-31", + "name": "V2X_SHE_MONO_CNT[1695:1664]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse581", + "name": "V2X_SHE_MONO_CNT53", + "description": "V2X_SHE_MONO_CNT53", + "index_int": "0x0245", + "shadow_reg_offset_int": "0x0914", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse581-bits0-31", + "name": "V2X_SHE_MONO_CNT[1727:1696]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse582", + "name": "V2X_SHE_MONO_CNT54", + "description": "V2X_SHE_MONO_CNT54", + "index_int": "0x0246", + "shadow_reg_offset_int": "0x0918", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse582-bits0-31", + "name": "V2X_SHE_MONO_CNT[1759:1728]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse583", + "name": "V2X_SHE_MONO_CNT55", + "description": "V2X_SHE_MONO_CNT55", + "index_int": "0x0247", + "shadow_reg_offset_int": "0x091C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse583-bits0-31", + "name": "V2X_SHE_MONO_CNT[1791:1760]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse584", + "name": "V2X_SHE_MONO_CNT56", + "description": "V2X_SHE_MONO_CNT56", + "index_int": "0x0248", + "shadow_reg_offset_int": "0x0920", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse584-bits0-31", + "name": "V2X_SHE_MONO_CNT[1823:1792]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse585", + "name": "V2X_SHE_MONO_CNT57", + "description": "V2X_SHE_MONO_CNT57", + "index_int": "0x0249", + "shadow_reg_offset_int": "0x0924", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse585-bits0-31", + "name": "V2X_SHE_MONO_CNT[1855:1824]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse586", + "name": "V2X_SHE_MONO_CNT58", + "description": "V2X_SHE_MONO_CNT58", + "index_int": "0x024A", + "shadow_reg_offset_int": "0x0928", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse586-bits0-31", + "name": "V2X_SHE_MONO_CNT[1887:1856]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse587", + "name": "V2X_SHE_MONO_CNT59", + "description": "V2X_SHE_MONO_CNT59", + "index_int": "0x024B", + "shadow_reg_offset_int": "0x092C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse587-bits0-31", + "name": "V2X_SHE_MONO_CNT[1919:1888]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse588", + "name": "V2X_SHE_MONO_CNT60", + "description": "V2X_SHE_MONO_CNT60", + "index_int": "0x024C", + "shadow_reg_offset_int": "0x0930", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse588-bits0-31", + "name": "V2X_SHE_MONO_CNT[1951:1920]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse589", + "name": "V2X_SHE_MONO_CNT61", + "description": "V2X_SHE_MONO_CNT61", + "index_int": "0x024D", + "shadow_reg_offset_int": "0x0934", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse589-bits0-31", + "name": "V2X_SHE_MONO_CNT[1983:1952]", + "description": "V2X_SHE_MONO_CNT" + } + ] + }, + { + "id": "fuse590", + "name": "V2X_SHE_MONO_CNT62", + "description": "V2X_SHE_MONO_CNT62", + "index_int": "0x024E", + "shadow_reg_offset_int": "0x0938", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse590-bits0-15", + "name": "V2X_SHE_MONO_CNT[1999:1984]", + "description": "V2X_SHE_MONO_CNT", + "access": "RO" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved591", + "name": "Reserved 0x24F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x024F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 2 + }, + { + "width": 4, + "access": "RO" + }, + { + "width": 10 + } + ] + } + ] + }, + { + "group": { + "name": "VROMPATCH", + "description": "VROMPATCH" + }, + "registers": [ + { + "id": "Reserved192", + "name": "Reserved 0xC0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C0", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved193", + "name": "Reserved 0xC1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C1", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved194", + "name": "Reserved 0xC2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C2", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved195", + "name": "Reserved 0xC3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C3", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved196", + "name": "Reserved 0xC4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C4", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved197", + "name": "Reserved 0xC5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C5", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved198", + "name": "Reserved 0xC6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C6", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved199", + "name": "Reserved 0xC7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C7", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved200", + "name": "Reserved 0xC8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C8", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved201", + "name": "Reserved 0xC9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C9", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved202", + "name": "Reserved 0xCA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CA", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved203", + "name": "Reserved 0xCB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CB", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved204", + "name": "Reserved 0xCC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CC", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved205", + "name": "Reserved 0xCD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CD", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved206", + "name": "Reserved 0xCE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CE", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved207", + "name": "Reserved 0xCF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CF", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved208", + "name": "Reserved 0xD0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D0", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved209", + "name": "Reserved 0xD1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D1", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved210", + "name": "Reserved 0xD2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D2", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved211", + "name": "Reserved 0xD3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D3", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved212", + "name": "Reserved 0xD4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D4", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved213", + "name": "Reserved 0xD5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D5", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved214", + "name": "Reserved 0xD6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D6", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved215", + "name": "Reserved 0xD7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D7", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved216", + "name": "Reserved 0xD8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D8", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved217", + "name": "Reserved 0xD9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D9", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved218", + "name": "Reserved 0xDA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DA", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved219", + "name": "Reserved 0xDB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DB", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved220", + "name": "Reserved 0xDC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DC", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved221", + "name": "Reserved 0xDD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DD", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved222", + "name": "Reserved 0xDE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DE", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved223", + "name": "Reserved 0xDF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DF", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved224", + "name": "Reserved 0xE0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E0", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved225", + "name": "Reserved 0xE1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E1", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved226", + "name": "Reserved 0xE2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E2", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved227", + "name": "Reserved 0xE3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E3", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved228", + "name": "Reserved 0xE4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E4", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved229", + "name": "Reserved 0xE5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E5", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved230", + "name": "Reserved 0xE6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E6", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved231", + "name": "Reserved 0xE7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E7", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved232", + "name": "Reserved 0xE8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E8", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved233", + "name": "Reserved 0xE9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E9", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved234", + "name": "Reserved 0xEA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EA", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved235", + "name": "Reserved 0xEB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EB", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved236", + "name": "Reserved 0xEC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EC", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved237", + "name": "Reserved 0xED", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00ED", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved238", + "name": "Reserved 0xEE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EE", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved239", + "name": "Reserved 0xEF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EF", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved240", + "name": "Reserved 0xF0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F0", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved241", + "name": "Reserved 0xF1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F1", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved242", + "name": "Reserved 0xF2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F2", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved243", + "name": "Reserved 0xF3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F3", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved244", + "name": "Reserved 0xF4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F4", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved245", + "name": "Reserved 0xF5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F5", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved246", + "name": "Reserved 0xF6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F6", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved247", + "name": "Reserved 0xF7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F7", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved248", + "name": "Reserved 0xF8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F8", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved249", + "name": "Reserved 0xF9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F9", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved250", + "name": "Reserved 0xFA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FA", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved251", + "name": "Reserved 0xFB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FB", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved252", + "name": "Reserved 0xFC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FC", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved253", + "name": "Reserved 0xFD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FD", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved254", + "name": "Reserved 0xFE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FE", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved255", + "name": "Reserved 0xFF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FF", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved328", + "name": "Reserved 0x148", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0148", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved329", + "name": "Reserved 0x149", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0149", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved330", + "name": "Reserved 0x14A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014A", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved331", + "name": "Reserved 0x14B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014B", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved332", + "name": "Reserved 0x14C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved333", + "name": "Reserved 0x14D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved334", + "name": "Reserved 0x14E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved335", + "name": "Reserved 0x14F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved336", + "name": "Reserved 0x150", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0150", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved337", + "name": "Reserved 0x151", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0151", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved338", + "name": "Reserved 0x152", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0152", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved339", + "name": "Reserved 0x153", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0153", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved340", + "name": "Reserved 0x154", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0154", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved341", + "name": "Reserved 0x155", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0155", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved342", + "name": "Reserved 0x156", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0156", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved343", + "name": "Reserved 0x157", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0157", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved344", + "name": "Reserved 0x158", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0158", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved345", + "name": "Reserved 0x159", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0159", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved346", + "name": "Reserved 0x15A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015A", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved347", + "name": "Reserved 0x15B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015B", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved348", + "name": "Reserved 0x15C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved349", + "name": "Reserved 0x15D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved350", + "name": "Reserved 0x15E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved351", + "name": "Reserved 0x15F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved352", + "name": "Reserved 0x160", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0160", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved353", + "name": "Reserved 0x161", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0161", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved354", + "name": "Reserved 0x162", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0162", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved355", + "name": "Reserved 0x163", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0163", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved356", + "name": "Reserved 0x164", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0164", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved357", + "name": "Reserved 0x165", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0165", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved358", + "name": "Reserved 0x166", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0166", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved359", + "name": "Reserved 0x167", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0167", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved360", + "name": "Reserved 0x168", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0168", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved361", + "name": "Reserved 0x169", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0169", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved362", + "name": "Reserved 0x16A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016A", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved363", + "name": "Reserved 0x16B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016B", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved364", + "name": "Reserved 0x16C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved365", + "name": "Reserved 0x16D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved366", + "name": "Reserved 0x16E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved367", + "name": "Reserved 0x16F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved368", + "name": "Reserved 0x170", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0170", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved369", + "name": "Reserved 0x171", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0171", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved370", + "name": "Reserved 0x172", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0172", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved371", + "name": "Reserved 0x173", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0173", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved372", + "name": "Reserved 0x174", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0174", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved373", + "name": "Reserved 0x175", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0175", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved374", + "name": "Reserved 0x176", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0176", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved375", + "name": "Reserved 0x177", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0177", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "CRC", + "description": "CRC group" + }, + "registers": [ + { + "id": "Reserved256", + "name": "Reserved 0x100", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0100", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved257", + "name": "Reserved 0x101", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0101", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved258", + "name": "Reserved 0x102", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0102", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved259", + "name": "Reserved 0x103", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0103", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved260", + "name": "Reserved 0x104", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0104", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved261", + "name": "Reserved 0x105", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0105", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved262", + "name": "Reserved 0x106", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0106", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved263", + "name": "Reserved 0x107", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0107", + "is_reserved": true, + "access": "RO" + } + ] + }, + { + "group": { + "name": "SENTINEL_GPR0_CFG", + "description": "SENTINEL_GPR0_CFG" + }, + "registers": [ + { + "id": "Reserved264", + "name": "Reserved 0x108", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0108", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved265", + "name": "Reserved 0x109", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0109", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved266", + "name": "Reserved 0x10A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010A", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved267", + "name": "Reserved 0x10B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010B", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved268", + "name": "Reserved 0x10C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010C", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved269", + "name": "Reserved 0x10D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010D", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved270", + "name": "Reserved 0x10E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010E", + "is_reserved": true, + "access": "RO" + }, + { + "id": "Reserved271", + "name": "Reserved 0x10F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010F", + "is_reserved": true, + "access": "RO" + } + ] + }, + { + "group": { + "name": "OEM_SW_CFG", + "description": "OEM_SW_CFG" + }, + "registers": [ + { + "id": "fuse321", + "name": "OEM_SW_CFG", + "description": "OEM Software Configuration", + "index_int": "0x0141", + "shadow_reg_offset_int": "0x0504", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse321-bits0-31", + "name": "OEM_SW_CFG", + "description": "OEM Software Configuration" + } + ] + } + ] + }, + { + "group": { + "name": "COM_DEVICE_ID_CFG", + "description": "COM_DEVICE_ID_CFG" + }, + "registers": [ + { + "id": "fuse322", + "name": "COM_DEVICE_ID_CFG0", + "description": "COM_DEVICE_ID_CFG0", + "index_int": "0x0142", + "shadow_reg_offset_int": "0x0508", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse322-bits0-15", + "name": "USB_VID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "fuse322-bits16-31", + "name": "USB1_PID", + "description": "USB1 Product ID" + } + ] + }, + { + "id": "fuse323", + "name": "COM_DEVICE_ID_CFG1", + "description": "COM_DEVICE_ID_CFG1", + "index_int": "0x0143", + "shadow_reg_offset_int": "0x050C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse323-bits0-15", + "name": "USB2_PID", + "description": "USB2 Product ID" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved324", + "name": "Reserved 0x144", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0144", + "is_reserved": true, + "access": "RO" + }, + { + "id": "fuse325", + "name": "COM_DEVICE_ID_CFG3", + "description": "COM_DEVICE_ID_CFG3", + "index_int": "0x0145", + "shadow_reg_offset_int": "0x0514", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse325-bits0-7", + "name": "MAC_ADDR_47_40", + "description": "MAC Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse325-bits8-15", + "name": "MAC_ADDR_39_32", + "description": "MAC Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse325-bits16-23", + "name": "MAC_ADDR_31_24", + "description": "MAC Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse325-bits24-31", + "name": "MAC_ADDR_23_16", + "description": "MAC Address. Reserved for customer SW" + } + ] + }, + { + "id": "fuse326", + "name": "COM_DEVICE_ID_CFG4", + "description": "COM_DEVICE_ID_CFG4", + "index_int": "0x0146", + "shadow_reg_offset_int": "0x0518", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse326-bits0-7", + "name": "MAC_ADDR_15_8", + "description": "MAC Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse326-bits8-15", + "name": "MAC_ADDR_7_0", + "description": "MAC Address. Reserved for customer SW" + }, + { + "width": 8 + }, + { + "width": 8, + "id": "fuse326-bits24-31", + "name": "NUM_OF_MACS", + "description": "Max. Number of MACs supported." + } + ] + } + ] + }, + { + "group": { + "name": "MIX_BLK_CFG", + "description": "MIX_BLK_CFG" + }, + "registers": [ + { + "id": "Reserved327", + "name": "Reserved 0x147", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0147", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + } + ] + } + ] + }, + { + "group": { + "name": "V2X_ROMPATCH", + "description": "V2X_ROMPATCH" + }, + "registers": [ + { + "id": "Reserved464", + "name": "Reserved 0x1D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D0", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved465", + "name": "Reserved 0x1D1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D1", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved466", + "name": "Reserved 0x1D2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D2", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved467", + "name": "Reserved 0x1D3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D3", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved468", + "name": "Reserved 0x1D4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D4", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved469", + "name": "Reserved 0x1D5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D5", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved470", + "name": "Reserved 0x1D6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D6", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved471", + "name": "Reserved 0x1D7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D7", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved472", + "name": "Reserved 0x1D8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D8", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved473", + "name": "Reserved 0x1D9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D9", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved474", + "name": "Reserved 0x1DA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DA", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved475", + "name": "Reserved 0x1DB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DB", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved476", + "name": "Reserved 0x1DC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DC", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved477", + "name": "Reserved 0x1DD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DD", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved478", + "name": "Reserved 0x1DE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DE", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved479", + "name": "Reserved 0x1DF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DF", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved480", + "name": "Reserved 0x1E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E0", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved481", + "name": "Reserved 0x1E1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E1", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved482", + "name": "Reserved 0x1E2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E2", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved483", + "name": "Reserved 0x1E3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E3", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved484", + "name": "Reserved 0x1E4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E4", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved485", + "name": "Reserved 0x1E5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E5", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved486", + "name": "Reserved 0x1E6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E6", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved487", + "name": "Reserved 0x1E7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E7", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved488", + "name": "Reserved 0x1E8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E8", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved489", + "name": "Reserved 0x1E9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E9", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved490", + "name": "Reserved 0x1EA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EA", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved491", + "name": "Reserved 0x1EB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EB", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved492", + "name": "Reserved 0x1EC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EC", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved493", + "name": "Reserved 0x1ED", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01ED", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved494", + "name": "Reserved 0x1EE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EE", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved495", + "name": "Reserved 0x1EF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EF", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved496", + "name": "Reserved 0x1F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F0", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved497", + "name": "Reserved 0x1F1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F1", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved498", + "name": "Reserved 0x1F2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F2", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved499", + "name": "Reserved 0x1F3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F3", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved500", + "name": "Reserved 0x1F4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F4", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved501", + "name": "Reserved 0x1F5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F5", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved502", + "name": "Reserved 0x1F6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F6", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved503", + "name": "Reserved 0x1F7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F7", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved504", + "name": "Reserved 0x1F8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F8", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved505", + "name": "Reserved 0x1F9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F9", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved506", + "name": "Reserved 0x1FA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FA", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved507", + "name": "Reserved 0x1FB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FB", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved508", + "name": "Reserved 0x1FC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FC", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved509", + "name": "Reserved 0x1FD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FD", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved510", + "name": "Reserved 0x1FE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FE", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved511", + "name": "Reserved 0x1FF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FF", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved512", + "name": "Reserved 0x200", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0200", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved513", + "name": "Reserved 0x201", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0201", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved514", + "name": "Reserved 0x202", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0202", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved515", + "name": "Reserved 0x203", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0203", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved516", + "name": "Reserved 0x204", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0204", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved517", + "name": "Reserved 0x205", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0205", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved518", + "name": "Reserved 0x206", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0206", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved519", + "name": "Reserved 0x207", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0207", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved520", + "name": "Reserved 0x208", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0208", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved521", + "name": "Reserved 0x209", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0209", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved522", + "name": "Reserved 0x20A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020A", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved523", + "name": "Reserved 0x20B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020B", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved524", + "name": "Reserved 0x20C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved525", + "name": "Reserved 0x20D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved526", + "name": "Reserved 0x20E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved527", + "name": "Reserved 0x20F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "MTR", + "description": "MTR group" + }, + "registers": [ + { + "id": "Reserved592", + "name": "Reserved 0x250", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0250", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved593", + "name": "Reserved 0x251", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0251", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved594", + "name": "Reserved 0x252", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0252", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved595", + "name": "Reserved 0x253", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0253", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved596", + "name": "Reserved 0x254", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0254", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved597", + "name": "Reserved 0x255", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0255", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved598", + "name": "Reserved 0x256", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0256", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved599", + "name": "Reserved 0x257", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0257", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "MEM_TRIM_CFG", + "description": "MEM_TRIM_CFG" + }, + "registers": [ + { + "id": "Reserved600", + "name": "Reserved 0x258", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0258", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved601", + "name": "Reserved 0x259", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0259", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved602", + "name": "Reserved 0x25A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025A", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved603", + "name": "Reserved 0x25B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025B", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved604", + "name": "Reserved 0x25C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025C", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved605", + "name": "Reserved 0x25D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025D", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved606", + "name": "Reserved 0x25E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025E", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved607", + "name": "Reserved 0x25F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025F", + "is_reserved": true, + "access": "RO", + "bitfields": [ + { + "width": 32 + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/database.yaml new file mode 100644 index 0000000..2509d43 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/database.yaml @@ -0,0 +1,538 @@ +# Copyright 2023-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + a1: {} + b0: + features: + ahab: + sub_features: [ahab_image, certificate_supported] + container_types: [2, 1] # Supported container types (keep order 2, 1 - this defines default 2) + fuses_0: + _name: "AHAB SRKH" + srkh: "__srk_hash0" # SRK hash fuse + fuses_1: + _name: "AHAB SRKH PQC" + pqc_srkh: "__srk_hash1" # SRK PQC hash fuse + # B0 revision requires dummy image for OEI DDR + oei_ddr_gap_after_image: 0 + oei_ddr_qb_data_dummy: True + # ======== Certificate block section ======== + cert_block: + rot_type: "srk_table_ahab_v2" + dat: + ele_cnt_version: 2 # DAT container is based on New AHAB container version 2 + + # ======== Fuses description section ======== + fuses: + tool: nxpele + grouped_registers: + - uid: otfad1_key + name: OTFAD1_KEY + width: 128 + reverse_subregs_order: True + reversed: True + config_as_hexstring: true + description: OTFAD1 Key known as KEK. + sub_regs: [fuse184, fuse185, fuse186, fuse187] + - uid: srkh + name: SRKH + width: 512 + reversed: True + config_as_hexstring: True + description: "SHA512 hash digest of hash of four SRK keys" + sub_regs: + [ + "fuse128", + "fuse129", + "fuse130", + "fuse131", + "fuse132", + "fuse133", + "fuse134", + "fuse135", + "fuse136", + "fuse137", + "fuse138", + "fuse139", + "fuse140", + "fuse141", + "fuse142", + "fuse143", + ] + + - uid: pqc_srkh + name: PQC_SRKH + width: 512 + reversed: True + config_as_hexstring: True + description: "SHA512 hash digest of hash of four SRK keys" + sub_regs: + [ + "fuse448", + "fuse449", + "fuse450", + "fuse451", + "fuse452", + "fuse453", + "fuse454", + "fuse455", + "fuse456", + "fuse457", + "fuse458", + "fuse459", + "fuse460", + "fuse461", + "fuse462", + "fuse463", + ] + +latest: b0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: i.MX Application Processors + spsdk_predecessor_name: mx95 + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-9-processors/i-mx-95-applications-processor-family-high-performance-safety-enabled-platform-with-eiq-neutron-npu:iMX95 + memory_map: + code-tcm_ns: + start_int: 0x0FF80000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + code-tcm_s: + start_int: 0x1FF80000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + system-tcm_ns: + start_int: 0x20000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + system-tcm_s: + start_int: 0x30000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_itcm_ns: + start_int: 0x20380000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_itcm_s: + start_int: 0x30380000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_dtcm_ns: + start_int: 0x20400000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_dtcm_s: + start_int: 0x30400000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + ocram_ns: + start_int: 0x20480000 + size_int: 0x60000 + external: false + non_xip_type: int_ram + ocram_s: + start_int: 0x30480000 + size_int: 0x60000 + external: false + non_xip_type: int_ram + flexspi1_ns: + start_int: 0x28000000 + size_int: 0x08000000 + external: true + mirror_of: flexspi1_s + flexspi1_s: + start_int: 0x38000000 + size_int: 0x08000000 + external: true + neutron_sram_ns: + start_int: 0x4AA00000 + size_int: 0x00100000 + external: false + mirror_of: neutron_sram_s + non_xip_type: int_ram + neutron_sram_s: + start_int: 0x5AA00000 + size_int: 0x00100000 + external: false + non_xip_type: int_ram + dram1_ns: + start_int: 0x80000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram1_s: + start_int: 0x90000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram2_ns: + start_int: 0xA0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram2_s: + start_int: 0xB0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram3_ns: + start_int: 0xC0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + dram3_s: + start_int: 0xD0000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_ddr + isp: + rom: + protocol: sdps + interfaces: [usb] + usb: + - vid: 0x1FC9 + pid: 0x015D + - vid: 0x1FC9 + pid: 0x015C + protocol_params: + no_cmd: True + hid_ep1: True + hid_pack_size: 1020 + +features: + # ======== Fuses description section ======== + fuses: + tool: nxpele + grouped_registers: + - uid: srkh + name: SRKH + width: 256 + reversed: True + config_as_hexstring: True + description: "SHA256 hash digest of hash of four SRK keys" + sub_regs: + [ + "fuse128", + "fuse129", + "fuse130", + "fuse131", + "fuse132", + "fuse133", + "fuse134", + "fuse135", + ] + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x9280_0000 + size: 0x30000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_ahab" + + # ======== DAT section ======== + dat: + socc: 0x4D58005F # SOCC identification + based_on_ele: True # Flag if the implementation of DAT is based on EdgeLock Enclave + dat_is_using_sha256_always: True + auth_beacon_length: 4 # The length in bytes of authentication beacon + ele_cnt_version: 1 + dac_version_is_swapped: True + sub_features: ["ele_pqc"] + test_address: 0x2048_0000 + dmbox_ap_ix: 0 + dac_rot_type: not_available # The Dac packet doesn't contains the ROT hash + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== AHAB section ======== + ahab: + containers_max_cnt: 3 + valid_offset_minimal_alignment: 0x400 + container_types: [1] # Supported container types + core_ids: + DUMMY_CORE: [0, "dummy", "Virtual dummy core (used for data)"] + CORTEX_M33: [1, "cortex-m33", "Cortex M33 - Boot core"] + CORTEX_A55: [2, "cortex-a55", "Cortex A55"] + ELE: [6, "ele", "EdgeLock Enclave"] + V2X_1: [9, "v2x-1", "V2X 1"] + V2X_2: [10, "v2x-2", "V2X 2"] + CORTEX_M7_1: [11, "cortex-m7-1", "Cortex M7 Core ID 1"] + DDR: [14, "ddr", "DDR Core"] + + image_types: + application: + EXECUTABLE: [0x03, executable, Executable Image] + DATA: [0x04, data, Data Image] + OEI: [0x05, oei, OEI Image] + PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + DEK_VALIDATION_FCB_CHK: + [0x08, dek_validation_fcb_chk, DEK validation FCB check Image] + PROVISIONING_DATA: [0x09, provisioning_data, Provisioning data Image] + EXECUTABLE_FAST_BOOT_IMAGE: + [0x0A, executable_fast_boot_image, Executable fast boot Image] + OEI_DDR: [0x0D, oei_ddr, Executable boot Image] + V2X_DUMMY: [0x0E, v2x_dummy, V2X dummy Image] + + ele: + ELE_AS_IMAGE: [0x05, ele_as_image, EdgeLock Enclave Image in OEM Image] + ELE: [0x06, ele, EdgeLock Enclave Image] + + v2x: + V2X_AS_IMAGE: [0x0A, v2x_as_image, V2X image as OEM Image] + V2X_PRIMARY: [0x0B, v2x_primary, V2X primary Image] + V2X_SECONDARY: [0x0C, v2x_secondary, V2X secondary Image] + V2X_ROM_PATCH: [0x0D, v2x_rom_patch, V2X rom patch Image] + + image_types_mapping: + ele: [6] + v2x: [9, 10] + + # AHAB extra images + oei_ddr_load_address: 0x1ffc0000 + oei_ddr_entry_point: 0x1ffc0001 + oei_ddr_core_id: cortex-m33 + oei_ddr_image_type: oei + oei_ddr_image_size_alignment: 0x400 + oei_ddr_gap_after_image: 0x10000 + + oei_ddr_no_qb_load_address: 0x1ffc0000 + oei_ddr_no_qb_entry_point: 0x1ffc0001 + oei_ddr_no_qb_core_id: cortex-m33 + oei_ddr_no_qb_image_type: oei + oei_ddr_no_qb_image_size_alignment: 0x400 + oei_ddr_no_qb_gap_after_image: 0x10000 + + oei_tcm_load_address: 0x1ffc0000 + oei_tcm_entry_point: 0x1ffc0001 + oei_tcm_core_id: cortex-m33 + oei_tcm_image_type: oei + oei_tcm_image_size_alignment: 0x400 + + system_manager_load_address: 0x1ffc0000 + system_manager_entry_point: 0x1ffc0000 + system_manager_core_id: cortex-m33 + system_manager_image_size_alignment: 0x400 + + cortex_m7_app_load_address: 0x303c0000 + cortex_m7_app_entry_point: 0 + cortex_m7_app_core_id: cortex-m7-1 + cortex_m7_app_meta_data_start_cpu_id: 1 + cortex_m7_app_image_size_alignment: 0x400 + + spl_load_address: 0x20480000 + spl_core_id: cortex-a55 + spl_meta_data_start_cpu_id: 2 + spl_ddr_image_size_alignment: 0x400 + + v2x_dummy_load_address: 0x8b000000 + v2x_dummy_image_type: v2x_dummy + v2x_dummy_core_id: cortex-m33 + + atf_load_address: 0x8a200000 + atf_core_id: cortex-a55 + atf_meta_data_start_cpu_id: 2 + atf_image_size_alignment: 0x400 + atf_filename: bl31-imx95.bin + + uboot_load_address: 0x90200000 + uboot_core_id: cortex-a55 + uboot_meta_data_start_cpu_id: 2 + uboot_image_size_alignment: 0x400 + + tee_load_address: 0x8c000000 + tee_core_id: cortex-a55 + tee_meta_data_start_cpu_id: 2 + tee_image_size_alignment: 0x400 + tee_filename: tee.bin + + kernel_load_address: 0x90400000 + kernel_core_id: cortex-a55 + kernel_meta_data_start_cpu_id: 2 + kernel_chunk_size: 0x700000 + kernel_revisions_to_split: [a0, a1] + kernel_image_size_alignment: 0x400 + + dtb_load_address: 0x93000000 + dtb_core_id: cortex-a55 + dtb_meta_data_start_cpu_id: 0 + dtb_entry_point: 0x0 + dtb_image_type: data + dtb_image_size_alignment: 0x400 + + extra_images: + [ + double_authentication, + oei_ddr_no_qb, + oei_tcm, + system_manager, + cortex_m7_app, + spl, + v2x_dummy, + atf, + uboot, + tee, + kernel, + dtb, + ] + # ======== EdgeLock Enclave section ======== + ele: {} + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + #not_used: 0xC00 + primary_image_container_set: 0x1_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + emmc_boot: + segments: + primary_image_container_set: 0x0 + secondary_image_container_set: -1 # Just behind previous segment + sd: + segments: + primary_image_container_set: 0x8_000 + secondary_image_container_set: -1 # Just behind previous segment + # flexspi_nand: + # segments: + # xmcd: 0x00 + # primary_image_container_set: 0x400 + # secondary_image_container_set_ahab: -1 # Just behind previous segment + recovery_spi: + note: Connected to LPSPI1/2for Low power boot and LPSPI/3/4 for Single boot. SPI NOR recovery image + segments: + primary_image_container_set: 0x00 + secondary_image_container_set: -1 # Just behind previous segment + + # Template definitions for bootable image generation + templates: + imx_boot_flash_all: + description: "Complete imx-bootloader image" + mem_type: serial_downloader + configs: + - name: spl + type: spl + containers: + - name: nxp_container + path: "mx95b0-ahab-container.img" + - name: spl_container + images: + [oei_ddr_no_qb, system_manager, cortex_m7_app, spl, v2x_dummy] + - name: uboot + type: uboot + containers: + - name: uboot_container + images: [atf, uboot, tee] + + boards: + imx95-15x15-lpddr4x-evk: + lpddr_imem: lpddr4x_imem_v202409.bin + lpddr_dmem: lpddr4x_dmem_v202409.bin + lpddr_imem_qb: lpddr4x_imem_qb_v202409.bin + lpddr_dmem_qb: lpddr4x_dmem_qb_v202409.bin + oei_ddr: oei-m33-ddr.bin + system_manager: m33_image-mx95evk.bin + cortex_m7_app: imx95-15x15-evk_m7_TCM_power_mode_switch.bin + spl: u-boot-spl.bin-imx95-15x15-lpddr4x-evk-sd + atf: bl31-imx95.bin + uboot: u-boot-imx95-15x15-lpddr4x-evk.bin-sd + tee: tee.bin + imx95-19x19-lpddr5-evk: + lpddr_imem: lpddr5_imem_v202409.bin + lpddr_dmem: lpddr5_dmem_v202409.bin + lpddr_imem_qb: lpddr5_imem_qb_v202409.bin + lpddr_dmem_qb: lpddr5_dmem_qb_v202409.bin + oei_ddr: oei-m33-ddr.bin + system_manager: m33_image-mx95evk.bin + cortex_m7_app: imx95-19x19-evk_m7_TCM_power_mode_switch.bin + spl: u-boot-spl.bin-imx95-19x19-lpddr5-evk-sd + atf: bl31-imx95.bin + uboot: u-boot-imx95-19x19-lpddr5-evk.bin-sd + tee: tee.bin + imx95-19x19-verdin: + lpddr_imem: lpddr5_imem_v202409.bin + lpddr_dmem: lpddr5_dmem_v202409.bin + lpddr_imem_qb: lpddr5_imem_qb_v202409.bin + lpddr_dmem_qb: lpddr5_dmem_qb_v202409.bin + oei_ddr: oei-m33-ddr.bin + system_manager: m33_image-mx95evk.bin + cortex_m7_app: imx95-verdin-evk_m7_TCM_power_mode_switch.bin + spl: u-boot-spl.bin-imx95-19x19-verdin-sd + atf: bl31-imx95.bin + uboot: u-boot-imx95-19x19-verdin.bin-sd + tee: tee.bin + + # # ======== OTFAD section ======== + otfad: + keyblob_byte_swap_cnt: 8 + sb_21_supported: False + has_kek_fuses: True + supports_key_scrambling: True + + fuses_1: # Fuses for OTFAD1 + _name: Configuration of fuses for OTFAD1 + _no_verify: True + fuse188: # OTFAD CFG Fuse + fuse188-bit-3: 1 # OTFAD Enable + fuse188-bit-7: __scramble_enabled # OTFAD enable scrambling + fuse188-bits-8-15: __key_scramble_align # OTFAD scramble align + fuse189: __key_scramble_mask # OTFAD Scramble Key + otfad1_key: __kek # OTFAD Key + + additional_template: ["otfad_scramble"] + additional_template_text: | + Is important to use physical addresses (non-secure) in settings of OTFAD to proper run the decryption on device. + For example: + In case of using FlexSPI2 the secure base address address is 0x1400_0000. But in setting of the OTFAD use 0x0400_0000 as a base address. + The code must be still linked on secure base address 0x1400_0000 to proper run of OTFAD hardware. + + Same is for FlexSPI1, but instead of 0x3800_0000 base address, the 0x2800_0000 must be used in OTFAD configuration. + + # # ======== Device Hardware Security Module (HSM) section ======== + # devhsm: EdgeLock 2 Go + + # ======== Misc signing section ======== + signing: + pss_padding: true + + # ======== Fastboot ======== + fastboot: + address: 0x9280_0000 + size: 0x2000_0000 + + # ======== nxpuuu ========== + nxpuuu: {} + # ===== TLV ===== + tlv_blob: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/fcb_flexspi_nor.json new file mode 100644 index 0000000..afebe53 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/fcb_flexspi_nor.json @@ -0,0 +1,25685 @@ +{ + "cpu": "MIMX9596", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix", + "default_value_int": "0x56010000", + "bitfields": [ + { + "id": "field004-bits0-7", + "width": 8, + "name": "bugfix", + "access": "RW", + "description": "[07:00] Bugfix - 0" + }, + { + "id": "field004-bits8-15", + "width": 8, + "name": "minor", + "access": "RW", + "description": "[15:08] Minor" + }, + { + "id": "field004-bits16-23", + "width": 8, + "name": "major", + "access": "RW", + "description": "[23:16] Major - 1" + }, + { + "width": 8 + } + ] + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type: 0 - Generic, 1 - Quad Enable, 2 - SPI-to-xSPI, 3 - xSPI-to-SPI", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration. effective only when deviceModeCfgEnable = 1", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "Reserved01D", + "offset_int": "0x1d", + "reg_width": 24, + "name": "reserved1", + "description": " [0x01d-0x019] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x02c-0x02f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved3", + "description": " [0x03c-0x03f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 64, + "name": "reserved4", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 8, + "name": "csPadSettingOverrideEn", + "description": " [0x060-0x060] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field061", + "offset_int": "0x61", + "reg_width": 8, + "name": "csPadSettingOverride", + "description": " [0x061-0x061] Overriding pad setting of CS", + "default_value_int": "0x0" + }, + { + "id": "Reserved062", + "offset_int": "0x62", + "reg_width": 16, + "name": "reserved5", + "description": " [0x062-0x063] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 8, + "name": "sclkPadSettingOverrideEn", + "description": " [0x064-0x064] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field065", + "offset_int": "0x65", + "reg_width": 8, + "name": "sclkPadSettingOverride", + "description": " [0x065-0x065] Overriding pad setting of SCLK", + "default_value_int": "0x0" + }, + { + "id": "Reserved066", + "offset_int": "0x66", + "reg_width": 16, + "name": "reserved6", + "description": " [0x066-0x067] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 8, + "name": "dataPadSettingOverrideEn", + "description": " [0x068-0x068] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field069", + "offset_int": "0x69", + "reg_width": 8, + "name": "dataPadSettingOverride", + "description": " [0x069-0x069] Overriding pad setting of data signals", + "default_value_int": "0x0" + }, + { + "id": "Reserved06A", + "offset_int": "0x6a", + "reg_width": 16, + "name": "reserved7", + "description": " [0x06a-0x06b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 8, + "name": "dqsPadSettingOverrideEn", + "description": " [0x06c-0x06c] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field06D", + "offset_int": "0x6d", + "reg_width": 8, + "name": "dqsPadSettingOverride", + "description": " [0x06d-0x06d] Overriding pad setting of DQS", + "default_value_int": "0x0" + }, + { + "id": "Reserved06E", + "offset_int": "0x6e", + "reg_width": 16, + "name": "reserved8", + "description": " [0x06e-0x06f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "dataValidTime", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field078-bits0-15", + "width": 16, + "name": "dllAValidTime", + "access": "RW", + "description": " Data valid time for DLLA in terms of 0.1 ns" + }, + { + "id": "field078-bits16-31", + "width": 16, + "name": "dllBValidTime", + "access": "RW", + "description": " Data valid time for DLLB in terms of 0.1 ns" + } + ] + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved9_0", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved9_1", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved9_2", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved9_3", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same", + "default_value_int": "0x0" + }, + { + "id": "field1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " The data order is swapped in OPI DDR mode", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved10_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "reserved10_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "reserved10_2", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "reserved10_3", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "reserved10_4", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "flashStateCtx", + "description": " Flash State Context after being configured", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1D4-bits0-7", + "width": 8, + "name": "flashPorMode", + "access": "RW", + "description": " Flash POR Mode" + }, + { + "id": "field1D4-bits8-15", + "width": 8, + "name": "flashCurrentMode", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "width": 8 + }, + { + "id": "field1D4-bits24-31", + "width": 8, + "name": "flashRestoringSequence", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + } + ] + }, + { + "id": "Reserved1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "reserved11_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "reserved11_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "reserved11_2", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "reserved11_3", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "reserved11_4", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "reserved11_5", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "reserved11_6", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "reserved11_7", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "reserved11_8", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "reserved11_9", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/fuses.json new file mode 100644 index 0000000..d8bcef5 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimx9596/fuses.json @@ -0,0 +1,11246 @@ +{ + "cpu": "mimx9596", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Lock bits allowing to lock access to specified fuses" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCK_CFG0", + "description": "LOCK_CFG0", + "index_int": "0", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "LOCK_CFG_LOCK", + "description": "Lock for fuse lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "WP_OP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect - the controlled field can be sensed and overridden, but can't be read or burned", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect - the controlled field can be sensed and burned, but can't be read or over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse1", + "name": "LOCK_CFG1", + "description": "LOCK_CFG1", + "index_int": "0x0001", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse1-bits-3-5", + "name": "ELE_MISC1_LOCK", + "description": "EdgeLock Enclave Misc. Config lock 1 - Used to lock OEM owned configuration fuses", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse2", + "name": "LOCK_CFG2", + "description": "LOCK_CFG2", + "index_int": "0x0002", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse2-bits-6-8", + "name": "ELE_OTFAD1_KEY_LOCK", + "description": "EdgeLock Enclave OTFAD config lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved3", + "name": "Reserved 0x3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0003", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse4", + "name": "LOCK_CFG4", + "description": "LOCK_CFG4", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse4-bits-12-14", + "name": "ELE_OEM_SRKH0_LOCK", + "description": "EdgeLock Enclave OEM SRK Hash lock (First set for SRKH[255:0])", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved5", + "name": "Reserved 0x5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0005", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse6", + "name": "LOCK_CFG6", + "description": "LOCK_CFG6", + "index_int": "0x0006", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse6-bits-3-5", + "name": "ELE_UNIQ_ID_LOCK", + "description": "EdgeLock Enclave unique ID lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "Write Protect, the controlled field can not be burned" + }, + { + "name": "OP", + "value": 2, + "description": "Over-ride Protect, the controlled field shadow registers can not be over-written" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Over-ride + Write Protect, the controlled field can not be overridden nor burned" + }, + { + "name": "RP", + "value": 4, + "description": "Read Protect, the controlled field can be sensed only, but can't be read from shadow registers" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned" + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written" + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register" + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse7", + "name": "LOCK_CFG7", + "description": "LOCK_CFG7", + "index_int": "0x0007", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse7-bits-6-8", + "name": "BOOT_CFG_LOCK", + "description": "Boot config lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-9-11", + "name": "BOOT2_CFG_LOCK", + "description": "Boot config lock - second set", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "WP_OP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "Read Protect + Write Protect - the controlled field can be sensed and overridden, but can't be read or burned", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "Read Protect + Over-ride Protect - the controlled field can be sensed and burned, but can't be read or over-written", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse7-bits-12-14", + "name": "GPR1_LOCK", + "description": "GPR 1 lock bis", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse8", + "name": "LOCK_CFG8", + "description": "LOCK_CFG8", + "index_int": "0x0008", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse8-bits-9-11", + "name": "ELE_OEM_SRKH1_LOCK", + "description": "EdgeLock Enclave OEM SRKH Lock (Second set for SRKH[511:256])", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse9", + "name": "LOCK_CFG9", + "description": "LOCK_CFG9", + "index_int": "0x0009", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse9-bits-9-11", + "name": "V2X_SHE_MC_LOCK", + "description": "V2X SHE monotonic counter lock bits", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse9-bits-12-14", + "name": "V2X_SHE_KEY_LOCK", + "description": "V2X SHE key", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse10", + "name": "LOCK_CFG10", + "description": "LOCK_CFG10", + "index_int": "0x000A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse10-bits-0-2", + "name": "COM_DEVICE_ID1_LOCK", + "description": "Communication Device ID0 Lock - Ethernet", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "Write Protect + Over-ride Protect - the controlled field can not be burned and shadow registers can not be over-written", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse10-bits-3-5", + "name": "COM_DEVICE_ID0_LOCK", + "description": "Communication Device ID1 Lock - USB, Ethernet", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All protection enabled - the controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse11", + "name": "LOCK_CFG11", + "description": "LOCK_CFG11", + "index_int": "0x000B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse11-bits-0-2", + "name": "GPR2_LOCK", + "description": "General Purpose group 2 Fuse Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse11-bits-3-5", + "name": "GPR3_LOCK", + "description": "General Purpose group 3 Fuse Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse11-bits-6-8", + "name": "GPR4_LOCK", + "description": "General Purpose group 4 Fuse Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse11-bits-9-11", + "name": "GPR5_LOCK", + "description": "General Purpose group 5 Fuse Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 3, + "id": "fuse11-bits-12-14", + "name": "GPR6_LOCK", + "description": "General Purpose group 6 Fuse Lock", + "values": [ + { + "name": "UNLOCKED", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP_WP", + "value": 3, + "description": "OP+WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)", + "deprecated_names": [ + "OP+WP" + ] + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP_WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)", + "deprecated_names": [ + "RP+WP" + ] + }, + { + "name": "RP_OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)", + "deprecated_names": [ + "RP+OP" + ] + }, + { + "name": "ALL_LOCKS", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)", + "deprecated_names": [ + "All locks" + ] + } + ] + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "ECID", + "description": "Device Unique ID" + }, + "registers": [ + { + "id": "fuse12", + "name": "ECID3", + "description": "Device Unique ID", + "index_int": "0x000C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse13", + "name": "ECID2", + "description": "Device Unique ID", + "index_int": "0x000D", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse14", + "name": "ECID1", + "description": "Device Unique ID", + "index_int": "0x000E", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse15", + "name": "ECID0", + "description": "Device Unique ID", + "index_int": "0x000F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + } + ] + }, + { + "group": { + "name": "Reserved 0x10-0x17", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved16", + "name": "Reserved 0x10", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0010", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 7 + }, + { + "width": 22 + } + ] + }, + { + "id": "Reserved17", + "name": "Reserved 0x11", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0011", + "is_reserved": true, + "bitfields": [ + { + "width": 4 + }, + { + "width": 8 + }, + { + "width": 2 + }, + { + "width": 6 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + } + ] + }, + { + "id": "Reserved18", + "name": "Reserved 0x12", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0012", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved19", + "name": "Reserved 0x13", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0013", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 6 + } + ] + }, + { + "id": "Reserved20", + "name": "Reserved 0x14", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0014", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 19 + } + ] + }, + { + "id": "Reserved21", + "name": "Reserved 0x15", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0015", + "is_reserved": true + }, + { + "id": "Reserved22", + "name": "Reserved 0x16", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0016", + "is_reserved": true + }, + { + "id": "Reserved23", + "name": "Reserved 0x17", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0017", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "BOOT_CFG", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse24", + "name": "BOOT_CFG0", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0018", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse24-bits-0-3", + "name": "Boot_Mode_Fuses", + "description": "Boot_Mode_Fuses", + "values": [ + { + "name": "BOOT_INTERNAL_FUSES", + "value": 8, + "description": "Cortex-M33 From internal fuses" + }, + { + "name": "BOOT_SERIAL_DOWNLOADER", + "value": 9, + "description": "Cortex-M33 Serial Downloader USB 1" + }, + { + "name": "BOOT_EMMC", + "value": 10, + "description": "Cortex-M33 USDHC1 8-bit eMMC 5.1" + }, + { + "name": "BOOT_SD_CARD", + "value": 11, + "description": "Cortex-M33 USDHC2 4-bit SD3.0" + }, + { + "name": "BOOT_FLEXSPI_NOR", + "value": 12, + "description": "Cortex-M33 FlexSPI Serial NOR" + }, + { + "name": "BOOT_FLEXSPI_NAND", + "value": 13, + "description": "Cortex-M33 FlexSPI Serial NAND 2K page" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-4", + "name": "Override_FlexSPI_NOR_Boot_Selection", + "description": "Override FlexSPI NOR Boot Selection", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Do not override", + "deprecated_names": [ + "0" + ] + }, + { + "name": "Override", + "value": 1, + "description": "Override" + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-5-6", + "name": "FlexSPI_NOR_Boot_Override_Selection", + "description": "FlexSPI NOR Boot Override Selection", + "values": [ + { + "name": "FLEXSPI_HYPERFLASH", + "value": 0, + "description": "Flex SPI (Hyperflash 1.8V)", + "deprecated_names": [ + "00" + ] + }, + { + "name": "FLEXSPI_4B_READ", + "value": 1, + "description": "Flex SPI (Flash with 4B READ(0x13)default supported)", + "deprecated_names": [ + "01" + ] + }, + { + "name": "OCTAL_MICRON", + "value": 2, + "description": "Default Octal mode\u00a0(Micron, Nice to have)", + "deprecated_names": [ + "10" + ] + }, + { + "name": "OCTAL_MXIC", + "value": 3, + "description": "Default Octal mode (Mxic, Nice to have )", + "deprecated_names": [ + "11" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-7", + "name": "FlexSPI_NAND_4K_Page_Selection", + "description": "FlexSPI NAND 4K Page Selection", + "values": [ + { + "name": "DEFAULT_2K_PAGE", + "value": 0, + "description": "Not override the default selection (2K page)", + "deprecated_names": [ + "0" + ] + }, + { + "name": "OVERRIDE_4K_PAGE", + "value": 1, + "description": "Override, 4K page is selected.", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-8", + "name": "uSDHC_Device_Type", + "description": "uSDHC_Device_Type", + "values": [ + { + "name": "EMMC", + "value": 0, + "description": "uSDHC_Device_Type: eMMC" + }, + { + "name": "SD", + "value": 1, + "description": "uSDHC_Device_Type: SD" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-9", + "name": "FLEXSPI_NOR_DATA_IOMUX_SION_EN", + "description": "FlexSPI NOR data IOMUX SION EN", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "SION is disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "SION is enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-10-11", + "name": "FLEXSPI_NOR_FCB_OFFSET", + "description": "FlexSPI NOR FCB offset", + "values": [ + { + "name": "OFFSET_400B", + "value": 0, + "description": "Select the offset of FlexSPI NOR FCB at 0x400B", + "deprecated_names": [ + "0x400B" + ] + }, + { + "name": "OFFSET_600B", + "value": 1, + "description": "Select the offset of FlexSPI NOR FCB at 0x600B", + "deprecated_names": [ + "0x600B" + ] + }, + { + "name": "OFFSET_800B", + "value": 2, + "description": "Select the offset of FlexSPI NOR FCB at 0x800B", + "deprecated_names": [ + "0x800B" + ] + }, + { + "name": "OFFSET_A00B", + "value": 3, + "description": "Select the offset of FlexSPI NOR FCB at 0xA00B", + "deprecated_names": [ + "0xA00B" + ] + } + ] + }, + { + "width": 3, + "id": "fuse24-bits-12-14", + "name": "FLEXSPI_AUTOPROBE_FREQ_SEL", + "description": "FlexSPI autoprobe freq sel", + "values": [ + { + "name": "FREQ_24MHZ", + "value": 0, + "description": "24MHz", + "deprecated_names": [ + "24MHz" + ] + }, + { + "name": "FREQ_133MHZ", + "value": 1, + "description": "133 MHz", + "deprecated_names": [ + "133_MHz" + ] + }, + { + "name": "FREQ_166MHZ", + "value": 2, + "description": "166 MHz", + "deprecated_names": [ + "166_MHz" + ] + }, + { + "name": "FREQ_200MHZ", + "value": 3, + "description": "200 MHz", + "deprecated_names": [ + "200_MHz" + ] + }, + { + "name": "FREQ_80MHZ", + "value": 4, + "description": "80MHz", + "deprecated_names": [ + "80MHz" + ] + }, + { + "name": "FREQ_60MHZ", + "value": 5, + "description": "60MHz", + "deprecated_names": [ + "60MHz" + ] + }, + { + "name": "FREQ_100MHZ", + "value": 6, + "description": "100 MHz" + }, + { + "name": "FREQ_100MHZ_DEFAULT", + "value": 7, + "description": "100 MHz" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-15", + "name": "FLEXSPI_FCB_COPY_FLAG", + "description": "FlexSPI FCB copy flag", + "values": [ + { + "name": "MUST HAVE", + "value": 0, + "description": "FCB copy is must-have;" + }, + { + "name": "OPTIONAL", + "value": 1, + "description": "FCB copy is optional." + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-16", + "name": "SD_Loopback_Clock_Source_Sel", + "description": "SD loopback clock source sel", + "values": [ + { + "name": "THROUGH_SD_PAD", + "value": 0, + "description": "Through SD pad", + "deprecated_names": [ + "0" + ] + }, + { + "name": "DIRECT", + "value": 1, + "description": "Direct" + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-17-18", + "name": "SD_Speed_Selection", + "description": "SD speed selection ", + "values": [ + { + "name": "BIT_4_MODE", + "value": 0, + "description": "4 bit", + "deprecated_names": [ + "4_bit" + ] + }, + { + "name": "BIT_8_MODE", + "value": 1, + "description": "8 bit", + "deprecated_names": [ + "8_bit" + ] + }, + { + "name": "BIT_4_DDR_MODE", + "value": 2, + "description": "4 bit DDR (eMMC 4.4)", + "deprecated_names": [ + "10" + ] + }, + { + "name": "BIT_8_DDR_MODE", + "value": 3, + "description": "8 bit DDR (eMMC 4.4)", + "deprecated_names": [ + "11" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-19", + "name": "eMMC_Speed_Selection", + "description": "eMMC speed selection", + "values": [ + { + "name": "NORMAL_SPEED", + "value": 0, + "description": "Normal Speed" + }, + { + "name": "HIGH_SPEED", + "value": 1, + "description": "High Speed" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-20", + "name": "eMMC_fast_boot", + "description": "eMMC fast boot", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-21", + "name": "BT_FREQ_SEL_1", + "description": "Boot frequency / voltage select[1]", + "values": [ + { + "name": "SEE_BT_FREQ_SEL", + "value": 0, + "description": "See BT_FREQ_SEL BOOT_CFG0[28]", + "deprecated_names": [ + "0" + ] + }, + { + "name": "OVERDRIVE_FREQ_SEL", + "value": 1, + "description": "Overdrive Frequency Select.", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-22", + "name": "eMMC_voltage_selection", + "description": "eMMC voltage select", + "values": [ + { + "name": "VOLTAGE_3V3", + "value": 0, + "description": "eMMC_voltage_selection: 3.3v", + "deprecated_names": [ + "3.3v" + ] + }, + { + "name": "VOLTAGE_1V8", + "value": 1, + "description": "eMMC_voltage_selection: 1.8v", + "deprecated_names": [ + "1.8v" + ] + } + ] + }, + { + "width": 5, + "id": "fuse24-bits-23-27", + "name": "FlexSPI_NOR_Reset_Pin_selections", + "description": "FlexSPI NOR reset pin selections", + "values": [ + { + "name": "GPIO_PIN_0", + "value": 0, + "description": "GPIO[x].0", + "deprecated_names": [ + "GPIO[x].0" + ] + }, + { + "name": "GPIO_PIN_1", + "value": 1, + "description": "GPIO[x].1" + }, + { + "name": "GPIO_PIN_2", + "value": 2, + "description": "GPIO[x].2" + }, + { + "name": "GPIO_PIN_3", + "value": 3, + "description": "GPIO[x].3" + }, + { + "name": "GPIO_PIN_4", + "value": 4, + "description": "GPIO[x].4" + }, + { + "name": "GPIO_PIN_5", + "value": 5, + "description": "GPIO[x].5" + }, + { + "name": "GPIO_PIN_6", + "value": 6, + "description": "GPIO[x].6" + }, + { + "name": "GPIO_PIN_7", + "value": 7, + "description": "GPIO[x].7" + }, + { + "name": "GPIO_PIN_8", + "value": 8, + "description": "GPIO[x].8" + }, + { + "name": "GPIO_PIN_9", + "value": 9, + "description": "GPIO[x].9" + }, + { + "name": "GPIO_PIN_10", + "value": 10, + "description": "GPIO[x].10" + }, + { + "name": "GPIO_PIN_11", + "value": 11, + "description": "GPIO[x].11" + }, + { + "name": "GPIO_PIN_12", + "value": 12, + "description": "GPIO[x].12" + }, + { + "name": "GPIO_PIN_13", + "value": 13, + "description": "GPIO[x].13" + }, + { + "name": "GPIO_PIN_14", + "value": 14, + "description": "GPIO[x].14" + }, + { + "name": "GPIO_PIN_15", + "value": 15, + "description": "GPIO[x].15" + }, + { + "name": "GPIO_PIN_16", + "value": 16, + "description": "GPIO[x].16" + }, + { + "name": "GPIO_PIN_17", + "value": 17, + "description": "GPIO[x].17" + }, + { + "name": "GPIO_PIN_18", + "value": 18, + "description": "GPIO[x].18" + }, + { + "name": "GPIO_PIN_19", + "value": 19, + "description": "GPIO[x].19" + }, + { + "name": "GPIO_PIN_20", + "value": 20, + "description": "GPIO[x].20" + }, + { + "name": "GPIO_PIN_21", + "value": 21, + "description": "GPIO[x].21" + }, + { + "name": "GPIO_PIN_22", + "value": 22, + "description": "GPIO[x].22" + }, + { + "name": "GPIO_PIN_23", + "value": 23, + "description": "GPIO[x].23" + }, + { + "name": "GPIO_PIN_24", + "value": 24, + "description": "GPIO[x].24" + }, + { + "name": "GPIO_PIN_25", + "value": 25, + "description": "GPIO[x].25" + }, + { + "name": "GPIO_PIN_26", + "value": 26, + "description": "GPIO[x].26" + }, + { + "name": "GPIO_PIN_27", + "value": 27, + "description": "GPIO[x].27" + }, + { + "name": "GPIO_PIN_28", + "value": 28, + "description": "GPIO[x].28" + }, + { + "name": "GPIO_PIN_29", + "value": 29, + "description": "GPIO[x].29" + }, + { + "name": "GPIO_PIN_30", + "value": 30, + "description": "GPIO[x].30" + }, + { + "name": "GPIO_PIN_31", + "value": 31, + "description": "GPIO[x].31", + "deprecated_names": [ + "GPIO[x].31" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-28", + "name": "BT_FREQ_SEL", + "description": "Boot frequency / voltage select [0]", + "values": [ + { + "name": "NORMAL_FREQUENCY", + "value": 0, + "description": "Normal clock frequency", + "deprecated_names": [ + "0" + ] + }, + { + "name": "LOW_FREQUENCY", + "value": 1, + "description": "Low clock frequency", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-29", + "name": "BT_FUSE_SEL", + "description": "Boot Fuse indication", + "values": [ + { + "name": "NOT_PROGRAMMED", + "value": 0, + "description": "Boot fuses not programmed", + "deprecated_names": [ + "0" + ] + }, + { + "name": "PROGRAMMED", + "value": 1, + "description": "Boot fuses programmed yet", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-30", + "name": "Force_Boot_from_Fuse", + "description": "Force boot from fuse", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override Boot_Mode pins by boot mode fuses", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-31", + "name": "Force_Serial_Download", + "description": "Force serial download", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Normal boot mode selection based on Boot_Mode and Boot Mode Fuses" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override all other Boot_Mode and Boot Mode Fuses and enter Serial Download" + } + ] + } + ] + }, + { + "id": "fuse25", + "name": "BOOT_CFG1", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0019", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse25-bit-0", + "name": "Fast_Boot_Acknowledge_Disable", + "description": "Fast boot acknowledge disable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Boot Ack Disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Boot Ack Enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse25-bit-2", + "name": "uSDHC_Power_On_Polarity", + "description": "uSDHC power on polarity", + "values": [ + { + "name": "LOW", + "value": 0, + "description": "uSDHC_Power_On_Polarity: Low" + }, + { + "name": "HIGH", + "value": 1, + "description": "uSDHC_Power_On_Polarity: High" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-3", + "name": "uSDHC_Power_CycleDelay", + "description": "uSDHC power cycle delay", + "values": [ + { + "name": "DELAY_5MS", + "value": 0, + "description": "uSDHC_Power_CycleDelay: 5 ms", + "deprecated_names": [ + "5_ms" + ] + }, + { + "name": "DELAY_2_5MS", + "value": 1, + "description": "2.5 ms", + "deprecated_names": [ + "2.5_ms" + ] + } + ] + }, + { + "width": 2, + "id": "fuse25-bits-4-5", + "name": "uSDHC_Power_Cycle_Interval", + "description": "uSDHC power cycle interval", + "values": [ + { + "name": "INTERVAL_20MS", + "value": 0, + "description": "20 ms", + "deprecated_names": [ + "20_ms" + ] + }, + { + "name": "INTERVAL_10MS", + "value": 1, + "description": "10 ms", + "deprecated_names": [ + "10_ms" + ] + }, + { + "name": "INTERVAL_5MS", + "value": 2, + "description": "uSDHC_Power_Cycle_Interval: 5 ms", + "deprecated_names": [ + "5_ms" + ] + }, + { + "name": "INTERVAL_2_5MS", + "value": 3, + "description": "2.5 ms", + "deprecated_names": [ + "2.5_ms" + ] + } + ] + }, + { + "width": 2, + "id": "fuse25-bits-6-7", + "name": "SD_Calibration_Step", + "description": "SD calibration step ", + "values": [ + { + "name": "1_delay_cell", + "value": 0, + "description": "1 delay cell" + }, + { + "name": "2_delay_cell", + "value": 1, + "description": "2 delay cell" + }, + { + "name": "3_delay_cell", + "value": 2, + "description": "3 delay cell" + }, + { + "name": "5_delay_cell", + "value": 3, + "description": "5 delay cell" + } + ] + }, + { + "width": 8, + "id": "fuse25-bits-8-15", + "name": "uSDHC_PAD_Settings_Low_bits", + "description": "uSDHC pad settings low bits. The override value for uSDHC pad settings ", + "values": [ + { + "name": "MIN_SETTING", + "value": 0, + "description": "Minimum pad setting value (00000000)", + "deprecated_names": [ + "11111111" + ] + }, + { + "name": "SETTING_1", + "value": 1, + "description": "Pad setting configuration 1" + }, + { + "name": "VALUE_002", + "value": 2, + "description": "Value 2" + }, + { + "name": "VALUE_003", + "value": 3, + "description": "Value 3" + }, + { + "name": "VALUE_004", + "value": 4, + "description": "Value 4" + }, + { + "name": "VALUE_005", + "value": 5, + "description": "Value 5" + }, + { + "name": "VALUE_006", + "value": 6, + "description": "Value 6" + }, + { + "name": "VALUE_007", + "value": 7, + "description": "Value 7" + }, + { + "name": "VALUE_008", + "value": 8, + "description": "Value 8" + }, + { + "name": "VALUE_009", + "value": 9, + "description": "Value 9" + }, + { + "name": "VALUE_010", + "value": 10, + "description": "Value 10" + }, + { + "name": "SETTING_15", + "value": 15, + "description": "Pad setting configuration 15" + }, + { + "name": "VALUE_016", + "value": 16, + "description": "Value 16" + }, + { + "name": "SETTING_31", + "value": 31, + "description": "Pad setting configuration 31" + }, + { + "name": "VALUE_032", + "value": 32, + "description": "Value 32" + }, + { + "name": "SETTING_63", + "value": 63, + "description": "Pad setting configuration 63" + }, + { + "name": "VALUE_064", + "value": 64, + "description": "Value 64" + }, + { + "name": "SETTING_127", + "value": 127, + "description": "Pad setting configuration 127" + }, + { + "name": "SETTING_128", + "value": 128, + "description": "Pad setting configuration 128" + }, + { + "name": "SETTING_191", + "value": 191, + "description": "Pad setting configuration 191" + }, + { + "name": "VALUE_192", + "value": 192, + "description": "Value 192" + }, + { + "name": "VALUE_223", + "value": 223, + "description": "Value 223" + }, + { + "name": "SETTING_224", + "value": 224, + "description": "Pad setting configuration 224" + }, + { + "name": "SETTING_240", + "value": 240, + "description": "Pad setting configuration 240" + }, + { + "name": "SETTING_248", + "value": 248, + "description": "Pad setting configuration 248" + }, + { + "name": "SETTING_252", + "value": 252, + "description": "Pad setting configuration 252" + }, + { + "name": "SETTING_254", + "value": 254, + "description": "Pad setting configuration 254" + }, + { + "name": "MAX_SETTING", + "value": 255, + "description": "Maximum pad setting value (11111111)" + } + ] + }, + { + "width": 4, + "id": "fuse25-bits-16-19", + "name": "uSDHC_PAD_Setting_High_bits", + "description": "uSDHC pad settings high bits. The override value for uSDHC pad settings", + "values": [ + { + "name": "LEVEL_0", + "value": 0, + "description": "uSDHC_PAD_Setting_High_bits: 1111", + "deprecated_names": [ + "1111" + ] + }, + { + "name": "LEVEL_1", + "value": 1, + "description": "Pad setting level 1" + }, + { + "name": "LEVEL_2", + "value": 2, + "description": "Pad setting level 2" + }, + { + "name": "LEVEL_3", + "value": 3, + "description": "Pad setting level 3" + }, + { + "name": "LEVEL_4", + "value": 4, + "description": "Pad setting level 4" + }, + { + "name": "LEVEL_5", + "value": 5, + "description": "Pad setting level 5" + }, + { + "name": "LEVEL_6", + "value": 6, + "description": "Pad setting level 6" + }, + { + "name": "LEVEL_7", + "value": 7, + "description": "Pad setting level 7" + }, + { + "name": "LEVEL_8", + "value": 8, + "description": "Pad setting level 8" + }, + { + "name": "LEVEL_9", + "value": 9, + "description": "Pad setting level 9" + }, + { + "name": "LEVEL_10", + "value": 10, + "description": "Pad setting level 10" + }, + { + "name": "LEVEL_11", + "value": 11, + "description": "Pad setting level 11" + }, + { + "name": "LEVEL_12", + "value": 12, + "description": "Pad setting level 12" + }, + { + "name": "LEVEL_13", + "value": 13, + "description": "Pad setting level 13" + }, + { + "name": "LEVEL_14", + "value": 14, + "description": "Pad setting level 14" + }, + { + "name": "LEVEL_15", + "value": 15, + "description": "Pad setting level 15" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-20", + "name": "Power_Cycle_Enable", + "description": "Power cycle enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "No power cycle", + "deprecated_names": [ + "0" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-21", + "name": "uSDHC_Override_Pad_Settings", + "description": "uSDHC override pad settings " + }, + { + "width": 1, + "id": "fuse25-bit-22", + "name": "uSDHC_DLL_Enable", + "description": "uSDHC DLL enable ", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable DLL for SD/eMMC" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable DLL for SD/eMMC" + } + ] + }, + { + "width": 1 + }, + { + "width": 7, + "id": "fuse25-bits-24-30", + "name": "MMC_DLL_DLY", + "description": "MMC DLL delay : Delay target for uSDHC DLL, it is applied to slave mode target delay or override mode target delay depends on DLL Override fuse bit value\n", + "values": [ + { + "name": "DELAY_MIN", + "value": 0, + "description": "Minimum DLL delay setting", + "deprecated_names": [ + "1111111" + ] + }, + { + "name": "DELAY_STEP_1", + "value": 1, + "description": "DLL delay step 1" + }, + { + "name": "DELAY_002", + "value": 2, + "description": "Delay setting 2" + }, + { + "name": "DELAY_003", + "value": 3, + "description": "Delay setting 3" + }, + { + "name": "DELAY_004", + "value": 4, + "description": "Delay setting 4" + }, + { + "name": "DELAY_005", + "value": 5, + "description": "Delay setting 5" + }, + { + "name": "DELAY_6", + "value": 6, + "description": "Delay setting 6" + }, + { + "name": "DELAY_7", + "value": 7, + "description": "Delay setting 7" + }, + { + "name": "DELAY_8", + "value": 8, + "description": "Delay setting 8" + }, + { + "name": "DELAY_9", + "value": 9, + "description": "Delay setting 9" + }, + { + "name": "DELAY_010", + "value": 10, + "description": "Delay setting 10" + }, + { + "name": "DELAY_11", + "value": 11, + "description": "Delay setting 11" + }, + { + "name": "DELAY_12", + "value": 12, + "description": "Delay setting 12" + }, + { + "name": "DELAY_13", + "value": 13, + "description": "Delay setting 13" + }, + { + "name": "DELAY_14", + "value": 14, + "description": "Delay setting 14" + }, + { + "name": "DELAY_STEP_15", + "value": 15, + "description": "DLL delay step 15" + }, + { + "name": "DELAY_016", + "value": 16, + "description": "Delay setting 16" + }, + { + "name": "DELAY_17", + "value": 17, + "description": "Delay setting 17" + }, + { + "name": "DELAY_18", + "value": 18, + "description": "Delay setting 18" + }, + { + "name": "DELAY_19", + "value": 19, + "description": "Delay setting 19" + }, + { + "name": "DELAY_20", + "value": 20, + "description": "Delay setting 20" + }, + { + "name": "DELAY_21", + "value": 21, + "description": "Delay setting 21" + }, + { + "name": "DELAY_22", + "value": 22, + "description": "Delay setting 22" + }, + { + "name": "DELAY_23", + "value": 23, + "description": "Delay setting 23" + }, + { + "name": "DELAY_24", + "value": 24, + "description": "Delay setting 24" + }, + { + "name": "DELAY_25", + "value": 25, + "description": "Delay setting 25" + }, + { + "name": "DELAY_26", + "value": 26, + "description": "Delay setting 26" + }, + { + "name": "DELAY_27", + "value": 27, + "description": "Delay setting 27" + }, + { + "name": "DELAY_28", + "value": 28, + "description": "Delay setting 28" + }, + { + "name": "DELAY_29", + "value": 29, + "description": "Delay setting 29" + }, + { + "name": "DELAY_30", + "value": 30, + "description": "Delay setting 30" + }, + { + "name": "DELAY_STEP_31", + "value": 31, + "description": "DLL delay step 31" + }, + { + "name": "DELAY_032", + "value": 32, + "description": "Delay setting 32" + }, + { + "name": "DELAY_33", + "value": 33, + "description": "Delay setting 33" + }, + { + "name": "DELAY_34", + "value": 34, + "description": "Delay setting 34" + }, + { + "name": "DELAY_35", + "value": 35, + "description": "Delay setting 35" + }, + { + "name": "DELAY_36", + "value": 36, + "description": "Delay setting 36" + }, + { + "name": "DELAY_37", + "value": 37, + "description": "Delay setting 37" + }, + { + "name": "DELAY_38", + "value": 38, + "description": "Delay setting 38" + }, + { + "name": "DELAY_39", + "value": 39, + "description": "Delay setting 39" + }, + { + "name": "DELAY_40", + "value": 40, + "description": "Delay setting 40" + }, + { + "name": "DELAY_41", + "value": 41, + "description": "Delay setting 41" + }, + { + "name": "DELAY_42", + "value": 42, + "description": "Delay setting 42" + }, + { + "name": "DELAY_43", + "value": 43, + "description": "Delay setting 43" + }, + { + "name": "DELAY_44", + "value": 44, + "description": "Delay setting 44" + }, + { + "name": "DELAY_45", + "value": 45, + "description": "Delay setting 45" + }, + { + "name": "DELAY_46", + "value": 46, + "description": "Delay setting 46" + }, + { + "name": "DELAY_47", + "value": 47, + "description": "Delay setting 47" + }, + { + "name": "DELAY_48", + "value": 48, + "description": "Delay setting 48" + }, + { + "name": "DELAY_49", + "value": 49, + "description": "Delay setting 49" + }, + { + "name": "DELAY_50", + "value": 50, + "description": "Delay setting 50" + }, + { + "name": "DELAY_51", + "value": 51, + "description": "Delay setting 51" + }, + { + "name": "DELAY_52", + "value": 52, + "description": "Delay setting 52" + }, + { + "name": "DELAY_53", + "value": 53, + "description": "Delay setting 53" + }, + { + "name": "DELAY_54", + "value": 54, + "description": "Delay setting 54" + }, + { + "name": "DELAY_55", + "value": 55, + "description": "Delay setting 55" + }, + { + "name": "DELAY_56", + "value": 56, + "description": "Delay setting 56" + }, + { + "name": "DELAY_57", + "value": 57, + "description": "Delay setting 57" + }, + { + "name": "DELAY_58", + "value": 58, + "description": "Delay setting 58" + }, + { + "name": "DELAY_59", + "value": 59, + "description": "Delay setting 59" + }, + { + "name": "DELAY_60", + "value": 60, + "description": "Delay setting 60" + }, + { + "name": "DELAY_61", + "value": 61, + "description": "Delay setting 61" + }, + { + "name": "DELAY_62", + "value": 62, + "description": "Delay setting 62" + }, + { + "name": "DELAY_MID", + "value": 63, + "description": "Mid-range DLL delay setting" + }, + { + "name": "DELAY_064", + "value": 64, + "description": "Delay setting 64" + }, + { + "name": "DELAY_65", + "value": 65, + "description": "Delay setting 65" + }, + { + "name": "DELAY_66", + "value": 66, + "description": "Delay setting 66" + }, + { + "name": "DELAY_67", + "value": 67, + "description": "Delay setting 67" + }, + { + "name": "DELAY_68", + "value": 68, + "description": "Delay setting 68" + }, + { + "name": "DELAY_69", + "value": 69, + "description": "Delay setting 69" + }, + { + "name": "DELAY_70", + "value": 70, + "description": "Delay setting 70" + }, + { + "name": "DELAY_71", + "value": 71, + "description": "Delay setting 71" + }, + { + "name": "DELAY_72", + "value": 72, + "description": "Delay setting 72" + }, + { + "name": "DELAY_73", + "value": 73, + "description": "Delay setting 73" + }, + { + "name": "DELAY_74", + "value": 74, + "description": "Delay setting 74" + }, + { + "name": "DELAY_75", + "value": 75, + "description": "Delay setting 75" + }, + { + "name": "DELAY_76", + "value": 76, + "description": "Delay setting 76" + }, + { + "name": "DELAY_77", + "value": 77, + "description": "Delay setting 77" + }, + { + "name": "DELAY_78", + "value": 78, + "description": "Delay setting 78" + }, + { + "name": "DELAY_79", + "value": 79, + "description": "Delay setting 79" + }, + { + "name": "DELAY_80", + "value": 80, + "description": "Delay setting 80" + }, + { + "name": "DELAY_81", + "value": 81, + "description": "Delay setting 81" + }, + { + "name": "DELAY_82", + "value": 82, + "description": "Delay setting 82" + }, + { + "name": "DELAY_83", + "value": 83, + "description": "Delay setting 83" + }, + { + "name": "DELAY_84", + "value": 84, + "description": "Delay setting 84" + }, + { + "name": "DELAY_85", + "value": 85, + "description": "Delay setting 85" + }, + { + "name": "DELAY_86", + "value": 86, + "description": "Delay setting 86" + }, + { + "name": "DELAY_87", + "value": 87, + "description": "Delay setting 87" + }, + { + "name": "DELAY_88", + "value": 88, + "description": "Delay setting 88" + }, + { + "name": "DELAY_89", + "value": 89, + "description": "Delay setting 89" + }, + { + "name": "DELAY_90", + "value": 90, + "description": "Delay setting 90" + }, + { + "name": "DELAY_91", + "value": 91, + "description": "Delay setting 91" + }, + { + "name": "DELAY_92", + "value": 92, + "description": "Delay setting 92" + }, + { + "name": "DELAY_93", + "value": 93, + "description": "Delay setting 93" + }, + { + "name": "DELAY_94", + "value": 94, + "description": "Delay setting 94" + }, + { + "name": "DELAY_STEP_95", + "value": 95, + "description": "DLL delay step 95" + }, + { + "name": "DELAY_096", + "value": 96, + "description": "Delay setting 96" + }, + { + "name": "DELAY_97", + "value": 97, + "description": "Delay setting 97" + }, + { + "name": "DELAY_98", + "value": 98, + "description": "Delay setting 98" + }, + { + "name": "DELAY_99", + "value": 99, + "description": "Delay setting 99" + }, + { + "name": "DELAY_100", + "value": 100, + "description": "Delay setting 100" + }, + { + "name": "DELAY_101", + "value": 101, + "description": "Delay setting 101" + }, + { + "name": "DELAY_102", + "value": 102, + "description": "Delay setting 102" + }, + { + "name": "DELAY_103", + "value": 103, + "description": "Delay setting 103" + }, + { + "name": "DELAY_104", + "value": 104, + "description": "Delay setting 104" + }, + { + "name": "DELAY_105", + "value": 105, + "description": "Delay setting 105" + }, + { + "name": "DELAY_106", + "value": 106, + "description": "Delay setting 106" + }, + { + "name": "DELAY_107", + "value": 107, + "description": "Delay setting 107" + }, + { + "name": "DELAY_108", + "value": 108, + "description": "Delay setting 108" + }, + { + "name": "DELAY_109", + "value": 109, + "description": "Delay setting 109" + }, + { + "name": "DELAY_110", + "value": 110, + "description": "Delay setting 110" + }, + { + "name": "DELAY_STEP_111", + "value": 111, + "description": "DLL delay step 111" + }, + { + "name": "DELAY_112", + "value": 112, + "description": "Delay setting 112" + }, + { + "name": "DELAY_113", + "value": 113, + "description": "Delay setting 113" + }, + { + "name": "DELAY_114", + "value": 114, + "description": "Delay setting 114" + }, + { + "name": "DELAY_115", + "value": 115, + "description": "Delay setting 115" + }, + { + "name": "DELAY_116", + "value": 116, + "description": "Delay setting 116" + }, + { + "name": "DELAY_117", + "value": 117, + "description": "Delay setting 117" + }, + { + "name": "DELAY_118", + "value": 118, + "description": "Delay setting 118" + }, + { + "name": "DELAY_119", + "value": 119, + "description": "Delay setting 119" + }, + { + "name": "DELAY_120", + "value": 120, + "description": "Delay setting 120" + }, + { + "name": "DELAY_121", + "value": 121, + "description": "Delay setting 121" + }, + { + "name": "DELAY_122", + "value": 122, + "description": "Delay setting 122" + }, + { + "name": "DELAY_123", + "value": 123, + "description": "Delay setting 123" + }, + { + "name": "DELAY_124", + "value": 124, + "description": "Delay setting 124" + }, + { + "name": "DELAY_125", + "value": 125, + "description": "Delay setting 125" + }, + { + "name": "DELAY_126", + "value": 126, + "description": "Delay setting 126" + }, + { + "name": "DELAY_MAX", + "value": 127, + "description": "Maximum DLL delay setting" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-31", + "name": "uSDHC_DLL_Select", + "description": "uSDHC DLL select", + "values": [ + { + "name": "DLL_SLAVE", + "value": 0, + "description": "DLL Slave Mode for" + }, + { + "name": "DLL_OVERRIDE", + "value": 1, + "description": "DLL Override Mode" + } + ] + } + ] + }, + { + "id": "fuse26", + "name": "BOOT_CFG2", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x001A", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse26-bits-0-1", + "name": "FlexSPI_NAND_Column_Address_Width", + "description": "FlexSPI NAND Column Address Width", + "values": [ + { + "name": "WIDTH_12_BITS", + "value": 0, + "description": "12 bit column address width" + }, + { + "name": "WIDTH_13_BITS", + "value": 1, + "description": "13 bit column address width" + }, + { + "name": "WIDTH_14_BITS", + "value": 2, + "description": "14 bit column address width" + }, + { + "name": "WIDTH_15_BITS", + "value": 3, + "description": "15 bit column address width" + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-2-3", + "name": "FlexSPI_NAND_CS_Interval", + "description": "FlexSPI NAND CS Interval", + "values": [ + { + "name": "INTERVAL_100NS", + "value": 0, + "description": "100 ns" + }, + { + "name": "INTERVAL_200NS", + "value": 1, + "description": "200 ns" + }, + { + "name": "INTERVAL_400NS", + "value": 2, + "description": "400 ns" + }, + { + "name": "INTERVAL_50NS", + "value": 3, + "description": "50 ns" + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-4-5", + "name": "FlexSPI_NAND_Search_Count", + "description": "FlexSPI NAND Search Count", + "values": [ + { + "name": "COUNT_2", + "value": 0, + "description": "FlexSPI_NAND_Search_Count: 2", + "deprecated_names": [ + "2" + ] + }, + { + "name": "2_redudant", + "value": 1, + "description": "2 redudant" + }, + { + "name": "COUNT_4", + "value": 2, + "description": "FlexSPI_NAND_Search_Count: 4", + "deprecated_names": [ + "4" + ] + }, + { + "name": "COUNT_8", + "value": 3, + "description": "FlexSPI_NAND_Search_Count: 8", + "deprecated_names": [ + "8" + ] + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-6-7", + "name": "FlexSPI_NAND_Search_Stride", + "description": "FlexSPI NAND Search Stride", + "values": [ + { + "name": "64_pages", + "value": 0, + "description": "64 pages" + }, + { + "name": "128_pages", + "value": 1, + "description": "128 pages" + }, + { + "name": "256_pages", + "value": 2, + "description": "256 pages" + }, + { + "name": "32_pages", + "value": 3, + "description": "32 pages" + } + ] + }, + { + "width": 8, + "id": "fuse26-bits-8-15", + "name": "FlexSPI_DLL_Value", + "description": "FlexSPI DLL Value", + "values": [ + { + "name": "DLL_DELAY_MIN", + "value": 0, + "description": "The delay line value only for HyperFlash - minimum delay (0)", + "deprecated_names": [ + "11111111" + ] + }, + { + "name": "DLL_DELAY_1", + "value": 1, + "description": "The delay line value only for HyperFlash - delay value 1" + }, + { + "name": "DLL_DELAY_2", + "value": 2, + "description": "The delay line value only for HyperFlash - delay value 2" + }, + { + "name": "DLL_DELAY_3", + "value": 3, + "description": "The delay line value only for HyperFlash - delay value 3" + }, + { + "name": "DLL_DELAY_4", + "value": 4, + "description": "The delay line value only for HyperFlash - delay value 4" + }, + { + "name": "DLL_DELAY_5", + "value": 5, + "description": "The delay line value only for HyperFlash - delay value 5" + }, + { + "name": "DLL_DELAY_6", + "value": 6, + "description": "The delay line value only for HyperFlash - delay value 6" + }, + { + "name": "DLL_DELAY_7", + "value": 7, + "description": "The delay line value only for HyperFlash - delay value 7" + }, + { + "name": "DLL_DELAY_8", + "value": 8, + "description": "The delay line value only for HyperFlash - delay value 8" + }, + { + "name": "DLL_DELAY_9", + "value": 9, + "description": "The delay line value only for HyperFlash - delay value 9" + }, + { + "name": "DLL_DELAY_10", + "value": 10, + "description": "The delay line value only for HyperFlash - delay value 10" + }, + { + "name": "DLL_DELAY_11", + "value": 11, + "description": "The delay line value only for HyperFlash - delay value 11" + }, + { + "name": "DLL_DELAY_12", + "value": 12, + "description": "The delay line value only for HyperFlash - delay value 12" + }, + { + "name": "DLL_DELAY_13", + "value": 13, + "description": "The delay line value only for HyperFlash - delay value 13" + }, + { + "name": "DLL_DELAY_14", + "value": 14, + "description": "The delay line value only for HyperFlash - delay value 14" + }, + { + "name": "DLL_DELAY_15", + "value": 15, + "description": "The delay line value only for HyperFlash - delay value 15" + }, + { + "name": "DLL_DELAY_16", + "value": 16, + "description": "The delay line value only for HyperFlash - delay value 16" + }, + { + "name": "DLL_DELAY_17", + "value": 17, + "description": "The delay line value only for HyperFlash - delay value 17" + }, + { + "name": "DLL_DELAY_18", + "value": 18, + "description": "The delay line value only for HyperFlash - delay value 18" + }, + { + "name": "DLL_DELAY_19", + "value": 19, + "description": "The delay line value only for HyperFlash - delay value 19" + }, + { + "name": "DLL_DELAY_20", + "value": 20, + "description": "The delay line value only for HyperFlash - delay value 20" + }, + { + "name": "DLL_DELAY_21", + "value": 21, + "description": "The delay line value only for HyperFlash - delay value 21" + }, + { + "name": "DLL_DELAY_22", + "value": 22, + "description": "The delay line value only for HyperFlash - delay value 22" + }, + { + "name": "DLL_DELAY_23", + "value": 23, + "description": "The delay line value only for HyperFlash - delay value 23" + }, + { + "name": "DLL_DELAY_24", + "value": 24, + "description": "The delay line value only for HyperFlash - delay value 24" + }, + { + "name": "DLL_DELAY_25", + "value": 25, + "description": "The delay line value only for HyperFlash - delay value 25" + }, + { + "name": "DLL_DELAY_26", + "value": 26, + "description": "The delay line value only for HyperFlash - delay value 26" + }, + { + "name": "DLL_DELAY_27", + "value": 27, + "description": "The delay line value only for HyperFlash - delay value 27" + }, + { + "name": "DLL_DELAY_28", + "value": 28, + "description": "The delay line value only for HyperFlash - delay value 28" + }, + { + "name": "DLL_DELAY_29", + "value": 29, + "description": "The delay line value only for HyperFlash - delay value 29" + }, + { + "name": "DLL_DELAY_30", + "value": 30, + "description": "The delay line value only for HyperFlash - delay value 30" + }, + { + "name": "DLL_DELAY_31", + "value": 31, + "description": "The delay line value only for HyperFlash - delay value 31" + }, + { + "name": "DLL_DELAY_32", + "value": 32, + "description": "The delay line value only for HyperFlash - delay value 32" + }, + { + "name": "DLL_DELAY_33", + "value": 33, + "description": "The delay line value only for HyperFlash - delay value 33" + }, + { + "name": "DLL_DELAY_34", + "value": 34, + "description": "The delay line value only for HyperFlash - delay value 34" + }, + { + "name": "DLL_DELAY_35", + "value": 35, + "description": "The delay line value only for HyperFlash - delay value 35" + }, + { + "name": "DLL_DELAY_36", + "value": 36, + "description": "The delay line value only for HyperFlash - delay value 36" + }, + { + "name": "DLL_DELAY_37", + "value": 37, + "description": "The delay line value only for HyperFlash - delay value 37" + }, + { + "name": "DLL_DELAY_38", + "value": 38, + "description": "The delay line value only for HyperFlash - delay value 38" + }, + { + "name": "DLL_DELAY_39", + "value": 39, + "description": "The delay line value only for HyperFlash - delay value 39" + }, + { + "name": "DLL_DELAY_40", + "value": 40, + "description": "The delay line value only for HyperFlash - delay value 40" + }, + { + "name": "DLL_DELAY_41", + "value": 41, + "description": "The delay line value only for HyperFlash - delay value 41" + }, + { + "name": "DLL_DELAY_42", + "value": 42, + "description": "The delay line value only for HyperFlash - delay value 42" + }, + { + "name": "DLL_DELAY_43", + "value": 43, + "description": "The delay line value only for HyperFlash - delay value 43" + }, + { + "name": "DLL_DELAY_44", + "value": 44, + "description": "The delay line value only for HyperFlash - delay value 44" + }, + { + "name": "DLL_DELAY_45", + "value": 45, + "description": "The delay line value only for HyperFlash - delay value 45" + }, + { + "name": "DLL_DELAY_46", + "value": 46, + "description": "The delay line value only for HyperFlash - delay value 46" + }, + { + "name": "DLL_DELAY_47", + "value": 47, + "description": "The delay line value only for HyperFlash - delay value 47" + }, + { + "name": "DLL_DELAY_48", + "value": 48, + "description": "The delay line value only for HyperFlash - delay value 48" + }, + { + "name": "DLL_DELAY_49", + "value": 49, + "description": "The delay line value only for HyperFlash - delay value 49" + }, + { + "name": "DLL_DELAY_50", + "value": 50, + "description": "The delay line value only for HyperFlash - delay value 50" + }, + { + "name": "DLL_DELAY_51", + "value": 51, + "description": "The delay line value only for HyperFlash - delay value 51" + }, + { + "name": "DLL_DELAY_52", + "value": 52, + "description": "The delay line value only for HyperFlash - delay value 52" + }, + { + "name": "DLL_DELAY_53", + "value": 53, + "description": "The delay line value only for HyperFlash - delay value 53" + }, + { + "name": "DLL_DELAY_54", + "value": 54, + "description": "The delay line value only for HyperFlash - delay value 54" + }, + { + "name": "DLL_DELAY_55", + "value": 55, + "description": "The delay line value only for HyperFlash - delay value 55" + }, + { + "name": "DLL_DELAY_56", + "value": 56, + "description": "The delay line value only for HyperFlash - delay value 56" + }, + { + "name": "DLL_DELAY_57", + "value": 57, + "description": "The delay line value only for HyperFlash - delay value 57" + }, + { + "name": "DLL_DELAY_58", + "value": 58, + "description": "The delay line value only for HyperFlash - delay value 58" + }, + { + "name": "DLL_DELAY_59", + "value": 59, + "description": "The delay line value only for HyperFlash - delay value 59" + }, + { + "name": "DLL_DELAY_60", + "value": 60, + "description": "The delay line value only for HyperFlash - delay value 60" + }, + { + "name": "DLL_DELAY_61", + "value": 61, + "description": "The delay line value only for HyperFlash - delay value 61" + }, + { + "name": "DLL_DELAY_62", + "value": 62, + "description": "The delay line value only for HyperFlash - delay value 62" + }, + { + "name": "DLL_DELAY_63", + "value": 63, + "description": "The delay line value only for HyperFlash - delay value 63" + }, + { + "name": "DLL_DELAY_64", + "value": 64, + "description": "The delay line value only for HyperFlash - delay value 64" + }, + { + "name": "DLL_DELAY_65", + "value": 65, + "description": "The delay line value only for HyperFlash - delay value 65" + }, + { + "name": "DLL_DELAY_66", + "value": 66, + "description": "The delay line value only for HyperFlash - delay value 66" + }, + { + "name": "DLL_DELAY_67", + "value": 67, + "description": "The delay line value only for HyperFlash - delay value 67" + }, + { + "name": "DLL_DELAY_68", + "value": 68, + "description": "The delay line value only for HyperFlash - delay value 68" + }, + { + "name": "DLL_DELAY_69", + "value": 69, + "description": "The delay line value only for HyperFlash - delay value 69" + }, + { + "name": "DLL_DELAY_70", + "value": 70, + "description": "The delay line value only for HyperFlash - delay value 70" + }, + { + "name": "DLL_DELAY_71", + "value": 71, + "description": "The delay line value only for HyperFlash - delay value 71" + }, + { + "name": "DLL_DELAY_72", + "value": 72, + "description": "The delay line value only for HyperFlash - delay value 72" + }, + { + "name": "DLL_DELAY_73", + "value": 73, + "description": "The delay line value only for HyperFlash - delay value 73" + }, + { + "name": "DLL_DELAY_74", + "value": 74, + "description": "The delay line value only for HyperFlash - delay value 74" + }, + { + "name": "DLL_DELAY_75", + "value": 75, + "description": "The delay line value only for HyperFlash - delay value 75" + }, + { + "name": "DLL_DELAY_76", + "value": 76, + "description": "The delay line value only for HyperFlash - delay value 76" + }, + { + "name": "DLL_DELAY_77", + "value": 77, + "description": "The delay line value only for HyperFlash - delay value 77" + }, + { + "name": "DLL_DELAY_78", + "value": 78, + "description": "The delay line value only for HyperFlash - delay value 78" + }, + { + "name": "DLL_DELAY_79", + "value": 79, + "description": "The delay line value only for HyperFlash - delay value 79" + }, + { + "name": "DLL_DELAY_80", + "value": 80, + "description": "The delay line value only for HyperFlash - delay value 80" + }, + { + "name": "DLL_DELAY_81", + "value": 81, + "description": "The delay line value only for HyperFlash - delay value 81" + }, + { + "name": "DLL_DELAY_82", + "value": 82, + "description": "The delay line value only for HyperFlash - delay value 82" + }, + { + "name": "DLL_DELAY_83", + "value": 83, + "description": "The delay line value only for HyperFlash - delay value 83" + }, + { + "name": "DLL_DELAY_84", + "value": 84, + "description": "The delay line value only for HyperFlash - delay value 84" + }, + { + "name": "DLL_DELAY_85", + "value": 85, + "description": "The delay line value only for HyperFlash - delay value 85" + }, + { + "name": "DLL_DELAY_86", + "value": 86, + "description": "The delay line value only for HyperFlash - delay value 86" + }, + { + "name": "DLL_DELAY_87", + "value": 87, + "description": "The delay line value only for HyperFlash - delay value 87" + }, + { + "name": "DLL_DELAY_88", + "value": 88, + "description": "The delay line value only for HyperFlash - delay value 88" + }, + { + "name": "DLL_DELAY_89", + "value": 89, + "description": "The delay line value only for HyperFlash - delay value 89" + }, + { + "name": "DLL_DELAY_90", + "value": 90, + "description": "The delay line value only for HyperFlash - delay value 90" + }, + { + "name": "DLL_DELAY_91", + "value": 91, + "description": "The delay line value only for HyperFlash - delay value 91" + }, + { + "name": "DLL_DELAY_92", + "value": 92, + "description": "The delay line value only for HyperFlash - delay value 92" + }, + { + "name": "DLL_DELAY_93", + "value": 93, + "description": "The delay line value only for HyperFlash - delay value 93" + }, + { + "name": "DLL_DELAY_94", + "value": 94, + "description": "The delay line value only for HyperFlash - delay value 94" + }, + { + "name": "DLL_DELAY_95", + "value": 95, + "description": "The delay line value only for HyperFlash - delay value 95" + }, + { + "name": "DLL_DELAY_96", + "value": 96, + "description": "The delay line value only for HyperFlash - delay value 96" + }, + { + "name": "DLL_DELAY_97", + "value": 97, + "description": "The delay line value only for HyperFlash - delay value 97" + }, + { + "name": "DLL_DELAY_98", + "value": 98, + "description": "The delay line value only for HyperFlash - delay value 98" + }, + { + "name": "DLL_DELAY_99", + "value": 99, + "description": "The delay line value only for HyperFlash - delay value 99" + }, + { + "name": "DLL_DELAY_100", + "value": 100, + "description": "The delay line value only for HyperFlash - delay value 100" + }, + { + "name": "DLL_DELAY_101", + "value": 101, + "description": "The delay line value only for HyperFlash - delay value 101" + }, + { + "name": "DLL_DELAY_102", + "value": 102, + "description": "The delay line value only for HyperFlash - delay value 102" + }, + { + "name": "DLL_DELAY_103", + "value": 103, + "description": "The delay line value only for HyperFlash - delay value 103" + }, + { + "name": "DLL_DELAY_104", + "value": 104, + "description": "The delay line value only for HyperFlash - delay value 104" + }, + { + "name": "DLL_DELAY_105", + "value": 105, + "description": "The delay line value only for HyperFlash - delay value 105" + }, + { + "name": "DLL_DELAY_106", + "value": 106, + "description": "The delay line value only for HyperFlash - delay value 106" + }, + { + "name": "DLL_DELAY_107", + "value": 107, + "description": "The delay line value only for HyperFlash - delay value 107" + }, + { + "name": "DLL_DELAY_108", + "value": 108, + "description": "The delay line value only for HyperFlash - delay value 108" + }, + { + "name": "DLL_DELAY_109", + "value": 109, + "description": "The delay line value only for HyperFlash - delay value 109" + }, + { + "name": "DLL_DELAY_110", + "value": 110, + "description": "The delay line value only for HyperFlash - delay value 110" + }, + { + "name": "DLL_DELAY_111", + "value": 111, + "description": "The delay line value only for HyperFlash - delay value 111" + }, + { + "name": "DLL_DELAY_112", + "value": 112, + "description": "The delay line value only for HyperFlash - delay value 112" + }, + { + "name": "DLL_DELAY_113", + "value": 113, + "description": "The delay line value only for HyperFlash - delay value 113" + }, + { + "name": "DLL_DELAY_114", + "value": 114, + "description": "The delay line value only for HyperFlash - delay value 114" + }, + { + "name": "DLL_DELAY_115", + "value": 115, + "description": "The delay line value only for HyperFlash - delay value 115" + }, + { + "name": "DLL_DELAY_116", + "value": 116, + "description": "The delay line value only for HyperFlash - delay value 116" + }, + { + "name": "DLL_DELAY_117", + "value": 117, + "description": "The delay line value only for HyperFlash - delay value 117" + }, + { + "name": "DLL_DELAY_118", + "value": 118, + "description": "The delay line value only for HyperFlash - delay value 118" + }, + { + "name": "DLL_DELAY_119", + "value": 119, + "description": "The delay line value only for HyperFlash - delay value 119" + }, + { + "name": "DLL_DELAY_120", + "value": 120, + "description": "The delay line value only for HyperFlash - delay value 120" + }, + { + "name": "DLL_DELAY_121", + "value": 121, + "description": "The delay line value only for HyperFlash - delay value 121" + }, + { + "name": "DLL_DELAY_122", + "value": 122, + "description": "The delay line value only for HyperFlash - delay value 122" + }, + { + "name": "DLL_DELAY_123", + "value": 123, + "description": "The delay line value only for HyperFlash - delay value 123" + }, + { + "name": "DLL_DELAY_124", + "value": 124, + "description": "The delay line value only for HyperFlash - delay value 124" + }, + { + "name": "DLL_DELAY_125", + "value": 125, + "description": "The delay line value only for HyperFlash - delay value 125" + }, + { + "name": "DLL_DELAY_126", + "value": 126, + "description": "The delay line value only for HyperFlash - delay value 126" + }, + { + "name": "DLL_DELAY_127", + "value": 127, + "description": "The delay line value only for HyperFlash - delay value 127" + }, + { + "name": "DLL_DELAY_128", + "value": 128, + "description": "The delay line value only for HyperFlash - delay value 128" + }, + { + "name": "DLL_DELAY_129", + "value": 129, + "description": "The delay line value only for HyperFlash - delay value 129" + }, + { + "name": "DLL_DELAY_130", + "value": 130, + "description": "The delay line value only for HyperFlash - delay value 130" + }, + { + "name": "DLL_DELAY_131", + "value": 131, + "description": "The delay line value only for HyperFlash - delay value 131" + }, + { + "name": "DLL_DELAY_132", + "value": 132, + "description": "The delay line value only for HyperFlash - delay value 132" + }, + { + "name": "DLL_DELAY_133", + "value": 133, + "description": "The delay line value only for HyperFlash - delay value 133" + }, + { + "name": "DLL_DELAY_134", + "value": 134, + "description": "The delay line value only for HyperFlash - delay value 134" + }, + { + "name": "DLL_DELAY_135", + "value": 135, + "description": "The delay line value only for HyperFlash - delay value 135" + }, + { + "name": "DLL_DELAY_136", + "value": 136, + "description": "The delay line value only for HyperFlash - delay value 136" + }, + { + "name": "DLL_DELAY_137", + "value": 137, + "description": "The delay line value only for HyperFlash - delay value 137" + }, + { + "name": "DLL_DELAY_138", + "value": 138, + "description": "The delay line value only for HyperFlash - delay value 138" + }, + { + "name": "DLL_DELAY_139", + "value": 139, + "description": "The delay line value only for HyperFlash - delay value 139" + }, + { + "name": "DLL_DELAY_140", + "value": 140, + "description": "The delay line value only for HyperFlash - delay value 140" + }, + { + "name": "DLL_DELAY_141", + "value": 141, + "description": "The delay line value only for HyperFlash - delay value 141" + }, + { + "name": "DLL_DELAY_142", + "value": 142, + "description": "The delay line value only for HyperFlash - delay value 142" + }, + { + "name": "DLL_DELAY_143", + "value": 143, + "description": "The delay line value only for HyperFlash - delay value 143" + }, + { + "name": "DLL_DELAY_144", + "value": 144, + "description": "The delay line value only for HyperFlash - delay value 144" + }, + { + "name": "DLL_DELAY_145", + "value": 145, + "description": "The delay line value only for HyperFlash - delay value 145" + }, + { + "name": "DLL_DELAY_146", + "value": 146, + "description": "The delay line value only for HyperFlash - delay value 146" + }, + { + "name": "DLL_DELAY_147", + "value": 147, + "description": "The delay line value only for HyperFlash - delay value 147" + }, + { + "name": "DELAY_148", + "value": 148, + "description": "The delay line value only for HyperFlash - delay value 148" + }, + { + "name": "DELAY_149", + "value": 149, + "description": "The delay line value only for HyperFlash - delay value 149" + }, + { + "name": "DELAY_150", + "value": 150, + "description": "The delay line value only for HyperFlash - delay value 150" + }, + { + "name": "DELAY_151", + "value": 151, + "description": "The delay line value only for HyperFlash - delay value 151" + }, + { + "name": "DELAY_152", + "value": 152, + "description": "The delay line value only for HyperFlash - delay value 152" + }, + { + "name": "DELAY_153", + "value": 153, + "description": "The delay line value only for HyperFlash - delay value 153" + }, + { + "name": "DELAY_154", + "value": 154, + "description": "The delay line value only for HyperFlash - delay value 154" + }, + { + "name": "DELAY_155", + "value": 155, + "description": "The delay line value only for HyperFlash - delay value 155" + }, + { + "name": "DELAY_156", + "value": 156, + "description": "The delay line value only for HyperFlash - delay value 156" + }, + { + "name": "DELAY_157", + "value": 157, + "description": "The delay line value only for HyperFlash - delay value 157" + }, + { + "name": "DELAY_158", + "value": 158, + "description": "The delay line value only for HyperFlash - delay value 158" + }, + { + "name": "DELAY_159", + "value": 159, + "description": "The delay line value only for HyperFlash - delay value 159" + }, + { + "name": "DELAY_160", + "value": 160, + "description": "The delay line value only for HyperFlash - delay value 160" + }, + { + "name": "DELAY_161", + "value": 161, + "description": "The delay line value only for HyperFlash - delay value 161" + }, + { + "name": "DELAY_162", + "value": 162, + "description": "The delay line value only for HyperFlash - delay value 162" + }, + { + "name": "DELAY_163", + "value": 163, + "description": "The delay line value only for HyperFlash - delay value 163" + }, + { + "name": "DELAY_164", + "value": 164, + "description": "The delay line value only for HyperFlash - delay value 164" + }, + { + "name": "DELAY_165", + "value": 165, + "description": "The delay line value only for HyperFlash - delay value 165" + }, + { + "name": "DELAY_166", + "value": 166, + "description": "The delay line value only for H" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-16", + "name": "SPI_Clock_Data_Phase_Control", + "description": "SPI clock data phase control ", + "values": [ + { + "name": "TX_FALL_RX_RISE", + "value": 0, + "description": "Tx on falling, Rx on rising", + "deprecated_names": [ + "0" + ] + }, + { + "name": "TX_RISE_RX_FALL", + "value": 1, + "description": "Tx on rising, Rx on falling", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-17", + "name": "SPI_SCLK_Active", + "description": "SPI SCLK active", + "values": [ + { + "name": "ACTIVE_HIGH", + "value": 0, + "description": "Active high" + }, + { + "name": "ACTIVE_LOW", + "value": 1, + "description": "Active low" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-18", + "name": "SPI_SS_Active", + "description": "SPI SS active", + "values": [ + { + "name": "ACTIVE_LOW", + "value": 0, + "description": "Active low" + }, + { + "name": "ACTIVE_HIGH", + "value": 1, + "description": "Active high" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-19", + "name": "Recovery_SPI_Addressing", + "description": "Recovery SPI addressing", + "values": [ + { + "name": "ADDRESSING_3BYTE", + "value": 0, + "description": "3-bytes (24-bit)", + "deprecated_names": [ + "3-bytes" + ] + }, + { + "name": "ADDRESSING_2BYTE", + "value": 1, + "description": "2-bytes (16-bit)", + "deprecated_names": [ + "2-bytes" + ] + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-20", + "name": "FLEXSPI_NOR_AUTO_PROBE_EN", + "description": "FlexSPI NOR auto probe enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Auto probe is disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Auto probe is enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 3, + "id": "fuse26-bits-21-23", + "name": "FlexSPI_NAND_Busy_Bit_Offset_Override", + "description": "FlexSPI NAND busy bit offset override ", + "values": [ + { + "name": "BIT_OFFSET_0", + "value": 0, + "description": "Busy bit at offset 0 in 8-bit register" + }, + { + "name": "BIT_OFFSET_1", + "value": 1, + "description": "Busy bit at offset 1 in 8-bit register" + }, + { + "name": "BIT_OFFSET_2", + "value": 2, + "description": "Busy bit at offset 2 in 8-bit register" + }, + { + "name": "BIT_OFFSET_3", + "value": 3, + "description": "Busy bit at offset 3 in 8-bit register" + }, + { + "name": "BIT_OFFSET_4", + "value": 4, + "description": "Busy bit at offset 4 in 8-bit register" + }, + { + "name": "BIT_OFFSET_5", + "value": 5, + "description": "Busy bit at offset 5 in 8-bit register" + }, + { + "name": "BIT_OFFSET_6", + "value": 6, + "description": "Busy bit at offset 6 in 8-bit register" + }, + { + "name": "BIT_OFFSET_7", + "value": 7, + "description": "Busy bit at offset 7 in 8-bit register" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-24", + "name": "Recovery_CS_Select", + "description": "Recovery CS select", + "values": [ + { + "name": "CS0", + "value": 0, + "description": "Recovery_CS_Select: CS0" + }, + { + "name": "CS1", + "value": 1, + "description": "Recovery_CS_Select: CS1" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse26-bits-26-27", + "name": "Recovery_Port_Select", + "description": "Recovery Port Select", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + }, + { + "name": "LPSPI3", + "value": 2, + "description": "LPSPI3" + }, + { + "name": "LPSPI4", + "value": 3, + "description": "LPSPI4" + } + ] + }, + { + "width": 4, + "id": "fuse26-bits-28-31", + "name": "FLEXSPI_DUMMY_CYCLE_SEL", + "description": "FlexSPI Dummy Cycle Select", + "values": [ + { + "name": "0_cycle", + "value": 0, + "description": "0 cycle" + }, + { + "name": "CYCLES_1", + "value": 1, + "description": "1 cycle" + }, + { + "name": "CYCLES_2", + "value": 2, + "description": "2 cycles" + }, + { + "name": "CYCLES_3", + "value": 3, + "description": "3 cycles" + }, + { + "name": "CYCLES_4", + "value": 4, + "description": "4 cycles" + }, + { + "name": "CYCLES_5", + "value": 5, + "description": "5 cycles" + }, + { + "name": "CYCLES_6", + "value": 6, + "description": "6 cycles" + }, + { + "name": "CYCLES_7", + "value": 7, + "description": "7 cycles" + }, + { + "name": "CYCLES_8", + "value": 8, + "description": "8 cycles" + }, + { + "name": "CYCLES_9", + "value": 9, + "description": "9 cycles" + }, + { + "name": "CYCLES_10", + "value": 10, + "description": "10 cycles" + }, + { + "name": "CYCLES_11", + "value": 11, + "description": "11 cycles" + }, + { + "name": "CYCLES_12", + "value": 12, + "description": "12 cycles" + }, + { + "name": "CYCLES_13", + "value": 13, + "description": "13 cycles" + }, + { + "name": "CYCLES_14", + "value": 14, + "description": "14 cycles" + }, + { + "name": "15_cycles", + "value": 15, + "description": "15 cycles" + } + ] + } + ] + }, + { + "id": "fuse27", + "name": "BOOT_CFG3", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x001B", + "bitfields": [ + { + "width": 3, + "id": "fuse27-bits-0-2", + "name": "FlexSPI_NOR_Reset_Port", + "description": "FlexSPI NOR Reset Pin Selection", + "values": [ + { + "name": "NOT_RESET_BOOT", + "value": 0, + "description": "Not reset boot device" + }, + { + "name": "GPIO_PORT1", + "value": 1, + "description": "GPIO port1" + }, + { + "name": "GPIO_PORT2", + "value": 2, + "description": "GPIO port2" + }, + { + "name": "GPIO_PORT3", + "value": 3, + "description": "GPIO port3" + }, + { + "name": "GPIO_PORT4", + "value": 4, + "description": "GPIO port4" + }, + { + "name": "GPIO_PORT5", + "value": 5, + "description": "GPIO port5" + } + ] + }, + { + "width": 2, + "id": "fuse27-bits-3-4", + "name": "FLEXSPI_NOR_AUTO_PROBE_TYPE", + "description": "FLEXSPI NOR AUTO PROBE type", + "values": [ + { + "name": "QUADSPI_AUTO_PROBE", + "value": 0, + "description": "QuadSPI/OctalSPI NOR auto probe (quad sdr auto probe by default, quad ddr if Override_FlexSPI_NOR_Boot_Selection=1 and FlexSPI_NOR_Boot_Override_Selection=01)" + }, + { + "name": "MXIC_OCTAL", + "value": 1, + "description": "MxicOctal" + }, + { + "name": "MICRON_OCTAL", + "value": 2, + "description": "MicronOctal" + }, + { + "name": "ADESTO_OCTAL", + "value": 3, + "description": "AdestoOctal" + } + ] + }, + { + "width": 3, + "id": "fuse27-bits-5-7", + "name": "FLEXSPI_AUTO_PROBE_DATA_PAD", + "description": "FLEXSPI NOR AUTO PROBE type", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MXIC_OCTAL", + "value": 2, + "description": "MxicOctal" + }, + { + "name": "MICRON_OCTAL", + "value": 4, + "description": "MicronOctal" + }, + { + "name": "ADESTO_OCTAL", + "value": 6, + "description": "AdestoOctal" + } + ] + }, + { + "width": 1, + "id": "fuse27-bit-8", + "name": "FLEXSPI_AUTO_PROBE_DDR_SUPPORT", + "description": "FLEXSPI NOR AUTO PROBE type", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "QuadSPI NOR and OctalSPI NOR auto probe disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "OctalSPI NOR auto probe enabled (MxicOctal, MicronOctal, AdestoOctal)" + } + ] + }, + { + "width": 1, + "id": "fuse27-bit-9", + "name": "FLEXSPI_DUMMY_CYCLE_SEL1", + "description": "FLEXSPI NOR AUTO PROBE type", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MXIC_OCTAL", + "value": 1, + "description": "MxicOctal" + } + ] + }, + { + "width": 1, + "id": "fuse27-bit-10", + "name": "EDMA_INIT_M7_TCM", + "description": "FLEXSPI NOR AUTO PROBE type", + "values": [ + { + "name": "QUADSPI_NOR", + "value": 0, + "description": "EDMA M7 TCM initialization disabled" + }, + { + "name": "OCTAL_FLASH", + "value": 1, + "description": "Octal flash type (MxicOctal, MicronOctal, or AdestoOctal)" + } + ] + }, + { + "width": 21 + } + ] + }, + { + "id": "Reserved28", + "name": "Reserved 0x1C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001C", + "is_reserved": true + }, + { + "id": "Reserved29", + "name": "Reserved 0x1D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001D", + "is_reserved": true + }, + { + "id": "Reserved30", + "name": "Reserved 0x1E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001E", + "is_reserved": true + }, + { + "id": "Reserved31", + "name": "Reserved 0x1F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x001F", + "is_reserved": true + }, + { + "id": "fuse32", + "name": "BOOT_CFG8", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0020", + "bitfields": [ + { + "width": 8 + }, + { + "width": 8, + "id": "fuse32-bits-8-15", + "name": "Secondary_boot_offset", + "description": "Secondary boot offset", + "values": [ + { + "name": "OFFSET_4MB", + "value": 0, + "description": "Secondary_boot_offset: 4 MB", + "deprecated_names": [ + "4_MB" + ] + }, + { + "name": "OFFSET_2MB", + "value": 1, + "description": "Secondary_boot_offset: 2 MB", + "deprecated_names": [ + "2_MB" + ] + }, + { + "name": "OFFSET_1MB", + "value": 2, + "description": "Secondary_boot_offset: 1 MB", + "deprecated_names": [ + "1_MB" + ] + }, + { + "name": "OFFSET_8MB", + "value": 3, + "description": "Secondary_boot_offset: 8 MB", + "deprecated_names": [ + "8_MB" + ] + }, + { + "name": "OFFSET_16MB", + "value": 4, + "description": "Secondary_boot_offset: 8MB,", + "deprecated_names": [ + "8MB," + ] + }, + { + "name": "OFFSET_32MB", + "value": 5, + "description": "Secondary_boot_offset: 32MB", + "deprecated_names": [ + "32MB" + ] + }, + { + "name": "OFFSET_64MB", + "value": 6, + "description": "Offset = 64 MB" + }, + { + "name": "OFFSET_128MB", + "value": 7, + "description": "Offset = 128 MB" + }, + { + "name": "OFFSET_256MB", + "value": 8, + "description": "Offset = 256 MB" + }, + { + "name": "OFFSET_512MB", + "value": 9, + "description": "Offset = 512 MB", + "deprecated_names": [ + "512_MB" + ] + }, + { + "name": "EMMC_LAST_128MB", + "value": 254, + "description": "EMMC last 128 MB" + }, + { + "name": "EMMC_LAST_24KB", + "value": 255, + "description": "EMMC last 24 KB", + "deprecated_names": [ + "last_24K" + ] + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-17", + "name": "M33_D_Cache_Disable", + "description": "M33 D cache disable", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "Enabled" + }, + { + "name": "DISABLED", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-19", + "name": "M33_Recovery_Disable", + "description": "Disable A55 SPI recovery", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-20", + "name": "M33_Recovery_Device", + "description": "Disable M33 SPI recovery", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-22", + "name": "AHAB_Reauth", + "description": "AHAB reauth", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Re-authenticate the whole boot code after standby exit is disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Re-authenticate the whole boot code after standby exit is enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-23", + "name": "M33_WDOG_Enable", + "description": "M33 WDOG enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-24", + "name": "A55_I_Cache_Dis", + "description": "A55 I cache dis", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable A55 I-Cache during ROM Boot" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable A55 I-Cache during ROM Boot" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-25", + "name": "M33_I_Cache_Dis", + "description": "M33 I cache dis", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable M33 I-Cache during ROM Boot" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable M33 I-Cache during ROM Boot" + } + ] + }, + { + "width": 2, + "id": "fuse32-bits-26-27", + "name": "WDOG_Timeout_Select", + "description": "WDOG timeout select", + "values": [ + { + "name": "TIMEOUT_32S", + "value": 0, + "description": "WDOG_Timeout_Select: 32 s", + "deprecated_names": [ + "32_s" + ] + }, + { + "name": "TIMEOUT_16S", + "value": 1, + "description": "WDOG_Timeout_Select: 16 s", + "deprecated_names": [ + "16_s" + ] + }, + { + "name": "TIMEOUT_8S", + "value": 2, + "description": "WDOG_Timeout_Select: 8 s", + "deprecated_names": [ + "8_s" + ] + }, + { + "name": "TIMEOUT_4S", + "value": 3, + "description": "WDOG_Timeout_Select: 4 s", + "deprecated_names": [ + "4_s" + ] + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse32-bit-29", + "name": "USB_HID_EP1_Out_Disable", + "description": "USB HID EP1 out disable", + "values": [ + { + "name": "USB_EP1", + "value": 0, + "description": "USB EP1 Transfer(EP1 Out enable)" + }, + { + "name": "USB_EP0", + "value": 1, + "description": "USB EP0 Transfer(EP1 Out disable)" + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-30", + "name": "PLL_LATE_EN", + "description": "PLL late en", + "values": [ + { + "name": "BEFORE_ROM_PATCH", + "value": 0, + "description": "Configure PLLs before installing ROM patch", + "deprecated_names": [ + "0" + ] + }, + { + "name": "AFTER_ROM_PATCH", + "value": 1, + "description": "Configure PLLs after install ROM patch", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse32-bit-31", + "name": "M33_TCM_MBIST_AT_BOOT_EN", + "description": "M33 TCM MBIST at boot enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + } + ] + }, + { + "id": "fuse33", + "name": "BOOT_CFG9", + "description": "Boot Configuration See tab BOOT_CFG", + "index_int": "0x0021", + "lock": { + "register_id": "fuse7", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse33-bit-6", + "name": "M33_TZ_WDOG_Enable(non-ROM)", + "description": "M33 TZ WDOG Enable (non-ROM)", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse33-bit-8", + "name": "CM33_RST_Release_ACK (non-ROM)", + "description": "CM33 RST Release ACK (non-ROM)", + "values": [ + { + "name": "NO_ACK", + "value": 0, + "description": "No Ack from EdgeLock Enclave to release M33 Reset", + "deprecated_names": [ + "0" + ] + }, + { + "name": "ACK_RECEIVED", + "value": 1, + "description": "Ack from EdgeLock Enclave to release M33 Reset", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1 + }, + { + "width": 14 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse33-bit-25", + "name": "DOUBLE_AUTH_EN", + "description": "Enable double authentication of NXP code. " + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse33-bit-28", + "name": "CONTAINER_FORMAT", + "description": "Selection between AHAB and AHAB with PQC container format", + "values": [ + { + "name": "AHAB_PQC", + "value": 0, + "description": "AHAB with PQC container format" + }, + { + "name": "AHAB_CLASSIC", + "value": 1, + "description": "AHAB container format" + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "Reserved34", + "name": "Reserved 0x22", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0022", + "is_reserved": true, + "bitfields": [ + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 27 + } + ] + }, + { + "id": "fuse35", + "name": "BOOT_CFG11", + "description": "NXP Reserved - BOOT Configuration", + "index_int": "0x0023", + "bitfields": [ + { + "width": 1, + "id": "fuse35-bit-0", + "name": "USB2_SDP_Enable", + "description": "USB2 Serial Download Port Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "USB2 SDP is Disabled", + "deprecated_names": [ + "Disable" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "USB2 SDP is Enabled", + "deprecated_names": [ + "Enable" + ] + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-1", + "name": "USB1_SDP_Disable", + "description": "USB1 Serial Download Port Disable", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "USB1_SDP_Disable: USB1", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "USB1 SDP is Disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 29 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x24-0x2F", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved36", + "name": "Reserved 0x24", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0024", + "is_reserved": true, + "reg_width": 16 + }, + { + "id": "Reserved37", + "name": "Reserved 0x25", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0025", + "is_reserved": true, + "reg_width": 16 + }, + { + "id": "Reserved38", + "name": "Reserved 0x26", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0026", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved39", + "name": "Reserved 0x27", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0027", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved40", + "name": "Reserved 0x28", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0028", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved41", + "name": "Reserved 0x29", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0029", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved42", + "name": "Reserved 0x2A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002A", + "is_reserved": true, + "bitfields": [ + { + "width": 12 + }, + { + "width": 6 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 8 + } + ] + }, + { + "id": "Reserved43", + "name": "Reserved 0x2B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002B", + "is_reserved": true, + "bitfields": [ + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved44", + "name": "Reserved 0x2C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002C", + "is_reserved": true, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 5 + }, + { + "width": 5 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved45", + "name": "Reserved 0x2D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002D", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 1 + }, + { + "width": 7 + }, + { + "width": 6 + }, + { + "width": 6 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved46", + "name": "Reserved 0x2E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002E", + "is_reserved": true, + "bitfields": [ + { + "width": 7 + }, + { + "width": 7 + }, + { + "width": 6 + }, + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved47", + "name": "Reserved 0x2F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x002F", + "is_reserved": true, + "bitfields": [ + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 8 + } + ] + } + ] + }, + { + "group": { + "name": "OTP_UNIQ_ID", + "description": "Used by EdgeLock Enclave" + }, + "registers": [ + { + "id": "fuse48", + "name": "OTP_UNIQ_ID3", + "description": "Used by EdgeLock Enclave for:", + "index_int": "0x0030", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse49", + "name": "OTP_UNIQ_ID2", + "description": "Used by EdgeLock Enclave for:", + "index_int": "0x0031", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse50", + "name": "OTP_UNIQ_ID1", + "description": "Used by EdgeLock Enclave for:", + "index_int": "0x0032", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse51", + "name": "OTP_UNIQ_ID0", + "description": "Used by EdgeLock Enclave for:", + "index_int": "0x0033", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + } + ] + }, + { + "group": { + "name": "Reserved 0x34-0x37", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved52", + "name": "Reserved 0x34", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0034", + "is_reserved": true + }, + { + "id": "Reserved53", + "name": "Reserved 0x35", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0035", + "is_reserved": true + }, + { + "id": "Reserved54", + "name": "Reserved 0x36", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0036", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved55", + "name": "Reserved 0x37", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0037", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "ELE_MISC_CTRL", + "description": "ELE miscellaneous configuration" + }, + "registers": [ + { + "id": "fuse56", + "name": "ELE_MISC_CTRL0", + "description": "OEM controlled Fuse.", + "index_int": "0x0038", + "reg_width": 16, + "bitfields": [ + { + "width": 4, + "id": "fuse56-bits-0-3", + "name": "SOC_SCOPE_PRIMARY_DBG_DISABLE", + "description": "Debug Disable for CM33 domain. The 4 bits correspond to : {spiden,sniden,dbgen,niden} " + }, + { + "width": 4, + "id": "fuse56-bits-4-7", + "name": "SOC_SCOPE1_DBG_DISABLE", + "description": "Debug disable for Trace Memory controller. The 4 bits correspond to : {spiden,sniden,dbgen,niden}" + }, + { + "width": 4, + "id": "fuse56-bits-8-11", + "name": "SOC_SCOPE2_DBG_DISABLE", + "description": "Debug disable for CM7. The 4 bits correspond to : {spiden,sniden,dbgen,niden}" + }, + { + "width": 4, + "id": "fuse56-bits-12-15", + "name": "SOC_SCOPE3_DBG_DISABLE", + "description": "Debug disable for DAP AHB-AP. The 4 bits correspond to : {spiden,sniden,dbgen,niden}" + } + ] + }, + { + "id": "fuse57", + "name": "ELE_MISC_CTRL1", + "description": "OEM controlled Fuse.", + "index_int": "0x0039", + "reg_width": 16, + "bitfields": [ + { + "width": 4, + "id": "fuse57-bits-0-3", + "name": "SOC_SCOPE4_DBG_DISABLE", + "description": "Debug disable for apps cores, Camera SS and GPU. The 4 bits correspond to : {spiden,sniden,dbgen,niden}" + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse58", + "name": "ELE_MISC_CTRL2", + "description": "OEM controlled Fuse.", + "index_int": "0x003A", + "reg_width": 16, + "bitfields": [ + { + "width": 1, + "id": "fuse58-bit-0", + "name": "OEM_AGDET_DISABLE", + "description": "Disable for analog glitch detector during boot" + }, + { + "width": 1, + "id": "fuse58-bit-1", + "name": "OEM_VDET_DISABLE", + "description": "Disable for voltage detector during boot" + }, + { + "width": 1, + "id": "fuse58-bit-2", + "name": "OEM_TMPSNS_DISABLE", + "description": "Disable for temperature sensor during boot" + }, + { + "width": 1, + "id": "fuse58-bit-3", + "name": "OEM_DGDET_DISABLE", + "description": "Disable for digital glitch detector during boot" + }, + { + "width": 1, + "id": "fuse58-bit-4", + "name": "FAST_BOOT_ENABLE", + "description": "Enable Fast boot. If set, Customer can choose secure fast boot / secure boot option using the container. ", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Only Secure boot using ELE possible.", + "deprecated_names": [ + "0" + ] + }, + { + "name": "ENABLED", + "value": 1, + "description": "Fast boot capable on the SoC.", + "deprecated_names": [ + "1" + ] + } + ] + }, + { + "width": 1, + "id": "fuse58-bit-5", + "name": "SJC_DISABLE", + "description": "Hardware disablement of SJC. Disables JTAG debugger, including ability for boundary scan.", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "SJC is enabled", + "deprecated_names": [ + "Enable" + ] + }, + { + "name": "DISABLED", + "value": 1, + "description": "SJC is disabled", + "deprecated_names": [ + "Disable" + ] + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse58-bit-8", + "name": "SOC_GLBL_DBG_DISABLE", + "description": "Disable all debug. " + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse58-bit-10", + "name": "TZ_GLBL_DBG_DISABLE", + "description": "OEM controlled Fuse." + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse58-bit-12", + "name": "OEM_FDET_DISABLE", + "description": "Disable for Frequency detector during boot" + }, + { + "width": 3 + } + ] + }, + { + "id": "Reserved59", + "name": "Reserved 0x3B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003B", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse60", + "name": "ELE_MISC_CTRL4", + "description": "OEM and NXP controlled. NXP should set OP to 1 so the shadows cannot be overwritten.", + "index_int": "0x003C", + "reg_width": 16, + "bitfields": [ + { + "width": 12, + "id": "fuse60-bits-0-11", + "name": "EXPORT_CONTROL", + "description": "Each fuse disables the following cryptographic cores: \n[11] : SGI in S401 (Reserved)\n[10] : PKC in S401 (Reserved)\n[9] : Reserved\n[8] : Reserved for S401\n[7] : A55 Crypto extension\n[6] : M7 MMCAU (Reserved)\n[5] : M33 MMCAU (Reserved)\n[4] : OTFADs\n[3]: V2X SGI (Reserved)\n[2]: V2X PKC (Reserved)\n[1]: V2X BA414 (Reserved)\n[0]: IEE" + }, + { + "width": 3, + "id": "fuse60-bits-12-14", + "name": "ELE_BOOT_CRYPTO", + "description": "Boot Cryptographic selection between Classic, PQC and Hybrid. ", + "values": [ + { + "name": "CLASSIC_CRYPTO", + "value": 0, + "description": "Classic Crypto signature verification" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved61", + "name": "Reserved 0x3D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003D", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved62", + "name": "Reserved 0x3E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x003E", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 2 + }, + { + "width": 2 + } + ] + }, + { + "id": "fuse63", + "name": "ELE_MISC_CTRL7", + "description": "OEM and NXP controlled. NXP should set OP to 1 so the shadows cannot be overwritten.", + "index_int": "0x003F", + "reg_width": 16, + "bitfields": [ + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4 + }, + { + "width": 4, + "id": "fuse63-bits-12-15", + "name": "OEM_SRK_RVK", + "description": "OEM key revoke fuses for tree of public keys" + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x40-0x7F", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved64", + "name": "Reserved 0x40", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0040", + "is_reserved": true + }, + { + "id": "Reserved65", + "name": "Reserved 0x41", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0041", + "is_reserved": true + }, + { + "id": "Reserved66", + "name": "Reserved 0x42", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0042", + "is_reserved": true + }, + { + "id": "Reserved67", + "name": "Reserved 0x43", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0043", + "is_reserved": true + }, + { + "id": "Reserved68", + "name": "Reserved 0x44", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0044", + "is_reserved": true + }, + { + "id": "Reserved69", + "name": "Reserved 0x45", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0045", + "is_reserved": true + }, + { + "id": "Reserved70", + "name": "Reserved 0x46", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0046", + "is_reserved": true + }, + { + "id": "Reserved71", + "name": "Reserved 0x47", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0047", + "is_reserved": true + }, + { + "id": "Reserved72", + "name": "Reserved 0x48", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0048", + "is_reserved": true + }, + { + "id": "Reserved73", + "name": "Reserved 0x49", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0049", + "is_reserved": true + }, + { + "id": "Reserved74", + "name": "Reserved 0x4A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004A", + "is_reserved": true + }, + { + "id": "Reserved75", + "name": "Reserved 0x4B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004B", + "is_reserved": true + }, + { + "id": "Reserved76", + "name": "Reserved 0x4C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004C", + "is_reserved": true + }, + { + "id": "Reserved77", + "name": "Reserved 0x4D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004D", + "is_reserved": true + }, + { + "id": "Reserved78", + "name": "Reserved 0x4E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004E", + "is_reserved": true + }, + { + "id": "Reserved79", + "name": "Reserved 0x4F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x004F", + "is_reserved": true + }, + { + "id": "Reserved80", + "name": "Reserved 0x50", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0050", + "is_reserved": true + }, + { + "id": "Reserved81", + "name": "Reserved 0x51", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0051", + "is_reserved": true + }, + { + "id": "Reserved82", + "name": "Reserved 0x52", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0052", + "is_reserved": true + }, + { + "id": "Reserved83", + "name": "Reserved 0x53", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0053", + "is_reserved": true + }, + { + "id": "Reserved84", + "name": "Reserved 0x54", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0054", + "is_reserved": true + }, + { + "id": "Reserved85", + "name": "Reserved 0x55", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0055", + "is_reserved": true + }, + { + "id": "Reserved86", + "name": "Reserved 0x56", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0056", + "is_reserved": true + }, + { + "id": "Reserved87", + "name": "Reserved 0x57", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0057", + "is_reserved": true + }, + { + "id": "Reserved88", + "name": "Reserved 0x58", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0058", + "is_reserved": true + }, + { + "id": "Reserved89", + "name": "Reserved 0x59", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0059", + "is_reserved": true + }, + { + "id": "Reserved90", + "name": "Reserved 0x5A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005A", + "is_reserved": true + }, + { + "id": "Reserved91", + "name": "Reserved 0x5B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005B", + "is_reserved": true + }, + { + "id": "Reserved92", + "name": "Reserved 0x5C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005C", + "is_reserved": true + }, + { + "id": "Reserved93", + "name": "Reserved 0x5D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005D", + "is_reserved": true + }, + { + "id": "Reserved94", + "name": "Reserved 0x5E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005E", + "is_reserved": true + }, + { + "id": "Reserved95", + "name": "Reserved 0x5F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x005F", + "is_reserved": true + }, + { + "id": "Reserved96", + "name": "Reserved 0x60", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0060", + "is_reserved": true + }, + { + "id": "Reserved97", + "name": "Reserved 0x61", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0061", + "is_reserved": true + }, + { + "id": "Reserved98", + "name": "Reserved 0x62", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0062", + "is_reserved": true + }, + { + "id": "Reserved99", + "name": "Reserved 0x63", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0063", + "is_reserved": true + }, + { + "id": "Reserved100", + "name": "Reserved 0x64", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0064", + "is_reserved": true + }, + { + "id": "Reserved101", + "name": "Reserved 0x65", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0065", + "is_reserved": true + }, + { + "id": "Reserved102", + "name": "Reserved 0x66", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0066", + "is_reserved": true + }, + { + "id": "Reserved103", + "name": "Reserved 0x67", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0067", + "is_reserved": true + }, + { + "id": "Reserved104", + "name": "Reserved 0x68", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0068", + "is_reserved": true + }, + { + "id": "Reserved105", + "name": "Reserved 0x69", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0069", + "is_reserved": true + }, + { + "id": "Reserved106", + "name": "Reserved 0x6A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006A", + "is_reserved": true + }, + { + "id": "Reserved107", + "name": "Reserved 0x6B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006B", + "is_reserved": true + }, + { + "id": "Reserved108", + "name": "Reserved 0x6C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006C", + "is_reserved": true + }, + { + "id": "Reserved109", + "name": "Reserved 0x6D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006D", + "is_reserved": true + }, + { + "id": "Reserved110", + "name": "Reserved 0x6E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006E", + "is_reserved": true + }, + { + "id": "Reserved111", + "name": "Reserved 0x6F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x006F", + "is_reserved": true + }, + { + "id": "Reserved112", + "name": "Reserved 0x70", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0070", + "is_reserved": true + }, + { + "id": "Reserved113", + "name": "Reserved 0x71", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0071", + "is_reserved": true + }, + { + "id": "Reserved114", + "name": "Reserved 0x72", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0072", + "is_reserved": true + }, + { + "id": "Reserved115", + "name": "Reserved 0x73", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0073", + "is_reserved": true + }, + { + "id": "Reserved116", + "name": "Reserved 0x74", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0074", + "is_reserved": true + }, + { + "id": "Reserved117", + "name": "Reserved 0x75", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0075", + "is_reserved": true + }, + { + "id": "Reserved118", + "name": "Reserved 0x76", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0076", + "is_reserved": true + }, + { + "id": "Reserved119", + "name": "Reserved 0x77", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0077", + "is_reserved": true + }, + { + "id": "Reserved120", + "name": "Reserved 0x78", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0078", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved121", + "name": "Reserved 0x79", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0079", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved122", + "name": "Reserved 0x7A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007A", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved123", + "name": "Reserved 0x7B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007B", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved124", + "name": "Reserved 0x7C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007C", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved125", + "name": "Reserved 0x7D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007D", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved126", + "name": "Reserved 0x7E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007E", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved127", + "name": "Reserved 0x7F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x007F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "OEM_SRKH", + "description": "OEM SRK Hash" + }, + "registers": [ + { + "id": "fuse128", + "name": "OEM_SRKH0", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0080", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse129", + "name": "OEM_SRKH1", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0081", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse130", + "name": "OEM_SRKH2", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0082", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse131", + "name": "OEM_SRKH3", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0083", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse132", + "name": "OEM_SRKH4", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0084", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse133", + "name": "OEM_SRKH5", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0085", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse134", + "name": "OEM_SRKH6", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0086", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse135", + "name": "OEM_SRKH7", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0087", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse136", + "name": "OEM_SRKH8", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0088" + }, + { + "id": "fuse137", + "name": "OEM_SRKH9", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x0089", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse138", + "name": "OEM_SRKH10", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008A" + }, + { + "id": "fuse139", + "name": "OEM_SRKH11", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008B" + }, + { + "id": "fuse140", + "name": "OEM_SRKH12", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008C" + }, + { + "id": "fuse141", + "name": "OEM_SRKH13", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008D" + }, + { + "id": "fuse142", + "name": "OEM_SRKH14", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008E", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse143", + "name": "OEM_SRKH15", + "description": "HASH of OEM SRK table in container for boot image.", + "index_int": "0x008F", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + } + ] + }, + { + "group": { + "name": "Reserved 0x90-0xB3", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved144", + "name": "Reserved 0x90", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0090", + "is_reserved": true + }, + { + "id": "Reserved145", + "name": "Reserved 0x91", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0091", + "is_reserved": true + }, + { + "id": "Reserved146", + "name": "Reserved 0x92", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0092", + "is_reserved": true + }, + { + "id": "Reserved147", + "name": "Reserved 0x93", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0093", + "is_reserved": true + }, + { + "id": "Reserved148", + "name": "Reserved 0x94", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0094", + "is_reserved": true + }, + { + "id": "Reserved149", + "name": "Reserved 0x95", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0095", + "is_reserved": true + }, + { + "id": "Reserved150", + "name": "Reserved 0x96", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0096", + "is_reserved": true + }, + { + "id": "Reserved151", + "name": "Reserved 0x97", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0097", + "is_reserved": true + }, + { + "id": "Reserved152", + "name": "Reserved 0x98", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0098", + "is_reserved": true + }, + { + "id": "Reserved153", + "name": "Reserved 0x99", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0099", + "is_reserved": true + }, + { + "id": "Reserved154", + "name": "Reserved 0x9A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009A", + "is_reserved": true + }, + { + "id": "Reserved155", + "name": "Reserved 0x9B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009B", + "is_reserved": true + }, + { + "id": "Reserved156", + "name": "Reserved 0x9C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009C", + "is_reserved": true + }, + { + "id": "Reserved157", + "name": "Reserved 0x9D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009D", + "is_reserved": true + }, + { + "id": "Reserved158", + "name": "Reserved 0x9E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009E", + "is_reserved": true + }, + { + "id": "Reserved159", + "name": "Reserved 0x9F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x009F", + "is_reserved": true + }, + { + "id": "Reserved160", + "name": "Reserved 0xA0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A0", + "is_reserved": true + }, + { + "id": "Reserved161", + "name": "Reserved 0xA1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A1", + "is_reserved": true + }, + { + "id": "Reserved162", + "name": "Reserved 0xA2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A2", + "is_reserved": true + }, + { + "id": "Reserved163", + "name": "Reserved 0xA3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A3", + "is_reserved": true + }, + { + "id": "Reserved164", + "name": "Reserved 0xA4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A4", + "is_reserved": true + }, + { + "id": "Reserved165", + "name": "Reserved 0xA5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A5", + "is_reserved": true + }, + { + "id": "Reserved166", + "name": "Reserved 0xA6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A6", + "is_reserved": true + }, + { + "id": "Reserved167", + "name": "Reserved 0xA7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A7", + "is_reserved": true + }, + { + "id": "Reserved168", + "name": "Reserved 0xA8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A8", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved169", + "name": "Reserved 0xA9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00A9", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved170", + "name": "Reserved 0xAA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AA", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved171", + "name": "Reserved 0xAB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AB", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved172", + "name": "Reserved 0xAC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AC", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved173", + "name": "Reserved 0xAD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AD", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved174", + "name": "Reserved 0xAE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AE", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved175", + "name": "Reserved 0xAF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00AF", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved176", + "name": "Reserved 0xB0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B0", + "is_reserved": true + }, + { + "id": "Reserved177", + "name": "Reserved 0xB1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B1", + "is_reserved": true + }, + { + "id": "Reserved178", + "name": "Reserved 0xB2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B2", + "is_reserved": true + }, + { + "id": "Reserved179", + "name": "Reserved 0xB3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00B3", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "GPR1_CFG", + "description": "General purpose fuse 1" + }, + "registers": [ + { + "id": "fuse180", + "name": "GPR1_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM CLOSED.", + "index_int": "0x00B4" + }, + { + "id": "fuse181", + "name": "GPR1_CFG1", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM CLOSED.", + "index_int": "0x00B5" + }, + { + "id": "fuse182", + "name": "GPR1_CFG2", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM CLOSED.", + "index_int": "0x00B6" + }, + { + "id": "fuse183", + "name": "GPR1_CFG3", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM CLOSED.", + "index_int": "0x00B7" + } + ] + }, + { + "group": { + "name": "OTFAD1", + "description": "OTFAD configuration" + }, + "registers": [ + { + "id": "fuse184", + "name": "OTFAD1_KEY3", + "description": "128-bit OTFAD key for key blob unwrap. Key blob is in primary boot image", + "index_int": "0x00B8", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse185", + "name": "OTFAD1_KEY2", + "description": "128-bit OTFAD key for key blob unwrap. Key blob is in primary boot image", + "index_int": "0x00B9", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse186", + "name": "OTFAD1_KEY1", + "description": "128-bit OTFAD key for key blob unwrap. Key blob is in primary boot image", + "index_int": "0x00BA", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse187", + "name": "OTFAD1_KEY0", + "description": "128-bit OTFAD key for key blob unwrap. Key blob is in primary boot image", + "index_int": "0x00BB", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse188", + "name": "OTFAD1_CFG4", + "description": "OTFAD Control fuses", + "index_int": "0x00BC", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 3 + }, + { + "width": 1, + "id": "fuse188-bit-3", + "name": "OTFAD1_ENABLE", + "description": "Enable OTFAD decryption " + }, + { + "width": 1, + "id": "fuse188-bit-4", + "name": "OTFAD1_DISABLE_OVERRIDE", + "description": "Disable OTFAD function. " + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse188-bit-6", + "name": "OTFAD1_KEY_SCRAMBLE_CRC_EN", + "description": "Enable Key blob CRC" + }, + { + "width": 1, + "id": "fuse188-bit-7", + "name": "OTFAD1_KEY_SCRAMBLE_EN", + "description": "Enable OTFAD Key scramble using OTFAD1_KEY_SCRAMBLE during key blob process " + }, + { + "width": 8, + "id": "fuse188-bits-8-15", + "name": "OTFAD1_KEY_SCRAMBLE_ALIGN", + "description": "4x 2-bit key scramble align select for key blob unwrap" + }, + { + "width": 1, + "id": "fuse188-bit-16", + "name": "OTFAD1_RESTRICT_OTFAD_IPS", + "description": "Restrict IPS access to CR, SR and CRC" + }, + { + "width": 15 + } + ] + }, + { + "id": "fuse189", + "name": "OTFAD1_KEY_SCRAMBLE", + "description": "Key scramble data value for key blob unwrap", + "index_int": "0x00BD", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + } + ] + }, + { + "group": { + "name": "Reserved 0xBE-0x117", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved190", + "name": "Reserved 0xBE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BE", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved191", + "name": "Reserved 0xBF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00BF", + "is_reserved": true, + "bitfields": [ + { + "width": 9 + }, + { + "width": 23 + } + ] + }, + { + "id": "Reserved192", + "name": "Reserved 0xC0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C0", + "is_reserved": true + }, + { + "id": "Reserved193", + "name": "Reserved 0xC1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C1", + "is_reserved": true + }, + { + "id": "Reserved194", + "name": "Reserved 0xC2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C2", + "is_reserved": true + }, + { + "id": "Reserved195", + "name": "Reserved 0xC3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C3", + "is_reserved": true + }, + { + "id": "Reserved196", + "name": "Reserved 0xC4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C4", + "is_reserved": true + }, + { + "id": "Reserved197", + "name": "Reserved 0xC5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C5", + "is_reserved": true + }, + { + "id": "Reserved198", + "name": "Reserved 0xC6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C6", + "is_reserved": true + }, + { + "id": "Reserved199", + "name": "Reserved 0xC7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C7", + "is_reserved": true + }, + { + "id": "Reserved200", + "name": "Reserved 0xC8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C8", + "is_reserved": true + }, + { + "id": "Reserved201", + "name": "Reserved 0xC9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00C9", + "is_reserved": true + }, + { + "id": "Reserved202", + "name": "Reserved 0xCA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CA", + "is_reserved": true + }, + { + "id": "Reserved203", + "name": "Reserved 0xCB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CB", + "is_reserved": true + }, + { + "id": "Reserved204", + "name": "Reserved 0xCC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CC", + "is_reserved": true + }, + { + "id": "Reserved205", + "name": "Reserved 0xCD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CD", + "is_reserved": true + }, + { + "id": "Reserved206", + "name": "Reserved 0xCE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CE", + "is_reserved": true + }, + { + "id": "Reserved207", + "name": "Reserved 0xCF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00CF", + "is_reserved": true + }, + { + "id": "Reserved208", + "name": "Reserved 0xD0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D0", + "is_reserved": true + }, + { + "id": "Reserved209", + "name": "Reserved 0xD1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D1", + "is_reserved": true + }, + { + "id": "Reserved210", + "name": "Reserved 0xD2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D2", + "is_reserved": true + }, + { + "id": "Reserved211", + "name": "Reserved 0xD3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D3", + "is_reserved": true + }, + { + "id": "Reserved212", + "name": "Reserved 0xD4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D4", + "is_reserved": true + }, + { + "id": "Reserved213", + "name": "Reserved 0xD5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D5", + "is_reserved": true + }, + { + "id": "Reserved214", + "name": "Reserved 0xD6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D6", + "is_reserved": true + }, + { + "id": "Reserved215", + "name": "Reserved 0xD7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D7", + "is_reserved": true + }, + { + "id": "Reserved216", + "name": "Reserved 0xD8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D8", + "is_reserved": true + }, + { + "id": "Reserved217", + "name": "Reserved 0xD9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00D9", + "is_reserved": true + }, + { + "id": "Reserved218", + "name": "Reserved 0xDA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DA", + "is_reserved": true + }, + { + "id": "Reserved219", + "name": "Reserved 0xDB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DB", + "is_reserved": true + }, + { + "id": "Reserved220", + "name": "Reserved 0xDC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DC", + "is_reserved": true + }, + { + "id": "Reserved221", + "name": "Reserved 0xDD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DD", + "is_reserved": true + }, + { + "id": "Reserved222", + "name": "Reserved 0xDE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DE", + "is_reserved": true + }, + { + "id": "Reserved223", + "name": "Reserved 0xDF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00DF", + "is_reserved": true + }, + { + "id": "Reserved224", + "name": "Reserved 0xE0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E0", + "is_reserved": true + }, + { + "id": "Reserved225", + "name": "Reserved 0xE1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E1", + "is_reserved": true + }, + { + "id": "Reserved226", + "name": "Reserved 0xE2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E2", + "is_reserved": true + }, + { + "id": "Reserved227", + "name": "Reserved 0xE3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E3", + "is_reserved": true + }, + { + "id": "Reserved228", + "name": "Reserved 0xE4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E4", + "is_reserved": true + }, + { + "id": "Reserved229", + "name": "Reserved 0xE5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E5", + "is_reserved": true + }, + { + "id": "Reserved230", + "name": "Reserved 0xE6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E6", + "is_reserved": true + }, + { + "id": "Reserved231", + "name": "Reserved 0xE7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E7", + "is_reserved": true + }, + { + "id": "Reserved232", + "name": "Reserved 0xE8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E8", + "is_reserved": true + }, + { + "id": "Reserved233", + "name": "Reserved 0xE9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00E9", + "is_reserved": true + }, + { + "id": "Reserved234", + "name": "Reserved 0xEA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EA", + "is_reserved": true + }, + { + "id": "Reserved235", + "name": "Reserved 0xEB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EB", + "is_reserved": true + }, + { + "id": "Reserved236", + "name": "Reserved 0xEC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EC", + "is_reserved": true + }, + { + "id": "Reserved237", + "name": "Reserved 0xED", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00ED", + "is_reserved": true + }, + { + "id": "Reserved238", + "name": "Reserved 0xEE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EE", + "is_reserved": true + }, + { + "id": "Reserved239", + "name": "Reserved 0xEF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00EF", + "is_reserved": true + }, + { + "id": "Reserved240", + "name": "Reserved 0xF0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F0", + "is_reserved": true + }, + { + "id": "Reserved241", + "name": "Reserved 0xF1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F1", + "is_reserved": true + }, + { + "id": "Reserved242", + "name": "Reserved 0xF2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F2", + "is_reserved": true + }, + { + "id": "Reserved243", + "name": "Reserved 0xF3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F3", + "is_reserved": true + }, + { + "id": "Reserved244", + "name": "Reserved 0xF4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F4", + "is_reserved": true + }, + { + "id": "Reserved245", + "name": "Reserved 0xF5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F5", + "is_reserved": true + }, + { + "id": "Reserved246", + "name": "Reserved 0xF6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F6", + "is_reserved": true + }, + { + "id": "Reserved247", + "name": "Reserved 0xF7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F7", + "is_reserved": true + }, + { + "id": "Reserved248", + "name": "Reserved 0xF8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F8", + "is_reserved": true + }, + { + "id": "Reserved249", + "name": "Reserved 0xF9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00F9", + "is_reserved": true + }, + { + "id": "Reserved250", + "name": "Reserved 0xFA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FA", + "is_reserved": true + }, + { + "id": "Reserved251", + "name": "Reserved 0xFB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FB", + "is_reserved": true + }, + { + "id": "Reserved252", + "name": "Reserved 0xFC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FC", + "is_reserved": true + }, + { + "id": "Reserved253", + "name": "Reserved 0xFD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FD", + "is_reserved": true + }, + { + "id": "Reserved254", + "name": "Reserved 0xFE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FE", + "is_reserved": true + }, + { + "id": "Reserved255", + "name": "Reserved 0xFF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x00FF", + "is_reserved": true + }, + { + "id": "Reserved256", + "name": "Reserved 0x100", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0100", + "is_reserved": true + }, + { + "id": "Reserved257", + "name": "Reserved 0x101", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0101", + "is_reserved": true + }, + { + "id": "Reserved258", + "name": "Reserved 0x102", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0102", + "is_reserved": true + }, + { + "id": "Reserved259", + "name": "Reserved 0x103", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0103", + "is_reserved": true + }, + { + "id": "Reserved260", + "name": "Reserved 0x104", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0104", + "is_reserved": true + }, + { + "id": "Reserved261", + "name": "Reserved 0x105", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0105", + "is_reserved": true + }, + { + "id": "Reserved262", + "name": "Reserved 0x106", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0106", + "is_reserved": true + }, + { + "id": "Reserved263", + "name": "Reserved 0x107", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0107", + "is_reserved": true + }, + { + "id": "Reserved264", + "name": "Reserved 0x108", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0108", + "is_reserved": true + }, + { + "id": "Reserved265", + "name": "Reserved 0x109", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0109", + "is_reserved": true + }, + { + "id": "Reserved266", + "name": "Reserved 0x10A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010A", + "is_reserved": true + }, + { + "id": "Reserved267", + "name": "Reserved 0x10B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010B", + "is_reserved": true + }, + { + "id": "Reserved268", + "name": "Reserved 0x10C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010C", + "is_reserved": true + }, + { + "id": "Reserved269", + "name": "Reserved 0x10D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010D", + "is_reserved": true + }, + { + "id": "Reserved270", + "name": "Reserved 0x10E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010E", + "is_reserved": true + }, + { + "id": "Reserved271", + "name": "Reserved 0x10F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x010F", + "is_reserved": true + }, + { + "id": "Reserved272", + "name": "Reserved 0x110", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0110", + "is_reserved": true + }, + { + "id": "Reserved273", + "name": "Reserved 0x111", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0111", + "is_reserved": true + }, + { + "id": "Reserved274", + "name": "Reserved 0x112", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0112", + "is_reserved": true + }, + { + "id": "Reserved275", + "name": "Reserved 0x113", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0113", + "is_reserved": true + }, + { + "id": "Reserved276", + "name": "Reserved 0x114", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0114", + "is_reserved": true + }, + { + "id": "Reserved277", + "name": "Reserved 0x115", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0115", + "is_reserved": true + }, + { + "id": "Reserved278", + "name": "Reserved 0x116", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0116", + "is_reserved": true + }, + { + "id": "Reserved279", + "name": "Reserved 0x117", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0117", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "V2X_SHE_SECRET_KEY", + "description": "V2X SHE secret key" + }, + "registers": [ + { + "id": "fuse280", + "name": "V2X_SHE_SECRET_KEY0", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol", + "index_int": "0x0118" + }, + { + "id": "fuse281", + "name": "V2X_SHE_SECRET_KEY1", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol", + "index_int": "0x0119" + }, + { + "id": "fuse282", + "name": "V2X_SHE_SECRET_KEY2", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol", + "index_int": "0x011A" + }, + { + "id": "fuse283", + "name": "V2X_SHE_SECRET_KEY3", + "description": "V2X SHE secret key - used to export or import material to she, using key_update protocol", + "index_int": "0x011B" + } + ] + }, + { + "group": { + "name": "V2X_SHE_PRNG_KEY", + "description": "V2X SHE PRNG value" + }, + "registers": [ + { + "id": "fuse284", + "name": "V2X_SHE_PRNG_KEY0", + "description": "V2X SHE PRNG value", + "index_int": "0x011C" + }, + { + "id": "fuse285", + "name": "V2X_SHE_PRNG_KEY1", + "description": "V2X SHE PRNG value", + "index_int": "0x011D" + }, + { + "id": "fuse286", + "name": "V2X_SHE_PRNG_KEY2", + "description": "V2X SHE PRNG value", + "index_int": "0x011E" + }, + { + "id": "fuse287", + "name": "V2X_SHE_PRNG_KEY3", + "description": "V2X SHE PRNG value", + "index_int": "0x011F" + } + ] + }, + { + "group": { + "name": "Reserved 0x120-0x138", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved288", + "name": "Reserved 0x120", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0120", + "is_reserved": true + }, + { + "id": "Reserved289", + "name": "Reserved 0x121", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0121", + "is_reserved": true + }, + { + "id": "Reserved290", + "name": "Reserved 0x122", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0122", + "is_reserved": true + }, + { + "id": "Reserved291", + "name": "Reserved 0x123", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0123", + "is_reserved": true + }, + { + "id": "Reserved292", + "name": "Reserved 0x124", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0124", + "is_reserved": true + }, + { + "id": "Reserved293", + "name": "Reserved 0x125", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0125", + "is_reserved": true + }, + { + "id": "Reserved294", + "name": "Reserved 0x126", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0126", + "is_reserved": true + }, + { + "id": "Reserved295", + "name": "Reserved 0x127", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0127", + "is_reserved": true + }, + { + "id": "Reserved296", + "name": "Reserved 0x128", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0128", + "is_reserved": true + }, + { + "id": "Reserved297", + "name": "Reserved 0x129", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0129", + "is_reserved": true + }, + { + "id": "Reserved298", + "name": "Reserved 0x12A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012A", + "is_reserved": true + }, + { + "id": "Reserved299", + "name": "Reserved 0x12B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012B", + "is_reserved": true + }, + { + "id": "Reserved300", + "name": "Reserved 0x12C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012C", + "is_reserved": true + }, + { + "id": "Reserved301", + "name": "Reserved 0x12D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012D", + "is_reserved": true + }, + { + "id": "Reserved302", + "name": "Reserved 0x12E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012E", + "is_reserved": true + }, + { + "id": "Reserved303", + "name": "Reserved 0x12F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x012F", + "is_reserved": true + }, + { + "id": "Reserved304", + "name": "Reserved 0x130", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0130", + "is_reserved": true + }, + { + "id": "Reserved305", + "name": "Reserved 0x131", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0131", + "is_reserved": true + }, + { + "id": "Reserved306", + "name": "Reserved 0x132", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0132", + "is_reserved": true + }, + { + "id": "Reserved307", + "name": "Reserved 0x133", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0133", + "is_reserved": true + }, + { + "id": "Reserved308", + "name": "Reserved 0x134", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0134", + "is_reserved": true + }, + { + "id": "Reserved309", + "name": "Reserved 0x135", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0135", + "is_reserved": true + }, + { + "id": "Reserved310", + "name": "Reserved 0x136", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0136", + "is_reserved": true + }, + { + "id": "Reserved311", + "name": "Reserved 0x137", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0137", + "is_reserved": true + }, + { + "id": "Reserved312", + "name": "Reserved 0x138", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0138", + "is_reserved": true, + "bitfields": [ + { + "width": 12 + }, + { + "width": 20 + } + ] + } + ] + }, + { + "group": { + "name": "GPR2_CFG", + "description": "General purpose fuse 2" + }, + "registers": [ + { + "id": "fuse313", + "name": "GPR2_CFG0", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure EdgeLock Enclave API calls.", + "index_int": "0x0139", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse314", + "name": "GPR2_CFG1", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure EdgeLock Enclave API calls.", + "index_int": "0x013A" + }, + { + "id": "fuse315", + "name": "GPR2_CFG2", + "description": "Secure General Purpose Fuse for customer use, programmable in OEM OPEN lifecycle. Private fuse value available through secure EdgeLock Enclave API calls.", + "index_int": "0x013B" + } + ] + }, + { + "group": { + "name": "Reserved 0x13C-0x141", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved316", + "name": "Reserved 0x13C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013C", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved317", + "name": "Reserved 0x13D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013D", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved318", + "name": "Reserved 0x13E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013E", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 16 + } + ] + }, + { + "id": "Reserved319", + "name": "Reserved 0x13F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x013F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 1 + }, + { + "width": 15 + } + ] + }, + { + "id": "Reserved320", + "name": "Reserved 0x140", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0140", + "is_reserved": true + }, + { + "id": "Reserved321", + "name": "Reserved 0x141", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0141", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "COM_DEVICE_ID_CFG", + "description": "Device communication config" + }, + "registers": [ + { + "id": "fuse322", + "name": "COM_DEVICE_ID_CFG0", + "description": "COM_DEVICE_ID_CFG0", + "index_int": "0x0142", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse322-bits-0-15", + "name": "USB_VID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "fuse322-bits-16-31", + "name": "USB1_PID", + "description": "USB1 Product ID" + } + ] + }, + { + "id": "fuse323", + "name": "COM_DEVICE_ID_CFG1", + "description": "COM_DEVICE_ID_CFG1", + "index_int": "0x0143", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse323-bits-0-15", + "name": "USB2_PID", + "description": "USB2 Product ID" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved324", + "name": "Reserved 0x144", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0144", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse325", + "name": "COM_DEVICE_ID_CFG3", + "description": "COM_DEVICE_ID_CFG3", + "index_int": "0x0145", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse325-bits-0-7", + "name": "MAC_ADDR_47_40", + "description": "MAC Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse325-bits-8-15", + "name": "MAC_ADDR_39_32", + "description": "MAC Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse325-bits-16-23", + "name": "MAC_ADDR_31_24", + "description": "MAC Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse325-bits-24-31", + "name": "MAC_ADDR_23_16", + "description": "MAC Address. Reserved for customer SW" + } + ] + }, + { + "id": "fuse326", + "name": "COM_DEVICE_ID_CFG4", + "description": "COM_DEVICE_ID_CFG4", + "index_int": "0x0146", + "lock": { + "register_id": "fuse10", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse326-bits-0-7", + "name": "MAC_ADDR_15_8", + "description": "MAC Address. Reserved for customer SW" + }, + { + "width": 8, + "id": "fuse326-bits-8-15", + "name": "MAC_ADDR_7_0", + "description": "MAC Address. Reserved for customer SW" + }, + { + "width": 8 + }, + { + "width": 8, + "id": "fuse326-bits-24-31", + "name": "NUM_OF_MACS", + "description": "Max. Number of MACs supported. " + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x147-0x177", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved327", + "name": "Reserved 0x147", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0147", + "is_reserved": true, + "bitfields": [ + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 2 + } + ] + }, + { + "id": "Reserved328", + "name": "Reserved 0x148", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0148", + "is_reserved": true + }, + { + "id": "Reserved329", + "name": "Reserved 0x149", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0149", + "is_reserved": true + }, + { + "id": "Reserved330", + "name": "Reserved 0x14A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014A", + "is_reserved": true + }, + { + "id": "Reserved331", + "name": "Reserved 0x14B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014B", + "is_reserved": true + }, + { + "id": "Reserved332", + "name": "Reserved 0x14C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014C", + "is_reserved": true + }, + { + "id": "Reserved333", + "name": "Reserved 0x14D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014D", + "is_reserved": true + }, + { + "id": "Reserved334", + "name": "Reserved 0x14E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014E", + "is_reserved": true + }, + { + "id": "Reserved335", + "name": "Reserved 0x14F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x014F", + "is_reserved": true + }, + { + "id": "Reserved336", + "name": "Reserved 0x150", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0150", + "is_reserved": true + }, + { + "id": "Reserved337", + "name": "Reserved 0x151", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0151", + "is_reserved": true + }, + { + "id": "Reserved338", + "name": "Reserved 0x152", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0152", + "is_reserved": true + }, + { + "id": "Reserved339", + "name": "Reserved 0x153", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0153", + "is_reserved": true + }, + { + "id": "Reserved340", + "name": "Reserved 0x154", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0154", + "is_reserved": true + }, + { + "id": "Reserved341", + "name": "Reserved 0x155", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0155", + "is_reserved": true + }, + { + "id": "Reserved342", + "name": "Reserved 0x156", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0156", + "is_reserved": true + }, + { + "id": "Reserved343", + "name": "Reserved 0x157", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0157", + "is_reserved": true + }, + { + "id": "Reserved344", + "name": "Reserved 0x158", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0158", + "is_reserved": true + }, + { + "id": "Reserved345", + "name": "Reserved 0x159", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0159", + "is_reserved": true + }, + { + "id": "Reserved346", + "name": "Reserved 0x15A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015A", + "is_reserved": true + }, + { + "id": "Reserved347", + "name": "Reserved 0x15B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015B", + "is_reserved": true + }, + { + "id": "Reserved348", + "name": "Reserved 0x15C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015C", + "is_reserved": true + }, + { + "id": "Reserved349", + "name": "Reserved 0x15D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015D", + "is_reserved": true + }, + { + "id": "Reserved350", + "name": "Reserved 0x15E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015E", + "is_reserved": true + }, + { + "id": "Reserved351", + "name": "Reserved 0x15F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x015F", + "is_reserved": true + }, + { + "id": "Reserved352", + "name": "Reserved 0x160", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0160", + "is_reserved": true + }, + { + "id": "Reserved353", + "name": "Reserved 0x161", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0161", + "is_reserved": true + }, + { + "id": "Reserved354", + "name": "Reserved 0x162", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0162", + "is_reserved": true + }, + { + "id": "Reserved355", + "name": "Reserved 0x163", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0163", + "is_reserved": true + }, + { + "id": "Reserved356", + "name": "Reserved 0x164", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0164", + "is_reserved": true + }, + { + "id": "Reserved357", + "name": "Reserved 0x165", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0165", + "is_reserved": true + }, + { + "id": "Reserved358", + "name": "Reserved 0x166", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0166", + "is_reserved": true + }, + { + "id": "Reserved359", + "name": "Reserved 0x167", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0167", + "is_reserved": true + }, + { + "id": "Reserved360", + "name": "Reserved 0x168", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0168", + "is_reserved": true + }, + { + "id": "Reserved361", + "name": "Reserved 0x169", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0169", + "is_reserved": true + }, + { + "id": "Reserved362", + "name": "Reserved 0x16A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016A", + "is_reserved": true + }, + { + "id": "Reserved363", + "name": "Reserved 0x16B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016B", + "is_reserved": true + }, + { + "id": "Reserved364", + "name": "Reserved 0x16C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016C", + "is_reserved": true + }, + { + "id": "Reserved365", + "name": "Reserved 0x16D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016D", + "is_reserved": true + }, + { + "id": "Reserved366", + "name": "Reserved 0x16E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016E", + "is_reserved": true + }, + { + "id": "Reserved367", + "name": "Reserved 0x16F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x016F", + "is_reserved": true + }, + { + "id": "Reserved368", + "name": "Reserved 0x170", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0170", + "is_reserved": true + }, + { + "id": "Reserved369", + "name": "Reserved 0x171", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0171", + "is_reserved": true + }, + { + "id": "Reserved370", + "name": "Reserved 0x172", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0172", + "is_reserved": true + }, + { + "id": "Reserved371", + "name": "Reserved 0x173", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0173", + "is_reserved": true + }, + { + "id": "Reserved372", + "name": "Reserved 0x174", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0174", + "is_reserved": true + }, + { + "id": "Reserved373", + "name": "Reserved 0x175", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0175", + "is_reserved": true + }, + { + "id": "Reserved374", + "name": "Reserved 0x176", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0176", + "is_reserved": true + }, + { + "id": "Reserved375", + "name": "Reserved 0x177", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0177", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "GPR4_CFG", + "description": "General purpose fuse 4" + }, + "registers": [ + { + "id": "fuse376", + "name": "GPR4_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0178" + }, + { + "id": "fuse377", + "name": "GPR4_CFG1", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0179" + }, + { + "id": "fuse378", + "name": "GPR4_CFG2", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017A" + }, + { + "id": "fuse379", + "name": "GPR4_CFG3", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017B" + }, + { + "id": "fuse380", + "name": "GPR4_CFG4", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017C" + }, + { + "id": "fuse381", + "name": "GPR4_CFG5", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017D", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse382", + "name": "GPR4_CFG6", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017E" + }, + { + "id": "fuse383", + "name": "GPR4_CFG7", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x017F", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse384", + "name": "GPR4_CFG8", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0180" + }, + { + "id": "fuse385", + "name": "GPR4_CFG9", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0181" + }, + { + "id": "fuse386", + "name": "GPR4_CFG10", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0182" + }, + { + "id": "fuse387", + "name": "GPR4_CFG11", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0183" + }, + { + "id": "fuse388", + "name": "GPR4_CFG12", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0184", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse389", + "name": "GPR4_CFG13", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0185" + }, + { + "id": "fuse390", + "name": "GPR4_CFG14", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0186" + }, + { + "id": "fuse391", + "name": "GPR4_CFG15", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0187" + } + ] + }, + { + "group": { + "name": "GPR5_CFG", + "description": "General purpose fuse 5" + }, + "registers": [ + { + "id": "fuse392", + "name": "GPR5_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0188" + }, + { + "id": "fuse393", + "name": "GPR5_CFG1", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0189" + }, + { + "id": "fuse394", + "name": "GPR5_CFG2", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x018A" + }, + { + "id": "fuse395", + "name": "GPR5_CFG3", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x018B" + }, + { + "id": "fuse396", + "name": "GPR5_CFG4", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x018C" + }, + { + "id": "fuse397", + "name": "GPR5_CFG5", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x018D" + }, + { + "id": "fuse398", + "name": "GPR5_CFG6", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x018E" + }, + { + "id": "fuse399", + "name": "GPR5_CFG7", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x018F" + }, + { + "id": "fuse400", + "name": "GPR5_CFG8", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0190" + }, + { + "id": "fuse401", + "name": "GPR5_CFG9", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0191" + }, + { + "id": "fuse402", + "name": "GPR5_CFG10", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0192" + }, + { + "id": "fuse403", + "name": "GPR5_CFG11", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0193" + }, + { + "id": "fuse404", + "name": "GPR5_CFG12", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0194" + }, + { + "id": "fuse405", + "name": "GPR5_CFG13", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0195" + }, + { + "id": "fuse406", + "name": "GPR5_CFG14", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0196" + }, + { + "id": "fuse407", + "name": "GPR5_CFG15", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0197" + } + ] + }, + { + "group": { + "name": "GPR6_CFG", + "description": "General purpose fuse 6" + }, + "registers": [ + { + "id": "fuse408", + "name": "GPR6_CFG0", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0198", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse409", + "name": "GPR6_CFG1", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x0199", + "reg_width": 16 + }, + { + "id": "fuse410", + "name": "GPR6_CFG2", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x019A", + "reg_width": 16 + }, + { + "id": "fuse411", + "name": "GPR6_CFG3", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x019B", + "reg_width": 16 + }, + { + "id": "fuse412", + "name": "GPR6_CFG4", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x019C", + "reg_width": 16 + }, + { + "id": "fuse413", + "name": "GPR6_CFG5", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x019D", + "reg_width": 16 + }, + { + "id": "fuse414", + "name": "GPR6_CFG6", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x019E", + "reg_width": 16 + }, + { + "id": "fuse415", + "name": "GPR6_CFG7", + "description": "General Purpose fuse for customer use. Can be programmed in OEM OPEN or OEM closed.", + "index_int": "0x019F", + "lock": { + "register_id": "fuse11", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Reserved 0x1A0-0x1BF", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved416", + "name": "Reserved 0x1A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A0", + "is_reserved": true + }, + { + "id": "Reserved417", + "name": "Reserved 0x1A1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A1", + "is_reserved": true + }, + { + "id": "Reserved418", + "name": "Reserved 0x1A2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A2", + "is_reserved": true + }, + { + "id": "Reserved419", + "name": "Reserved 0x1A3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A3", + "is_reserved": true + }, + { + "id": "Reserved420", + "name": "Reserved 0x1A4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A4", + "is_reserved": true + }, + { + "id": "Reserved421", + "name": "Reserved 0x1A5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A5", + "is_reserved": true + }, + { + "id": "Reserved422", + "name": "Reserved 0x1A6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A6", + "is_reserved": true + }, + { + "id": "Reserved423", + "name": "Reserved 0x1A7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A7", + "is_reserved": true + }, + { + "id": "Reserved424", + "name": "Reserved 0x1A8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A8", + "is_reserved": true + }, + { + "id": "Reserved425", + "name": "Reserved 0x1A9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01A9", + "is_reserved": true + }, + { + "id": "Reserved426", + "name": "Reserved 0x1AA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AA", + "is_reserved": true + }, + { + "id": "Reserved427", + "name": "Reserved 0x1AB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AB", + "is_reserved": true + }, + { + "id": "Reserved428", + "name": "Reserved 0x1AC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AC", + "is_reserved": true + }, + { + "id": "Reserved429", + "name": "Reserved 0x1AD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AD", + "is_reserved": true + }, + { + "id": "Reserved430", + "name": "Reserved 0x1AE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AE", + "is_reserved": true + }, + { + "id": "Reserved431", + "name": "Reserved 0x1AF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01AF", + "is_reserved": true + }, + { + "id": "Reserved432", + "name": "Reserved 0x1B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B0", + "is_reserved": true + }, + { + "id": "Reserved433", + "name": "Reserved 0x1B1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B1", + "is_reserved": true + }, + { + "id": "Reserved434", + "name": "Reserved 0x1B2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B2", + "is_reserved": true + }, + { + "id": "Reserved435", + "name": "Reserved 0x1B3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B3", + "is_reserved": true + }, + { + "id": "Reserved436", + "name": "Reserved 0x1B4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B4", + "is_reserved": true + }, + { + "id": "Reserved437", + "name": "Reserved 0x1B5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B5", + "is_reserved": true + }, + { + "id": "Reserved438", + "name": "Reserved 0x1B6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B6", + "is_reserved": true + }, + { + "id": "Reserved439", + "name": "Reserved 0x1B7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B7", + "is_reserved": true + }, + { + "id": "Reserved440", + "name": "Reserved 0x1B8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B8", + "is_reserved": true + }, + { + "id": "Reserved441", + "name": "Reserved 0x1B9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01B9", + "is_reserved": true + }, + { + "id": "Reserved442", + "name": "Reserved 0x1BA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BA", + "is_reserved": true + }, + { + "id": "Reserved443", + "name": "Reserved 0x1BB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BB", + "is_reserved": true + }, + { + "id": "Reserved444", + "name": "Reserved 0x1BC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BC", + "is_reserved": true + }, + { + "id": "Reserved445", + "name": "Reserved 0x1BD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BD", + "is_reserved": true + }, + { + "id": "Reserved446", + "name": "Reserved 0x1BE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BE", + "is_reserved": true + }, + { + "id": "Reserved447", + "name": "Reserved 0x1BF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01BF", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "OEM_PQC_SRKH", + "description": "OEM PQC SRK Hash" + }, + "registers": [ + { + "id": "fuse448", + "name": "OEM_PQC_SRKH0", + "description": "OEM_PQC_SRKH0", + "index_int": "0x01C0", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse449", + "name": "OEM_PQC_SRKH1", + "description": "OEM_PQC_SRKH1", + "index_int": "0x01C1", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse450", + "name": "OEM_PQC_SRKH2", + "description": "OEM_PQC_SRKH2", + "index_int": "0x01C2", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse451", + "name": "OEM_PQC_SRKH3", + "description": "OEM_PQC_SRKH3", + "index_int": "0x01C3", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse452", + "name": "OEM_PQC_SRKH4", + "description": "OEM_PQC_SRKH4", + "index_int": "0x01C4", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse453", + "name": "OEM_PQC_SRKH5", + "description": "OEM_PQC_SRKH5", + "index_int": "0x01C5", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse454", + "name": "OEM_PQC_SRKH6", + "description": "OEM_PQC_SRKH6", + "index_int": "0x01C6", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse455", + "name": "OEM_PQC_SRKH7", + "description": "OEM_PQC_SRKH7", + "index_int": "0x01C7", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse456", + "name": "OEM_PQC_SRKH8", + "description": "OEM_PQC_SRKH8", + "index_int": "0x01C8", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse457", + "name": "OEM_PQC_SRKH9", + "description": "OEM_PQC_SRKH9", + "index_int": "0x01C9", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse458", + "name": "OEM_PQC_SRKH10", + "description": "OEM_PQC_SRKH10", + "index_int": "0x01CA", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse459", + "name": "OEM_PQC_SRKH11", + "description": "OEM_PQC_SRKH11", + "index_int": "0x01CB", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse460", + "name": "OEM_PQC_SRKH12", + "description": "OEM_PQC_SRKH12", + "index_int": "0x01CC", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse461", + "name": "OEM_PQC_SRKH13", + "description": "OEM_PQC_SRKH13", + "index_int": "0x01CD", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse462", + "name": "OEM_PQC_SRKH14", + "description": "OEM_PQC_SRKH14", + "index_int": "0x01CE", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse463", + "name": "OEM_PQC_SRKH15", + "description": "OEM_PQC_SRKH15", + "index_int": "0x01CF", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + } + ] + }, + { + "group": { + "name": "Reserved 0x1D0-0x20F", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved464", + "name": "Reserved 0x1D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D0", + "is_reserved": true + }, + { + "id": "Reserved465", + "name": "Reserved 0x1D1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D1", + "is_reserved": true + }, + { + "id": "Reserved466", + "name": "Reserved 0x1D2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D2", + "is_reserved": true + }, + { + "id": "Reserved467", + "name": "Reserved 0x1D3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D3", + "is_reserved": true + }, + { + "id": "Reserved468", + "name": "Reserved 0x1D4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D4", + "is_reserved": true + }, + { + "id": "Reserved469", + "name": "Reserved 0x1D5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D5", + "is_reserved": true + }, + { + "id": "Reserved470", + "name": "Reserved 0x1D6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D6", + "is_reserved": true + }, + { + "id": "Reserved471", + "name": "Reserved 0x1D7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D7", + "is_reserved": true + }, + { + "id": "Reserved472", + "name": "Reserved 0x1D8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D8", + "is_reserved": true + }, + { + "id": "Reserved473", + "name": "Reserved 0x1D9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01D9", + "is_reserved": true + }, + { + "id": "Reserved474", + "name": "Reserved 0x1DA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DA", + "is_reserved": true + }, + { + "id": "Reserved475", + "name": "Reserved 0x1DB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DB", + "is_reserved": true + }, + { + "id": "Reserved476", + "name": "Reserved 0x1DC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DC", + "is_reserved": true + }, + { + "id": "Reserved477", + "name": "Reserved 0x1DD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DD", + "is_reserved": true + }, + { + "id": "Reserved478", + "name": "Reserved 0x1DE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DE", + "is_reserved": true + }, + { + "id": "Reserved479", + "name": "Reserved 0x1DF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01DF", + "is_reserved": true + }, + { + "id": "Reserved480", + "name": "Reserved 0x1E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E0", + "is_reserved": true + }, + { + "id": "Reserved481", + "name": "Reserved 0x1E1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E1", + "is_reserved": true + }, + { + "id": "Reserved482", + "name": "Reserved 0x1E2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E2", + "is_reserved": true + }, + { + "id": "Reserved483", + "name": "Reserved 0x1E3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E3", + "is_reserved": true + }, + { + "id": "Reserved484", + "name": "Reserved 0x1E4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E4", + "is_reserved": true + }, + { + "id": "Reserved485", + "name": "Reserved 0x1E5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E5", + "is_reserved": true + }, + { + "id": "Reserved486", + "name": "Reserved 0x1E6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E6", + "is_reserved": true + }, + { + "id": "Reserved487", + "name": "Reserved 0x1E7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E7", + "is_reserved": true + }, + { + "id": "Reserved488", + "name": "Reserved 0x1E8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E8", + "is_reserved": true + }, + { + "id": "Reserved489", + "name": "Reserved 0x1E9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01E9", + "is_reserved": true + }, + { + "id": "Reserved490", + "name": "Reserved 0x1EA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EA", + "is_reserved": true + }, + { + "id": "Reserved491", + "name": "Reserved 0x1EB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EB", + "is_reserved": true + }, + { + "id": "Reserved492", + "name": "Reserved 0x1EC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EC", + "is_reserved": true + }, + { + "id": "Reserved493", + "name": "Reserved 0x1ED", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01ED", + "is_reserved": true + }, + { + "id": "Reserved494", + "name": "Reserved 0x1EE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EE", + "is_reserved": true + }, + { + "id": "Reserved495", + "name": "Reserved 0x1EF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01EF", + "is_reserved": true + }, + { + "id": "Reserved496", + "name": "Reserved 0x1F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F0", + "is_reserved": true + }, + { + "id": "Reserved497", + "name": "Reserved 0x1F1", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F1", + "is_reserved": true + }, + { + "id": "Reserved498", + "name": "Reserved 0x1F2", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F2", + "is_reserved": true + }, + { + "id": "Reserved499", + "name": "Reserved 0x1F3", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F3", + "is_reserved": true + }, + { + "id": "Reserved500", + "name": "Reserved 0x1F4", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F4", + "is_reserved": true + }, + { + "id": "Reserved501", + "name": "Reserved 0x1F5", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F5", + "is_reserved": true + }, + { + "id": "Reserved502", + "name": "Reserved 0x1F6", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F6", + "is_reserved": true + }, + { + "id": "Reserved503", + "name": "Reserved 0x1F7", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F7", + "is_reserved": true + }, + { + "id": "Reserved504", + "name": "Reserved 0x1F8", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F8", + "is_reserved": true + }, + { + "id": "Reserved505", + "name": "Reserved 0x1F9", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01F9", + "is_reserved": true + }, + { + "id": "Reserved506", + "name": "Reserved 0x1FA", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FA", + "is_reserved": true + }, + { + "id": "Reserved507", + "name": "Reserved 0x1FB", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FB", + "is_reserved": true + }, + { + "id": "Reserved508", + "name": "Reserved 0x1FC", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FC", + "is_reserved": true + }, + { + "id": "Reserved509", + "name": "Reserved 0x1FD", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FD", + "is_reserved": true + }, + { + "id": "Reserved510", + "name": "Reserved 0x1FE", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FE", + "is_reserved": true + }, + { + "id": "Reserved511", + "name": "Reserved 0x1FF", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x01FF", + "is_reserved": true + }, + { + "id": "Reserved512", + "name": "Reserved 0x200", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0200", + "is_reserved": true + }, + { + "id": "Reserved513", + "name": "Reserved 0x201", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0201", + "is_reserved": true + }, + { + "id": "Reserved514", + "name": "Reserved 0x202", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0202", + "is_reserved": true + }, + { + "id": "Reserved515", + "name": "Reserved 0x203", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0203", + "is_reserved": true + }, + { + "id": "Reserved516", + "name": "Reserved 0x204", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0204", + "is_reserved": true + }, + { + "id": "Reserved517", + "name": "Reserved 0x205", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0205", + "is_reserved": true + }, + { + "id": "Reserved518", + "name": "Reserved 0x206", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0206", + "is_reserved": true + }, + { + "id": "Reserved519", + "name": "Reserved 0x207", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0207", + "is_reserved": true + }, + { + "id": "Reserved520", + "name": "Reserved 0x208", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0208", + "is_reserved": true + }, + { + "id": "Reserved521", + "name": "Reserved 0x209", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0209", + "is_reserved": true + }, + { + "id": "Reserved522", + "name": "Reserved 0x20A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020A", + "is_reserved": true + }, + { + "id": "Reserved523", + "name": "Reserved 0x20B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020B", + "is_reserved": true + }, + { + "id": "Reserved524", + "name": "Reserved 0x20C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020C", + "is_reserved": true + }, + { + "id": "Reserved525", + "name": "Reserved 0x20D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020D", + "is_reserved": true + }, + { + "id": "Reserved526", + "name": "Reserved 0x20E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020E", + "is_reserved": true + }, + { + "id": "Reserved527", + "name": "Reserved 0x20F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x020F", + "is_reserved": true + } + ] + }, + { + "group": { + "name": "V2X_SHE_MONO_CNT", + "description": "V2X SHE MONO cnt" + }, + "registers": [ + { + "id": "fuse528", + "name": "V2X_SHE_MONO_CNT0", + "description": "V2X_SHE_MONO_CNT0", + "index_int": "0x0210", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse529", + "name": "V2X_SHE_MONO_CNT1", + "description": "V2X_SHE_MONO_CNT1", + "index_int": "0x0211", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse530", + "name": "V2X_SHE_MONO_CNT2", + "description": "V2X_SHE_MONO_CNT2", + "index_int": "0x0212", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse531", + "name": "V2X_SHE_MONO_CNT3", + "description": "V2X_SHE_MONO_CNT3", + "index_int": "0x0213", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse532", + "name": "V2X_SHE_MONO_CNT4", + "description": "V2X_SHE_MONO_CNT4", + "index_int": "0x0214", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse533", + "name": "V2X_SHE_MONO_CNT5", + "description": "V2X_SHE_MONO_CNT5", + "index_int": "0x0215", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse534", + "name": "V2X_SHE_MONO_CNT6", + "description": "V2X_SHE_MONO_CNT6", + "index_int": "0x0216", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse535", + "name": "V2X_SHE_MONO_CNT7", + "description": "V2X_SHE_MONO_CNT7", + "index_int": "0x0217", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse536", + "name": "V2X_SHE_MONO_CNT8", + "description": "V2X_SHE_MONO_CNT8", + "index_int": "0x0218", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse537", + "name": "V2X_SHE_MONO_CNT9", + "description": "V2X_SHE_MONO_CNT9", + "index_int": "0x0219", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse538", + "name": "V2X_SHE_MONO_CNT10", + "description": "V2X_SHE_MONO_CNT10", + "index_int": "0x021A", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse539", + "name": "V2X_SHE_MONO_CNT11", + "description": "V2X_SHE_MONO_CNT11", + "index_int": "0x021B", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse540", + "name": "V2X_SHE_MONO_CNT12", + "description": "V2X_SHE_MONO_CNT12", + "index_int": "0x021C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse541", + "name": "V2X_SHE_MONO_CNT13", + "description": "V2X_SHE_MONO_CNT13", + "index_int": "0x021D", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse542", + "name": "V2X_SHE_MONO_CNT14", + "description": "V2X_SHE_MONO_CNT14", + "index_int": "0x021E", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse543", + "name": "V2X_SHE_MONO_CNT15", + "description": "V2X_SHE_MONO_CNT15", + "index_int": "0x021F", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse544", + "name": "V2X_SHE_MONO_CNT16", + "description": "V2X_SHE_MONO_CNT16", + "index_int": "0x0220", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse545", + "name": "V2X_SHE_MONO_CNT17", + "description": "V2X_SHE_MONO_CNT17", + "index_int": "0x0221", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse546", + "name": "V2X_SHE_MONO_CNT18", + "description": "V2X_SHE_MONO_CNT18", + "index_int": "0x0222", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse547", + "name": "V2X_SHE_MONO_CNT19", + "description": "V2X_SHE_MONO_CNT19", + "index_int": "0x0223", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse548", + "name": "V2X_SHE_MONO_CNT20", + "description": "V2X_SHE_MONO_CNT20", + "index_int": "0x0224", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse549", + "name": "V2X_SHE_MONO_CNT21", + "description": "V2X_SHE_MONO_CNT21", + "index_int": "0x0225", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse550", + "name": "V2X_SHE_MONO_CNT22", + "description": "V2X_SHE_MONO_CNT22", + "index_int": "0x0226", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse551", + "name": "V2X_SHE_MONO_CNT23", + "description": "V2X_SHE_MONO_CNT23", + "index_int": "0x0227", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse552", + "name": "V2X_SHE_MONO_CNT24", + "description": "V2X_SHE_MONO_CNT24", + "index_int": "0x0228", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse553", + "name": "V2X_SHE_MONO_CNT25", + "description": "V2X_SHE_MONO_CNT25", + "index_int": "0x0229", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse554", + "name": "V2X_SHE_MONO_CNT26", + "description": "V2X_SHE_MONO_CNT26", + "index_int": "0x022A", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse555", + "name": "V2X_SHE_MONO_CNT27", + "description": "V2X_SHE_MONO_CNT27", + "index_int": "0x022B", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse556", + "name": "V2X_SHE_MONO_CNT28", + "description": "V2X_SHE_MONO_CNT28", + "index_int": "0x022C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse557", + "name": "V2X_SHE_MONO_CNT29", + "description": "V2X_SHE_MONO_CNT29", + "index_int": "0x022D", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse558", + "name": "V2X_SHE_MONO_CNT30", + "description": "V2X_SHE_MONO_CNT30", + "index_int": "0x022E", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse559", + "name": "V2X_SHE_MONO_CNT31", + "description": "V2X_SHE_MONO_CNT31", + "index_int": "0x022F", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse560", + "name": "V2X_SHE_MONO_CNT32", + "description": "V2X_SHE_MONO_CNT32", + "index_int": "0x0230", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse561", + "name": "V2X_SHE_MONO_CNT33", + "description": "V2X_SHE_MONO_CNT33", + "index_int": "0x0231", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse562", + "name": "V2X_SHE_MONO_CNT34", + "description": "V2X_SHE_MONO_CNT34", + "index_int": "0x0232", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse563", + "name": "V2X_SHE_MONO_CNT35", + "description": "V2X_SHE_MONO_CNT35", + "index_int": "0x0233", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse564", + "name": "V2X_SHE_MONO_CNT36", + "description": "V2X_SHE_MONO_CNT36", + "index_int": "0x0234", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse565", + "name": "V2X_SHE_MONO_CNT37", + "description": "V2X_SHE_MONO_CNT37", + "index_int": "0x0235", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse566", + "name": "V2X_SHE_MONO_CNT38", + "description": "V2X_SHE_MONO_CNT38", + "index_int": "0x0236", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse567", + "name": "V2X_SHE_MONO_CNT39", + "description": "V2X_SHE_MONO_CNT39", + "index_int": "0x0237", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse568", + "name": "V2X_SHE_MONO_CNT40", + "description": "V2X_SHE_MONO_CNT40", + "index_int": "0x0238", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse569", + "name": "V2X_SHE_MONO_CNT41", + "description": "V2X_SHE_MONO_CNT41", + "index_int": "0x0239", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse570", + "name": "V2X_SHE_MONO_CNT42", + "description": "V2X_SHE_MONO_CNT42", + "index_int": "0x023A", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse571", + "name": "V2X_SHE_MONO_CNT43", + "description": "V2X_SHE_MONO_CNT43", + "index_int": "0x023B", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse572", + "name": "V2X_SHE_MONO_CNT44", + "description": "V2X_SHE_MONO_CNT44", + "index_int": "0x023C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse573", + "name": "V2X_SHE_MONO_CNT45", + "description": "V2X_SHE_MONO_CNT45", + "index_int": "0x023D", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse574", + "name": "V2X_SHE_MONO_CNT46", + "description": "V2X_SHE_MONO_CNT46", + "index_int": "0x023E", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse575", + "name": "V2X_SHE_MONO_CNT47", + "description": "V2X_SHE_MONO_CNT47", + "index_int": "0x023F", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse576", + "name": "V2X_SHE_MONO_CNT48", + "description": "V2X_SHE_MONO_CNT48", + "index_int": "0x0240", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse577", + "name": "V2X_SHE_MONO_CNT49", + "description": "V2X_SHE_MONO_CNT49", + "index_int": "0x0241", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse578", + "name": "V2X_SHE_MONO_CNT50", + "description": "V2X_SHE_MONO_CNT50", + "index_int": "0x0242", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse579", + "name": "V2X_SHE_MONO_CNT51", + "description": "V2X_SHE_MONO_CNT51", + "index_int": "0x0243", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse580", + "name": "V2X_SHE_MONO_CNT52", + "description": "V2X_SHE_MONO_CNT52", + "index_int": "0x0244", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse581", + "name": "V2X_SHE_MONO_CNT53", + "description": "V2X_SHE_MONO_CNT53", + "index_int": "0x0245", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse582", + "name": "V2X_SHE_MONO_CNT54", + "description": "V2X_SHE_MONO_CNT54", + "index_int": "0x0246", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse583", + "name": "V2X_SHE_MONO_CNT55", + "description": "V2X_SHE_MONO_CNT55", + "index_int": "0x0247", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse584", + "name": "V2X_SHE_MONO_CNT56", + "description": "V2X_SHE_MONO_CNT56", + "index_int": "0x0248", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse585", + "name": "V2X_SHE_MONO_CNT57", + "description": "V2X_SHE_MONO_CNT57", + "index_int": "0x0249", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse586", + "name": "V2X_SHE_MONO_CNT58", + "description": "V2X_SHE_MONO_CNT58", + "index_int": "0x024A", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse587", + "name": "V2X_SHE_MONO_CNT59", + "description": "V2X_SHE_MONO_CNT59", + "index_int": "0x024B", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse588", + "name": "V2X_SHE_MONO_CNT60", + "description": "V2X_SHE_MONO_CNT60", + "index_int": "0x024C", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse589", + "name": "V2X_SHE_MONO_CNT61", + "description": "V2X_SHE_MONO_CNT61", + "index_int": "0x024D", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse590", + "name": "V2X_SHE_MONO_CNT62", + "description": "V2X_SHE_MONO_CNT62", + "index_int": "0x024E", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse590-bits-0-15", + "name": "V2X_SHE_MONO_CNT", + "description": "V2X_SHE_MONO_CNT62" + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x24F-0x261", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved591", + "name": "Reserved 0x24F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x024F", + "is_reserved": true, + "reg_width": 16, + "bitfields": [ + { + "width": 2 + }, + { + "width": 4 + }, + { + "width": 10 + } + ] + }, + { + "id": "Reserved592", + "name": "Reserved 0x250", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0250", + "is_reserved": true + }, + { + "id": "Reserved593", + "name": "Reserved 0x251", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0251", + "is_reserved": true + }, + { + "id": "Reserved594", + "name": "Reserved 0x252", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0252", + "is_reserved": true + }, + { + "id": "Reserved595", + "name": "Reserved 0x253", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0253", + "is_reserved": true + }, + { + "id": "Reserved596", + "name": "Reserved 0x254", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0254", + "is_reserved": true + }, + { + "id": "Reserved597", + "name": "Reserved 0x255", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0255", + "is_reserved": true + }, + { + "id": "Reserved598", + "name": "Reserved 0x256", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0256", + "is_reserved": true + }, + { + "id": "Reserved599", + "name": "Reserved 0x257", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0257", + "is_reserved": true + }, + { + "id": "Reserved600", + "name": "Reserved 0x258", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0258", + "is_reserved": true + }, + { + "id": "Reserved601", + "name": "Reserved 0x259", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0259", + "is_reserved": true + }, + { + "id": "Reserved602", + "name": "Reserved 0x25A", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025A", + "is_reserved": true + }, + { + "id": "Reserved603", + "name": "Reserved 0x25B", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025B", + "is_reserved": true + }, + { + "id": "Reserved604", + "name": "Reserved 0x25C", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025C", + "is_reserved": true + }, + { + "id": "Reserved605", + "name": "Reserved 0x25D", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025D", + "is_reserved": true + }, + { + "id": "Reserved606", + "name": "Reserved 0x25E", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025E", + "is_reserved": true + }, + { + "id": "Reserved607", + "name": "Reserved 0x25F", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x025F", + "is_reserved": true + }, + { + "id": "Reserved608", + "name": "Reserved 0x260", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0260", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved609", + "name": "Reserved 0x261", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "index_int": "0x0261", + "is_reserved": true + } + ] + } + ] +} \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/database.yaml new file mode 100644 index 0000000..dbcaa73 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/database.yaml @@ -0,0 +1,141 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + purpose: i.MX RT Crossover MCUs + spsdk_predecessor_name: rt1010 + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1010-crossover-mcu-with-arm-cortex-m7-core:i.MX-RT1010 + memory_map: + itcm: + start_int: "0x0" + size_int: "0x20000" + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: "0x10000" + size_int: "0x10000" + warning_msg: RAM above 0x10000 is not initialized by default + dtcm: + start_int: "0x20000000" + size_int: "0x20000" + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: "0x20010000" + size_int: "0x10000" + warning_msg: RAM above 0x20010000 is not initialized by default + ocram: + start_int: "0x20200000" + size_int: "0x20000" + external: false + non_xip_type: int_ram + flexspi: + start_int: "0x60000000" + size_int: "0x10000000" + external: true + non_xip_type: none + isp: + rom: + protocol: sdp + usb: + - vid: 0x1FC9 + pid: 0x0145 + flashloader: + protocol: mboot + usb: + - vid: 0x15a2 + pid: 0x0073 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: + tool: blhost + no_verify: True + grouped_registers: + - uid: otfad_sw_gp2 + name: SW_GP2 + width: 128 + reversed: True + reverse_subregs_order: True + config_as_hexstring: true + description: General purpose SW key. + sub_regs: [fuse41, fuse42, fuse43, fuse44] + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x0000_2000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_hab" + + # ======== HABv4 section ======== + hab: + mem_types: + flexspi_nor: + initial_load_size: 0x2000 + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== OTFAD section ======== + otfad: + keyblob_byte_swap_cnt: 0 + sb_21_supported: False + has_kek_fuses: True + supports_key_scrambling: True + additional_template: ["otfad_scramble"] + additional_template_text: | + When using OTFAD XIP, the core clock must operate at a higher frequency than the FlexSPI clock + otherwise, OTFAD operation may become unreliable. + + In case blank string is used, the output is not generated. If the filename contains directory, + the output folder will be ignored and the full path from filename will be used. + + fuses_1: + _name: Configuration of fuses for OTFAD1 + _no_verify: True + otfad_sw_gp2: __kek + fuse35: + fuse35-bit-8: 1 + fuse35-bit-10: __scramble_enabled + fuse35-bits-0-7: __key_scramble_align + fuse34: __key_scramble_mask + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + hab_container: 0x0 + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + hab_container: 0x1000 + + # ======== Memory configuration ======== + memcfg: + peripherals: + flexspi_nor: + instances: [0] + flexspi_nand: + instances: [0] + spi_nor: + instances: [0, 1] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/fcb_flexspi_nor.json new file mode 100644 index 0000000..040c5ce --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/fcb_flexspi_nor.json @@ -0,0 +1,25588 @@ +{ + "cpu": "MIMXRT1010", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix", + "default_value_int": "0x56010100" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc.", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0" + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved0_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command", + "default_value_int": "0x0" + }, + { + "id": "field1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false", + "default_value_int": "0x0" + }, + { + "id": "field1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "reserve2_0", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "Reserved1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "Reserved2_1", + "deprecated_names": ["reserve2_1"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "Reserved2_2", + "deprecated_names": ["reserve2_2"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "Reserved2_3", + "deprecated_names": ["reserve2_3"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "Reserved2_4", + "deprecated_names": ["reserve2_4"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "Reserved2_5", + "deprecated_names": ["reserve2_5"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "Reserved2_6", + "deprecated_names": ["reserve2_6"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "Reserved2_7", + "deprecated_names": ["reserve2_7"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "Reserved2_8", + "deprecated_names": ["reserve2_8"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "Reserved2_9", + "deprecated_names": ["reserve2_9"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "Reserved2_10", + "deprecated_names": ["reserve2_10"], + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/fuses.json new file mode 100644 index 0000000..020d73d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1010/fuses.json @@ -0,0 +1,2350 @@ +{ + "cpu": "mimxrt1010", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Lock bits allowing to lock access to specified fuses" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCKS", + "description": "Fuse LOCKS", + "offset_int": "0x0400", + "index_int": "0", + "bitfields": [ + { + "width": 2, + "id": "fuse0-bits-0-1", + "name": "TESTER_LOCK", + "description": "Perform lock on Tester programed fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-2-3", + "name": "BOOT_CFG_LOCK", + "description": "Perform lock on BOOT related fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse0-bit-6", + "name": "SJC_RESP_LOCK", + "description": "SJC response lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read, sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-8-9", + "name": "MAC_ADDR_LOCK", + "description": "Lock MAC_ADDR fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-10-11", + "name": "GP1_LOCK", + "description": "Lock for General Purpose fuse register #1 (GP1)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-12-13", + "name": "GP2_LOCK", + "description": "Lock for General Purpose fuse register #2 (GP2)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-16", + "name": "SW_GP1_LOCK", + "description": "Lock for SW_GP1 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-18-19", + "name": "ANALOG_LOCK", + "description": "Lock for analog related fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-21", + "name": "SW_GP2_LOCK", + "description": "WP and OP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-22", + "name": "MISC_CONF_LOCK", + "description": "RP Lock for MISC_CONF0, MISC_CONF1 fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-23", + "name": "SW_GP2_RLOCK", + "description": "RP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-26-27", + "name": "GP3_LOCK", + "description": "Lock for GP3 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-31", + "name": "FIELD_RETURN", + "description": "Configure device for field return testing. Fuse burning is protected by CSF command, with proper parameter passed. Write / OP protected by FIELD_RETURN_LOCK bit in control register.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Device is in functional / secure mode." + }, + { + "name": "1", + "value": 1, + "description": "Device is open for 'field-return' testing." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "IDs", + "description": "Different identifiers" + }, + "registers": [ + { + "id": "fuse1", + "name": "LOT_NO_ENC1", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[42:11]" + ], + "offset_int": "0x0410", + "index_int": "0x0001", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse1-bits-0-31", + "name": "LOT_NO_ENC[42:11]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse2", + "name": "LOT_NO_ENC0_WAFER_COORD", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[10:0]" + ], + "offset_int": "0x0420", + "index_int": "0x0002", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 11, + "id": "fuse2-bits-0-10", + "name": "LOT_NO_ENC[10:0]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + }, + { + "width": 5, + "id": "fuse2-bits-11-15", + "name": "WAFER_NO[4:0]", + "description": "The wafer number of the wafer on which the device was fabricated/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-16-23", + "name": "DIE-Y-CORDINATE[7:0]", + "description": "The Y-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-24-31", + "name": "DIE-X-CORDINATE[7:0]", + "description": "The X-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse3", + "name": "SI_REV", + "description": "Fuse SI_REV", + "deprecated_names": [ + "SI_REV[3:0]" + ], + "offset_int": "0x0430", + "index_int": "0x0003", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 4, + "id": "fuse3-bits-16-19", + "name": "SI_REV[3:0]", + "description": "Silicon Revision number." + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse4", + "name": "TESTER_CFG", + "description": "Fuse TESTER_CFG", + "offset_int": "0x0440", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse4-bit-1", + "name": "SEC_CONFIG[0]", + "description": "Security Configuration Mode, and block of debugging of security HW, by JTAG" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse4-bits-16-17", + "name": "SPEED_GRADING[1:0]", + "description": "Burned by tester program, for indicating IC core speed" + }, + { + "width": 2, + "id": "fuse4-bits-18-19", + "name": "PKGINFO[1:0]", + "description": "Burned by tester program, for indicating IC package type" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Boot config", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse5", + "name": "BOOT_CFG0", + "description": "Fuse BOOT_CFG0", + "offset_int": "0x0450", + "index_int": "0x0005", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse5-bit-0", + "name": "EncryptedXIP", + "description": "Support for the encrypted bootable image. It is applied only if BT_FUSE_SEL fuse bit is set. Otherwise the value is retrieved from the pins.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "0 - Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "1 - Enabled" + } + ] + }, + { + "width": 3, + "id": "fuse5-bits-1-3", + "name": "FLASH_TYPE", + "description": "FLASH type selection, depending on selected boot device.", + "values": [ + { + "name": "000", + "value": 0, + "description": "000-Device supports 3B read by default" + }, + { + "name": "001", + "value": 1, + "description": "001-Device supports 4B read by default" + }, + { + "name": "010", + "value": 2, + "description": "010-HyperFlash 1V8" + }, + { + "name": "011", + "value": 3, + "description": "011-HyperFlash 3V3" + }, + { + "name": "100", + "value": 4, + "description": "100-MXIC Octal DDR" + }, + { + "name": "101", + "value": 5, + "description": "101 - Micron Octal DDR" + }, + { + "name": "111", + "value": 7, + "description": "111 - QSPI device supports 3B read by default (on secondary pinmux option)" + } + ] + }, + { + "width": 4, + "id": "fuse5-bits-4-7", + "name": "Boot_Device_Selection", + "description": "Boot device selection.", + "values": [ + { + "name": "FlexSPI NOR", + "value": 0, + "description": "0000 - FlexSPI (Serial NOR)" + }, + { + "name": "SEMC (NOR)", + "value": 1, + "description": "0001 - SEMC (NOR)" + }, + { + "name": "SEMC (NAND)", + "value": 2, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SEMC (NAND)_1", + "value": 3, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SD (SDR12)", + "value": 4, + "description": "0100 - SD/SDXC Speed (Normal/SDR12)" + }, + { + "name": "SD (SDR25)", + "value": 5, + "description": "0101 - SD/SDXC Speed (High/SDR25)" + }, + { + "name": "SD (SDR50)", + "value": 6, + "description": "0110 - SD/SDXC Speed (SDR50)" + }, + { + "name": "SD (SDR104)", + "value": 7, + "description": "0111 - SD/SDXC Speed (SDR104)" + }, + { + "name": "eMMC: Normal", + "value": 8, + "description": "1000 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: Normal/FB", + "value": 9, + "description": "1001 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Enabled)" + }, + { + "name": "eMMC: High", + "value": 10, + "description": "1010 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: High/FB", + "value": 11, + "description": "1011 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Enabled)" + }, + { + "name": "FlexSPI NAND 50MHz 12b", + "value": 12, + "description": "1100 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b", + "value": 13, + "description": "1101 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + }, + { + "name": "FlexSPI NAND 50MHz 12b 1", + "value": 14, + "description": "1110 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b 1", + "value": 15, + "description": "1111 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + } + ] + }, + { + "width": 8, + "id": "fuse5-bits-8-15", + "name": "BOOT_CFG2", + "description": "BOOT configuration register #2, Usage varies, depending on selected boot device." + }, + { + "width": 8, + "id": "fuse5-bits-16-23", + "name": "BOOT_CFG3", + "description": "BOOT configuration register #3" + }, + { + "width": 8, + "id": "fuse5-bits-24-31", + "name": "BOOT_CFG4", + "description": "BOOT configuration register #4" + } + ] + }, + { + "id": "fuse6", + "name": "BOOT_CFG1", + "description": "Fuse BOOT_CFG1", + "offset_int": "0x0460", + "index_int": "0x0006", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-1", + "name": "SEC_CONFIG[1]", + "description": "Security Configuration (with SEC_CONFIG[0])", + "values": [ + { + "name": "Open", + "value": 0, + "description": "Open (allows any program image, even if the authentication fails)" + }, + { + "name": "Closed", + "value": 1, + "description": "Closed (The program image executes only if authenticated)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-2", + "name": "Boot Frequencies", + "description": "Determines, ARM Core and Bus frequencies during boot", + "values": [ + { + "name": "0", + "value": 0, + "description": "(ARM) 432 / (Bus)144 MHz" + }, + { + "name": "1", + "value": 1, + "description": "(ARM) 508 / (Bus) 127 MHz" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-4", + "name": "BT_FUSE_SEL", + "description": "Determines, whether using fuses for boot configuration, or GPIO /Serial loader", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-5", + "name": "FORCE_COLD_BOOT", + "description": "Force cold boot when A9 core come out of reset. Reflected in SBMR reg of SRC", + "values": [ + { + "name": "0", + "value": 0, + "description": "Default behavior equivalent to the rest of the i.MX6 family allowing a fast recovery from low power modes. That is, the ROM is allowed to jump to the address previously programmed in the SRC persistent register." + }, + { + "name": "1", + "value": 1, + "description": "Fast recovery path in the ROM is not allowed and a cold boot is always performed. Customers wanting a higher level of security should burn this fuse." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "fuse6-bits-8-11", + "name": "SDRAM_CONFIG", + "description": "TBD (SDRAM config options)", + "deprecated_names": [ + "SDRAM_CONFIG[7:0]" + ] + }, + { + "width": 1, + "id": "fuse6-bit-12", + "name": "OTFAD_KEY_SEL0", + "description": "AES key selection for OTFAD", + "values": [ + { + "name": "0", + "value": 0, + "description": "Select [127:0] of key selected by FUSE_OTP_KEY_TO_DCP_DISABLE" + }, + { + "name": "1", + "value": 1, + "description": "Select [255:128] of key selected by FUSE_OTP_KEY_TO_DCP_DISABLE" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-13", + "name": "OTFAD_KEY_SEL1", + "description": "AES key selection for OTFAD", + "values": [ + { + "name": "OTFAD_KEY_SEL0", + "value": 0, + "description": "From Key selected by OTFAD_KEY_SEL0" + }, + { + "name": "FUSE_SW_GPR2[127:0]", + "value": 1, + "description": "From FUSE_SW_GPR2[127:0]" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse6-bit-16", + "name": "FORCE_INTERNAL_BOOT", + "description": "Once been blown, the external BT_MODE[1:0] pins will be ignored, BootROM will take Boot Mode as “internal boot”.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Boot Mode from BT_MODE pins" + }, + { + "name": "1", + "value": 1, + "description": "BT_MODE pins be ignored, Boot Mode forced to \"internal boot\"" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-17", + "name": "SDP_DISABLE", + "description": "Disable/Enable serial download support", + "values": [ + { + "name": "0", + "value": 0, + "description": "Serial download supported" + }, + { + "name": "1", + "value": 1, + "description": "No serial download support" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-18", + "name": "SDP_READ_DISABLE", + "description": "Disable/Enable serial download READ_REGISTER command.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "SDP READ_REGISTER command is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "SDP READ_REGISTER is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-19", + "name": "DAP_SJC_SWD_SEL", + "description": "Control DAP works in JTAG or SWD mode", + "values": [ + { + "name": "0", + "value": 0, + "description": "DAP works in SWD mode" + }, + { + "name": "1", + "value": 1, + "description": "DAP works in JTAG mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-20", + "name": "SJC_DISABLE", + "description": "Disable/Enable the Secure JTAG Controller module. This fuse is used to create highest JTAG security level, where JTAG is totally blocked.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Secure JTAG Controller is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "Secure JTAG Controller is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-21", + "name": "WDOG_ENABLE", + "description": "Watchdog Enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Watch-Dog is disabled." + }, + { + "name": "Enable", + "value": 1, + "description": "Watch-Dog is enabled." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-22-23", + "name": "JTAG_SMODE[1:0]", + "description": "JTAG Security Mode. Controls the security mode of the JTAG debug interface", + "values": [ + { + "name": "00", + "value": 0, + "description": "JTAG enable mode" + }, + { + "name": "01", + "value": 1, + "description": "Secure JTAG mode" + }, + { + "name": "11", + "value": 3, + "description": "No debug mode" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-26", + "name": "KTE", + "description": "Kill Trace Enable. Enables tracing capability on ETM, and other modules", + "values": [ + { + "name": "0", + "value": 0, + "description": "Bus tracing is allowed" + }, + { + "name": "1", + "value": 1, + "description": "Bus tracing is allowed in case security state as defined by Secure JTAG allows it (for example, JTAG_ENABLE or NO_DEBUG)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-27", + "name": "JTAG_HEO", + "description": "JTAG HAB Enable Override. Disallows HAB JTAG enabling. The HAB may normally enable JTAG debugging by means of the HAB_JDE-bit in the OCOTP SCS register. The JTAG_HEO-bit can override this behavior", + "values": [ + { + "name": "0", + "value": 0, + "description": "HAB may enable JTAG debug access" + }, + { + "name": "1", + "value": 1, + "description": "HAB JTAG enable is overridden (HAB may not enable JTAG debug access)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse6-bits-30-31", + "name": "SD_PWR_CYCLE_SELECTION", + "description": "Select SD Power Cycle", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "2.5ms" + } + ] + } + ] + }, + { + "id": "fuse7", + "name": "BOOT_CFG2", + "description": "Fuse BOOT_CFG2", + "offset_int": "0x0470", + "index_int": "0x0007", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse7-bit-0", + "name": "Override SD Pad Settings", + "description": "Overrides ROM default value for SD PAD control register. When set ROM will override SD pad control register with value programmed into PAD_SETTINGS fuse bits.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-1", + "name": "BT_MPU_DISABLE", + "description": "The fuse bit is used for ROM to not enable MMU", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "MPU is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "MPU is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-2", + "name": "L1 I-Cache DISABLE", + "description": "The fuse bit is used for ROM to not enable L1 I-Cache", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "L1 I-Cache is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "L1 I-Cache is disabled during boot" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse7-bit-4", + "name": "UART Serial Download Disable", + "description": "Disable UART Serial Download", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse7-bit-10", + "name": "Boot Failure Indicator Pin Select[4]", + "description": "Indicate Boot Failure" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "fuse7-bits-16-19", + "name": "Boot Failure Indicator Pin Select[3:0]", + "description": "Miscellaneous power management configuration bits.", + "values": [ + { + "name": "gpio1.IO00", + "value": 0, + "description": "gpio1.IO00" + }, + { + "name": "gpio1.IO01", + "value": 1, + "description": "gpio1.IO01" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse7-bits-21-22", + "name": "LPB_BOOT", + "description": "Divide (Core / Bus) based on Boot Frequencies", + "values": [ + { + "name": "Div by 1", + "value": 0, + "description": "Div by 1" + }, + { + "name": "Div by 2", + "value": 1, + "description": "Div by 2" + }, + { + "name": "Div by 4", + "value": 2, + "description": "Div by 4" + }, + { + "name": "Div by 8", + "value": 3, + "description": "Div by 8" + } + ] + }, + { + "width": 1 + }, + { + "width": 7 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x480-0x4E0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved8", + "name": "Reserved 0x480", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0480", + "index_int": "0x0008", + "is_reserved": true, + "bitfields": [ + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved9", + "name": "Reserved 0x490", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0490", + "index_int": "0x0009", + "is_reserved": true, + "bitfields": [ + { + "width": 10 + }, + { + "width": 1 + }, + { + "width": 5 + }, + { + "width": 8 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved10", + "name": "Reserved 0x4A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04A0", + "index_int": "0x000A", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 24 + } + ] + }, + { + "id": "Reserved11", + "name": "Reserved 0x4B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04B0", + "index_int": "0x000B", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved12", + "name": "Reserved 0x4C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04C0", + "index_int": "0x000C", + "is_reserved": true, + "bitfields": [ + { + "width": 20 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved13", + "name": "Reserved 0x4D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04D0", + "index_int": "0x000D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved14", + "name": "Reserved 0x4E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04E0", + "index_int": "0x000E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "USB", + "description": "USB VID and PID" + }, + "registers": [ + { + "id": "fuse15", + "name": "USB_ID", + "description": "Fuse USB_ID", + "offset_int": "0x04F0", + "index_int": "0x000F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "operation_lock_int": "0x00080000" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse15-bits-0-15", + "name": "USB_VID", + "description": "USB VID", + "deprecated_names": [ + "USB_VID[31:0]" + ] + }, + { + "width": 16, + "id": "fuse15-bits-16-31", + "name": "USB_PID", + "description": "USB PID", + "deprecated_names": [ + "USB_PID[31:0]" + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x500-0x570", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved16", + "name": "Reserved 0x500", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0500", + "index_int": "0x0010", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved17", + "name": "Reserved 0x510", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0510", + "index_int": "0x0011", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved18", + "name": "Reserved 0x520", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0520", + "index_int": "0x0012", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved19", + "name": "Reserved 0x530", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0530", + "index_int": "0x0013", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved20", + "name": "Reserved 0x540", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0540", + "index_int": "0x0014", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved21", + "name": "Reserved 0x550", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0550", + "index_int": "0x0015", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved22", + "name": "Reserved 0x560", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0560", + "index_int": "0x0016", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved23", + "name": "Reserved 0x570", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0570", + "index_int": "0x0017", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "SRK Hash", + "description": "Super Root Keys Hash" + }, + "registers": [ + { + "id": "fuse24", + "name": "SRK_HASH[255:224]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0580", + "index_int": "0x0018" + }, + { + "id": "fuse25", + "name": "SRK_HASH[223:192]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0590", + "index_int": "0x0019" + }, + { + "id": "fuse26", + "name": "SRK_HASH[191:160]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05A0", + "index_int": "0x001A" + }, + { + "id": "fuse27", + "name": "SRK_HASH[159:128]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05B0", + "index_int": "0x001B" + }, + { + "id": "fuse28", + "name": "SRK_HASH[127:96]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05C0", + "index_int": "0x001C" + }, + { + "id": "fuse29", + "name": "SRK_HASH[95:64]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05D0", + "index_int": "0x001D" + }, + { + "id": "fuse30", + "name": "SRK_HASH[63:32]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05E0", + "index_int": "0x001E" + }, + { + "id": "fuse31", + "name": "SRK_HASH[31:0]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05F0", + "index_int": "0x001F" + } + ] + }, + { + "group": { + "name": "SJC", + "description": "Secure JTAG Controller" + }, + "registers": [ + { + "id": "fuse32", + "name": "SJC_RESP[31:0]", + "description": "Response reference value for the secure JTAG controller", + "offset_int": "0x0600", + "index_int": "0x0020", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + } + }, + { + "id": "fuse33", + "name": "SJC_RESP[63:32]", + "description": "Response reference value for the secure JTAG controller", + "offset_int": "0x0610", + "index_int": "0x0021", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + } + } + ] + }, + { + "group": { + "name": "OTFAD", + "description": "OTFAD encryption" + }, + "registers": [ + { + "id": "fuse34", + "name": "OTFAD_KEY_SCRAMBLE[31:0]", + "description": "Key scramble data value for key blob unwrap.", + "offset_int": "0x0620", + "index_int": "0x0022", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + } + }, + { + "id": "fuse35", + "name": "OTFAD_ENABLE", + "description": "Fuse OTFAD_ENABLE", + "offset_int": "0x0630", + "index_int": "0x0023", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse35-bits-0-7", + "name": "OTFAD_KEY_SCRAMBLE_ALIGN[7:0]", + "description": "4x 2-bit key scramble align select for key blob unwrap" + }, + { + "width": 1, + "id": "fuse35-bit-8", + "name": "OTFAD_ENABLE", + "description": "Reserved enable OTFAD description -- Move to GPR", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-9", + "name": "OTFAD_KEY_BLOB_EN", + "description": "enable key blob unwrap", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-10", + "name": "ENB_OTFAD_KEY_SCRAMBLE", + "description": "Enable KEK scramble during key blob processing", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse35-bit-11", + "name": "RESTRICT_OTFAD_IPS", + "description": "Restrict IPS access to CR, SR and CRC.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse35-bit-13", + "name": "OTFAD_DISABLE_OVERRIDE", + "description": "disable otfad as if not present", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 2 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "GPx", + "description": "General Purpose Fuse Registers." + }, + "registers": [ + { + "id": "fuse36", + "name": "GP3[31:0]", + "description": "General Purpose fuse register #3", + "offset_int": "0x0640", + "index_int": "0x0024", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + }, + { + "id": "Reserved37", + "name": "Reserved 0x650", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0650", + "index_int": "0x0025", + "is_reserved": true + }, + { + "id": "fuse38", + "name": "GP1[31:0]", + "description": "General Purpose fuse register #1", + "offset_int": "0x0660", + "index_int": "0x0026", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0400", + "operation_lock_int": "0x0800" + } + }, + { + "id": "fuse39", + "name": "GP2[31:0]", + "description": "General Purpose fuse register #2", + "offset_int": "0x0670", + "index_int": "0x0027", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "operation_lock_int": "0x2000" + } + } + ] + }, + { + "group": { + "name": "SW_GPx", + "description": "SW general purpose keys." + }, + "registers": [ + { + "id": "fuse40", + "name": "SW_GP1[31:0]", + "description": "SW general purpose key", + "offset_int": "0x0680", + "index_int": "0x0028", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00010000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00010000" + } + }, + { + "id": "fuse41", + "name": "SW_GP2[127:96]", + "description": "SW general purpose key", + "offset_int": "0x0690", + "index_int": "0x0029", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse42", + "name": "SW_GP2[95:64]", + "description": "SW general purpose key", + "offset_int": "0x06A0", + "index_int": "0x002A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse43", + "name": "SW_GP2[63:32]", + "description": "SW general purpose key", + "offset_int": "0x06B0", + "index_int": "0x002B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse44", + "name": "SW_GP2[31:0]", + "description": "SW general purpose key", + "offset_int": "0x06C0", + "index_int": "0x002C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + } + ] + }, + { + "group": { + "name": "Miscellaneous", + "description": "Miscellaneous configuration." + }, + "registers": [ + { + "id": "fuse45", + "name": "MISC_CONF0", + "description": "Fuse MISC_CONF0", + "offset_int": "0x06D0", + "index_int": "0x002D", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 6, + "id": "fuse45-bits-0-5", + "name": "PAD_SETTINGS", + "description": "Used with conjunction of MMC/SD/Nand \"Override Pad Settings\" fuse value, as follow:\n'0' - Use IO default settings for boot device IO pads.\n'1' - Use \"Override\" value, as set by this register." + }, + { + "width": 1, + "id": "fuse45-bit-6", + "name": "USB_VBUS_EVENT_HANDLER_EN", + "description": "Rom handle USB VBUS attach/detach event", + "values": [ + { + "name": "0", + "value": 0, + "description": "ROM not handle USB VBUS attach/detach event" + }, + { + "name": "1", + "value": 1, + "description": "ROM handle USB VBUS attach/detach event" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-7", + "name": "Enable Boot Failure Indicator Pin", + "description": "Enable Boot Failure Indicator Pin", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-8-11", + "name": "READ_RETRY_SEQ_ID", + "description": "Choose Read Retry Sequence ", + "values": [ + { + "name": "0000", + "value": 0, + "description": "don't use read retry(RR) sequence embedded in ROM" + }, + { + "name": "0001", + "value": 1, + "description": "Micron 20nm RR sequence" + }, + { + "name": "0010", + "value": 2, + "description": "Toshiba A19nm RR sequence" + }, + { + "name": "0011", + "value": 3, + "description": "Toshiba 19nm RR sequence" + }, + { + "name": "0100", + "value": 4, + "description": "SanDisk 19nm RR sequence" + }, + { + "name": "0101", + "value": 5, + "description": "SanDisk 1ynmRR sequence" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "fuse45-bits-13-15", + "name": "WDOG Timeout Select", + "description": "Select WDOG Timeout", + "values": [ + { + "name": "64s", + "value": 0, + "description": "64s" + }, + { + "name": "32s", + "value": 1, + "description": "32s" + }, + { + "name": "16s", + "value": 2, + "description": "16s" + }, + { + "name": "8s", + "value": 3, + "description": "8s" + }, + { + "name": "4s", + "value": 4, + "description": "4s" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-16-19", + "name": "Default_FlexRAM_Part", + "description": "Default FlexRAM RAM bank partitioning" + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse45-bit-24", + "name": "EEPROM_RECOVERY_EN", + "description": "EEPROM Recovery Enable", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-25-26", + "name": "LPSPI_PORT_SEL", + "description": "LPSPI Port Select", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-27", + "name": "LPSPI_ADDR", + "description": "SPI Addressing", + "values": [ + { + "name": "2-bytes", + "value": 0, + "description": "2-bytes (16-bit)" + }, + { + "name": "3-bytes", + "value": 1, + "description": "3-bytes (24-bit)" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-28-29", + "name": "LPSPI_SPEED", + "description": "LPSPI Speed select", + "values": [ + { + "name": "00", + "value": 0, + "description": "20 MHz (default)" + }, + { + "name": "10 MHz", + "value": 1, + "description": "10 MHz" + }, + { + "name": "5 MHz", + "value": 2, + "description": "5 MHz" + }, + { + "name": "2 MHz", + "value": 3, + "description": "2 MHz" + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "fuse46", + "name": "MISC_CONF1", + "description": "Fuse MISC_CONF1", + "offset_int": "0x06E0", + "index_int": "0x002E", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse46-bits-0-7", + "name": "BOOT_CONFIG_MISC0", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-8-15", + "name": "BOOT_CONFIG_MISC1", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-16-23", + "name": "BOOT_CONFIG_MISC2", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-24-31", + "name": "BOOT_CONFIG_MISC3", + "description": "boot configuration misc " + } + ] + }, + { + "id": "fuse47", + "name": "SRK_REVOKE", + "description": "Fuse SRK_REVOKE", + "offset_int": "0x06F0", + "index_int": "0x002F", + "bitfields": [ + { + "width": 1, + "id": "fuse47-bit-0", + "name": "SRK_REVOKE1", + "description": "SRK key 1 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-1", + "name": "SRK_REVOKE2", + "description": "SRK key 2 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-2", + "name": "SRK_REVOKE3", + "description": "SRK key 3 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-3", + "name": "SRK_REVOKE4", + "description": "SRK key 4 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 4 + }, + { + "width": 8 + }, + { + "width": 16 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/database.yaml new file mode 100644 index 0000000..ed4583b --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/database.yaml @@ -0,0 +1,127 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + purpose: i.MX RT Crossover MCUs + spsdk_predecessor_name: rt1015 + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1015-crossover-mcu-with-arm-cortex-m7-core-operating-up-to-500-mhz:i.MX-RT1015 + memory_map: + itcm: + start_int: "0x0" + size_int: "0x20000" + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: "0x10000" + size_int: "0x10000" + warning_msg: RAM above 0x10000 is not initialized by default + dtcm: + start_int: "0x20000000" + size_int: "0x20000" + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: "0x20010000" + size_int: "0x10000" + warning_msg: RAM above 0x20010000 is not initialized by default + ocram: + start_int: "0x20200000" + size_int: "0x20000" + external: false + non_xip_type: int_ram + flexspi: + start_int: "0x60000000" + size_int: "0x10000000" + external: true + non_xip_type: none + isp: + rom: + protocol: sdp + usb: + - vid: 0x1FC9 + pid: 0x0145 + flashloader: + protocol: mboot + usb: + - vid: 0x15a2 + pid: 0x0073 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: + tool: blhost + no_verify: True + grouped_registers: + - uid: otfad_sw_gp2 + name: SW_GP2 + width: 128 + reversed: True + reverse_subregs_order: True + config_as_hexstring: true + description: General purpose SW key. + sub_regs: [fuse41, fuse42, fuse43, fuse44] + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x0000_2000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_hab" + + # ======== HABv4 section ======== + hab: + mem_types: + flexspi_nor: + initial_load_size: 0x2000 + flexspi_nand: + initial_load_size: 0x1000 + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== BEE section ======== + bee: {} + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + hab_container: 0x0 + flexspi_nor: + segments: + fcb: 0x0000 + hab_container: 0x1000 + flexspi_nand: + segments: + hab_container: 0x400 + recovery_spi_hab: + segments: + hab_container: 0x400 + + # ======== Memory configuration ======== + memcfg: + peripherals: + flexspi_nor: + instances: [0] + flexspi_nand: + instances: [0] + spi_nor: + instances: [1, 2, 3, 4] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/fcb_flexspi_nor.json new file mode 100644 index 0000000..1344741 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/fcb_flexspi_nor.json @@ -0,0 +1,25568 @@ +{ + "cpu": "MIMXRT1015", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix", + "default_value_int": "0x56010100" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc.", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0" + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved0_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command", + "default_value_int": "0x0" + }, + { + "id": "field1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false", + "default_value_int": "0x0" + }, + { + "id": "field1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "reserve2_0", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "reserve2_1", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "reserve2_2", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "reserve2_3", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "reserve2_4", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "reserve2_5", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "reserve2_6", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "reserve2_7", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "reserve2_8", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "reserve2_9", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "reserve2_10", + "description": " Reserved for future use", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/fuses.json new file mode 100644 index 0000000..c95e7b4 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1015/fuses.json @@ -0,0 +1,2568 @@ +{ + "cpu": "mimxrt1015", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Lock bits allowing to lock access to specified fuses" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCKS", + "description": "Fuse LOCKS", + "offset_int": "0x0400", + "index_int": "0", + "bitfields": [ + { + "width": 2, + "id": "fuse0-bits-0-1", + "name": "TESTER_LOCK", + "description": "Perform lock on Tester programed fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-2-3", + "name": "BOOT_CFG_LOCK", + "description": "Perform lock on BOOT related fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse0-bit-6", + "name": "SJC_RESP_LOCK", + "description": "SJC response lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read, sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-8-9", + "name": "MAC_ADDR_LOCK", + "description": "Lock MAC_ADDR fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-10-11", + "name": "GP1_LOCK", + "description": "Lock for General Purpose fuse register #1 (GP1)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-12-13", + "name": "GP2_LOCK", + "description": "Lock for General Purpose fuse register #2 (GP2)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-16", + "name": "SW_GP1_LOCK", + "description": "Lock for SW_GP1 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-18-19", + "name": "ANALOG_LOCK", + "description": "Lock for analog related fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-21", + "name": "SW_GP2_LOCK", + "description": "WP and OP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-22", + "name": "MISC_CONF_LOCK", + "description": "RP Lock for MISC_CONF0, MISC_CONF1 fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-23", + "name": "SW_GP2_RLOCK", + "description": "RP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-26-27", + "name": "GP3_LOCK", + "description": "Lock for GP3 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-31", + "name": "FIELD_RETURN", + "description": "Configure device for field return testing. Fuse burning is protected by CSF command, with proper parameter passed. Write / OP protected by FIELD_RETURN_LOCK bit in control register.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Device is in functional / secure mode." + }, + { + "name": "1", + "value": 1, + "description": "Device is open for 'field-return' testing." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "IDs", + "description": "Different identifiers" + }, + "registers": [ + { + "id": "fuse1", + "name": "LOT_NO_ENC1", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[42:11]" + ], + "offset_int": "0x0410", + "index_int": "0x0001", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse1-bits-0-31", + "name": "LOT_NO_ENC[42:11]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse2", + "name": "LOT_NO_ENC0_WAFER_COORD", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[10:0]" + ], + "offset_int": "0x0420", + "index_int": "0x0002", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 11, + "id": "fuse2-bits-0-10", + "name": "LOT_NO_ENC[10:0]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + }, + { + "width": 5, + "id": "fuse2-bits-11-15", + "name": "WAFER_NO[4:0]", + "description": "The wafer number of the wafer on which the device was fabricated/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-16-23", + "name": "DIE-Y-CORDINATE[7:0]", + "description": "The Y-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-24-31", + "name": "DIE-X-CORDINATE[7:0]", + "description": "The X-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse3", + "name": "SI_REV", + "description": "Fuse SI_REV", + "deprecated_names": [ + "SI_REV[3:0]" + ], + "offset_int": "0x0430", + "index_int": "0x0003", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 4, + "id": "fuse3-bits-16-19", + "name": "SI_REV[3:0]", + "description": "Silicon Revision number." + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse4", + "name": "TESTER_CFG", + "description": "Fuse TESTER_CFG", + "offset_int": "0x0440", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse4-bits-16-17", + "name": "SPEED_GRADING[1:0]", + "description": "Burned by tester program, for indicating IC core speed" + }, + { + "width": 2, + "id": "fuse4-bits-18-19", + "name": "PKGINFO[1:0]", + "description": "Burned by tester program, for indicating IC package type" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Boot config", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse5", + "name": "BOOT_CFG0", + "description": "Fuse BOOT_CFG0", + "offset_int": "0x0450", + "index_int": "0x0005", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse5-bit-0", + "name": "EncryptedXIP", + "description": "Support for the encrypted bootable image. It is applied only if BT_FUSE_SEL fuse bit is set. Otherwise the value is retrieved from the pins.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "0 - Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "1 - Enabled" + } + ] + }, + { + "width": 3, + "id": "fuse5-bits-1-3", + "name": "FLASH_TYPE", + "description": "FLASH type selection, depending on selected boot device.", + "values": [ + { + "name": "000", + "value": 0, + "description": "000-Device supports 3B read by default" + }, + { + "name": "001", + "value": 1, + "description": "001-Device supports 4B read by default" + }, + { + "name": "010", + "value": 2, + "description": "010-HyperFlash 1V8" + }, + { + "name": "011", + "value": 3, + "description": "011-HyperFlash 3V3" + }, + { + "name": "100", + "value": 4, + "description": "100-MXIC Octal DDR" + }, + { + "name": "101", + "value": 5, + "description": "101 - Micron Octal DDR" + }, + { + "name": "111", + "value": 7, + "description": "111 - QSPI device supports 3B read by default (on secondary pinmux option)" + } + ] + }, + { + "width": 4, + "id": "fuse5-bits-4-7", + "name": "Boot_Device_Selection", + "description": "Boot device selection.", + "values": [ + { + "name": "FlexSPI NOR", + "value": 0, + "description": "0000 - FlexSPI (Serial NOR)" + }, + { + "name": "SEMC (NOR)", + "value": 1, + "description": "0001 - SEMC (NOR)" + }, + { + "name": "SEMC (NAND)", + "value": 2, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SEMC (NAND)_1", + "value": 3, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SD (SDR12)", + "value": 4, + "description": "0100 - SD/SDXC Speed (Normal/SDR12)" + }, + { + "name": "SD (SDR25)", + "value": 5, + "description": "0101 - SD/SDXC Speed (High/SDR25)" + }, + { + "name": "SD (SDR50)", + "value": 6, + "description": "0110 - SD/SDXC Speed (SDR50)" + }, + { + "name": "SD (SDR104)", + "value": 7, + "description": "0111 - SD/SDXC Speed (SDR104)" + }, + { + "name": "eMMC: Normal", + "value": 8, + "description": "1000 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: Normal/FB", + "value": 9, + "description": "1001 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Enabled)" + }, + { + "name": "eMMC: High", + "value": 10, + "description": "1010 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: High/FB", + "value": 11, + "description": "1011 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Enabled)" + }, + { + "name": "FlexSPI NAND 50MHz 12b", + "value": 12, + "description": "1100 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b", + "value": 13, + "description": "1101 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + }, + { + "name": "FlexSPI NAND 50MHz 12b 1", + "value": 14, + "description": "1110 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b 1", + "value": 15, + "description": "1111 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + } + ] + }, + { + "width": 8, + "id": "fuse5-bits-8-15", + "name": "BOOT_CFG2", + "description": "BOOT configuration register #2, Usage varies, depending on selected boot device." + }, + { + "width": 8, + "id": "fuse5-bits-16-23", + "name": "BOOT_CFG3", + "description": "BOOT configuration register #3" + }, + { + "width": 8, + "id": "fuse5-bits-24-31", + "name": "BOOT_CFG4", + "description": "BOOT configuration register #4" + } + ] + }, + { + "id": "fuse6", + "name": "BOOT_CFG1", + "description": "Fuse BOOT_CFG1", + "offset_int": "0x0460", + "index_int": "0x0006", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-1", + "name": "SEC_CONFIG1", + "description": "Security Configuration", + "deprecated_names": [ + "SEC_CONFIG[1]" + ], + "values": [ + { + "name": "Open", + "value": 0, + "description": "Open (allows any program image, even if the authentication fails)" + }, + { + "name": "Closed", + "value": 1, + "description": "Closed (The program image executes only if authenticated)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-2", + "name": "Boot Frequencies", + "description": "Determines, ARM Core and Bus frequencies during boot", + "values": [ + { + "name": "0", + "value": 0, + "description": "(ARM) 396 / (Bus)132 MHz" + }, + { + "name": "1", + "value": 1, + "description": "(ARM) 528 / (Bus) 132 MHz" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-4", + "name": "BT_FUSE_SEL", + "description": "Determines, whether using fuses for boot configuration, or GPIO /Serial loader", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-5", + "name": "FORCE_COLD_BOOT", + "description": "Force cold boot when A9 core come out of reset. Reflected in SBMR reg of SRC", + "values": [ + { + "name": "0", + "value": 0, + "description": "Default behavior equivalent to the rest of the i.MX6 family allowing a fast recovery from low power modes. That is, the ROM is allowed to jump to the address previously programmed in the SRC persistent register." + }, + { + "name": "1", + "value": 1, + "description": "Fast recovery path in the ROM is not allowed and a cold boot is always performed. Customers wanting a higher level of security should burn this fuse." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "fuse6-bits-8-11", + "name": "SDRAM_CONFIG", + "description": "TBD (SDRAM config options)", + "deprecated_names": [ + "SDRAM_CONFIG[7:0]" + ] + }, + { + "width": 2, + "id": "fuse6-bits-12-13", + "name": "BEE_KEY0_SEL", + "description": "AES key selection for BEE_KEY0", + "values": [ + { + "name": "From register", + "value": 0, + "description": "From register" + }, + { + "name": "From OTPMK", + "value": 2, + "description": "From OTPMK" + }, + { + "name": "From SW-GP2", + "value": 3, + "description": "From SW-GP2" + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-14-15", + "name": "BEE_KEY1_SEL", + "description": "AES key selection for BEE_KEY1", + "values": [ + { + "name": "From register", + "value": 0, + "description": "From register" + }, + { + "name": "From OTPMK", + "value": 2, + "description": "From OTPMK" + }, + { + "name": "From SW-GP2", + "value": 3, + "description": "From SW-GP2" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-16", + "name": "FORCE_INTERNAL_BOOT", + "description": "Once been blown, the external BT_MODE[1:0] pins will be ignored, BootROM will take Boot Mode as “internal boot”.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Boot Mode from BT_MODE pins" + }, + { + "name": "1", + "value": 1, + "description": "BT_MODE pins be ignored, Boot Mode forced to \"internal boot\"" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-17", + "name": "SDP_DISABLE", + "description": "Disable/Enable serial download support", + "values": [ + { + "name": "0", + "value": 0, + "description": "Serial download supported" + }, + { + "name": "1", + "value": 1, + "description": "No serial download support" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-18", + "name": "SDP_READ_DISABLE", + "description": "Disable/Enable serial download READ_REGISTER command.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "SDP READ_REGISTER command is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "SDP READ_REGISTER is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-19", + "name": "DAP_SJC_SWD_SEL", + "description": "Control DAP works in JTAG or SWD mode", + "values": [ + { + "name": "0", + "value": 0, + "description": "DAP works in SWD mode" + }, + { + "name": "1", + "value": 1, + "description": "DAP works in JTAG mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-20", + "name": "SJC_DISABLE", + "description": "Disable/Enable the Secure JTAG Controller module. This fuse is used to create highest JTAG security level, where JTAG is totally blocked.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Secure JTAG Controller is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "Secure JTAG Controller is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-21", + "name": "WDOG_ENABLE", + "description": "Watchdog Enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Watch-Dog is disabled." + }, + { + "name": "Enable", + "value": 1, + "description": "Watch-Dog is enabled." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-22-23", + "name": "JTAG_SMODE[1:0]", + "description": "JTAG Security Mode. Controls the security mode of the JTAG debug interface", + "values": [ + { + "name": "00", + "value": 0, + "description": "JTAG enable mode" + }, + { + "name": "01", + "value": 1, + "description": "Secure JTAG mode" + }, + { + "name": "11", + "value": 3, + "description": "No debug mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-24", + "name": "DLL_ENABLE", + "description": "Controls the enable/disable of the DLL for SD/eMMC boot", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable DLL for SD/eMMC" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable DLL for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-25", + "name": "NAND_ECC_DISABLE", + "description": "Indicate whether to enabled ECC (done by SW/Device HW) for Raw Nand device", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "NAND ECC is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "NAND ECC is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-26", + "name": "KTE", + "description": "Kill Trace Enable. Enables tracing capability on ETM, and other modules", + "values": [ + { + "name": "0", + "value": 0, + "description": "Bus tracing is allowed" + }, + { + "name": "1", + "value": 1, + "description": "Bus tracing is allowed in case security state as defined by Secure JTAG allows it (for example, JTAG_ENABLE or NO_DEBUG)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-27", + "name": "JTAG_HEO", + "description": "JTAG HAB Enable Override. Disallows HAB JTAG enabling. The HAB may normally enable JTAG debugging by means of the HAB_JDE-bit in the OCOTP SCS register. The JTAG_HEO-bit can override this behavior", + "values": [ + { + "name": "0", + "value": 0, + "description": "HAB may enable JTAG debug access" + }, + { + "name": "1", + "value": 1, + "description": "HAB JTAG enable is overridden (HAB may not enable JTAG debug access)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-29", + "name": "PWR_STABLE_CYCLE_SELECTION", + "description": "Select Power Stable Cycle", + "values": [ + { + "name": "5ms", + "value": 0, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "2.5ms" + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-30-31", + "name": "SD_PWR_CYCLE_SELECTION", + "description": "Select SD Power Cycle", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "2.5ms" + } + ] + } + ] + }, + { + "id": "fuse7", + "name": "BOOT_CFG2", + "description": "Fuse BOOT_CFG2", + "offset_int": "0x0470", + "index_int": "0x0007", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse7-bit-0", + "name": "Override SD Pad Settings", + "description": "Overrides ROM default value for SD PAD control register. When set ROM will override SD pad control register with value programmed into PAD_SETTINGS fuse bits.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-1", + "name": "BT_MPU_DISABLE", + "description": "The fuse bit is used for ROM to not enable MMU", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "MPU is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "MPU is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-2", + "name": "L1 I-Cache DISABLE", + "description": "The fuse bit is used for ROM to not enable L1 I-Cache", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "L1 I-Cache is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "L1 I-Cache is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-3", + "name": "Disable SDMMC Manufacture mode", + "description": "The fuse bit is used to disable ROM feature “SD/MMC Manufacturing Mode”.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-4", + "name": "UART Serial Download Disable", + "description": "Disable UART Serial Download", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-5", + "name": "SD2 VOLTAGE SELECTION", + "description": "Fuse bit to change voltage selection for SD2 pads. When set ROM will select 1.8V for SD3 pads otherwise 3.3V", + "values": [ + { + "name": "3.3V", + "value": 0, + "description": "3.3V" + }, + { + "name": "1.8V", + "value": 1, + "description": "1.8V" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-6", + "name": "SD1_RST_POLARITY_SELECT", + "description": "Select reset polarity for SD1", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-7", + "name": "DLL Override", + "description": "Select the DLL mode for SD/eMMC.", + "values": [ + { + "name": "0", + "value": 0, + "description": "DLL Slave Mode for SD/eMMC" + }, + { + "name": "1", + "value": 1, + "description": "DLL Override Mode for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-8", + "name": "USDHC IOMUX SRE Enable", + "description": "The fuse bit is used for ROM to enable SRE bit for SD pads", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-9", + "name": "USDHC_IOMUX_SION_BIT_ENABLE", + "description": "The fuse bit is used for ROM to enable SION bit for MUX control register.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-10", + "name": "Boot Failure Indicator Pin Select[4]", + "description": "Indicate Boot Failure" + }, + { + "width": 1, + "id": "fuse7-bit-11", + "name": "ENABLE_EMMC_22K_PULLUP", + "description": "The fuse bit is used for ROM to enable 22K pullup for SD pads.", + "values": [ + { + "name": "47K pullup", + "value": 0, + "description": "47K pullup" + }, + { + "name": "22K pullup", + "value": 1, + "description": "22K pullup" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-12", + "name": "USDHC_PAD_PULL_DOWN", + "description": "The fuse bit is used for ROM to enable pull down bit for SD pads. ", + "values": [ + { + "name": "no action", + "value": 0, + "description": "no action" + }, + { + "name": "pull down", + "value": 1, + "description": "pull down" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-13", + "name": "Override HYS bit for SD-MMC pads", + "description": "Once this fuse be blown, the [HYS] bit of IOMUXC_SW_PAD_CTL_PAD_SDx_CLK(x is the SD port which the ROM boot from), IOMUXC_SW_PAD_CTL_PAD_SDx_CMD, IOMUXC_SW_PAD_CTL_PAD_SDx_DAT0-n(n will be 0, 3, or 7, depends on the bus width selected) will be set. ", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-14", + "name": "eMMC 4.4 - RESET TO PRE-IDLE STATE", + "description": "Once this fuse be blown, the CMD0 with argument 0xf0f0f0f0 will be sent to put the eMMC card into pre-IDLE state so that eMMC card’s fast boot can work properly.\nThis is useful for the warm boot, such as boot due to the WDOG reset.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-15", + "name": "SD2_RST_POLARITY_SELECT", + "description": "Select reset polarity for SD2", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 4, + "id": "fuse7-bits-16-19", + "name": "Boot Failure Indicator Pin Select[3:0]", + "description": "Miscellaneous power management configuration bits.", + "values": [ + { + "name": "gpio1.IO00", + "value": 0, + "description": "gpio1.IO00" + }, + { + "name": "gpio1.IO01", + "value": 1, + "description": "gpio1.IO01" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-20", + "name": "BT_LPB_POLARITY", + "description": "Define GPIO3 polarity, for determining LPB boot mode.", + "values": [ + { + "name": "Active High", + "value": 0, + "description": "Active High" + }, + { + "name": "Active Low", + "value": 1, + "description": "Active Low" + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-21-22", + "name": "LPB_BOOT", + "description": "Divide (Core / Bus) based on Boot Frequencies", + "values": [ + { + "name": "Div by 1", + "value": 0, + "description": "Div by 1" + }, + { + "name": "Div by 2", + "value": 1, + "description": "Div by 2" + }, + { + "name": "Div by 4", + "value": 2, + "description": "Div by 4" + }, + { + "name": "Div by 8", + "value": 3, + "description": "Div by 8" + } + ] + }, + { + "width": 1 + }, + { + "width": 7, + "id": "fuse7-bits-24-30", + "name": "MMC_DLL_DLY[6:0]", + "description": "eMMC 4.4 delay line default value (set by boot rom), used in conjunction with \"DLL Override\" = 1 (BOOT_CFG3[3])" + }, + { + "width": 1, + "id": "fuse7-bit-31", + "name": "Override NAND Pad Settings", + "description": "Override pad settings for NAND boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x480-0x4E0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved8", + "name": "Reserved 0x480", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0480", + "index_int": "0x0008", + "is_reserved": true, + "bitfields": [ + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved9", + "name": "Reserved 0x490", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0490", + "index_int": "0x0009", + "is_reserved": true, + "bitfields": [ + { + "width": 10 + }, + { + "width": 1 + }, + { + "width": 5 + }, + { + "width": 8 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved10", + "name": "Reserved 0x4A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04A0", + "index_int": "0x000A", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 24 + } + ] + }, + { + "id": "Reserved11", + "name": "Reserved 0x4B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04B0", + "index_int": "0x000B", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved12", + "name": "Reserved 0x4C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04C0", + "index_int": "0x000C", + "is_reserved": true, + "bitfields": [ + { + "width": 20 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved13", + "name": "Reserved 0x4D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04D0", + "index_int": "0x000D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved14", + "name": "Reserved 0x4E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04E0", + "index_int": "0x000E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "USB", + "description": "USB VID and PID" + }, + "registers": [ + { + "id": "fuse15", + "name": "USB_ID", + "description": "Fuse USB_ID", + "offset_int": "0x04F0", + "index_int": "0x000F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "operation_lock_int": "0x00080000" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse15-bits-0-15", + "name": "USB_VID", + "description": "USB VID", + "deprecated_names": [ + "USB_VID[31:0]" + ] + }, + { + "width": 16, + "id": "fuse15-bits-16-31", + "name": "USB_PID", + "description": "USB PID", + "deprecated_names": [ + "USB_PID[31:0]" + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x500-0x570", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved16", + "name": "Reserved 0x500", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0500", + "index_int": "0x0010", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved17", + "name": "Reserved 0x510", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0510", + "index_int": "0x0011", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved18", + "name": "Reserved 0x520", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0520", + "index_int": "0x0012", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved19", + "name": "Reserved 0x530", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0530", + "index_int": "0x0013", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved20", + "name": "Reserved 0x540", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0540", + "index_int": "0x0014", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved21", + "name": "Reserved 0x550", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0550", + "index_int": "0x0015", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved22", + "name": "Reserved 0x560", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0560", + "index_int": "0x0016", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved23", + "name": "Reserved 0x570", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0570", + "index_int": "0x0017", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "SRK Hash", + "description": "Super Root Keys Hash" + }, + "registers": [ + { + "id": "fuse24", + "name": "SRK_HASH[255:224]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0580", + "index_int": "0x0018" + }, + { + "id": "fuse25", + "name": "SRK_HASH[223:192]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0590", + "index_int": "0x0019" + }, + { + "id": "fuse26", + "name": "SRK_HASH[191:160]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05A0", + "index_int": "0x001A" + }, + { + "id": "fuse27", + "name": "SRK_HASH[159:128]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05B0", + "index_int": "0x001B" + }, + { + "id": "fuse28", + "name": "SRK_HASH[127:96]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05C0", + "index_int": "0x001C" + }, + { + "id": "fuse29", + "name": "SRK_HASH[95:64]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05D0", + "index_int": "0x001D" + }, + { + "id": "fuse30", + "name": "SRK_HASH[63:32]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05E0", + "index_int": "0x001E" + }, + { + "id": "fuse31", + "name": "SRK_HASH[31:0]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05F0", + "index_int": "0x001F" + } + ] + }, + { + "group": { + "name": "SJC", + "description": "Secure JTAG Controller" + }, + "registers": [ + { + "id": "fuse32", + "name": "SJC_RESP0", + "description": "Response reference value for the secure JTAG controller", + "deprecated_names": [ + "SJC_RESP[31:0]" + ], + "offset_int": "0x0600", + "index_int": "0x0020", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse32-bits-0-31", + "name": "SJC_RESP[31:0]", + "description": "Response reference value for the secure JTAG controller" + } + ] + }, + { + "id": "fuse33", + "name": "SJC_RESP1", + "description": "Response reference value for the secure JTAG controller", + "deprecated_names": [ + "SJC_RESP[55:32]" + ], + "offset_int": "0x0610", + "index_int": "0x0021", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + }, + "bitfields": [ + { + "width": 24, + "id": "fuse33-bits-0-23", + "name": "SJC_RESP[55:32]", + "description": "Response reference value for the secure JTAG controller" + }, + { + "width": 8 + } + ] + } + ] + }, + { + "group": { + "name": "MAC", + "description": "Ethernet MAC Address" + }, + "registers": [ + { + "id": "fuse34", + "name": "MAC1_ADDR1", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC1_ADDR[47:16]" + ], + "offset_int": "0x0620", + "index_int": "0x0022", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse34-bits-0-31", + "name": "MAC1_ADDR[47:16]", + "description": "Ethernet MAC Address" + } + ] + }, + { + "id": "fuse35", + "name": "MAC1_ADDR0", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC1_ADDR[15:0]" + ], + "offset_int": "0x0630", + "index_int": "0x0023", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse35-bits-0-15", + "name": "MAC1_ADDR[15:0]", + "description": "Ethernet MAC Address" + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "GPx", + "description": "General Purpose Fuse Registers." + }, + "registers": [ + { + "id": "fuse36", + "name": "GP3[31:0]", + "description": "General Purpose fuse register #3", + "offset_int": "0x0640", + "index_int": "0x0024", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + }, + { + "id": "Reserved37", + "name": "Reserved 0x650", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0650", + "index_int": "0x0025", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "fuse38", + "name": "GP1[31:0]", + "description": "General Purpose fuse register #1", + "offset_int": "0x0660", + "index_int": "0x0026", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0400", + "operation_lock_int": "0x0800" + } + }, + { + "id": "fuse39", + "name": "GP2[31:0]", + "description": "General Purpose fuse register #2", + "offset_int": "0x0670", + "index_int": "0x0027", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "operation_lock_int": "0x2000" + } + } + ] + }, + { + "group": { + "name": "SW_GPx", + "description": "SW general purpose keys." + }, + "registers": [ + { + "id": "fuse40", + "name": "SW_GP1[31:0]", + "description": "SW general purpose key", + "offset_int": "0x0680", + "index_int": "0x0028", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00010000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00010000" + } + }, + { + "id": "fuse41", + "name": "SW_GP2[127:96]", + "description": "SW general purpose key", + "offset_int": "0x0690", + "index_int": "0x0029", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse42", + "name": "SW_GP2[95:64]", + "description": "SW general purpose key", + "offset_int": "0x06A0", + "index_int": "0x002A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse43", + "name": "SW_GP2[63:32]", + "description": "SW general purpose key", + "offset_int": "0x06B0", + "index_int": "0x002B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse44", + "name": "SW_GP2[31:0]", + "description": "SW general purpose key", + "offset_int": "0x06C0", + "index_int": "0x002C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + } + ] + }, + { + "group": { + "name": "Miscellaneous", + "description": "Miscellaneous configuration." + }, + "registers": [ + { + "id": "fuse45", + "name": "MISC_CONF0", + "description": "Fuse MISC_CONF0", + "offset_int": "0x06D0", + "index_int": "0x002D", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 6, + "id": "fuse45-bits-0-5", + "name": "PAD_SETTINGS", + "description": "Used with conjunction of MMC/SD/Nand \"Override Pad Settings\" fuse value, as follow:\n'0' - Use IO default settings for boot device IO pads.\n'1' - Use \"Override\" value, as set by this register." + }, + { + "width": 1, + "id": "fuse45-bit-6", + "name": "USB_VBUS_EVENT_HANDLER_EN", + "description": "Rom handle USB VBUS attach/detach event", + "values": [ + { + "name": "0", + "value": 0, + "description": "ROM not handle USB VBUS attach/detach event" + }, + { + "name": "1", + "value": 1, + "description": "ROM handle USB VBUS attach/detach event" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-7", + "name": "Enable Boot Failure Indicator Pin", + "description": "Enable Boot Failure Indicator Pin", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-8-11", + "name": "READ_RETRY_SEQ_ID", + "description": "Choose Read Retry Sequence ", + "values": [ + { + "name": "0000", + "value": 0, + "description": "don't use read retry(RR) sequence embedded in ROM" + }, + { + "name": "0001", + "value": 1, + "description": "Micron 20nm RR sequence" + }, + { + "name": "0010", + "value": 2, + "description": "Toshiba A19nm RR sequence" + }, + { + "name": "0011", + "value": 3, + "description": "Toshiba 19nm RR sequence" + }, + { + "name": "0100", + "value": 4, + "description": "SanDisk 19nm RR sequence" + }, + { + "name": "0101", + "value": 5, + "description": "SanDisk 1ynmRR sequence" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "fuse45-bits-13-15", + "name": "WDOG Timeout Select", + "description": "Select WDOG Timeout", + "values": [ + { + "name": "64s", + "value": 0, + "description": "64s" + }, + { + "name": "32s", + "value": 1, + "description": "32s" + }, + { + "name": "16s", + "value": 2, + "description": "16s" + }, + { + "name": "8s", + "value": 3, + "description": "8s" + }, + { + "name": "4s", + "value": 4, + "description": "4s" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-16-19", + "name": "Default_FlexRAM_Part", + "description": "Default FlexRAM RAM bank partitioning" + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse45-bit-24", + "name": "EEPROM_RECOVERY_EN", + "description": "EEPROM Recovery Enable", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-25-26", + "name": "LPSPI_PORT_SEL", + "description": "LPSPI Port Select", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + }, + { + "name": "LPSPI3", + "value": 2, + "description": "LPSPI3" + }, + { + "name": "LPSPI4", + "value": 3, + "description": "LPSPI4" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-27", + "name": "LPSPI_ADDR", + "description": "SPI Addressing", + "values": [ + { + "name": "2-bytes", + "value": 0, + "description": "2-bytes (16-bit)" + }, + { + "name": "3-bytes", + "value": 1, + "description": "3-bytes (24-bit)" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-28-29", + "name": "LPSPI_SPEED", + "description": "LPSPI Speed select", + "values": [ + { + "name": "00", + "value": 0, + "description": "20 MHz (default)" + }, + { + "name": "10 MHz", + "value": 1, + "description": "10 MHz" + }, + { + "name": "5 MHz", + "value": 2, + "description": "5 MHz" + }, + { + "name": "2 MHz", + "value": 3, + "description": "2 MHz" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-30-31", + "name": "SD_CALIBRATION_STEP", + "description": "SD Calibration Step", + "values": [ + { + "name": "1", + "value": 0, + "description": "1" + } + ] + } + ] + }, + { + "id": "fuse46", + "name": "MISC_CONF1", + "description": "Fuse MISC_CONF1", + "offset_int": "0x06E0", + "index_int": "0x002E", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse46-bits-0-7", + "name": "BOOT_CONFIG_MISC0", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-8-15", + "name": "BOOT_CONFIG_MISC1", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-16-23", + "name": "BOOT_CONFIG_MISC2", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-24-31", + "name": "BOOT_CONFIG_MISC3", + "description": "boot configuration misc " + } + ] + }, + { + "id": "fuse47", + "name": "SRK_REVOKE", + "description": "Fuse SRK_REVOKE", + "offset_int": "0x06F0", + "index_int": "0x002F", + "bitfields": [ + { + "width": 1, + "id": "fuse47-bit-0", + "name": "SRK_REVOKE1", + "description": "SRK key 1 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-1", + "name": "SRK_REVOKE2", + "description": "SRK key 2 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-2", + "name": "SRK_REVOKE3", + "description": "SRK key 3 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-3", + "name": "SRK_REVOKE4", + "description": "SRK key 4 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 4 + }, + { + "width": 8 + }, + { + "width": 16 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1020/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1020/database.yaml new file mode 100644 index 0000000..ed8b2c0 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1020/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1024 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/database.yaml new file mode 100644 index 0000000..64a4a93 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/database.yaml @@ -0,0 +1,161 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + purpose: i.MX RT Crossover MCUs + spsdk_predecessor_name: rt102x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1020-crossover-mcu-with-arm-cortex-m7-core:i.MX-RT1020 + memory_map: + itcm: + start_int: 0x0 + size_int: 0x40000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x10000 + size_int: 0x30000 + warning_msg: RAM above 0x10000 is not initialized by default + dtcm: + start_int: 0x20000000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x20010000 + size_int: 0x30000 + warning_msg: RAM above 0x20010000 is not initialized by default + ocram: + start_int: 0x20200000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x20220000 + size_int: 0x20000 + warning_msg: RAM above 0x20220000 is not initialized by default + flexspi: + start_int: 0x60000000 + size_int: 0x10000000 + external: true + non_xip_type: none + sdram: + start_int: 0x80000000 + size_int: 0x60000000 + external: true + non_xip_type: ext_ram_semc + dcd_file: evkmimxrt1024_SDRAM_dcd.bin + isp: + rom: + protocol: sdp + usb: + - vid: 0x1FC9 + pid: 0x0130 + flashloader: + protocol: mboot + usb: + - vid: 0x15a2 + pid: 0x0073 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x0000_2000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: srk_table_hab + + # ======== HABv4 section ======== + hab: + mem_types: + serial_downloader: + initial_load_size: 0x400 + flexspi_nor: + initial_load_size: 0x2000 + flexspi_nand: + initial_load_size: 0x1000 + semc_nand: + initial_load_size: 0x1000 + sd: + initial_load_size: 0x1000 + mmc: + initial_load_size: 0x1000 + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== BEE section ======== + bee: {} + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + hab_container: 0x0 + flexspi_nor: + segments: + fcb: 0x0000 + bee_header_0: 0x0400 + bee_header_1: 0x0800 + hab_container: 0x1000 + flexspi_nand: + segments: + hab_container: 0x400 + semc_nor: + segments: + hab_container: 0x1000 + semc_nand: + segments: + hab_container: 0x400 + sd: + segments: + hab_container: 0x400 + mmc: + segments: + hab_container: 0x400 + emmc: + segments: + hab_container: 0x400 + recovery_spi_hab: + segments: + hab_container: 0x400 + + # ======== Memory configuration ======== + memcfg: + peripherals: + flexspi_nor: + instances: [0] + flexspi_nand: + instances: [0] + semc_nor: + instances: [0] # probably not supported in latest version of Flashloader + semc_nand: + instances: [0] # probably not supported in latest version of Flashloader + sd: + instances: [1, 2] + mmc: + instances: [1, 2] + emmc: + instances: [1, 2] + spi_nor: + instances: [1, 2, 3, 4] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/fcb_flexspi_nor.json new file mode 100644 index 0000000..9f7594a --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/fcb_flexspi_nor.json @@ -0,0 +1,25568 @@ +{ + "cpu": "MIMXRT1024", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix", + "default_value_int": "0x56010400" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc.", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0" + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved0_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command", + "default_value_int": "0x0" + }, + { + "id": "field1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false", + "default_value_int": "0x0" + }, + { + "id": "field1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "reserve2_0", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "reserve2_1", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "reserve2_2", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "reserve2_3", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "reserve2_4", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "reserve2_5", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "reserve2_6", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "reserve2_7", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "reserve2_8", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "reserve2_9", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "reserve2_10", + "description": " Reserved for future use", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/fuses.json new file mode 100644 index 0000000..6772c25 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1024/fuses.json @@ -0,0 +1,2568 @@ +{ + "cpu": "mimxrt1024", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Lock bits allowing to lock access to specified fuses" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCKS", + "description": "Fuse LOCKS", + "offset_int": "0x0400", + "index_int": "0", + "bitfields": [ + { + "width": 2, + "id": "fuse0-bits-0-1", + "name": "TESTER_LOCK", + "description": "Perform lock on Tester programed fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-2-3", + "name": "BOOT_CFG_LOCK", + "description": "Perform lock on BOOT related fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse0-bit-6", + "name": "SJC_RESP_LOCK", + "description": "SJC response lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read, sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-8-9", + "name": "MAC_ADDR_LOCK", + "description": "Lock MAC_ADDR fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-10-11", + "name": "GP1_LOCK", + "description": "Lock for General Purpose fuse register #1 (GP1)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-12-13", + "name": "GP2_LOCK", + "description": "Lock for General Purpose fuse register #2 (GP2)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-16", + "name": "SW_GP1_LOCK", + "description": "Lock for SW_GP1 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-18-19", + "name": "ANALOG_LOCK", + "description": "Lock for analog related fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-21", + "name": "SW_GP2_LOCK", + "description": "WP and OP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-22", + "name": "MISC_CONF_LOCK", + "description": "RP Lock for MISC_CONF0, MISC_CONF1 fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-23", + "name": "SW_GP2_RLOCK", + "description": "RP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-26-27", + "name": "GP3_LOCK", + "description": "Lock for GP3 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-31", + "name": "FIELD_RETURN", + "description": "Configure device for field return testing. Fuse burning is protected by CSF command, with proper parameter passed. Write / OP protected by FIELD_RETURN_LOCK bit in control register.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Device is in functional / secure mode." + }, + { + "name": "1", + "value": 1, + "description": "Device is open for 'field-return' testing." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "IDs", + "description": "Different identifiers" + }, + "registers": [ + { + "id": "fuse1", + "name": "LOT_NO_ENC1", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[42:11]" + ], + "offset_int": "0x0410", + "index_int": "0x0001", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse1-bits-0-31", + "name": "LOT_NO_ENC[42:11]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse2", + "name": "LOT_NO_ENC0_WAFER_COORD", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[10:0]" + ], + "offset_int": "0x0420", + "index_int": "0x0002", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 11, + "id": "fuse2-bits-0-10", + "name": "LOT_NO_ENC[10:0]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + }, + { + "width": 5, + "id": "fuse2-bits-11-15", + "name": "WAFER_NO[4:0]", + "description": "The wafer number of the wafer on which the device was fabricated/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-16-23", + "name": "DIE-Y-CORDINATE[7:0]", + "description": "The Y-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-24-31", + "name": "DIE-X-CORDINATE[7:0]", + "description": "The X-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse3", + "name": "SI_REV", + "description": "Fuse SI_REV", + "deprecated_names": [ + "SI_REV[3:0]" + ], + "offset_int": "0x0430", + "index_int": "0x0003", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 4, + "id": "fuse3-bits-16-19", + "name": "SI_REV[3:0]", + "description": "Silicon Revision number." + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse4", + "name": "TESTER_CFG", + "description": "Fuse TESTER_CFG", + "offset_int": "0x0440", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse4-bits-16-17", + "name": "SPEED_GRADING[1:0]", + "description": "Burned by tester program, for indicating IC core speed" + }, + { + "width": 2, + "id": "fuse4-bits-18-19", + "name": "PKGINFO[1:0]", + "description": "Burned by tester program, for indicating IC package type" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Boot config", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse5", + "name": "BOOT_CFG0", + "description": "Fuse BOOT_CFG0", + "offset_int": "0x0450", + "index_int": "0x0005", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse5-bit-0", + "name": "EncryptedXIP", + "description": "Support for the encrypted bootable image. It is applied only if BT_FUSE_SEL fuse bit is set. Otherwise the value is retrieved from the pins.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "0 - Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "1 - Enabled" + } + ] + }, + { + "width": 3, + "id": "fuse5-bits-1-3", + "name": "FLASH_TYPE", + "description": "FLASH type selection, depending on selected boot device.", + "values": [ + { + "name": "000", + "value": 0, + "description": "000-Device supports 3B read by default" + }, + { + "name": "001", + "value": 1, + "description": "001-Device supports 4B read by default" + }, + { + "name": "010", + "value": 2, + "description": "010-HyperFlash 1V8" + }, + { + "name": "011", + "value": 3, + "description": "011-HyperFlash 3V3" + }, + { + "name": "100", + "value": 4, + "description": "100-MXIC Octal DDR" + }, + { + "name": "101", + "value": 5, + "description": "101 - Micron Octal DDR" + }, + { + "name": "111", + "value": 7, + "description": "111 - QSPI device supports 3B read by default (on secondary pinmux option)" + } + ] + }, + { + "width": 4, + "id": "fuse5-bits-4-7", + "name": "Boot_Device_Selection", + "description": "Boot device selection.", + "values": [ + { + "name": "FlexSPI NOR", + "value": 0, + "description": "0000 - FlexSPI (Serial NOR)" + }, + { + "name": "SEMC (NOR)", + "value": 1, + "description": "0001 - SEMC (NOR)" + }, + { + "name": "SEMC (NAND)", + "value": 2, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SEMC (NAND)_1", + "value": 3, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SD (SDR12)", + "value": 4, + "description": "0100 - SD/SDXC Speed (Normal/SDR12)" + }, + { + "name": "SD (SDR25)", + "value": 5, + "description": "0101 - SD/SDXC Speed (High/SDR25)" + }, + { + "name": "SD (SDR50)", + "value": 6, + "description": "0110 - SD/SDXC Speed (SDR50)" + }, + { + "name": "SD (SDR104)", + "value": 7, + "description": "0111 - SD/SDXC Speed (SDR104)" + }, + { + "name": "eMMC: Normal", + "value": 8, + "description": "1000 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: Normal/FB", + "value": 9, + "description": "1001 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Enabled)" + }, + { + "name": "eMMC: High", + "value": 10, + "description": "1010 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: High/FB", + "value": 11, + "description": "1011 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Enabled)" + }, + { + "name": "FlexSPI NAND 50MHz 12b", + "value": 12, + "description": "1100 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b", + "value": 13, + "description": "1101 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + }, + { + "name": "FlexSPI NAND 50MHz 12b 1", + "value": 14, + "description": "1110 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b 1", + "value": 15, + "description": "1111 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + } + ] + }, + { + "width": 8, + "id": "fuse5-bits-8-15", + "name": "BOOT_CFG2", + "description": "BOOT configuration register #2, Usage varies, depending on selected boot device." + }, + { + "width": 8, + "id": "fuse5-bits-16-23", + "name": "BOOT_CFG3", + "description": "BOOT configuration register #3" + }, + { + "width": 8, + "id": "fuse5-bits-24-31", + "name": "BOOT_CFG4", + "description": "BOOT configuration register #4" + } + ] + }, + { + "id": "fuse6", + "name": "BOOT_CFG1", + "description": "Fuse BOOT_CFG1", + "offset_int": "0x0460", + "index_int": "0x0006", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-1", + "name": "SEC_CONFIG1", + "description": "Security Configuration (with SEC_CONFIG[0])", + "deprecated_names": [ + "SEC_CONFIG[1]" + ], + "values": [ + { + "name": "Open", + "value": 0, + "description": "Open (allows any program image, even if the authentication fails)" + }, + { + "name": "Closed", + "value": 1, + "description": "Closed (The program image executes only if authenticated)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-2", + "name": "Boot Frequencies", + "description": "Determines, ARM Core and Bus frequencies during boot", + "values": [ + { + "name": "0", + "value": 0, + "description": "(ARM) 396 / (Bus)132 MHz" + }, + { + "name": "1", + "value": 1, + "description": "(ARM) 528 / (Bus) 132 MHz" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-4", + "name": "BT_FUSE_SEL", + "description": "Determines, whether using fuses for boot configuration, or GPIO /Serial loader", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-5", + "name": "FORCE_COLD_BOOT", + "description": "Force cold boot when A9 core come out of reset. Reflected in SBMR reg of SRC", + "values": [ + { + "name": "0", + "value": 0, + "description": "Default behavior equivalent to the rest of the i.MX6 family allowing a fast recovery from low power modes. That is, the ROM is allowed to jump to the address previously programmed in the SRC persistent register." + }, + { + "name": "1", + "value": 1, + "description": "Fast recovery path in the ROM is not allowed and a cold boot is always performed. Customers wanting a higher level of security should burn this fuse." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "fuse6-bits-8-11", + "name": "SDRAM_CONFIG", + "description": "TBD (SDRAM config options)", + "deprecated_names": [ + "SDRAM_CONFIG[7:0]" + ] + }, + { + "width": 2, + "id": "fuse6-bits-12-13", + "name": "BEE_KEY0_SEL", + "description": "AES key selection for BEE_KEY0", + "values": [ + { + "name": "From register", + "value": 0, + "description": "From register" + }, + { + "name": "From OTPMK", + "value": 2, + "description": "From OTPMK" + }, + { + "name": "From SW-GP2", + "value": 3, + "description": "From SW-GP2" + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-14-15", + "name": "BEE_KEY1_SEL", + "description": "AES key selection for BEE_KEY1", + "values": [ + { + "name": "From register", + "value": 0, + "description": "From register" + }, + { + "name": "From OTPMK", + "value": 2, + "description": "From OTPMK" + }, + { + "name": "From SW-GP2", + "value": 3, + "description": "From SW-GP2" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-16", + "name": "FORCE_INTERNAL_BOOT", + "description": "Once been blown, the external BT_MODE[1:0] pins will be ignored, BootROM will take Boot Mode as “internal boot”.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Boot Mode from BT_MODE pins" + }, + { + "name": "1", + "value": 1, + "description": "BT_MODE pins be ignored, Boot Mode forced to \"internal boot\"" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-17", + "name": "SDP_DISABLE", + "description": "Disable/Enable serial download support", + "values": [ + { + "name": "0", + "value": 0, + "description": "Serial download supported" + }, + { + "name": "1", + "value": 1, + "description": "No serial download support" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-18", + "name": "SDP_READ_DISABLE", + "description": "Disable/Enable serial download READ_REGISTER command.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "SDP READ_REGISTER command is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "SDP READ_REGISTER is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-19", + "name": "DAP_SJC_SWD_SEL", + "description": "Control DAP works in JTAG or SWD mode", + "values": [ + { + "name": "0", + "value": 0, + "description": "DAP works in SWD mode" + }, + { + "name": "1", + "value": 1, + "description": "DAP works in JTAG mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-20", + "name": "SJC_DISABLE", + "description": "Disable/Enable the Secure JTAG Controller module. This fuse is used to create highest JTAG security level, where JTAG is totally blocked.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Secure JTAG Controller is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "Secure JTAG Controller is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-21", + "name": "WDOG_ENABLE", + "description": "Watchdog Enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Watch-Dog is disabled." + }, + { + "name": "Enable", + "value": 1, + "description": "Watch-Dog is enabled." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-22-23", + "name": "JTAG_SMODE[1:0]", + "description": "JTAG Security Mode. Controls the security mode of the JTAG debug interface", + "values": [ + { + "name": "00", + "value": 0, + "description": "JTAG enable mode" + }, + { + "name": "01", + "value": 1, + "description": "Secure JTAG mode" + }, + { + "name": "11", + "value": 3, + "description": "No debug mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-24", + "name": "DLL_ENABLE", + "description": "Controls the enable/disable of the DLL for SD/eMMC boot", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable DLL for SD/eMMC" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable DLL for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-25", + "name": "NAND_ECC_DISABLE", + "description": "Indicate whether to enabled ECC (done by SW/Device HW) for Raw Nand device", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "NAND ECC is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "NAND ECC is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-26", + "name": "KTE", + "description": "Kill Trace Enable. Enables tracing capability on ETM, and other modules", + "values": [ + { + "name": "0", + "value": 0, + "description": "Bus tracing is allowed" + }, + { + "name": "1", + "value": 1, + "description": "Bus tracing is allowed in case security state as defined by Secure JTAG allows it (for example, JTAG_ENABLE or NO_DEBUG)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-27", + "name": "JTAG_HEO", + "description": "JTAG HAB Enable Override. Disallows HAB JTAG enabling. The HAB may normally enable JTAG debugging by means of the HAB_JDE-bit in the OCOTP SCS register. The JTAG_HEO-bit can override this behavior", + "values": [ + { + "name": "0", + "value": 0, + "description": "HAB may enable JTAG debug access" + }, + { + "name": "1", + "value": 1, + "description": "HAB JTAG enable is overridden (HAB may not enable JTAG debug access)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-29", + "name": "PWR_STABLE_CYCLE_SELECTION", + "description": "Select Power Stable Cycle", + "values": [ + { + "name": "5ms", + "value": 0, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "2.5ms" + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-30-31", + "name": "SD_PWR_CYCLE_SELECTION", + "description": "Select SD Power Cycle", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "2.5ms" + } + ] + } + ] + }, + { + "id": "fuse7", + "name": "BOOT_CFG2", + "description": "Fuse BOOT_CFG2", + "offset_int": "0x0470", + "index_int": "0x0007", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse7-bit-0", + "name": "Override SD Pad Settings", + "description": "Overrides ROM default value for SD PAD control register. When set ROM will override SD pad control register with value programmed into PAD_SETTINGS fuse bits.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-1", + "name": "BT_MPU_DISABLE", + "description": "The fuse bit is used for ROM to not enable MMU", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "MPU is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "MPU is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-2", + "name": "L1 I-Cache DISABLE", + "description": "The fuse bit is used for ROM to not enable L1 I-Cache", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "L1 I-Cache is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "L1 I-Cache is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-3", + "name": "Disable SDMMC Manufacture mode", + "description": "The fuse bit is used to disable ROM feature “SD/MMC Manufacturing Mode”.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-4", + "name": "UART Serial Download Disable", + "description": "Disable UART Serial Download", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-5", + "name": "SD2 VOLTAGE SELECTION", + "description": "Fuse bit to change voltage selection for SD2 pads. When set ROM will select 1.8V for SD3 pads otherwise 3.3V", + "values": [ + { + "name": "3.3V", + "value": 0, + "description": "3.3V" + }, + { + "name": "1.8V", + "value": 1, + "description": "1.8V" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-6", + "name": "SD1_RST_POLARITY_SELECT", + "description": "Select reset polarity for SD1", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-7", + "name": "DLL Override", + "description": "Select the DLL mode for SD/eMMC.", + "values": [ + { + "name": "0", + "value": 0, + "description": "DLL Slave Mode for SD/eMMC" + }, + { + "name": "1", + "value": 1, + "description": "DLL Override Mode for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-8", + "name": "USDHC IOMUX SRE Enable", + "description": "The fuse bit is used for ROM to enable SRE bit for SD pads", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-9", + "name": "USDHC_IOMUX_SION_BIT_ENABLE", + "description": "The fuse bit is used for ROM to enable SION bit for MUX control register.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-10", + "name": "Boot Failure Indicator Pin Select[4]", + "description": "Indicate Boot Failure" + }, + { + "width": 1, + "id": "fuse7-bit-11", + "name": "ENABLE_EMMC_22K_PULLUP", + "description": "The fuse bit is used for ROM to enable 22K pullup for SD pads.", + "values": [ + { + "name": "47K pullup", + "value": 0, + "description": "47K pullup" + }, + { + "name": "22K pullup", + "value": 1, + "description": "22K pullup" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-12", + "name": "USDHC_PAD_PULL_DOWN", + "description": "The fuse bit is used for ROM to enable pull down bit for SD pads. ", + "values": [ + { + "name": "no action", + "value": 0, + "description": "no action" + }, + { + "name": "pull down", + "value": 1, + "description": "pull down" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-13", + "name": "Override HYS bit for SD-MMC pads", + "description": "Once this fuse be blown, the [HYS] bit of IOMUXC_SW_PAD_CTL_PAD_SDx_CLK(x is the SD port which the ROM boot from), IOMUXC_SW_PAD_CTL_PAD_SDx_CMD, IOMUXC_SW_PAD_CTL_PAD_SDx_DAT0-n(n will be 0, 3, or 7, depends on the bus width selected) will be set. ", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-14", + "name": "eMMC 4.4 - RESET TO PRE-IDLE STATE", + "description": "Once this fuse be blown, the CMD0 with argument 0xf0f0f0f0 will be sent to put the eMMC card into pre-IDLE state so that eMMC card’s fast boot can work properly.\nThis is useful for the warm boot, such as boot due to the WDOG reset.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-15", + "name": "SD2_RST_POLARITY_SELECT", + "description": "Select reset polarity for SD2", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 4, + "id": "fuse7-bits-16-19", + "name": "Boot Failure Indicator Pin Select[3:0]", + "description": "Miscellaneous power management configuration bits.", + "values": [ + { + "name": "gpio1.IO00", + "value": 0, + "description": "gpio1.IO00" + }, + { + "name": "gpio1.IO01", + "value": 1, + "description": "gpio1.IO01" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-20", + "name": "BT_LPB_POLARITY", + "description": "Define GPIO3 polarity, for determining LPB boot mode.", + "values": [ + { + "name": "Active High", + "value": 0, + "description": "Active High" + }, + { + "name": "Active Low", + "value": 1, + "description": "Active Low" + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-21-22", + "name": "LPB_BOOT", + "description": "Divide (Core / Bus) based on Boot Frequencies", + "values": [ + { + "name": "Div by 1", + "value": 0, + "description": "Div by 1" + }, + { + "name": "Div by 2", + "value": 1, + "description": "Div by 2" + }, + { + "name": "Div by 4", + "value": 2, + "description": "Div by 4" + }, + { + "name": "Div by 8", + "value": 3, + "description": "Div by 8" + } + ] + }, + { + "width": 1 + }, + { + "width": 7, + "id": "fuse7-bits-24-30", + "name": "MMC_DLL_DLY[6:0]", + "description": "eMMC 4.4 delay line default value (set by boot rom), used in conjunction with \"DLL Override\" = 1 (BOOT_CFG3[3])" + }, + { + "width": 1, + "id": "fuse7-bit-31", + "name": "Override NAND Pad Settings", + "description": "Override pad settings for NAND boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x480-0x4E0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved8", + "name": "Reserved 0x480", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0480", + "index_int": "0x0008", + "is_reserved": true, + "bitfields": [ + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved9", + "name": "Reserved 0x490", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0490", + "index_int": "0x0009", + "is_reserved": true, + "bitfields": [ + { + "width": 10 + }, + { + "width": 1 + }, + { + "width": 5 + }, + { + "width": 8 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved10", + "name": "Reserved 0x4A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04A0", + "index_int": "0x000A", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 24 + } + ] + }, + { + "id": "Reserved11", + "name": "Reserved 0x4B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04B0", + "index_int": "0x000B", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved12", + "name": "Reserved 0x4C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04C0", + "index_int": "0x000C", + "is_reserved": true, + "bitfields": [ + { + "width": 20 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved13", + "name": "Reserved 0x4D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04D0", + "index_int": "0x000D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved14", + "name": "Reserved 0x4E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04E0", + "index_int": "0x000E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "USB", + "description": "USB VID and PID" + }, + "registers": [ + { + "id": "fuse15", + "name": "USB_ID", + "description": "Fuse USB_ID", + "offset_int": "0x04F0", + "index_int": "0x000F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "operation_lock_int": "0x00080000" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse15-bits-0-15", + "name": "USB_VID", + "description": "USB VID", + "deprecated_names": [ + "USB_VID[31:0]" + ] + }, + { + "width": 16, + "id": "fuse15-bits-16-31", + "name": "USB_PID", + "description": "USB PID", + "deprecated_names": [ + "USB_PID[31:0]" + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x500-0x570", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved16", + "name": "Reserved 0x500", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0500", + "index_int": "0x0010", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved17", + "name": "Reserved 0x510", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0510", + "index_int": "0x0011", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved18", + "name": "Reserved 0x520", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0520", + "index_int": "0x0012", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved19", + "name": "Reserved 0x530", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0530", + "index_int": "0x0013", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved20", + "name": "Reserved 0x540", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0540", + "index_int": "0x0014", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved21", + "name": "Reserved 0x550", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0550", + "index_int": "0x0015", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved22", + "name": "Reserved 0x560", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0560", + "index_int": "0x0016", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved23", + "name": "Reserved 0x570", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0570", + "index_int": "0x0017", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "SRK Hash", + "description": "Super Root Keys Hash" + }, + "registers": [ + { + "id": "fuse24", + "name": "SRK_HASH[255:224]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0580", + "index_int": "0x0018" + }, + { + "id": "fuse25", + "name": "SRK_HASH[223:192]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0590", + "index_int": "0x0019" + }, + { + "id": "fuse26", + "name": "SRK_HASH[191:160]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05A0", + "index_int": "0x001A" + }, + { + "id": "fuse27", + "name": "SRK_HASH[159:128]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05B0", + "index_int": "0x001B" + }, + { + "id": "fuse28", + "name": "SRK_HASH[127:96]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05C0", + "index_int": "0x001C" + }, + { + "id": "fuse29", + "name": "SRK_HASH[95:64]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05D0", + "index_int": "0x001D" + }, + { + "id": "fuse30", + "name": "SRK_HASH[63:32]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05E0", + "index_int": "0x001E" + }, + { + "id": "fuse31", + "name": "SRK_HASH[31:0]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05F0", + "index_int": "0x001F" + } + ] + }, + { + "group": { + "name": "SJC", + "description": "Secure JTAG Controller" + }, + "registers": [ + { + "id": "fuse32", + "name": "SJC_RESP0", + "description": "Response reference value for the secure JTAG controller", + "deprecated_names": [ + "SJC_RESP[31:0]" + ], + "offset_int": "0x0600", + "index_int": "0x0020", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse32-bits-0-31", + "name": "SJC_RESP[31:0]", + "description": "Response reference value for the secure JTAG controller" + } + ] + }, + { + "id": "fuse33", + "name": "SJC_RESP1", + "description": "Response reference value for the secure JTAG controller", + "deprecated_names": [ + "SJC_RESP[55:32]" + ], + "offset_int": "0x0610", + "index_int": "0x0021", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + }, + "bitfields": [ + { + "width": 24, + "id": "fuse33-bits-0-23", + "name": "SJC_RESP[55:32]", + "description": "Response reference value for the secure JTAG controller" + }, + { + "width": 8 + } + ] + } + ] + }, + { + "group": { + "name": "MAC", + "description": "Ethernet MAC Address" + }, + "registers": [ + { + "id": "fuse34", + "name": "MAC1_ADDR1", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC1_ADDR[47:16]" + ], + "offset_int": "0x0620", + "index_int": "0x0022", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse34-bits-0-31", + "name": "MAC1_ADDR[47:16]", + "description": "Ethernet MAC Address" + } + ] + }, + { + "id": "fuse35", + "name": "MAC1_ADDR0", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC1_ADDR[15:0]" + ], + "offset_int": "0x0630", + "index_int": "0x0023", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse35-bits-0-15", + "name": "MAC1_ADDR[15:0]", + "description": "Ethernet MAC Address" + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "GPx", + "description": "General Purpose Fuse Registers." + }, + "registers": [ + { + "id": "fuse36", + "name": "GP3[31:0]", + "description": "General Purpose fuse register #3", + "offset_int": "0x0640", + "index_int": "0x0024", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + }, + { + "id": "Reserved37", + "name": "Reserved 0x650", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0650", + "index_int": "0x0025", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "fuse38", + "name": "GP1[31:0]", + "description": "General Purpose fuse register #1", + "offset_int": "0x0660", + "index_int": "0x0026", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0400", + "operation_lock_int": "0x0800" + } + }, + { + "id": "fuse39", + "name": "GP2[31:0]", + "description": "General Purpose fuse register #2", + "offset_int": "0x0670", + "index_int": "0x0027", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "operation_lock_int": "0x2000" + } + } + ] + }, + { + "group": { + "name": "SW_GPx", + "description": "SW general purpose keys." + }, + "registers": [ + { + "id": "fuse40", + "name": "SW_GP1[31:0]", + "description": "SW general purpose key", + "offset_int": "0x0680", + "index_int": "0x0028", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00010000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00010000" + } + }, + { + "id": "fuse41", + "name": "SW_GP2[127:96]", + "description": "SW general purpose key", + "offset_int": "0x0690", + "index_int": "0x0029", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse42", + "name": "SW_GP2[95:64]", + "description": "SW general purpose key", + "offset_int": "0x06A0", + "index_int": "0x002A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse43", + "name": "SW_GP2[63:32]", + "description": "SW general purpose key", + "offset_int": "0x06B0", + "index_int": "0x002B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse44", + "name": "SW_GP2[31:0]", + "description": "SW general purpose key", + "offset_int": "0x06C0", + "index_int": "0x002C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + } + ] + }, + { + "group": { + "name": "Miscellaneous", + "description": "Miscellaneous configuration." + }, + "registers": [ + { + "id": "fuse45", + "name": "MISC_CONF0", + "description": "Fuse MISC_CONF0", + "offset_int": "0x06D0", + "index_int": "0x002D", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 6, + "id": "fuse45-bits-0-5", + "name": "PAD_SETTINGS", + "description": "Used with conjunction of MMC/SD/Nand \"Override Pad Settings\" fuse value, as follow:\n'0' - Use IO default settings for boot device IO pads.\n'1' - Use \"Override\" value, as set by this register." + }, + { + "width": 1, + "id": "fuse45-bit-6", + "name": "USB_VBUS_EVENT_HANDLER_EN", + "description": "Rom handle USB VBUS attach/detach event", + "values": [ + { + "name": "0", + "value": 0, + "description": "ROM not handle USB VBUS attach/detach event" + }, + { + "name": "1", + "value": 1, + "description": "ROM handle USB VBUS attach/detach event" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-7", + "name": "Enable Boot Failure Indicator Pin", + "description": "Enable Boot Failure Indicator Pin", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-8-11", + "name": "READ_RETRY_SEQ_ID", + "description": "Choose Read Retry Sequence ", + "values": [ + { + "name": "0000", + "value": 0, + "description": "don't use read retry(RR) sequence embedded in ROM" + }, + { + "name": "0001", + "value": 1, + "description": "Micron 20nm RR sequence" + }, + { + "name": "0010", + "value": 2, + "description": "Toshiba A19nm RR sequence" + }, + { + "name": "0011", + "value": 3, + "description": "Toshiba 19nm RR sequence" + }, + { + "name": "0100", + "value": 4, + "description": "SanDisk 19nm RR sequence" + }, + { + "name": "0101", + "value": 5, + "description": "SanDisk 1ynmRR sequence" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "fuse45-bits-13-15", + "name": "WDOG Timeout Select", + "description": "Select WDOG Timeout", + "values": [ + { + "name": "64s", + "value": 0, + "description": "64s" + }, + { + "name": "32s", + "value": 1, + "description": "32s" + }, + { + "name": "16s", + "value": 2, + "description": "16s" + }, + { + "name": "8s", + "value": 3, + "description": "8s" + }, + { + "name": "4s", + "value": 4, + "description": "4s" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-16-19", + "name": "Default_FlexRAM_Part", + "description": "Default FlexRAM RAM bank partitioning" + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse45-bit-24", + "name": "EEPROM_RECOVERY_EN", + "description": "EEPROM Recovery Enable", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-25-26", + "name": "LPSPI_PORT_SEL", + "description": "LPSPI Port Select", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + }, + { + "name": "LPSPI3", + "value": 2, + "description": "LPSPI3" + }, + { + "name": "LPSPI4", + "value": 3, + "description": "LPSPI4" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-27", + "name": "LPSPI_ADDR", + "description": "SPI Addressing", + "values": [ + { + "name": "2-bytes", + "value": 0, + "description": "2-bytes (16-bit)" + }, + { + "name": "3-bytes", + "value": 1, + "description": "3-bytes (24-bit)" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-28-29", + "name": "LPSPI_SPEED", + "description": "LPSPI Speed select", + "values": [ + { + "name": "00", + "value": 0, + "description": "20 MHz (default)" + }, + { + "name": "10 MHz", + "value": 1, + "description": "10 MHz" + }, + { + "name": "5 MHz", + "value": 2, + "description": "5 MHz" + }, + { + "name": "2 MHz", + "value": 3, + "description": "2 MHz" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-30-31", + "name": "SD_CALIBRATION_STEP", + "description": "SD Calibration Step", + "values": [ + { + "name": "1", + "value": 0, + "description": "1" + } + ] + } + ] + }, + { + "id": "fuse46", + "name": "MISC_CONF1", + "description": "Fuse MISC_CONF1", + "offset_int": "0x06E0", + "index_int": "0x002E", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse46-bits-0-7", + "name": "BOOT_CONFIG_MISC0", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-8-15", + "name": "BOOT_CONFIG_MISC1", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-16-23", + "name": "BOOT_CONFIG_MISC2", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-24-31", + "name": "BOOT_CONFIG_MISC3", + "description": "boot configuration misc " + } + ] + }, + { + "id": "fuse47", + "name": "SRK_REVOKE", + "description": "Fuse SRK_REVOKE", + "offset_int": "0x06F0", + "index_int": "0x002F", + "bitfields": [ + { + "width": 1, + "id": "fuse47-bit-0", + "name": "SRK_REVOKE1", + "description": "SRK key 1 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-1", + "name": "SRK_REVOKE2", + "description": "SRK key 2 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-2", + "name": "SRK_REVOKE3", + "description": "SRK key 3 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-3", + "name": "SRK_REVOKE4", + "description": "SRK key 4 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 4 + }, + { + "width": 8 + }, + { + "width": 16 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1040/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1040/database.yaml new file mode 100644 index 0000000..b7bd28c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1040/database.yaml @@ -0,0 +1,55 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1024 + +# General MCU information +info: + spsdk_predecessor_name: rt104x + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX-RT1040 + memory_map: + itcm: + start_int: 0x0 + size_int: 0x80000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x20000 + size_int: 0x60000 + warning_msg: RAM above 0x20000 is not initialized by default + dtcm: + start_int: 0x20000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x20020000 + size_int: 0x60000 + warning_msg: RAM above 0x20020000 is not initialized by default + ocram: + start_int: 0x20200000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x20240000 + size_int: 0x40000 + warning_msg: RAM above 0x20240000 is not initialized by default + flexspi: + start_int: 0x60000000 + size_int: 0x10000000 + external: true + non_xip_type: none + sdram: + start_int: 0x80000000 + size_int: 0x60000000 + external: true + non_xip_type: ext_ram_semc + isp: + rom: + protocol: sdp + usb: + - vid: 0x1FC9 + pid: 0x0135 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1040/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1040/fuses.json new file mode 100644 index 0000000..249f894 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1040/fuses.json @@ -0,0 +1,2868 @@ +{ + "cpu": "mimxrt1040", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Lock bits allowing to lock access to specified fuses" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCKS", + "description": "Fuse LOCKS", + "offset_int": "0x0400", + "index_int": "0", + "bitfields": [ + { + "width": 2, + "id": "fuse0-bits-0-1", + "name": "TESTER_LOCK", + "description": "Perform lock on Tester programed fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-2-3", + "name": "BOOT_CFG_LOCK", + "description": "Perform lock on BOOT related fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse0-bit-6", + "name": "SJC_RESP_LOCK", + "description": "SJC response lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read, sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-7", + "name": "GP4_RLOCK", + "description": "GP4 read lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-8-9", + "name": "MAC_ADDR_LOCK", + "description": "Lock MAC_ADDR fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-10-11", + "name": "GP1_LOCK", + "description": "Lock for General Purpose fuse register #1 (GP1)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-12-13", + "name": "GP2_LOCK", + "description": "Lock for General Purpose fuse register #2 (GP2)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-16", + "name": "SW_GP1_LOCK", + "description": "Lock for SW_GP1 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-18-19", + "name": "ANALOG_LOCK", + "description": "Lock for analog related fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-21", + "name": "SW_GP2_LOCK", + "description": "WP and OP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-22", + "name": "MISC_CONF_LOCK", + "description": "RP Lock for MISC_CONF0, MISC_CONF1 fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-23", + "name": "SW_GP2_RLOCK", + "description": "RP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-24-25", + "name": "GP4_LOCK", + "description": "Lock for GP4 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-26-27", + "name": "GP3_LOCK", + "description": "Lock for GP3 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-31", + "name": "FIELD_RETURN", + "description": "Configure device for field return testing. Fuse burning is protected by CSF command, with proper parameter passed. Write / OP protected by FIELD_RETURN_LOCK bit in control register.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Device is in functional / secure mode." + }, + { + "name": "1", + "value": 1, + "description": "Device is open for 'field-return' testing." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "IDs", + "description": "Different identifiers" + }, + "registers": [ + { + "id": "fuse1", + "name": "LOT_NO_ENC1", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[42:11]" + ], + "offset_int": "0x0410", + "index_int": "0x0001", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse1-bits-0-31", + "name": "LOT_NO_ENC[42:11]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse2", + "name": "LOT_NO_ENC0_WAFER_COORD", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[10:0]" + ], + "offset_int": "0x0420", + "index_int": "0x0002", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 11, + "id": "fuse2-bits-0-10", + "name": "LOT_NO_ENC[10:0]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + }, + { + "width": 5, + "id": "fuse2-bits-11-15", + "name": "WAFER_NO[4:0]", + "description": "The wafer number of the wafer on which the device was fabricated/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-16-23", + "name": "DIE-Y-CORDINATE[7:0]", + "description": "The Y-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-24-31", + "name": "DIE-X-CORDINATE[7:0]", + "description": "The X-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse3", + "name": "SI_REV", + "description": "Fuse SI_REV", + "deprecated_names": [ + "SI_REV[3:0]" + ], + "offset_int": "0x0430", + "index_int": "0x0003", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 4, + "id": "fuse3-bits-16-19", + "name": "SI_REV[3:0]", + "description": "Silicon Revision number." + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse4", + "name": "TESTER_CFG", + "description": "Fuse TESTER_CFG", + "offset_int": "0x0440", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse4-bit-1", + "name": "SEC_CONFIG[0]", + "description": "Security Configuration Mode, and block of debugging of security HW, by JTAG" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse4-bits-16-17", + "name": "SPEED_GRADING[1:0]", + "description": "Burned by tester program, for indicating IC core speed" + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Boot config", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse5", + "name": "BOOT_CFG0", + "description": "Fuse BOOT_CFG0", + "offset_int": "0x0450", + "index_int": "0x0005", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse5-bit-0", + "name": "FLASH_AUTO_PROBE_EN", + "description": "FLASH_AUTO_PROBE_EN", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "0 - Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "1 - Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse5-bit-1", + "name": "EncryptedXIP", + "description": "Support for the encrypted bootable image. It is applied only if BT_FUSE_SEL fuse bit is set. Otherwise the value is retrieved from the pins.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "0 - Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "1 - Enabled" + } + ] + }, + { + "width": 2, + "id": "fuse5-bits-2-3", + "name": "FLASH PROBE TYPE", + "description": "FLASH PROBE TYPE (SPI mode after PoR)", + "values": [ + { + "name": "00", + "value": 0, + "description": "00 - QuadSPI NOR" + }, + { + "name": "01", + "value": 1, + "description": "01 - Macronix Octal FLASH" + }, + { + "name": "10", + "value": 2, + "description": "10 - Micron Octal FLASH" + }, + { + "name": "11", + "value": 3, + "description": "11 - Adesto Octal FLASH" + } + ] + }, + { + "width": 4, + "id": "fuse5-bits-4-7", + "name": "Boot_Device_Selection", + "description": "Boot device selection.", + "values": [ + { + "name": "FlexSPI NOR", + "value": 0, + "description": "0000 - FlexSPI (Serial NOR)" + }, + { + "name": "SEMC (NOR)", + "value": 1, + "description": "0001 - SEMC (NOR)" + }, + { + "name": "SEMC (NAND)", + "value": 2, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SEMC (NAND)_1", + "value": 3, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SD (SDR12)", + "value": 4, + "description": "0100 - SD/SDXC Speed (Normal/SDR12)" + }, + { + "name": "SD (SDR25)", + "value": 5, + "description": "0101 - SD/SDXC Speed (High/SDR25)" + }, + { + "name": "SD (SDR50)", + "value": 6, + "description": "0110 - SD/SDXC Speed (SDR50)" + }, + { + "name": "SD (SDR104)", + "value": 7, + "description": "0111 - SD/SDXC Speed (SDR104)" + }, + { + "name": "eMMC: Normal", + "value": 8, + "description": "1000 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: Normal/FB", + "value": 9, + "description": "1001 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Enabled)" + }, + { + "name": "eMMC: High", + "value": 10, + "description": "1010 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: High/FB", + "value": 11, + "description": "1011 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Enabled)" + }, + { + "name": "FlexSPI NAND 50MHz 12b", + "value": 12, + "description": "1100 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b", + "value": 13, + "description": "1101 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + }, + { + "name": "FlexSPI NAND 50MHz 12b 1", + "value": 14, + "description": "1110 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b 1", + "value": 15, + "description": "1111 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + } + ] + }, + { + "width": 8, + "id": "fuse5-bits-8-15", + "name": "BOOT_CFG2", + "description": "BOOT configuration register #2, Usage varies, depending on selected boot device." + }, + { + "width": 8, + "id": "fuse5-bits-16-23", + "name": "BOOT_CFG3", + "description": "BOOT configuration register #3" + }, + { + "width": 8, + "id": "fuse5-bits-24-31", + "name": "BOOT_CFG4", + "description": "BOOT configuration register #4" + } + ] + }, + { + "id": "fuse6", + "name": "BOOT_CFG1", + "description": "Fuse BOOT_CFG1", + "offset_int": "0x0460", + "index_int": "0x0006", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-1", + "name": "SEC_CONFIG[1]", + "description": "Security Configuration (with SEC_CONFIG[0])", + "values": [ + { + "name": "Open", + "value": 0, + "description": "Open (allows any program image, even if the authentication fails)" + }, + { + "name": "Closed", + "value": 1, + "description": "Closed (The program image executes only if authenticated)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-2", + "name": "Boot Frequencies", + "description": "Determines, ARM Core and Bus frequencies during boot", + "values": [ + { + "name": "0", + "value": 0, + "description": "(ARM) 396 / (Bus)132 MHz" + }, + { + "name": "1", + "value": 1, + "description": "(ARM) 528 / (Bus) 132 MHz" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-4", + "name": "BT_FUSE_SEL", + "description": "Determines, whether using fuses for boot configuration, or GPIO /Serial loader", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-5", + "name": "FORCE_COLD_BOOT", + "description": "Force cold boot when A9 core come out of reset. Reflected in SBMR reg of SRC", + "values": [ + { + "name": "0", + "value": 0, + "description": "Default behavior equivalent to the rest of the i.MX6 family allowing a fast recovery from low power modes. That is, the ROM is allowed to jump to the address previously programmed in the SRC persistent register." + }, + { + "name": "1", + "value": 1, + "description": "Fast recovery path in the ROM is not allowed and a cold boot is always performed. Customers wanting a higher level of security should burn this fuse." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "fuse6-bits-8-11", + "name": "SDRAM_CONFIG", + "description": "TBD (SDRAM config options)", + "deprecated_names": [ + "SDRAM_CONFIG[7:0]" + ] + }, + { + "width": 2, + "id": "fuse6-bits-12-13", + "name": "BEE_KEY0_SEL", + "description": "AES key selection for BEE_KEY0", + "values": [ + { + "name": "From register", + "value": 0, + "description": "From register" + }, + { + "name": "GP4[127:0]", + "value": 1, + "description": "GP4[127:0]" + }, + { + "name": "OTPMK[255:128]", + "value": 2, + "description": "From OTPMK[255:128]" + }, + { + "name": "From SW-GP2", + "value": 3, + "description": "From SW-GP2" + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-14-15", + "name": "BEE_KEY1_SEL", + "description": "AES key selection for BEE_KEY1", + "values": [ + { + "name": "From register", + "value": 0, + "description": "From register" + }, + { + "name": "GP4[127:0]", + "value": 1, + "description": "GP4[127:0]" + }, + { + "name": "OTPMK[[255:128]", + "value": 2, + "description": "From OTPMK[[255:128]" + }, + { + "name": "From SW-GP2", + "value": 3, + "description": "From SW-GP2" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-16", + "name": "FORCE_INTERNAL_BOOT", + "description": "Once been blown, the external BT_MODE[1:0] pins will be ignored, BootROM will take Boot Mode as “internal boot”.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Boot Mode from BT_MODE pins" + }, + { + "name": "1", + "value": 1, + "description": "BT_MODE pins be ignored, Boot Mode forced to \"internal boot\"" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-17", + "name": "SDP_DISABLE", + "description": "Disable/Enable serial download support", + "values": [ + { + "name": "0", + "value": 0, + "description": "Serial download supported" + }, + { + "name": "1", + "value": 1, + "description": "No serial download support" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-18", + "name": "SDP_READ_DISABLE", + "description": "Disable/Enable serial download READ_REGISTER command.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "SDP READ_REGISTER command is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "SDP READ_REGISTER is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-19", + "name": "DAP_SJC_SWD_SEL", + "description": "Control DAP works in JTAG or SWD mode", + "values": [ + { + "name": "0", + "value": 0, + "description": "DAP works in SWD mode" + }, + { + "name": "1", + "value": 1, + "description": "DAP works in JTAG mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-20", + "name": "SJC_DISABLE", + "description": "Disable/Enable the Secure JTAG Controller module. This fuse is used to create highest JTAG security level, where JTAG is totally blocked.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Secure JTAG Controller is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "Secure JTAG Controller is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-21", + "name": "WDOG_ENABLE", + "description": "Watchdog Enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Watch-Dog is disabled." + }, + { + "name": "Enable", + "value": 1, + "description": "Watch-Dog is enabled." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-22-23", + "name": "JTAG_SMODE[1:0]", + "description": "JTAG Security Mode. Controls the security mode of the JTAG debug interface", + "values": [ + { + "name": "00", + "value": 0, + "description": "JTAG enable mode" + }, + { + "name": "01", + "value": 1, + "description": "Secure JTAG mode" + }, + { + "name": "11", + "value": 3, + "description": "No debug mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-24", + "name": "DLL_ENABLE", + "description": "Controls the enable/disable of the DLL for SD/eMMC boot", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable DLL for SD/eMMC" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable DLL for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-25", + "name": "NAND_ECC_DISABLE", + "description": "Indicate whether to enabled ECC (done by SW/Device HW) for Raw Nand device", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "NAND ECC is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "NAND ECC is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-26", + "name": "KTE", + "description": "Kill Trace Enable. Enables tracing capability on ETM, and other modules", + "values": [ + { + "name": "0", + "value": 0, + "description": "Bus tracing is allowed" + }, + { + "name": "1", + "value": 1, + "description": "Bus tracing is allowed in case security state as defined by Secure JTAG allows it (for example, JTAG_ENABLE or NO_DEBUG)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-27", + "name": "JTAG_HEO", + "description": "JTAG HAB Enable Override. Disallows HAB JTAG enabling. The HAB may normally enable JTAG debugging by means of the HAB_JDE-bit in the OCOTP SCS register. The JTAG_HEO-bit can override this behavior", + "values": [ + { + "name": "0", + "value": 0, + "description": "HAB may enable JTAG debug access" + }, + { + "name": "1", + "value": 1, + "description": "HAB JTAG enable is overridden (HAB may not enable JTAG debug access)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-29", + "name": "PWR_STABLE_CYCLE_SELECTION", + "description": "Select Power Stable Cycle", + "values": [ + { + "name": "5ms", + "value": 0, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "2.5ms" + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-30-31", + "name": "SD_PWR_CYCLE_SELECTION", + "description": "Select SD Power Cycle", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "2.5ms" + } + ] + } + ] + }, + { + "id": "fuse7", + "name": "BOOT_CFG2", + "description": "Fuse BOOT_CFG2", + "offset_int": "0x0470", + "index_int": "0x0007", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse7-bit-0", + "name": "Override SD Pad Settings", + "description": "Overrides ROM default value for SD PAD control register. When set ROM will override SD pad control register with value programmed into PAD_SETTINGS fuse bits.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-1", + "name": "BT_MPU_DISABLE", + "description": "The fuse bit is used for ROM to not enable MMU", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "MPU is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "MPU is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-2", + "name": "L1 I-Cache DISABLE", + "description": "The fuse bit is used for ROM to not enable L1 I-Cache", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "L1 I-Cache is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "L1 I-Cache is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-3", + "name": "Disable SDMMC Manufacture mode", + "description": "The fuse bit is used to disable ROM feature “SD/MMC Manufacturing Mode”.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-4", + "name": "UART Serial Download Disable", + "description": "Disable UART Serial Download", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-5", + "name": "SD2 VOLTAGE SELECTION", + "description": "Fuse bit to change voltage selection for SD2 pads. When set ROM will select 1.8V for SD3 pads otherwise 3.3V", + "values": [ + { + "name": "3.3V", + "value": 0, + "description": "3.3V" + }, + { + "name": "1.8V", + "value": 1, + "description": "1.8V" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-6", + "name": "SD1_RST_POLARITY_SELECT", + "description": "Select reset polarity for SD1", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-7", + "name": "DLL Override", + "description": "Select the DLL mode for SD/eMMC.", + "values": [ + { + "name": "0", + "value": 0, + "description": "DLL Slave Mode for SD/eMMC" + }, + { + "name": "1", + "value": 1, + "description": "DLL Override Mode for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-8", + "name": "USDHC IOMUX SRE Enable", + "description": "The fuse bit is used for ROM to enable SRE bit for SD pads", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-9", + "name": "USDHC_IOMUX_SION_BIT_ENABLE", + "description": "The fuse bit is used for ROM to enable SION bit for MUX control register.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-10", + "name": "Boot Failure Indicator Pin Select[4]", + "description": "Indicate Boot Failure" + }, + { + "width": 1, + "id": "fuse7-bit-11", + "name": "ENABLE_EMMC_22K_PULLUP", + "description": "The fuse bit is used for ROM to enable 22K pullup for SD pads.", + "values": [ + { + "name": "47K pullup", + "value": 0, + "description": "47K pullup" + }, + { + "name": "22K pullup", + "value": 1, + "description": "22K pullup" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-12", + "name": "USDHC_PAD_PULL_DOWN", + "description": "The fuse bit is used for ROM to enable pull down bit for SD pads. ", + "values": [ + { + "name": "no action", + "value": 0, + "description": "no action" + }, + { + "name": "pull down", + "value": 1, + "description": "pull down" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-13", + "name": "Override HYS bit for SD-MMC pads", + "description": "Once this fuse be blown, the [HYS] bit of IOMUXC_SW_PAD_CTL_PAD_SDx_CLK(x is the SD port which the ROM boot from), IOMUXC_SW_PAD_CTL_PAD_SDx_CMD, IOMUXC_SW_PAD_CTL_PAD_SDx_DAT0-n(n will be 0, 3, or 7, depends on the bus width selected) will be set. ", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-14", + "name": "eMMC 4.4 - RESET TO PRE-IDLE STATE", + "description": "Once this fuse be blown, the CMD0 with argument 0xf0f0f0f0 will be sent to put the eMMC card into pre-IDLE state so that eMMC card’s fast boot can work properly.\nThis is useful for the warm boot, such as boot due to the WDOG reset.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-15", + "name": "SD2_RST_POLARITY_SELECT", + "description": "Select reset polarity for SD2", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 4, + "id": "fuse7-bits-16-19", + "name": "Boot Failure Indicator Pin Select[3:0]", + "description": "Miscellaneous power management configuration bits.", + "values": [ + { + "name": "gpio1.IO00", + "value": 0, + "description": "gpio1.IO00" + }, + { + "name": "gpio1.IO01", + "value": 1, + "description": "gpio1.IO01" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-20", + "name": "BT_LPB_POLARITY", + "description": "Define GPIO3 polarity, for determining LPB boot mode.", + "values": [ + { + "name": "Active High", + "value": 0, + "description": "Active High" + }, + { + "name": "Active Low", + "value": 1, + "description": "Active Low" + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-21-22", + "name": "LPB_BOOT", + "description": "Divide (Core / Bus) based on Boot Frequencies", + "values": [ + { + "name": "Div by 1", + "value": 0, + "description": "Div by 1" + }, + { + "name": "Div by 2", + "value": 1, + "description": "Div by 2" + }, + { + "name": "Div by 4", + "value": 2, + "description": "Div by 4" + }, + { + "name": "Div by 8", + "value": 3, + "description": "Div by 8" + } + ] + }, + { + "width": 1 + }, + { + "width": 7, + "id": "fuse7-bits-24-30", + "name": "MMC_DLL_DLY[6:0]", + "description": "eMMC 4.4 delay line default value (set by boot rom), used in conjunction with \"DLL Override\" = 1 (BOOT_CFG3[3])" + }, + { + "width": 1, + "id": "fuse7-bit-31", + "name": "Override NAND Pad Settings", + "description": "Override pad settings for NAND boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x480-0x4E0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved8", + "name": "Reserved 0x480", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0480", + "index_int": "0x0008", + "is_reserved": true, + "bitfields": [ + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved9", + "name": "Reserved 0x490", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0490", + "index_int": "0x0009", + "is_reserved": true, + "bitfields": [ + { + "width": 10 + }, + { + "width": 1 + }, + { + "width": 5 + }, + { + "width": 8 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved10", + "name": "Reserved 0x4A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04A0", + "index_int": "0x000A", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 24 + } + ] + }, + { + "id": "Reserved11", + "name": "Reserved 0x4B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04B0", + "index_int": "0x000B", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved12", + "name": "Reserved 0x4C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04C0", + "index_int": "0x000C", + "is_reserved": true, + "bitfields": [ + { + "width": 20 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved13", + "name": "Reserved 0x4D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04D0", + "index_int": "0x000D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved14", + "name": "Reserved 0x4E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04E0", + "index_int": "0x000E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "USB", + "description": "USB VID and PID" + }, + "registers": [ + { + "id": "fuse15", + "name": "USB_ID", + "description": "Fuse USB_ID", + "offset_int": "0x04F0", + "index_int": "0x000F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "operation_lock_int": "0x00080000" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse15-bits-0-15", + "name": "USB_VID", + "description": "USB VID", + "deprecated_names": [ + "USB_VID[31:0]" + ] + }, + { + "width": 16, + "id": "fuse15-bits-16-31", + "name": "USB_PID", + "description": "USB PID", + "deprecated_names": [ + "USB_PID[31:0]" + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x500-0x570", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved16", + "name": "Reserved 0x500", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0500", + "index_int": "0x0010", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved17", + "name": "Reserved 0x510", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0510", + "index_int": "0x0011", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved18", + "name": "Reserved 0x520", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0520", + "index_int": "0x0012", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved19", + "name": "Reserved 0x530", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0530", + "index_int": "0x0013", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved20", + "name": "Reserved 0x540", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0540", + "index_int": "0x0014", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved21", + "name": "Reserved 0x550", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0550", + "index_int": "0x0015", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved22", + "name": "Reserved 0x560", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0560", + "index_int": "0x0016", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved23", + "name": "Reserved 0x570", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0570", + "index_int": "0x0017", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "SRK Hash", + "description": "Super Root Keys Hash" + }, + "registers": [ + { + "id": "fuse24", + "name": "SRK_HASH[255:224]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0580", + "index_int": "0x0018" + }, + { + "id": "fuse25", + "name": "SRK_HASH[223:192]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0590", + "index_int": "0x0019" + }, + { + "id": "fuse26", + "name": "SRK_HASH[191:160]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05A0", + "index_int": "0x001A" + }, + { + "id": "fuse27", + "name": "SRK_HASH[159:128]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05B0", + "index_int": "0x001B" + }, + { + "id": "fuse28", + "name": "SRK_HASH[127:96]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05C0", + "index_int": "0x001C" + }, + { + "id": "fuse29", + "name": "SRK_HASH[95:64]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05D0", + "index_int": "0x001D" + }, + { + "id": "fuse30", + "name": "SRK_HASH[63:32]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05E0", + "index_int": "0x001E" + }, + { + "id": "fuse31", + "name": "SRK_HASH[31:0]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05F0", + "index_int": "0x001F" + } + ] + }, + { + "group": { + "name": "SJC", + "description": "Secure JTAG Controller" + }, + "registers": [ + { + "id": "fuse32", + "name": "SJC_RESP0", + "description": "Response reference value for the secure JTAG controller", + "deprecated_names": [ + "SJC_RESP[31:0]" + ], + "offset_int": "0x0600", + "index_int": "0x0020", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse32-bits-0-31", + "name": "SJC_RESP[31:0]", + "description": "Response reference value for the secure JTAG controller" + } + ] + }, + { + "id": "fuse33", + "name": "SJC_RESP1", + "description": "Response reference value for the secure JTAG controller", + "deprecated_names": [ + "SJC_RESP[55:32]" + ], + "offset_int": "0x0610", + "index_int": "0x0021", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + }, + "bitfields": [ + { + "width": 24, + "id": "fuse33-bits-0-23", + "name": "SJC_RESP[55:32]", + "description": "Response reference value for the secure JTAG controller" + }, + { + "width": 8 + } + ] + } + ] + }, + { + "group": { + "name": "MAC", + "description": "Ethernet MAC Address" + }, + "registers": [ + { + "id": "fuse34", + "name": "MAC1_ADDR1", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC1_ADDR[47:16]" + ], + "offset_int": "0x0620", + "index_int": "0x0022", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse34-bits-0-31", + "name": "MAC1_ADDR[47:16]", + "description": "Ethernet MAC Address" + } + ] + }, + { + "id": "fuse35", + "name": "MAC1_ADDR0_MAC2_ADDR1", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC2_ADDR[47:16]" + ], + "offset_int": "0x0630", + "index_int": "0x0023", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse35-bits-0-15", + "name": "MAC1_ADDR[15:0]", + "description": "Ethernet MAC Address" + }, + { + "width": 16, + "id": "fuse35-bits-16-31", + "name": "MAC2_ADDR[47:32]", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC2_ADDR[47:16]" + ] + } + ] + }, + { + "id": "fuse36", + "name": "MAC2_ADDR0", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC2_ADDR[31:0]" + ], + "offset_int": "0x0640", + "index_int": "0x0024", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse36-bits-0-31", + "name": "MAC2_ADDR[31:0]", + "description": "Ethernet MAC Address" + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x650", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved37", + "name": "Reserved 0x650", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0650", + "index_int": "0x0025", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "GPx", + "description": "General Purpose Fuse Registers." + }, + "registers": [ + { + "id": "fuse38", + "name": "GP1[31:0]", + "description": "General Purpose fuse register #1", + "offset_int": "0x0660", + "index_int": "0x0026", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0400", + "operation_lock_int": "0x0800" + } + }, + { + "id": "fuse39", + "name": "GP2[31:0]", + "description": "General Purpose fuse register #2", + "offset_int": "0x0670", + "index_int": "0x0027", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "operation_lock_int": "0x2000" + } + } + ] + }, + { + "group": { + "name": "SW_GPx", + "description": "SW general purpose keys." + }, + "registers": [ + { + "id": "fuse40", + "name": "SW_GP1[31:0]", + "description": "SW general purpose key", + "offset_int": "0x0680", + "index_int": "0x0028", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00010000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00010000" + } + }, + { + "id": "fuse41", + "name": "SW_GP2[127:96]", + "description": "SW general purpose key", + "offset_int": "0x0690", + "index_int": "0x0029", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse42", + "name": "SW_GP2[95:64]", + "description": "SW general purpose key", + "offset_int": "0x06A0", + "index_int": "0x002A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse43", + "name": "SW_GP2[63:32]", + "description": "SW general purpose key", + "offset_int": "0x06B0", + "index_int": "0x002B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse44", + "name": "SW_GP2[31:0]", + "description": "SW general purpose key", + "offset_int": "0x06C0", + "index_int": "0x002C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + } + ] + }, + { + "group": { + "name": "Miscellaneous", + "description": "Miscellaneous configuration." + }, + "registers": [ + { + "id": "fuse45", + "name": "MISC_CONF0", + "description": "Fuse MISC_CONF0", + "offset_int": "0x06D0", + "index_int": "0x002D", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 6, + "id": "fuse45-bits-0-5", + "name": "PAD_SETTINGS", + "description": "Used with conjunction of MMC/SD/Nand \"Override Pad Settings\" fuse value, as follow:\n'0' - Use IO default settings for boot device IO pads.\n'1' - Use \"Override\" value, as set by this register." + }, + { + "width": 1, + "id": "fuse45-bit-6", + "name": "USB_VBUS_EVENT_HANDLER_EN", + "description": "Rom handle USB VBUS attach/detach event", + "values": [ + { + "name": "0", + "value": 0, + "description": "ROM not handle USB VBUS attach/detach event" + }, + { + "name": "1", + "value": 1, + "description": "ROM handle USB VBUS attach/detach event" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-7", + "name": "Enable Boot Failure Indicator Pin", + "description": "Enable Boot Failure Indicator Pin", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-8-11", + "name": "READ_RETRY_SEQ_ID", + "description": "Choose Read Retry Sequence ", + "values": [ + { + "name": "0000", + "value": 0, + "description": "don't use read retry(RR) sequence embedded in ROM" + }, + { + "name": "0001", + "value": 1, + "description": "Micron 20nm RR sequence" + }, + { + "name": "0010", + "value": 2, + "description": "Toshiba A19nm RR sequence" + }, + { + "name": "0011", + "value": 3, + "description": "Toshiba 19nm RR sequence" + }, + { + "name": "0100", + "value": 4, + "description": "SanDisk 19nm RR sequence" + }, + { + "name": "0101", + "value": 5, + "description": "SanDisk 1ynmRR sequence" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "fuse45-bits-13-15", + "name": "WDOG Timeout Select", + "description": "Select WDOG Timeout", + "values": [ + { + "name": "64s", + "value": 0, + "description": "64s" + }, + { + "name": "32s", + "value": 1, + "description": "32s" + }, + { + "name": "16s", + "value": 2, + "description": "16s" + }, + { + "name": "8s", + "value": 3, + "description": "8s" + }, + { + "name": "4s", + "value": 4, + "description": "4s" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-16-19", + "name": "Default_FlexRAM_Part", + "description": "Default FlexRAM RAM bank partitioning" + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse45-bit-24", + "name": "EEPROM_RECOVERY_EN", + "description": "EEPROM Recovery Enable", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-25-26", + "name": "LPSPI_PORT_SEL", + "description": "LPSPI Port Select", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + }, + { + "name": "LPSPI3", + "value": 2, + "description": "LPSPI3" + }, + { + "name": "LPSPI4", + "value": 3, + "description": "LPSPI4" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-27", + "name": "LPSPI_ADDR", + "description": "SPI Addressing", + "values": [ + { + "name": "2-bytes", + "value": 0, + "description": "2-bytes (16-bit)" + }, + { + "name": "3-bytes", + "value": 1, + "description": "3-bytes (24-bit)" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-28-29", + "name": "LPSPI_SPEED", + "description": "LPSPI Speed select", + "values": [ + { + "name": "00", + "value": 0, + "description": "20 MHz (default)" + }, + { + "name": "10 MHz", + "value": 1, + "description": "10 MHz" + }, + { + "name": "5 MHz", + "value": 2, + "description": "5 MHz" + }, + { + "name": "2 MHz", + "value": 3, + "description": "2 MHz" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-30-31", + "name": "SD_CALIBRATION_STEP", + "description": "SD Calibration Step", + "values": [ + { + "name": "1", + "value": 0, + "description": "1" + } + ] + } + ] + }, + { + "id": "fuse46", + "name": "MISC_CONF1", + "description": "Fuse MISC_CONF1", + "offset_int": "0x06E0", + "index_int": "0x002E", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse46-bits-0-7", + "name": "BOOT_CONFIG_MISC0", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-8-15", + "name": "BOOT_CONFIG_MISC1", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-16-23", + "name": "BOOT_CONFIG_MISC2", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-24-31", + "name": "BOOT_CONFIG_MISC3", + "description": "boot configuration misc " + } + ] + }, + { + "id": "fuse47", + "name": "SRK_REVOKE", + "description": "Fuse SRK_REVOKE", + "offset_int": "0x06F0", + "index_int": "0x002F", + "bitfields": [ + { + "width": 1, + "id": "fuse47-bit-0", + "name": "SRK_REVOKE1", + "description": "SRK key 1 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-1", + "name": "SRK_REVOKE2", + "description": "SRK key 2 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-2", + "name": "SRK_REVOKE3", + "description": "SRK key 3 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-3", + "name": "SRK_REVOKE4", + "description": "SRK key 4 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 4 + }, + { + "width": 8 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x800-0x870", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved48", + "name": "Reserved 0x800", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0800", + "index_int": "0x0030", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved49", + "name": "Reserved 0x810", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0810", + "index_int": "0x0031", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved50", + "name": "Reserved 0x820", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0820", + "index_int": "0x0032", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved51", + "name": "Reserved 0x830", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0830", + "index_int": "0x0033", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved52", + "name": "Reserved 0x840", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0840", + "index_int": "0x0034", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved53", + "name": "Reserved 0x850", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0850", + "index_int": "0x0035", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved54", + "name": "Reserved 0x860", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0860", + "index_int": "0x0036", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved55", + "name": "Reserved 0x870", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0870", + "index_int": "0x0037", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "GP3", + "description": "General Purpose Fuse Register 3." + }, + "registers": [ + { + "id": "fuse56", + "name": "GP3[127:96]", + "description": "General Purpose fuse register #3", + "offset_int": "0x0880", + "index_int": "0x0038", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + }, + { + "id": "fuse57", + "name": "GP3[95:64]", + "description": "General Purpose fuse register #3", + "offset_int": "0x0890", + "index_int": "0x0039", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + }, + { + "id": "fuse58", + "name": "GP3[63:32]", + "description": "General Purpose fuse register #3", + "offset_int": "0x08A0", + "index_int": "0x003A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + }, + { + "id": "fuse59", + "name": "GP3[31:0]", + "description": "General Purpose fuse register #3", + "offset_int": "0x08B0", + "index_int": "0x003B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + } + ] + }, + { + "group": { + "name": "GP4", + "description": "General Purpose Fuse Register 4." + }, + "registers": [ + { + "id": "fuse60", + "name": "GP4[127:96]", + "description": "General Purpose fuse register #4", + "offset_int": "0x08C0", + "index_int": "0x003C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x0080", + "operation_lock_int": "0x02000000" + } + }, + { + "id": "fuse61", + "name": "GP4[95:64]", + "description": "General Purpose fuse register #4", + "offset_int": "0x08D0", + "index_int": "0x003D", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x0080", + "operation_lock_int": "0x02000000" + } + }, + { + "id": "fuse62", + "name": "GP4[63:32]", + "description": "General Purpose fuse register #4", + "offset_int": "0x08E0", + "index_int": "0x003E", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x0080", + "operation_lock_int": "0x02000000" + } + }, + { + "id": "fuse63", + "name": "GP4[31:0]", + "description": "General Purpose fuse register #4", + "offset_int": "0x08F0", + "index_int": "0x003F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x0080", + "operation_lock_int": "0x02000000" + } + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1043/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1043/database.yaml new file mode 100644 index 0000000..731f7e4 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1043/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1040 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1046/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1046/database.yaml new file mode 100644 index 0000000..731f7e4 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1046/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1040 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1050/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1050/database.yaml new file mode 100644 index 0000000..0ab52ad --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1050/database.yaml @@ -0,0 +1,49 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1024 + +# General MCU information +info: + spsdk_predecessor_name: rt105x + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX-RT1050 + memory_map: + itcm: + start_int: 0x0 + size_int: 0x80000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x20000 + size_int: 0x60000 + warning_msg: RAM above 0x20000 is not initialized by default + dtcm: + start_int: 0x20000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x20020000 + size_int: 0x60000 + warning_msg: RAM above 0x20020000 is not initialized by default + ocram: + start_int: 0x20200000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x20240000 + size_int: 0x40000 + warning_msg: RAM above 0x20240000 is not initialized by default + flexspi: + start_int: 0x60000000 + size_int: 0x10000000 + external: true + non_xip_type: none + sdram: + start_int: 0x80000000 + size_int: 0x60000000 + external: true + non_xip_type: ext_ram_semc diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1050/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1050/fuses.json new file mode 100644 index 0000000..7156c3c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1050/fuses.json @@ -0,0 +1,2568 @@ +{ + "cpu": "mimxrt1050", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Lock bits allowing to lock access to specified fuses" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCKS", + "description": "Fuse LOCKS", + "offset_int": "0x0400", + "index_int": "0", + "bitfields": [ + { + "width": 2, + "id": "fuse0-bits-0-1", + "name": "TESTER_LOCK", + "description": "Perform lock on Tester programed fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-2-3", + "name": "BOOT_CFG_LOCK", + "description": "Perform lock on BOOT related fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse0-bit-6", + "name": "SJC_RESP_LOCK", + "description": "SJC response lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read, sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-8-9", + "name": "MAC_ADDR_LOCK", + "description": "Lock MAC_ADDR fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-10-11", + "name": "GP1_LOCK", + "description": "Lock for General Purpose fuse register #1 (GP1)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-12-13", + "name": "GP2_LOCK", + "description": "Lock for General Purpose fuse register #2 (GP2)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-16", + "name": "SW_GP1_LOCK", + "description": "Lock for SW_GP1 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-18-19", + "name": "ANALOG_LOCK", + "description": "Lock for analog related fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-21", + "name": "SW_GP2_LOCK", + "description": "WP and OP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-22", + "name": "MISC_CONF_LOCK", + "description": "RP Lock for MISC_CONF0, MISC_CONF1 fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-23", + "name": "SW_GP2_RLOCK", + "description": "RP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-26-27", + "name": "GP3_LOCK", + "description": "Lock for GP3 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-31", + "name": "FIELD_RETURN", + "description": "Configure device for field return testing. Fuse burning is protected by CSF command, with proper parameter passed. Write / OP protected by FIELD_RETURN_LOCK bit in control register.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Device is in functional / secure mode." + }, + { + "name": "1", + "value": 1, + "description": "Device is open for 'field-return' testing." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "IDs", + "description": "Different identifiers" + }, + "registers": [ + { + "id": "fuse1", + "name": "LOT_NO_ENC1", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[42:11]" + ], + "offset_int": "0x0410", + "index_int": "0x0001", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse1-bits-0-31", + "name": "LOT_NO_ENC[42:11]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse2", + "name": "LOT_NO_ENC0_WAFER_COORD", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[10:0]" + ], + "offset_int": "0x0420", + "index_int": "0x0002", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 11, + "id": "fuse2-bits-0-10", + "name": "LOT_NO_ENC[10:0]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + }, + { + "width": 5, + "id": "fuse2-bits-11-15", + "name": "WAFER_NO[4:0]", + "description": "The wafer number of the wafer on which the device was fabricated/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-16-23", + "name": "DIE-Y-CORDINATE[7:0]", + "description": "The Y-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-24-31", + "name": "DIE-X-CORDINATE[7:0]", + "description": "The X-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse3", + "name": "SI_REV", + "description": "Fuse SI_REV", + "deprecated_names": [ + "SI_REV[3:0]" + ], + "offset_int": "0x0430", + "index_int": "0x0003", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 4, + "id": "fuse3-bits-16-19", + "name": "SI_REV[3:0]", + "description": "Silicon Revision number." + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse4", + "name": "TESTER_CFG", + "description": "Fuse TESTER_CFG", + "offset_int": "0x0440", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse4-bit-1", + "name": "SEC_CONFIG[0]", + "description": "Security Configuration Mode, and block of debugging of security HW, by JTAG" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse4-bits-16-17", + "name": "SPEED_GRADING[1:0]", + "description": "Burned by tester program, for indicating IC core speed" + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Boot config", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse5", + "name": "BOOT_CFG0", + "description": "Fuse BOOT_CFG0", + "offset_int": "0x0450", + "index_int": "0x0005", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse5-bit-1", + "name": "EncryptedXIP", + "description": "Support for the encrypted bootable image. It is applied only if BT_FUSE_SEL fuse bit is set. Otherwise the value is retrieved from the pins.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "0 - Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "1 - Enabled" + } + ] + }, + { + "width": 2, + "id": "fuse5-bits-2-3", + "name": "HOLD TIME", + "description": "HOLD TIME", + "values": [ + { + "name": "00", + "value": 0, + "description": "00 - 500us (NOR), 0us (NAND)" + }, + { + "name": "01", + "value": 1, + "description": "01 - 1ms (NOR), 500us (NAND)" + }, + { + "name": "10", + "value": 2, + "description": "10 - 3ms (NOR), 1ms (NAND)" + }, + { + "name": "11", + "value": 3, + "description": "11 - 10ms (NOR), 3ms (NAND)" + } + ] + }, + { + "width": 4, + "id": "fuse5-bits-4-7", + "name": "Boot_Device_Selection", + "description": "Boot device selection.", + "values": [ + { + "name": "FlexSPI NOR", + "value": 0, + "description": "0000 - FlexSPI (Serial NOR)" + }, + { + "name": "SEMC (NOR)", + "value": 1, + "description": "0001 - SEMC (NOR)" + }, + { + "name": "SEMC (NAND)", + "value": 2, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SEMC (NAND)_1", + "value": 3, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SD (SDR12)", + "value": 4, + "description": "0100 - SD/SDXC Speed (Normal/SDR12)" + }, + { + "name": "SD (SDR25)", + "value": 5, + "description": "0101 - SD/SDXC Speed (High/SDR25)" + }, + { + "name": "SD (SDR50)", + "value": 6, + "description": "0110 - SD/SDXC Speed (SDR50)" + }, + { + "name": "SD (SDR104)", + "value": 7, + "description": "0111 - SD/SDXC Speed (SDR104)" + }, + { + "name": "eMMC: Normal", + "value": 8, + "description": "1000 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: Normal/FB", + "value": 9, + "description": "1001 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Enabled)" + }, + { + "name": "eMMC: High", + "value": 10, + "description": "1010 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: High/FB", + "value": 11, + "description": "1011 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Enabled)" + }, + { + "name": "FlexSPI NAND 50MHz 12b", + "value": 12, + "description": "1100 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b", + "value": 13, + "description": "1101 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + }, + { + "name": "FlexSPI NAND 50MHz 12b 1", + "value": 14, + "description": "1110 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b 1", + "value": 15, + "description": "1111 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + } + ] + }, + { + "width": 8, + "id": "fuse5-bits-8-15", + "name": "BOOT_CFG2", + "description": "BOOT configuration register #2, Usage varies, depending on selected boot device." + }, + { + "width": 8, + "id": "fuse5-bits-16-23", + "name": "BOOT_CFG3", + "description": "BOOT configuration register #3" + }, + { + "width": 8, + "id": "fuse5-bits-24-31", + "name": "BOOT_CFG4", + "description": "BOOT configuration register #4" + } + ] + }, + { + "id": "fuse6", + "name": "BOOT_CFG1", + "description": "Fuse BOOT_CFG1", + "offset_int": "0x0460", + "index_int": "0x0006", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-1", + "name": "SEC_CONFIG[1]", + "description": "Security Configuration (with SEC_CONFIG[0])", + "values": [ + { + "name": "Open", + "value": 0, + "description": "Open (allows any program image, even if the authentication fails)" + }, + { + "name": "Closed", + "value": 1, + "description": "Closed (The program image executes only if authenticated)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-2", + "name": "Boot Frequencies", + "description": "Determines, ARM Core and Bus frequencies during boot", + "values": [ + { + "name": "0", + "value": 0, + "description": "(ARM) 396 / (Bus)132 MHz" + }, + { + "name": "1", + "value": 1, + "description": "(ARM) 528 / (Bus) 132 MHz" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-3", + "name": "DIR_BT_DIS", + "description": "Direct External Memory Boot Disable", + "values": [ + { + "name": "0", + "value": 0, + "description": "Direct boot from external memory is allowed" + }, + { + "name": "1", + "value": 1, + "description": "Direct boot from external memory is not allowed" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-4", + "name": "BT_FUSE_SEL", + "description": "Determines, whether using fuses for boot configuration, or GPIO /Serial loader", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-5", + "name": "FORCE_COLD_BOOT", + "description": "Force cold boot when A9 core come out of reset. Reflected in SBMR reg of SRC", + "values": [ + { + "name": "0", + "value": 0, + "description": "Default behavior equivalent to the rest of the i.MX6 family allowing a fast recovery from low power modes. That is, the ROM is allowed to jump to the address previously programmed in the SRC persistent register." + }, + { + "name": "1", + "value": 1, + "description": "Fast recovery path in the ROM is not allowed and a cold boot is always performed. Customers wanting a higher level of security should burn this fuse." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "fuse6-bits-8-11", + "name": "SDRAM_CONFIG", + "description": "TBD (SDRAM config options)", + "deprecated_names": [ + "SDRAM_CONFIG[7:0]" + ] + }, + { + "width": 2, + "id": "fuse6-bits-12-13", + "name": "BEE_KEY0_SEL", + "description": "AES key selection for BEE_KEY0", + "values": [ + { + "name": "From register", + "value": 0, + "description": "From register" + }, + { + "name": "From OTPMK", + "value": 2, + "description": "From OTPMK" + }, + { + "name": "From SW-GP2", + "value": 3, + "description": "From SW-GP2" + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-14-15", + "name": "BEE_KEY1_SEL", + "description": "AES key selection for BEE_KEY1", + "values": [ + { + "name": "From register", + "value": 0, + "description": "From register" + }, + { + "name": "From OTPMK", + "value": 2, + "description": "From OTPMK" + }, + { + "name": "From SW-GP2", + "value": 3, + "description": "From SW-GP2" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-16", + "name": "FORCE_INTERNAL_BOOT", + "description": "Once been blown, the external BT_MODE[1:0] pins will be ignored, BootROM will take Boot Mode as “internal boot”.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Boot Mode from BT_MODE pins" + }, + { + "name": "1", + "value": 1, + "description": "BT_MODE pins be ignored, Boot Mode forced to \"internal boot\"" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-17", + "name": "SDP_DISABLE", + "description": "Disable/Enable serial download support", + "values": [ + { + "name": "0", + "value": 0, + "description": "Serial download supported" + }, + { + "name": "1", + "value": 1, + "description": "No serial download support" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-18", + "name": "SDP_READ_DISABLE", + "description": "Disable/Enable serial download READ_REGISTER command.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "SDP READ_REGISTER command is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "SDP READ_REGISTER is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-19", + "name": "DAP_SJC_SWD_SEL", + "description": "Control DAP works in JTAG or SWD mode", + "values": [ + { + "name": "0", + "value": 0, + "description": "DAP works in SWD mode" + }, + { + "name": "1", + "value": 1, + "description": "DAP works in JTAG mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-20", + "name": "SJC_DISABLE", + "description": "Disable/Enable the Secure JTAG Controller module. This fuse is used to create highest JTAG security level, where JTAG is totally blocked.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Secure JTAG Controller is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "Secure JTAG Controller is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-21", + "name": "WDOG_ENABLE", + "description": "Watchdog Enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Watch-Dog is disabled." + }, + { + "name": "Enable", + "value": 1, + "description": "Watch-Dog is enabled." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-22-23", + "name": "JTAG_SMODE[1:0]", + "description": "JTAG Security Mode. Controls the security mode of the JTAG debug interface", + "values": [ + { + "name": "00", + "value": 0, + "description": "JTAG enable mode" + }, + { + "name": "01", + "value": 1, + "description": "Secure JTAG mode" + }, + { + "name": "11", + "value": 3, + "description": "No debug mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-24", + "name": "DLL_ENABLE", + "description": "Controls the enable/disable of the DLL for SD/eMMC boot", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable DLL for SD/eMMC" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable DLL for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-25", + "name": "NAND_ECC_DISABLE", + "description": "Indicate whether to enabled ECC (done by SW/Device HW) for Raw Nand device", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "NAND ECC is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "NAND ECC is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-26", + "name": "KTE", + "description": "Kill Trace Enable. Enables tracing capability on ETM, and other modules", + "values": [ + { + "name": "0", + "value": 0, + "description": "Bus tracing is allowed" + }, + { + "name": "1", + "value": 1, + "description": "Bus tracing is allowed in case security state as defined by Secure JTAG allows it (for example, JTAG_ENABLE or NO_DEBUG)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-27", + "name": "JTAG_HEO", + "description": "JTAG HAB Enable Override. Disallows HAB JTAG enabling. The HAB may normally enable JTAG debugging by means of the HAB_JDE-bit in the OCOTP SCS register. The JTAG_HEO-bit can override this behavior", + "values": [ + { + "name": "0", + "value": 0, + "description": "HAB may enable JTAG debug access" + }, + { + "name": "1", + "value": 1, + "description": "HAB JTAG enable is overridden (HAB may not enable JTAG debug access)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-29", + "name": "PWR_STABLE_CYCLE_SELECTION", + "description": "Select Power Stable Cycle", + "values": [ + { + "name": "5ms", + "value": 0, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "2.5ms" + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-30-31", + "name": "SD_PWR_CYCLE_SELECTION", + "description": "Select SD Power Cycle", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "2.5ms" + } + ] + } + ] + }, + { + "id": "fuse7", + "name": "BOOT_CFG2", + "description": "Fuse BOOT_CFG2", + "offset_int": "0x0470", + "index_int": "0x0007", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse7-bit-0", + "name": "Override SD Pad Settings", + "description": "Overrides ROM default value for SD PAD control register. When set ROM will override SD pad control register with value programmed into PAD_SETTINGS fuse bits.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-1", + "name": "BT_MPU_DISABLE", + "description": "The fuse bit is used for ROM to not enable MMU", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "MPU is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "MPU is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-2", + "name": "L1 I-Cache DISABLE", + "description": "The fuse bit is used for ROM to not enable L1 I-Cache", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "L1 I-Cache is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "L1 I-Cache is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-3", + "name": "Disable SDMMC Manufacture mode", + "description": "The fuse bit is used to disable ROM feature “SD/MMC Manufacturing Mode”.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-4", + "name": "UART Serial Download Disable", + "description": "Disable UART Serial Download", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-5", + "name": "SD2 VOLTAGE SELECTION", + "description": "Fuse bit to change voltage selection for SD2 pads. When set ROM will select 1.8V for SD3 pads otherwise 3.3V", + "values": [ + { + "name": "3.3V", + "value": 0, + "description": "3.3V" + }, + { + "name": "1.8V", + "value": 1, + "description": "1.8V" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-6", + "name": "SD1_RST_POLARITY_SELECT", + "description": "Select reset polarity for SD1", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-7", + "name": "DLL Override", + "description": "Select the DLL mode for SD/eMMC.", + "values": [ + { + "name": "0", + "value": 0, + "description": "DLL Slave Mode for SD/eMMC" + }, + { + "name": "1", + "value": 1, + "description": "DLL Override Mode for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-8", + "name": "USDHC IOMUX SRE Enable", + "description": "The fuse bit is used for ROM to enable SRE bit for SD pads", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-9", + "name": "USDHC_IOMUX_SION_BIT_ENABLE", + "description": "The fuse bit is used for ROM to enable SION bit for MUX control register.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-10", + "name": "Boot Failure Indicator Pin Select[4]", + "description": "Indicate Boot Failure" + }, + { + "width": 1, + "id": "fuse7-bit-11", + "name": "ENABLE_EMMC_22K_PULLUP", + "description": "The fuse bit is used for ROM to enable 22K pullup for SD pads.", + "values": [ + { + "name": "47K pullup", + "value": 0, + "description": "47K pullup" + }, + { + "name": "22K pullup", + "value": 1, + "description": "22K pullup" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-12", + "name": "USDHC_PAD_PULL_DOWN", + "description": "The fuse bit is used for ROM to enable pull down bit for SD pads. ", + "values": [ + { + "name": "no action", + "value": 0, + "description": "no action" + }, + { + "name": "pull down", + "value": 1, + "description": "pull down" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-13", + "name": "Override HYS bit for SD-MMC pads", + "description": "Once this fuse be blown, the [HYS] bit of IOMUXC_SW_PAD_CTL_PAD_SDx_CLK(x is the SD port which the ROM boot from), IOMUXC_SW_PAD_CTL_PAD_SDx_CMD, IOMUXC_SW_PAD_CTL_PAD_SDx_DAT0-n(n will be 0, 3, or 7, depends on the bus width selected) will be set. ", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-14", + "name": "eMMC 4.4 - RESET TO PRE-IDLE STATE", + "description": "Once this fuse be blown, the CMD0 with argument 0xf0f0f0f0 will be sent to put the eMMC card into pre-IDLE state so that eMMC card’s fast boot can work properly.\nThis is useful for the warm boot, such as boot due to the WDOG reset.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-15", + "name": "SD2_RST_POLARITY_SELECT", + "description": "Select reset polarity for SD2", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 4, + "id": "fuse7-bits-16-19", + "name": "Boot Failure Indicator Pin Select[3:0]", + "description": "Miscellaneous power management configuration bits.", + "values": [ + { + "name": "gpio1.IO00", + "value": 0, + "description": "gpio1.IO00" + }, + { + "name": "gpio1.IO01", + "value": 1, + "description": "gpio1.IO01" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-20", + "name": "BT_LPB_POLARITY", + "description": "Define GPIO3 polarity, for determining LPB boot mode.", + "values": [ + { + "name": "Active High", + "value": 0, + "description": "Active High" + }, + { + "name": "Active Low", + "value": 1, + "description": "Active Low" + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-21-22", + "name": "LPB_BOOT", + "description": "Divide (Core / Bus) based on Boot Frequencies", + "values": [ + { + "name": "Div by 1", + "value": 0, + "description": "Div by 1" + }, + { + "name": "Div by 2", + "value": 1, + "description": "Div by 2" + }, + { + "name": "Div by 4", + "value": 2, + "description": "Div by 4" + }, + { + "name": "Div by 8", + "value": 3, + "description": "Div by 8" + } + ] + }, + { + "width": 1 + }, + { + "width": 7, + "id": "fuse7-bits-24-30", + "name": "MMC_DLL_DLY[6:0]", + "description": "eMMC 4.4 delay line default value (set by boot rom), used in conjunction with \"DLL Override\" = 1 (BOOT_CFG3[3])" + }, + { + "width": 1, + "id": "fuse7-bit-31", + "name": "Override NAND Pad Settings", + "description": "Override pad settings for NAND boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x480-0x4E0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved8", + "name": "Reserved 0x480", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0480", + "index_int": "0x0008", + "is_reserved": true, + "bitfields": [ + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved9", + "name": "Reserved 0x490", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0490", + "index_int": "0x0009", + "is_reserved": true, + "bitfields": [ + { + "width": 10 + }, + { + "width": 1 + }, + { + "width": 5 + }, + { + "width": 8 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved10", + "name": "Reserved 0x4A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04A0", + "index_int": "0x000A", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 24 + } + ] + }, + { + "id": "Reserved11", + "name": "Reserved 0x4B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04B0", + "index_int": "0x000B", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved12", + "name": "Reserved 0x4C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04C0", + "index_int": "0x000C", + "is_reserved": true, + "bitfields": [ + { + "width": 20 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved13", + "name": "Reserved 0x4D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04D0", + "index_int": "0x000D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved14", + "name": "Reserved 0x4E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04E0", + "index_int": "0x000E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "USB", + "description": "USB VID and PID" + }, + "registers": [ + { + "id": "fuse15", + "name": "USB_ID", + "description": "Fuse USB_ID", + "offset_int": "0x04F0", + "index_int": "0x000F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "operation_lock_int": "0x00080000" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse15-bits-0-15", + "name": "USB_VID", + "description": "USB VID", + "deprecated_names": [ + "USB_VID[31:0]" + ] + }, + { + "width": 16, + "id": "fuse15-bits-16-31", + "name": "USB_PID", + "description": "USB PID", + "deprecated_names": [ + "USB_PID[31:0]" + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x500-0x570", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved16", + "name": "Reserved 0x500", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0500", + "index_int": "0x0010", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved17", + "name": "Reserved 0x510", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0510", + "index_int": "0x0011", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved18", + "name": "Reserved 0x520", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0520", + "index_int": "0x0012", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved19", + "name": "Reserved 0x530", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0530", + "index_int": "0x0013", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved20", + "name": "Reserved 0x540", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0540", + "index_int": "0x0014", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved21", + "name": "Reserved 0x550", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0550", + "index_int": "0x0015", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved22", + "name": "Reserved 0x560", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0560", + "index_int": "0x0016", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved23", + "name": "Reserved 0x570", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0570", + "index_int": "0x0017", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "SRK Hash", + "description": "Super Root Keys Hash" + }, + "registers": [ + { + "id": "fuse24", + "name": "SRK_HASH[255:224]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0580", + "index_int": "0x0018" + }, + { + "id": "fuse25", + "name": "SRK_HASH[223:192]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0590", + "index_int": "0x0019" + }, + { + "id": "fuse26", + "name": "SRK_HASH[191:160]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05A0", + "index_int": "0x001A" + }, + { + "id": "fuse27", + "name": "SRK_HASH[159:128]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05B0", + "index_int": "0x001B" + }, + { + "id": "fuse28", + "name": "SRK_HASH[127:96]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05C0", + "index_int": "0x001C" + }, + { + "id": "fuse29", + "name": "SRK_HASH[95:64]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05D0", + "index_int": "0x001D" + }, + { + "id": "fuse30", + "name": "SRK_HASH[63:32]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05E0", + "index_int": "0x001E" + }, + { + "id": "fuse31", + "name": "SRK_HASH[31:0]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05F0", + "index_int": "0x001F" + } + ] + }, + { + "group": { + "name": "SJC", + "description": "Secure JTAG Controller" + }, + "registers": [ + { + "id": "fuse32", + "name": "SJC_RESP0", + "description": "Response reference value for the secure JTAG controller", + "deprecated_names": [ + "SJC_RESP[31:0]" + ], + "offset_int": "0x0600", + "index_int": "0x0020", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse32-bits-0-31", + "name": "SJC_RESP[31:0]", + "description": "Response reference value for the secure JTAG controller" + } + ] + }, + { + "id": "fuse33", + "name": "SJC_RESP1", + "description": "Response reference value for the secure JTAG controller", + "deprecated_names": [ + "SJC_RESP[55:32]" + ], + "offset_int": "0x0610", + "index_int": "0x0021", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + }, + "bitfields": [ + { + "width": 24, + "id": "fuse33-bits-0-23", + "name": "SJC_RESP[55:32]", + "description": "Response reference value for the secure JTAG controller" + }, + { + "width": 8 + } + ] + } + ] + }, + { + "group": { + "name": "MAC", + "description": "Ethernet MAC Address" + }, + "registers": [ + { + "id": "fuse34", + "name": "MAC1_ADDR1", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC1_ADDR[47:16]" + ], + "offset_int": "0x0620", + "index_int": "0x0022", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse34-bits-0-31", + "name": "MAC1_ADDR[47:16]", + "description": "Ethernet MAC Address" + } + ] + }, + { + "id": "fuse35", + "name": "MAC1_ADDR0", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC1_ADDR[15:0]" + ], + "offset_int": "0x0630", + "index_int": "0x0023", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse35-bits-0-15", + "name": "MAC1_ADDR[15:0]", + "description": "Ethernet MAC Address" + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "GPx", + "description": "General Purpose Fuse Registers." + }, + "registers": [ + { + "id": "fuse36", + "name": "GP3[31:0]", + "description": "General Purpose fuse register #3", + "offset_int": "0x0640", + "index_int": "0x0024", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + }, + { + "id": "Reserved37", + "name": "Reserved 0x650", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0650", + "index_int": "0x0025", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "fuse38", + "name": "GP1[31:0]", + "description": "General Purpose fuse register #1", + "offset_int": "0x0660", + "index_int": "0x0026", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0400", + "operation_lock_int": "0x0800" + } + }, + { + "id": "fuse39", + "name": "GP2[31:0]", + "description": "General Purpose fuse register #2", + "offset_int": "0x0670", + "index_int": "0x0027", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "operation_lock_int": "0x2000" + } + } + ] + }, + { + "group": { + "name": "SW_GPx", + "description": "SW general purpose keys." + }, + "registers": [ + { + "id": "fuse40", + "name": "SW_GP1[31:0]", + "description": "SW general purpose key", + "offset_int": "0x0680", + "index_int": "0x0028", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00010000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00010000" + } + }, + { + "id": "fuse41", + "name": "SW_GP2[127:96]", + "description": "SW general purpose key", + "offset_int": "0x0690", + "index_int": "0x0029", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse42", + "name": "SW_GP2[95:64]", + "description": "SW general purpose key", + "offset_int": "0x06A0", + "index_int": "0x002A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse43", + "name": "SW_GP2[63:32]", + "description": "SW general purpose key", + "offset_int": "0x06B0", + "index_int": "0x002B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse44", + "name": "SW_GP2[31:0]", + "description": "SW general purpose key", + "offset_int": "0x06C0", + "index_int": "0x002C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + } + ] + }, + { + "group": { + "name": "Miscellaneous", + "description": "Miscellaneous configuration." + }, + "registers": [ + { + "id": "fuse45", + "name": "MISC_CONF0", + "description": "Fuse MISC_CONF0", + "offset_int": "0x06D0", + "index_int": "0x002D", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 6, + "id": "fuse45-bits-0-5", + "name": "PAD_SETTINGS", + "description": "Used with conjunction of MMC/SD/Nand \"Override Pad Settings\" fuse value, as follow:\n'0' - Use IO default settings for boot device IO pads.\n'1' - Use \"Override\" value, as set by this register." + }, + { + "width": 1, + "id": "fuse45-bit-6", + "name": "USB_VBUS_EVENT_HANDLER_EN", + "description": "Rom handle USB VBUS attach/detach event", + "values": [ + { + "name": "0", + "value": 0, + "description": "ROM not handle USB VBUS attach/detach event" + }, + { + "name": "1", + "value": 1, + "description": "ROM handle USB VBUS attach/detach event" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-7", + "name": "Enable Boot Failure Indicator Pin", + "description": "Enable Boot Failure Indicator Pin", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-8-11", + "name": "READ_RETRY_SEQ_ID", + "description": "Choose Read Retry Sequence ", + "values": [ + { + "name": "0000", + "value": 0, + "description": "don't use read retry(RR) sequence embedded in ROM" + }, + { + "name": "0001", + "value": 1, + "description": "Micron 20nm RR sequence" + }, + { + "name": "0010", + "value": 2, + "description": "Toshiba A19nm RR sequence" + }, + { + "name": "0011", + "value": 3, + "description": "Toshiba 19nm RR sequence" + }, + { + "name": "0100", + "value": 4, + "description": "SanDisk 19nm RR sequence" + }, + { + "name": "0101", + "value": 5, + "description": "SanDisk 1ynmRR sequence" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "fuse45-bits-13-15", + "name": "WDOG Timeout Select", + "description": "Select WDOG Timeout", + "values": [ + { + "name": "64s", + "value": 0, + "description": "64s" + }, + { + "name": "32s", + "value": 1, + "description": "32s" + }, + { + "name": "16s", + "value": 2, + "description": "16s" + }, + { + "name": "8s", + "value": 3, + "description": "8s" + }, + { + "name": "4s", + "value": 4, + "description": "4s" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-16-19", + "name": "Default_FlexRAM_Part", + "description": "Default FlexRAM RAM bank partitioning" + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse45-bit-24", + "name": "EEPROM_RECOVERY_EN", + "description": "EEPROM Recovery Enable", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-25-26", + "name": "LPSPI_PORT_SEL", + "description": "LPSPI Port Select", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + }, + { + "name": "LPSPI3", + "value": 2, + "description": "LPSPI3" + }, + { + "name": "LPSPI4", + "value": 3, + "description": "LPSPI4" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-27", + "name": "LPSPI_ADDR", + "description": "SPI Addressing", + "values": [ + { + "name": "2-bytes", + "value": 0, + "description": "2-bytes (16-bit)" + }, + { + "name": "3-bytes", + "value": 1, + "description": "3-bytes (24-bit)" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-28-29", + "name": "LPSPI_CS_SEL", + "description": "LPSPI CS select", + "values": [ + { + "name": "00", + "value": 0, + "description": "CS#0 (default)" + }, + { + "name": "CS#1", + "value": 1, + "description": "CS#1" + }, + { + "name": "CS#2", + "value": 2, + "description": "CS#2" + }, + { + "name": "CS#3", + "value": 3, + "description": "CS#3" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-30-31", + "name": "SD_CALIBRATION_STEP", + "description": "SD Calibration Step", + "values": [ + { + "name": "1", + "value": 0, + "description": "1" + } + ] + } + ] + }, + { + "id": "fuse46", + "name": "MISC_CONF1", + "description": "Fuse MISC_CONF1", + "offset_int": "0x06E0", + "index_int": "0x002E", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse46-bits-0-7", + "name": "BOOT_CONFIG_MISC0", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-8-15", + "name": "BOOT_CONFIG_MISC1", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-16-23", + "name": "BOOT_CONFIG_MISC2", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-24-31", + "name": "BOOT_CONFIG_MISC3", + "description": "boot configuration misc " + } + ] + }, + { + "id": "fuse47", + "name": "SRK_REVOKE", + "description": "Fuse SRK_REVOKE", + "offset_int": "0x06F0", + "index_int": "0x002F", + "bitfields": [ + { + "width": 1, + "id": "fuse47-bit-0", + "name": "SRK_REVOKE1", + "description": "SRK key 1 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-1", + "name": "SRK_REVOKE2", + "description": "SRK key 2 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-2", + "name": "SRK_REVOKE3", + "description": "SRK key 3 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-3", + "name": "SRK_REVOKE4", + "description": "SRK key 4 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 4 + }, + { + "width": 8 + }, + { + "width": 16 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1060/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1060/database.yaml new file mode 100644 index 0000000..b2779fc --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1060/database.yaml @@ -0,0 +1,58 @@ +# Copyright 2023-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1064 + +# General MCU information +info: + memory_map: + itcm: + start_int: 0x0 + size_int: 0x80000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x20000 + size_int: 0x60000 + warning_msg: RAM above 0x20000 is not initialized by default + dtcm: + start_int: 0x20000000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x20020000 + size_int: 0x60000 + warning_msg: RAM above 0x20020000 is not initialized by default + ocram: + start_int: 0x20200000 + size_int: 0x100000 + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: 0x202C0000 + size_int: 0x40000 + warning_msg: RAM above 0x202C0000 is not initialized by default + flexspi1: + start_int: 0x30000000 + size_int: 0x10000000 + external: true + non_xip_type: none + flexspi2: + start_int: 0x60000000 + size_int: 0x1f80_0000 + external: true + non_xip_type: none + sdram: + start_int: 0x80000000 + size_int: 0x60000000 + external: true + non_xip_type: ext_ram_semc + +features: + # ======== Memory configuration ======== + memcfg: + peripherals: + flexspi_nor: + instances: [1, 2] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1064/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1064/database.yaml new file mode 100644 index 0000000..6fddb62 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1064/database.yaml @@ -0,0 +1,61 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1024 + +# General MCU information +info: + spsdk_predecessor_name: rt106x + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX-RT1060 + memory_map: + itcm: + start_int: "0x0" + size_int: "0x80000" + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: "0x20000" + size_int: "0x60000" + warning_msg: RAM above 0x20000 is not initialized by default + dtcm: + start_int: "0x20000000" + size_int: "0x80000" + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: "0x20020000" + size_int: "0x60000" + warning_msg: RAM above 0x20020000 is not initialized by default + ocram: + start_int: "0x20200000" + size_int: "0x100000" + external: false + non_xip_type: int_ram + warning_ranges: + - start_int: "0x202C0000" + size_int: "0x40000" + warning_msg: RAM above 0x202C0000 is not initialized by default + flexspi: + start_int: "0x60000000" + size_int: "0x10000000" + external: true + non_xip_type: none + flexspi2: + start_int: "0x70000000" + size_int: "0x0f000000" + external: true + non_xip_type: none + sdram: + start_int: "0x80000000" + size_int: "0x60000000" + external: true + non_xip_type: ext_ram_semc + + isp: + rom: + protocol: sdp + usb: + - vid: 0x1FC9 + pid: 0x0135 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1064/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1064/fuses.json new file mode 100644 index 0000000..8440f5e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1064/fuses.json @@ -0,0 +1,2868 @@ +{ + "cpu": "mimxrt1064", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Lock bits allowing to lock access to specified fuses" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCKS", + "description": "Fuse LOCKS", + "offset_int": "0x0400", + "index_int": "0", + "bitfields": [ + { + "width": 2, + "id": "fuse0-bits-0-1", + "name": "TESTER_LOCK", + "description": "Perform lock on Tester programed fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-2-3", + "name": "BOOT_CFG_LOCK", + "description": "Perform lock on BOOT related fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse0-bit-6", + "name": "SJC_RESP_LOCK", + "description": "SJC response lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read, sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-7", + "name": "GP4_RLOCK", + "description": "GP4 read lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-8-9", + "name": "MAC_ADDR_LOCK", + "description": "Lock MAC_ADDR fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-10-11", + "name": "GP1_LOCK", + "description": "Lock for General Purpose fuse register #1 (GP1)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-12-13", + "name": "GP2_LOCK", + "description": "Lock for General Purpose fuse register #2 (GP2)", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-16", + "name": "SW_GP1_LOCK", + "description": "Lock for SW_GP1 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse0-bits-18-19", + "name": "ANALOG_LOCK", + "description": "Lock for analog related fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-21", + "name": "SW_GP2_LOCK", + "description": "WP and OP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be sensed, burned or overridden in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-22", + "name": "MISC_CONF_LOCK", + "description": "RP Lock for MISC_CONF0, MISC_CONF1 fuses.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse0-bit-23", + "name": "SW_GP2_RLOCK", + "description": "RP Lock for SW_GP2 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-24-25", + "name": "GP4_LOCK", + "description": "Lock for GP4 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2, + "id": "fuse0-bits-26-27", + "name": "GP3_LOCK", + "description": "Lock for GP3 fuse.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read, sensed, burned or overridden in the corresponded IIM register)" + }, + { + "name": "Write Lock", + "value": 1, + "description": "Write Lock (The controlled field can be read or sensed only)" + }, + { + "name": "Operation Lock", + "value": 2, + "description": "Operation Lock (The controlled field can't be overridden)" + }, + { + "name": "Full Lock", + "value": 3, + "description": "Write Lock + Operation Lock." + } + ] + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse0-bit-31", + "name": "FIELD_RETURN", + "description": "Configure device for field return testing. Fuse burning is protected by CSF command, with proper parameter passed. Write / OP protected by FIELD_RETURN_LOCK bit in control register.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Device is in functional / secure mode." + }, + { + "name": "1", + "value": 1, + "description": "Device is open for 'field-return' testing." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "IDs", + "description": "Different identifiers" + }, + "registers": [ + { + "id": "fuse1", + "name": "LOT_NO_ENC1", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[42:11]" + ], + "offset_int": "0x0410", + "index_int": "0x0001", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse1-bits-0-31", + "name": "LOT_NO_ENC[42:11]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse2", + "name": "LOT_NO_ENC0_WAFER_COORD", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[10:0]" + ], + "offset_int": "0x0420", + "index_int": "0x0002", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 11, + "id": "fuse2-bits-0-10", + "name": "LOT_NO_ENC[10:0]", + "description": "NXP-wide unique, encoded LOT ID STD II/SJC CHALLENGE/ Unique ID" + }, + { + "width": 5, + "id": "fuse2-bits-11-15", + "name": "WAFER_NO[4:0]", + "description": "The wafer number of the wafer on which the device was fabricated/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-16-23", + "name": "DIE-Y-CORDINATE[7:0]", + "description": "The Y-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + }, + { + "width": 8, + "id": "fuse2-bits-24-31", + "name": "DIE-X-CORDINATE[7:0]", + "description": "The X-coordinate of the die location on the wafer/SJC CHALLENGE/ Unique ID" + } + ] + }, + { + "id": "fuse3", + "name": "SI_REV", + "description": "Fuse SI_REV", + "deprecated_names": [ + "SI_REV[3:0]" + ], + "offset_int": "0x0430", + "index_int": "0x0003", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 4, + "id": "fuse3-bits-16-19", + "name": "SI_REV[3:0]", + "description": "Silicon Revision number." + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse4", + "name": "TESTER_CFG", + "description": "Fuse TESTER_CFG", + "offset_int": "0x0440", + "index_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse4-bit-1", + "name": "SEC_CONFIG[0]", + "description": "Security Configuration Mode, and block of debugging of security HW, by JTAG" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse4-bits-16-17", + "name": "SPEED_GRADING[1:0]", + "description": "Burned by tester program, for indicating IC core speed" + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "Boot config", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse5", + "name": "BOOT_CFG0", + "description": "Fuse BOOT_CFG0", + "offset_int": "0x0450", + "index_int": "0x0005", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse5-bit-0", + "name": "FLASH_AUTO_PROBE_EN", + "description": "FLASH_AUTO_PROBE_EN", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "0 - Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "1 - Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse5-bit-1", + "name": "EncryptedXIP", + "description": "Support for the encrypted bootable image. It is applied only if BT_FUSE_SEL fuse bit is set. Otherwise the value is retrieved from the pins.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "0 - Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "1 - Enabled" + } + ] + }, + { + "width": 2, + "id": "fuse5-bits-2-3", + "name": "FLASH PROBE TYPE", + "description": "FLASH PROBE TYPE (SPI mode after PoR)", + "values": [ + { + "name": "00", + "value": 0, + "description": "00 - QuadSPI NOR" + }, + { + "name": "01", + "value": 1, + "description": "01 - Macronix Octal FLASH" + }, + { + "name": "10", + "value": 2, + "description": "10 - Micron Octal FLASH" + }, + { + "name": "11", + "value": 3, + "description": "11 - Adesto Octal FLASH" + } + ] + }, + { + "width": 4, + "id": "fuse5-bits-4-7", + "name": "Boot_Device_Selection", + "description": "Boot device selection.", + "values": [ + { + "name": "FlexSPI NOR", + "value": 0, + "description": "0000 - FlexSPI (Serial NOR)" + }, + { + "name": "SEMC (NOR)", + "value": 1, + "description": "0001 - SEMC (NOR)" + }, + { + "name": "SEMC (NAND)", + "value": 2, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SEMC (NAND)_1", + "value": 3, + "description": "001x - SEMC (NAND)" + }, + { + "name": "SD (SDR12)", + "value": 4, + "description": "0100 - SD/SDXC Speed (Normal/SDR12)" + }, + { + "name": "SD (SDR25)", + "value": 5, + "description": "0101 - SD/SDXC Speed (High/SDR25)" + }, + { + "name": "SD (SDR50)", + "value": 6, + "description": "0110 - SD/SDXC Speed (SDR50)" + }, + { + "name": "SD (SDR104)", + "value": 7, + "description": "0111 - SD/SDXC Speed (SDR104)" + }, + { + "name": "eMMC: Normal", + "value": 8, + "description": "1000 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: Normal/FB", + "value": 9, + "description": "1001 - MMC/eMMC (SD/MMC Speed Normal, Fast Boot Acknowledge Enabled)" + }, + { + "name": "eMMC: High", + "value": 10, + "description": "1010 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Disabled)" + }, + { + "name": "eMMC: High/FB", + "value": 11, + "description": "1011 - MMC/eMMC (SD/MMC Speed High, Fast Boot Acknowledge Enabled)" + }, + { + "name": "FlexSPI NAND 50MHz 12b", + "value": 12, + "description": "1100 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b", + "value": 13, + "description": "1101 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + }, + { + "name": "FlexSPI NAND 50MHz 12b 1", + "value": 14, + "description": "1110 - FlexSPI (Serial NAND), Default safe communication frequency High Speed (50 MHz), column address width 12bits" + }, + { + "name": "FlexSPI NAND 30MHz 13b 1", + "value": 15, + "description": "1111 - FlexSPI (Serial NAND), Default safe communication frequency Low Speed (30 MHz), column address width 13bits" + } + ] + }, + { + "width": 8, + "id": "fuse5-bits-8-15", + "name": "BOOT_CFG2", + "description": "BOOT configuration register #2, Usage varies, depending on selected boot device." + }, + { + "width": 8, + "id": "fuse5-bits-16-23", + "name": "BOOT_CFG3", + "description": "BOOT configuration register #3" + }, + { + "width": 8, + "id": "fuse5-bits-24-31", + "name": "BOOT_CFG4", + "description": "BOOT configuration register #4" + } + ] + }, + { + "id": "fuse6", + "name": "BOOT_CFG1", + "description": "Fuse BOOT_CFG1", + "offset_int": "0x0460", + "index_int": "0x0006", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-1", + "name": "SEC_CONFIG[1]", + "description": "Security Configuration (with SEC_CONFIG[0])", + "values": [ + { + "name": "Open", + "value": 0, + "description": "Open (allows any program image, even if the authentication fails)" + }, + { + "name": "Closed", + "value": 1, + "description": "Closed (The program image executes only if authenticated)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-2", + "name": "Boot Frequencies", + "description": "Determines, ARM Core and Bus frequencies during boot", + "values": [ + { + "name": "0", + "value": 0, + "description": "(ARM) 396 / (Bus)132 MHz" + }, + { + "name": "1", + "value": 1, + "description": "(ARM) 528 / (Bus) 132 MHz" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-4", + "name": "BT_FUSE_SEL", + "description": "Determines, whether using fuses for boot configuration, or GPIO /Serial loader", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-5", + "name": "FORCE_COLD_BOOT", + "description": "Force cold boot when A9 core come out of reset. Reflected in SBMR reg of SRC", + "values": [ + { + "name": "0", + "value": 0, + "description": "Default behavior equivalent to the rest of the i.MX6 family allowing a fast recovery from low power modes. That is, the ROM is allowed to jump to the address previously programmed in the SRC persistent register." + }, + { + "name": "1", + "value": 1, + "description": "Fast recovery path in the ROM is not allowed and a cold boot is always performed. Customers wanting a higher level of security should burn this fuse." + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "fuse6-bits-8-11", + "name": "SDRAM_CONFIG", + "description": "TBD (SDRAM config options)", + "deprecated_names": [ + "SDRAM_CONFIG[7:0]" + ] + }, + { + "width": 2, + "id": "fuse6-bits-12-13", + "name": "BEE_KEY0_SEL", + "description": "AES key selection for BEE_KEY0", + "values": [ + { + "name": "From register", + "value": 0, + "description": "From register" + }, + { + "name": "GP4[127:0]", + "value": 1, + "description": "GP4[127:0]" + }, + { + "name": "OTPMK[255:128]", + "value": 2, + "description": "From OTPMK[255:128]" + }, + { + "name": "From SW-GP2", + "value": 3, + "description": "From SW-GP2" + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-14-15", + "name": "BEE_KEY1_SEL", + "description": "AES key selection for BEE_KEY1", + "values": [ + { + "name": "From register", + "value": 0, + "description": "From register" + }, + { + "name": "GP4[127:0]", + "value": 1, + "description": "GP4[127:0]" + }, + { + "name": "OTPMK[[255:128]", + "value": 2, + "description": "From OTPMK[[255:128]" + }, + { + "name": "From SW-GP2", + "value": 3, + "description": "From SW-GP2" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-16", + "name": "FORCE_INTERNAL_BOOT", + "description": "Once been blown, the external BT_MODE[1:0] pins will be ignored, BootROM will take Boot Mode as “internal boot”.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Boot Mode from BT_MODE pins" + }, + { + "name": "1", + "value": 1, + "description": "BT_MODE pins be ignored, Boot Mode forced to \"internal boot\"" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-17", + "name": "SDP_DISABLE", + "description": "Disable/Enable serial download support", + "values": [ + { + "name": "0", + "value": 0, + "description": "Serial download supported" + }, + { + "name": "1", + "value": 1, + "description": "No serial download support" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-18", + "name": "SDP_READ_DISABLE", + "description": "Disable/Enable serial download READ_REGISTER command.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "SDP READ_REGISTER command is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "SDP READ_REGISTER is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-19", + "name": "DAP_SJC_SWD_SEL", + "description": "Control DAP works in JTAG or SWD mode", + "values": [ + { + "name": "0", + "value": 0, + "description": "DAP works in SWD mode" + }, + { + "name": "1", + "value": 1, + "description": "DAP works in JTAG mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-20", + "name": "SJC_DISABLE", + "description": "Disable/Enable the Secure JTAG Controller module. This fuse is used to create highest JTAG security level, where JTAG is totally blocked.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Secure JTAG Controller is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "Secure JTAG Controller is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-21", + "name": "WDOG_ENABLE", + "description": "Watchdog Enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Watch-Dog is disabled." + }, + { + "name": "Enable", + "value": 1, + "description": "Watch-Dog is enabled." + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-22-23", + "name": "JTAG_SMODE[1:0]", + "description": "JTAG Security Mode. Controls the security mode of the JTAG debug interface", + "values": [ + { + "name": "00", + "value": 0, + "description": "JTAG enable mode" + }, + { + "name": "01", + "value": 1, + "description": "Secure JTAG mode" + }, + { + "name": "11", + "value": 3, + "description": "No debug mode" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-24", + "name": "DLL_ENABLE", + "description": "Controls the enable/disable of the DLL for SD/eMMC boot", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable DLL for SD/eMMC" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable DLL for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-25", + "name": "NAND_ECC_DISABLE", + "description": "Indicate whether to enabled ECC (done by SW/Device HW) for Raw Nand device", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "NAND ECC is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "NAND ECC is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-26", + "name": "KTE", + "description": "Kill Trace Enable. Enables tracing capability on ETM, and other modules", + "values": [ + { + "name": "0", + "value": 0, + "description": "Bus tracing is allowed" + }, + { + "name": "1", + "value": 1, + "description": "Bus tracing is allowed in case security state as defined by Secure JTAG allows it (for example, JTAG_ENABLE or NO_DEBUG)" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-27", + "name": "JTAG_HEO", + "description": "JTAG HAB Enable Override. Disallows HAB JTAG enabling. The HAB may normally enable JTAG debugging by means of the HAB_JDE-bit in the OCOTP SCS register. The JTAG_HEO-bit can override this behavior", + "values": [ + { + "name": "0", + "value": 0, + "description": "HAB may enable JTAG debug access" + }, + { + "name": "1", + "value": 1, + "description": "HAB JTAG enable is overridden (HAB may not enable JTAG debug access)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-29", + "name": "PWR_STABLE_CYCLE_SELECTION", + "description": "Select Power Stable Cycle", + "values": [ + { + "name": "5ms", + "value": 0, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "2.5ms" + } + ] + }, + { + "width": 2, + "id": "fuse6-bits-30-31", + "name": "SD_PWR_CYCLE_SELECTION", + "description": "Select SD Power Cycle", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "2.5ms" + } + ] + } + ] + }, + { + "id": "fuse7", + "name": "BOOT_CFG2", + "description": "Fuse BOOT_CFG2", + "offset_int": "0x0470", + "index_int": "0x0007", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0004", + "operation_lock_int": "0x0008" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse7-bit-0", + "name": "Override SD Pad Settings", + "description": "Overrides ROM default value for SD PAD control register. When set ROM will override SD pad control register with value programmed into PAD_SETTINGS fuse bits.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-1", + "name": "BT_MPU_DISABLE", + "description": "The fuse bit is used for ROM to not enable MMU", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "MPU is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "MPU is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-2", + "name": "L1 I-Cache DISABLE", + "description": "The fuse bit is used for ROM to not enable L1 I-Cache", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "L1 I-Cache is enabled during boot" + }, + { + "name": "Disable", + "value": 1, + "description": "L1 I-Cache is disabled during boot" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-3", + "name": "Disable SDMMC Manufacture mode", + "description": "The fuse bit is used to disable ROM feature “SD/MMC Manufacturing Mode”.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-4", + "name": "UART Serial Download Disable", + "description": "Disable UART Serial Download", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-5", + "name": "SD2 VOLTAGE SELECTION", + "description": "Fuse bit to change voltage selection for SD2 pads. When set ROM will select 1.8V for SD3 pads otherwise 3.3V", + "values": [ + { + "name": "3.3V", + "value": 0, + "description": "3.3V" + }, + { + "name": "1.8V", + "value": 1, + "description": "1.8V" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-6", + "name": "SD1_RST_POLARITY_SELECT", + "description": "Select reset polarity for SD1", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-7", + "name": "DLL Override", + "description": "Select the DLL mode for SD/eMMC.", + "values": [ + { + "name": "0", + "value": 0, + "description": "DLL Slave Mode for SD/eMMC" + }, + { + "name": "1", + "value": 1, + "description": "DLL Override Mode for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-8", + "name": "USDHC IOMUX SRE Enable", + "description": "The fuse bit is used for ROM to enable SRE bit for SD pads", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-9", + "name": "USDHC_IOMUX_SION_BIT_ENABLE", + "description": "The fuse bit is used for ROM to enable SION bit for MUX control register.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-10", + "name": "Boot Failure Indicator Pin Select[4]", + "description": "Indicate Boot Failure" + }, + { + "width": 1, + "id": "fuse7-bit-11", + "name": "ENABLE_EMMC_22K_PULLUP", + "description": "The fuse bit is used for ROM to enable 22K pullup for SD pads.", + "values": [ + { + "name": "47K pullup", + "value": 0, + "description": "47K pullup" + }, + { + "name": "22K pullup", + "value": 1, + "description": "22K pullup" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-12", + "name": "USDHC_PAD_PULL_DOWN", + "description": "The fuse bit is used for ROM to enable pull down bit for SD pads. ", + "values": [ + { + "name": "no action", + "value": 0, + "description": "no action" + }, + { + "name": "pull down", + "value": 1, + "description": "pull down" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-13", + "name": "Override HYS bit for SD-MMC pads", + "description": "Once this fuse be blown, the [HYS] bit of IOMUXC_SW_PAD_CTL_PAD_SDx_CLK(x is the SD port which the ROM boot from), IOMUXC_SW_PAD_CTL_PAD_SDx_CMD, IOMUXC_SW_PAD_CTL_PAD_SDx_DAT0-n(n will be 0, 3, or 7, depends on the bus width selected) will be set. ", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-14", + "name": "eMMC 4.4 - RESET TO PRE-IDLE STATE", + "description": "Once this fuse be blown, the CMD0 with argument 0xf0f0f0f0 will be sent to put the eMMC card into pre-IDLE state so that eMMC card’s fast boot can work properly.\nThis is useful for the warm boot, such as boot due to the WDOG reset.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-15", + "name": "SD2_RST_POLARITY_SELECT", + "description": "Select reset polarity for SD2", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 4, + "id": "fuse7-bits-16-19", + "name": "Boot Failure Indicator Pin Select[3:0]", + "description": "Miscellaneous power management configuration bits.", + "values": [ + { + "name": "gpio1.IO00", + "value": 0, + "description": "gpio1.IO00" + }, + { + "name": "gpio1.IO01", + "value": 1, + "description": "gpio1.IO01" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-20", + "name": "BT_LPB_POLARITY", + "description": "Define GPIO3 polarity, for determining LPB boot mode.", + "values": [ + { + "name": "Active High", + "value": 0, + "description": "Active High" + }, + { + "name": "Active Low", + "value": 1, + "description": "Active Low" + } + ] + }, + { + "width": 2, + "id": "fuse7-bits-21-22", + "name": "LPB_BOOT", + "description": "Divide (Core / Bus) based on Boot Frequencies", + "values": [ + { + "name": "Div by 1", + "value": 0, + "description": "Div by 1" + }, + { + "name": "Div by 2", + "value": 1, + "description": "Div by 2" + }, + { + "name": "Div by 4", + "value": 2, + "description": "Div by 4" + }, + { + "name": "Div by 8", + "value": 3, + "description": "Div by 8" + } + ] + }, + { + "width": 1 + }, + { + "width": 7, + "id": "fuse7-bits-24-30", + "name": "MMC_DLL_DLY[6:0]", + "description": "eMMC 4.4 delay line default value (set by boot rom), used in conjunction with \"DLL Override\" = 1 (BOOT_CFG3[3])" + }, + { + "width": 1, + "id": "fuse7-bit-31", + "name": "Override NAND Pad Settings", + "description": "Override pad settings for NAND boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x480-0x4E0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved8", + "name": "Reserved 0x480", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0480", + "index_int": "0x0008", + "is_reserved": true, + "bitfields": [ + { + "width": 6 + }, + { + "width": 2 + }, + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 3 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + } + ] + }, + { + "id": "Reserved9", + "name": "Reserved 0x490", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0490", + "index_int": "0x0009", + "is_reserved": true, + "bitfields": [ + { + "width": 10 + }, + { + "width": 1 + }, + { + "width": 5 + }, + { + "width": 8 + }, + { + "width": 4 + }, + { + "width": 4 + } + ] + }, + { + "id": "Reserved10", + "name": "Reserved 0x4A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04A0", + "index_int": "0x000A", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 24 + } + ] + }, + { + "id": "Reserved11", + "name": "Reserved 0x4B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04B0", + "index_int": "0x000B", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved12", + "name": "Reserved 0x4C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04C0", + "index_int": "0x000C", + "is_reserved": true, + "bitfields": [ + { + "width": 20 + }, + { + "width": 12 + } + ] + }, + { + "id": "Reserved13", + "name": "Reserved 0x4D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04D0", + "index_int": "0x000D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved14", + "name": "Reserved 0x4E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x04E0", + "index_int": "0x000E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "USB", + "description": "USB VID and PID" + }, + "registers": [ + { + "id": "fuse15", + "name": "USB_ID", + "description": "Fuse USB_ID", + "offset_int": "0x04F0", + "index_int": "0x000F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00040000", + "operation_lock_int": "0x00080000" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse15-bits-0-15", + "name": "USB_VID", + "description": "USB VID", + "deprecated_names": [ + "USB_VID[31:0]" + ] + }, + { + "width": 16, + "id": "fuse15-bits-16-31", + "name": "USB_PID", + "description": "USB PID", + "deprecated_names": [ + "USB_PID[31:0]" + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x500-0x570", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved16", + "name": "Reserved 0x500", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0500", + "index_int": "0x0010", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved17", + "name": "Reserved 0x510", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0510", + "index_int": "0x0011", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved18", + "name": "Reserved 0x520", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0520", + "index_int": "0x0012", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved19", + "name": "Reserved 0x530", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0530", + "index_int": "0x0013", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved20", + "name": "Reserved 0x540", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0540", + "index_int": "0x0014", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved21", + "name": "Reserved 0x550", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0550", + "index_int": "0x0015", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved22", + "name": "Reserved 0x560", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0560", + "index_int": "0x0016", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved23", + "name": "Reserved 0x570", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0570", + "index_int": "0x0017", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "SRK Hash", + "description": "Super Root Keys Hash" + }, + "registers": [ + { + "id": "fuse24", + "name": "SRK_HASH[255:224]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0580", + "index_int": "0x0018" + }, + { + "id": "fuse25", + "name": "SRK_HASH[223:192]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0590", + "index_int": "0x0019" + }, + { + "id": "fuse26", + "name": "SRK_HASH[191:160]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05A0", + "index_int": "0x001A" + }, + { + "id": "fuse27", + "name": "SRK_HASH[159:128]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05B0", + "index_int": "0x001B" + }, + { + "id": "fuse28", + "name": "SRK_HASH[127:96]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05C0", + "index_int": "0x001C" + }, + { + "id": "fuse29", + "name": "SRK_HASH[95:64]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05D0", + "index_int": "0x001D" + }, + { + "id": "fuse30", + "name": "SRK_HASH[63:32]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05E0", + "index_int": "0x001E" + }, + { + "id": "fuse31", + "name": "SRK_HASH[31:0]", + "description": "SRK key, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x05F0", + "index_int": "0x001F" + } + ] + }, + { + "group": { + "name": "SJC", + "description": "Secure JTAG Controller" + }, + "registers": [ + { + "id": "fuse32", + "name": "SJC_RESP0", + "description": "Response reference value for the secure JTAG controller", + "deprecated_names": [ + "SJC_RESP[31:0]" + ], + "offset_int": "0x0600", + "index_int": "0x0020", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse32-bits-0-31", + "name": "SJC_RESP[31:0]", + "description": "Response reference value for the secure JTAG controller" + } + ] + }, + { + "id": "fuse33", + "name": "SJC_RESP1", + "description": "Response reference value for the secure JTAG controller", + "deprecated_names": [ + "SJC_RESP[55:32]" + ], + "offset_int": "0x0610", + "index_int": "0x0021", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0040", + "read_lock_int": "0x0040", + "operation_lock_int": "0x0040" + }, + "bitfields": [ + { + "width": 24, + "id": "fuse33-bits-0-23", + "name": "SJC_RESP[55:32]", + "description": "Response reference value for the secure JTAG controller" + }, + { + "width": 8 + } + ] + } + ] + }, + { + "group": { + "name": "MAC", + "description": "Ethernet MAC Address" + }, + "registers": [ + { + "id": "fuse34", + "name": "MAC1_ADDR1", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC1_ADDR[47:16]" + ], + "offset_int": "0x0620", + "index_int": "0x0022", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse34-bits-0-31", + "name": "MAC1_ADDR[47:16]", + "description": "Ethernet MAC Address" + } + ] + }, + { + "id": "fuse35", + "name": "MAC1_ADDR0_MAC2_ADDR1", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC2_ADDR[47:16]" + ], + "offset_int": "0x0630", + "index_int": "0x0023", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse35-bits-0-15", + "name": "MAC1_ADDR[15:0]", + "description": "Ethernet MAC Address" + }, + { + "width": 16, + "id": "fuse35-bits-16-31", + "name": "MAC2_ADDR[47:32]", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC2_ADDR[47:16]" + ] + } + ] + }, + { + "id": "fuse36", + "name": "MAC2_ADDR0", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC2_ADDR[31:0]" + ], + "offset_int": "0x0640", + "index_int": "0x0024", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0100", + "operation_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse36-bits-0-31", + "name": "MAC2_ADDR[31:0]", + "description": "Ethernet MAC Address" + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x650", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved37", + "name": "Reserved 0x650", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0650", + "index_int": "0x0025", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "GPx", + "description": "General Purpose Fuse Registers." + }, + "registers": [ + { + "id": "fuse38", + "name": "GP1[31:0]", + "description": "General Purpose fuse register #1", + "offset_int": "0x0660", + "index_int": "0x0026", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0400", + "operation_lock_int": "0x0800" + } + }, + { + "id": "fuse39", + "name": "GP2[31:0]", + "description": "General Purpose fuse register #2", + "offset_int": "0x0670", + "index_int": "0x0027", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "operation_lock_int": "0x2000" + } + } + ] + }, + { + "group": { + "name": "SW_GPx", + "description": "SW general purpose keys." + }, + "registers": [ + { + "id": "fuse40", + "name": "SW_GP1[31:0]", + "description": "SW general purpose key", + "offset_int": "0x0680", + "index_int": "0x0028", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00010000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00010000" + } + }, + { + "id": "fuse41", + "name": "SW_GP2[127:96]", + "description": "SW general purpose key", + "offset_int": "0x0690", + "index_int": "0x0029", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse42", + "name": "SW_GP2[95:64]", + "description": "SW general purpose key", + "offset_int": "0x06A0", + "index_int": "0x002A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse43", + "name": "SW_GP2[63:32]", + "description": "SW general purpose key", + "offset_int": "0x06B0", + "index_int": "0x002B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + }, + { + "id": "fuse44", + "name": "SW_GP2[31:0]", + "description": "SW general purpose key", + "offset_int": "0x06C0", + "index_int": "0x002C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x00200000", + "read_lock_int": "0x00800000", + "operation_lock_int": "0x00200000" + } + } + ] + }, + { + "group": { + "name": "Miscellaneous", + "description": "Miscellaneous configuration." + }, + "registers": [ + { + "id": "fuse45", + "name": "MISC_CONF0", + "description": "Fuse MISC_CONF0", + "offset_int": "0x06D0", + "index_int": "0x002D", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 6, + "id": "fuse45-bits-0-5", + "name": "PAD_SETTINGS", + "description": "Used with conjunction of MMC/SD/Nand \"Override Pad Settings\" fuse value, as follow:\n'0' - Use IO default settings for boot device IO pads.\n'1' - Use \"Override\" value, as set by this register." + }, + { + "width": 1, + "id": "fuse45-bit-6", + "name": "USB_VBUS_EVENT_HANDLER_EN", + "description": "Rom handle USB VBUS attach/detach event", + "values": [ + { + "name": "0", + "value": 0, + "description": "ROM not handle USB VBUS attach/detach event" + }, + { + "name": "1", + "value": 1, + "description": "ROM handle USB VBUS attach/detach event" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-7", + "name": "Enable Boot Failure Indicator Pin", + "description": "Enable Boot Failure Indicator Pin", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-8-11", + "name": "READ_RETRY_SEQ_ID", + "description": "Choose Read Retry Sequence ", + "values": [ + { + "name": "0000", + "value": 0, + "description": "don't use read retry(RR) sequence embedded in ROM" + }, + { + "name": "0001", + "value": 1, + "description": "Micron 20nm RR sequence" + }, + { + "name": "0010", + "value": 2, + "description": "Toshiba A19nm RR sequence" + }, + { + "name": "0011", + "value": 3, + "description": "Toshiba 19nm RR sequence" + }, + { + "name": "0100", + "value": 4, + "description": "SanDisk 19nm RR sequence" + }, + { + "name": "0101", + "value": 5, + "description": "SanDisk 1ynmRR sequence" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "fuse45-bits-13-15", + "name": "WDOG Timeout Select", + "description": "Select WDOG Timeout", + "values": [ + { + "name": "64s", + "value": 0, + "description": "64s" + }, + { + "name": "32s", + "value": 1, + "description": "32s" + }, + { + "name": "16s", + "value": 2, + "description": "16s" + }, + { + "name": "8s", + "value": 3, + "description": "8s" + }, + { + "name": "4s", + "value": 4, + "description": "4s" + } + ] + }, + { + "width": 4, + "id": "fuse45-bits-16-19", + "name": "Default_FlexRAM_Part", + "description": "Default FlexRAM RAM bank partitioning" + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse45-bit-24", + "name": "EEPROM_RECOVERY_EN", + "description": "EEPROM Recovery Enable", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-25-26", + "name": "LPSPI_PORT_SEL", + "description": "LPSPI Port Select", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + }, + { + "name": "LPSPI3", + "value": 2, + "description": "LPSPI3" + }, + { + "name": "LPSPI4", + "value": 3, + "description": "LPSPI4" + } + ] + }, + { + "width": 1, + "id": "fuse45-bit-27", + "name": "LPSPI_ADDR", + "description": "SPI Addressing", + "values": [ + { + "name": "2-bytes", + "value": 0, + "description": "2-bytes (16-bit)" + }, + { + "name": "3-bytes", + "value": 1, + "description": "3-bytes (24-bit)" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-28-29", + "name": "LPSPI_SPEED", + "description": "LPSPI Speed select", + "values": [ + { + "name": "00", + "value": 0, + "description": "20 MHz (default)" + }, + { + "name": "10 MHz", + "value": 1, + "description": "10 MHz" + }, + { + "name": "5 MHz", + "value": 2, + "description": "5 MHz" + }, + { + "name": "2 MHz", + "value": 3, + "description": "2 MHz" + } + ] + }, + { + "width": 2, + "id": "fuse45-bits-30-31", + "name": "SD_CALIBRATION_STEP", + "description": "SD Calibration Step", + "values": [ + { + "name": "1", + "value": 0, + "description": "1" + } + ] + } + ] + }, + { + "id": "fuse46", + "name": "MISC_CONF1", + "description": "Fuse MISC_CONF1", + "offset_int": "0x06E0", + "index_int": "0x002E", + "lock": { + "register_id": "fuse0", + "read_lock_int": "0x00400000" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse46-bits-0-7", + "name": "BOOT_CONFIG_MISC0", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-8-15", + "name": "BOOT_CONFIG_MISC1", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-16-23", + "name": "BOOT_CONFIG_MISC2", + "description": "boot configuration misc " + }, + { + "width": 8, + "id": "fuse46-bits-24-31", + "name": "BOOT_CONFIG_MISC3", + "description": "boot configuration misc " + } + ] + }, + { + "id": "fuse47", + "name": "SRK_REVOKE", + "description": "Fuse SRK_REVOKE", + "offset_int": "0x06F0", + "index_int": "0x002F", + "bitfields": [ + { + "width": 1, + "id": "fuse47-bit-0", + "name": "SRK_REVOKE1", + "description": "SRK key 1 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-1", + "name": "SRK_REVOKE2", + "description": "SRK key 2 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-2", + "name": "SRK_REVOKE3", + "description": "SRK key 3 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse47-bit-3", + "name": "SRK_REVOKE4", + "description": "SRK key 4 revocation", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 4 + }, + { + "width": 8 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x800-0x870", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved48", + "name": "Reserved 0x800", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0800", + "index_int": "0x0030", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved49", + "name": "Reserved 0x810", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0810", + "index_int": "0x0031", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved50", + "name": "Reserved 0x820", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0820", + "index_int": "0x0032", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved51", + "name": "Reserved 0x830", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0830", + "index_int": "0x0033", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved52", + "name": "Reserved 0x840", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0840", + "index_int": "0x0034", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved53", + "name": "Reserved 0x850", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0850", + "index_int": "0x0035", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved54", + "name": "Reserved 0x860", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0860", + "index_int": "0x0036", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved55", + "name": "Reserved 0x870", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0870", + "index_int": "0x0037", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "GP3", + "description": "General Purpose Fuse Register 3." + }, + "registers": [ + { + "id": "fuse56", + "name": "GP3[127:96]", + "description": "General Purpose fuse register #3", + "offset_int": "0x0880", + "index_int": "0x0038", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + }, + { + "id": "fuse57", + "name": "GP3[95:64]", + "description": "General Purpose fuse register #3", + "offset_int": "0x0890", + "index_int": "0x0039", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + }, + { + "id": "fuse58", + "name": "GP3[63:32]", + "description": "General Purpose fuse register #3", + "offset_int": "0x08A0", + "index_int": "0x003A", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + }, + { + "id": "fuse59", + "name": "GP3[31:0]", + "description": "General Purpose fuse register #3", + "offset_int": "0x08B0", + "index_int": "0x003B", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x04000000", + "operation_lock_int": "0x08000000" + } + } + ] + }, + { + "group": { + "name": "GP4", + "description": "General Purpose Fuse Register 4." + }, + "registers": [ + { + "id": "fuse60", + "name": "GP4[127:96]", + "description": "General Purpose fuse register #4", + "offset_int": "0x08C0", + "index_int": "0x003C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x0080", + "operation_lock_int": "0x02000000" + } + }, + { + "id": "fuse61", + "name": "GP4[95:64]", + "description": "General Purpose fuse register #4", + "offset_int": "0x08D0", + "index_int": "0x003D", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x0080", + "operation_lock_int": "0x02000000" + } + }, + { + "id": "fuse62", + "name": "GP4[63:32]", + "description": "General Purpose fuse register #4", + "offset_int": "0x08E0", + "index_int": "0x003E", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x0080", + "operation_lock_int": "0x02000000" + } + }, + { + "id": "fuse63", + "name": "GP4[31:0]", + "description": "General Purpose fuse register #4", + "offset_int": "0x08F0", + "index_int": "0x003F", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x01000000", + "read_lock_int": "0x0080", + "operation_lock_int": "0x02000000" + } + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1165/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1165/database.yaml new file mode 100644 index 0000000..ca048ba --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1165/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1166 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/database.yaml new file mode 100644 index 0000000..1fa72d6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/database.yaml @@ -0,0 +1,277 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + purpose: i.MX RT Crossover MCUs + spsdk_predecessor_name: rt116x + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1160-crossover-mcu-dual-core-arm-cortex-m7-and-cortex-m4:i.MX-RT1160 + memory_map: + itcm: + start_int: 0x0 + size_int: 0x40000 + external: false + non_xip_type: int_ram + cm4_itcm: + start_int: 0x1FFE0000 + size_int: 0x20000 + external: false + non_xip_type: int_ram + dtcm: + start_int: 0x20000000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + cm4_ocram: + start_int: 0x20200000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + ocram1: + start_int: 0x20240000 + size_int: 0x10000 + external: false + non_xip_type: int_ram + ocram2: + start_int: 0x202C0000 + size_int: 0x8000 + external: false + non_xip_type: int_ram + flexspi1: + start_int: 0x30000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_flexspi + flexspi2: + start_int: 0x60000000 + size_int: 0x1F800000 + external: true + non_xip_type: ext_ram_flexspi + sdram: + start_int: 0x80000000 + size_int: 0x4000000 + external: true + non_xip_type: ext_ram_semc + + isp: + rom: + protocol: sdp + usb: + - vid: 0x1FC9 + pid: 0x013D + flashloader: + protocol: mboot + usb: + - vid: 0x15a2 + pid: 0x0073 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: + grouped_registers: + - uid: iee_user_key1 + name: USER_KEY1 + width: 256 + reversed: True + config_as_hexstring: True + description: USER KEY 1 (IBKEK). + sub_regs: + [fuse96, fuse97, fuse98, fuse99, fuse100, fuse101, fuse102, fuse103] + - uid: iee_user_key2 + name: USER_KEY2 + width: 256 + reversed: True + config_as_hexstring: True + description: USER KEY 2 (IBKEK). + sub_regs: + [ + fuse104, + fuse105, + fuse106, + fuse107, + fuse108, + fuse109, + fuse110, + fuse111, + ] + - uid: otfad_key + name: OTFAD_KEY + width: 128 + reverse_subregs_order: True + reversed: True + config_as_hexstring: true + description: OTFAD Key known as KEK. + sub_regs: [fuse128, fuse129, fuse130, fuse131] + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x0000_2000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: "srk_table_hab" + + # ======== HABv4 section ======== + hab: + mem_types: + flexspi_nor: + initial_load_size: 0x2000 + flexspi_nand: + initial_load_size: 0x1000 + semc_nand: + initial_load_size: 0x1000 + sd: + initial_load_size: 0x1000 + mmc: + initial_load_size: 0x1000 + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== XMCD section ======== + xmcd: + mem_types: + flexspi_ram: + simplified: + reg_spec: ../../common/xmcd/flexspi_ram_simplified.json + full: + reg_spec: ../../common/xmcd/flexspi_ram_full.json + semc_sdram: + simplified: + reg_spec: ../../common/xmcd/semc_sdram_simplified.json + full: + reg_spec: ../../common/xmcd/semc_sdram_full.json + fuses: + _name: "XMCD CRC" + fuse23: + fuse23-bit-14: 1 # XMC_CRC32_CHECK_EN + fuse73: "__crc" # XMC_CRC32_CHECK_SUM + + + # ======== IEE section ======== + iee: + has_kek_fuses: True + additional_template: ["ibkek", "key_blobs"] + additional_template_text: | + Refer to the Security Reference Manual for RT117x and Application Note 13250 for more information. + In case blank string is used, the output is not generated. If the filename contains directory, + the output folder will be ignored and the full path from filename will be used. + + fuses: + _name: Configuration of fuses for IEE + _desc: WARNING!! Check SRM and set all desired bitfields for boot configuration + _no_verify: True + iee_user_key1: __ibkek1 # USER KEY 1 (IEE KEK) + iee_user_key2: __ibkek2 # USER KEY 2 (IEE KEK) + fuse14: + fuse14-bit-8: 1 # Load IEE Key bitfield + fuse23: + fuse23-bit-12: 1 # Encrypt XIP engine + fuse9: + fuse9-bit-2: 1 + fuse9-bit-3: 1 + fuse20: 0x0000_0002 # BOOT CFG fuse! + + # ======== OTFAD section ======== + otfad: + sb_21_supported: False + has_kek_fuses: True + supports_key_scrambling: True + + fuses_1: # Fuses for OTFAD1 + _name: Configuration of fuses for OTFAD1 + _no_verify: True + fuse71: # OTFAD CFG Fuse + fuse71-bit-0: __scramble_enabled # OTFAD enable scrambling + fuse133: __key_scramble_align # OTFAD scramble align + fuse132: __key_scramble_mask # OTFAD Scramble Key + otfad_key: __kek # OTFAD Key + + fuses_2: # Fuses for OTFAD2 + _name: Configuration of fuses for OTFAD2 + _no_verify: True + fuse71: # OTFAD CFG Fuse + fuse71-bit-4: __scramble_enabled # OTFAD enable scrambling + fuse135: __key_scramble_align # OTFAD scramble align + fuse134: __key_scramble_mask # OTFAD Scramble Key + otfad_key: __kek # OTFAD Key + + additional_template: ["otfad_scramble"] + additional_template_text: | + Is important to use physical addresses (non-secure) in settings of OTFAD to proper run the decryption on device. + + The fuse word 0x47 on address 0xC70 uses error-correcting codes. + The fuse word can only be written one time, so you must set all of the desired bits within the word at the same time. + Refer to the SRM to get familiar with the functionality of all bitfields. + The ENCRYPT_XIP_EN fuse is part of the BOOT_CFG1 fuse. If this bit is set, all BOOT_CFG fuses must be configured accordingly. + The encrypted XiP can be also enabled by the BOOT_CFG pin + + It is recommended to set the USER_KEY5_RLOCK and OTFAD1/2_KEY_SEL_LOCK fuses for production to protect sensitive data stored in the USER_KEY5 fuse (if used) and to prevent a modification of the OTFAD key selection by malicious software. + + In case blank string is used, the output is not generated. If the filename contains directory, + the output folder will be ignored and the full path from filename will be used. + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + hab_container: 0x0 + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + keystore: 0x0800 + hab_container: 0x1000 + flexspi_nand: + segments: + hab_container: 0x400 + semc_nand: + segments: + hab_container: 0x400 + sd: + segments: + hab_container: 0x400 + mmc: + segments: + hab_container: 0x400 + emmc: + segments: + hab_container: 0x400 + recovery_spi_hab: + segments: + hab_container: 0x400 + + # ======== Memory configuration ======== + memcfg: + peripherals: + flexspi_nor: + instances: [1, 2] + flexspi_nand: + instances: [1, 2] + semc_nor: + instances: [0] # probably not supported in latest version of Flashloader + semc_nand: + instances: [0] # probably not supported in latest version of Flashloader + sd: + instances: [1, 2] + mmc: + instances: [1, 2] + emmc: + instances: [1, 2] + spi_nor: + instances: [1, 2, 3, 4] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/fcb_flexspi_nor.json new file mode 100644 index 0000000..27770cf --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/fcb_flexspi_nor.json @@ -0,0 +1,25568 @@ +{ + "cpu": "MIMXRT1166", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix", + "default_value_int": "0x56010400" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc.", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0" + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved0_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command", + "default_value_int": "0x0" + }, + { + "id": "field1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false", + "default_value_int": "0x0" + }, + { + "id": "field1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "reserve2_0", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "reserve2_1", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "reserve2_2", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "reserve2_3", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "reserve2_4", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "reserve2_5", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "reserve2_6", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "reserve2_7", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "reserve2_8", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "reserve2_9", + "description": " Reserved for future use", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "reserve2_10", + "description": " Reserved for future use", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/fuses.json new file mode 100644 index 0000000..e453f10 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1166/fuses.json @@ -0,0 +1,5393 @@ +{ + "cpu": "mimxrt1166", + "groups": [ + { + "group": { + "name": "Reserved 0x800-0x830", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved0", + "name": "Reserved 0x800", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0800", + "index_int": "0", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1", + "name": "Reserved 0x810", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0810", + "index_int": "0x0001", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved2", + "name": "Reserved 0x820", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0820", + "index_int": "0x0002", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved3", + "name": "Reserved 0x830", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0830", + "index_int": "0x0003", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "BOOT_PARAM_CFG", + "description": "Fuses 0x840-0x860: Boot param config fuse registers" + }, + "registers": [ + { + "id": "fuse4", + "name": "BOOT_PARAM_CFG0", + "description": "Fuse BOOT_PARAM_CFG0", + "offset_int": "0x0840", + "index_int": "0x0004", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse4-bit-2", + "name": "MECC_ENABLE", + "description": "Enable memory ECC", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 1, + "id": "fuse4-bit-3", + "name": "XECC_ENABLE", + "description": "Enable external memory ECC", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse4-bit-15", + "name": "FLEXRAMECC_ENABLE", + "description": "Enable FlexRAM ECC", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved5", + "name": "Reserved 0x850", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0850", + "index_int": "0x0005", + "is_reserved": true, + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse6", + "name": "BOOT_PARAM_CFG1", + "description": "Fuse BOOT_PARAM_CFG1", + "offset_int": "0x0860", + "index_int": "0x0006", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse6-bit-6", + "name": "PUF_ENABLE", + "description": "Enable PUF IP", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 1, + "id": "fuse6-bit-7", + "name": "UDF_ENABLE", + "description": "Enable UDF IP", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "DEBUG_CFG", + "description": "Fuse 0x870: Debug config fuse register" + }, + "registers": [ + { + "id": "fuse7", + "name": "DEBUG_CFG", + "description": "Fuse DEBUG_CFG", + "offset_int": "0x0870", + "index_int": "0x0007", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1, + "id": "fuse7-bit-0", + "name": "M7_DEBUG_DISABLE", + "description": "Disable ability to debug M7", + "values": [ + { + "name": "enabled", + "value": 0, + "description": "enabled" + }, + { + "name": "disabled", + "value": 1, + "description": "disabled" + } + ] + }, + { + "width": 1, + "id": "fuse7-bit-1", + "name": "M4_DEBUG_DISABLE", + "description": "Disable ability to debug M4", + "values": [ + { + "name": "enabled", + "value": 0, + "description": "enabled" + }, + { + "name": "disabled", + "value": 1, + "description": "disabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse7-bit-4", + "name": "FBB_DISABLE", + "description": "Disable FBB\n0 - FBB enable\n1 - FBB disable (for FF samples in RT1170 parts)", + "values": [ + { + "name": "enabled", + "value": 0, + "description": "enabled" + }, + { + "name": "disabled", + "value": 1, + "description": "disabled" + } + ] + }, + { + "width": 3 + }, + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 2 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "Locks", + "description": "Fuses 0x880-0x890: Lock bits allowing to lock access to specified fuse registers" + }, + "registers": [ + { + "id": "fuse8", + "name": "LOCK_CFG0", + "description": "Fuse LOCK_CFG0", + "offset_int": "0x0880", + "index_int": "0x0008", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4 + }, + { + "width": 4, + "id": "fuse8-bits-11-14", + "name": "JTAG_RESP_RLOCK[3:0]", + "description": "JTAG_RESP_RLOCK[0]: Read lock of JTAG_RESP[31:0]\nJTAG_RESP_RLOCK[1]: Read lock of JTAG_RESP[63:32]\nJTAG_RESP_RLOCK[2]: Read lock of JTAG_RESP[95:64]\nJTAG_RESP_RLOCK[3]: Read lock of JTAG_RESP[127:96]", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 15, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse9", + "name": "LOCK_CFG1", + "description": "Fuse LOCK_CFG1", + "offset_int": "0x0890", + "index_int": "0x0009", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse9-bit-2", + "name": "USER_KEY1_RLOCK", + "description": "Read Lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-3", + "name": "USER_KEY2_RLOCK", + "description": "Read Lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-4", + "name": "USER_KEY3_RLOCK", + "description": "Read Lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-5", + "name": "USER_KEY4_RLOCK", + "description": "Read Lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-6", + "name": "USER_KEY5_RLOCK", + "description": "Read Lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse9-bit-10", + "name": "GP1_RLOCK", + "description": "Read Lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-11", + "name": "GP2_RLOCK", + "description": "Read Lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-12", + "name": "GP3_RLOCK", + "description": "Read Lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-13", + "name": "GP4_RLOCK", + "description": "Read Lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-14", + "name": "GP5_RLOCK", + "description": "Read Lock", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock (The controlled field can be read in the corresponded IIM register)" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock (The controlled field can't be read in the corresponded IIM register)" + } + ] + }, + { + "width": 1 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x8A0-0x8C0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved10", + "name": "Reserved 0x8A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x08A0", + "index_int": "0x000A", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved11", + "name": "Reserved 0x8B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x08B0", + "index_int": "0x000B", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved12", + "name": "Reserved 0x8C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x08C0", + "index_int": "0x000C", + "is_reserved": true, + "bitfields": [ + { + "width": 16 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "Security config", + "description": "Fuses 0x8D0-0x8E0: Security config fuse registers" + }, + "registers": [ + { + "id": "fuse13", + "name": "SRK_REVOKE", + "description": "Fuse SRK_REVOKE", + "offset_int": "0x08D0", + "index_int": "0x000D", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 2 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 4, + "id": "fuse13-bits-4-7", + "name": "FIELD_RETURN", + "description": "Configure device for field return testing. Fuse burning is protected by CSF command, with proper parameter passed. Write / OP protected by FIELD_RETURN_LOCK bit in control register.", + "values": [ + { + "name": "0000", + "value": 0, + "description": "Device is in functional / secure mode." + }, + { + "name": "1010", + "value": 10, + "description": "Device is open for 'field-return' testing." + } + ] + }, + { + "width": 1, + "id": "fuse13-bit-8", + "name": "SRK_REVOKE[0]", + "description": "SRK key 1 revocation ", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse13-bit-9", + "name": "SRK_REVOKE[1]", + "description": "SRK key 2 revocation ", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse13-bit-10", + "name": "SRK_REVOKE[2]", + "description": "SRK key 3 revocation ", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1, + "id": "fuse13-bit-11", + "name": "SRK_REVOKE[3]", + "description": "SRK key 4 revocation ", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Revoke Key", + "value": 1, + "description": "Revoke Key" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse14", + "name": "SEC_BOOT_CFG0", + "description": "Fuse SEC_BOOT_CFG0", + "offset_int": "0x08E0", + "index_int": "0x000E", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse14-bit-1", + "name": "SEC_CONFIG[0]", + "description": "Security Configuration Mode, and block of debugging of security HW, by JTAG" + }, + { + "width": 1, + "id": "fuse14-bit-2", + "name": "MASTER_KEY_SEL", + "description": "Master Key selection", + "values": [ + { + "name": "0", + "value": 0, + "description": "select scrambled OTPMK as master key" + }, + { + "name": "1", + "value": 1, + "description": "select PUF key[0] as master key" + } + ] + }, + { + "width": 1, + "id": "fuse14-bit-3", + "name": "MASTER_KEY_SEL_LOCK", + "description": "Lock Master Key selection", + "values": [ + { + "name": "0", + "value": 0, + "description": "Software change Master Key selection allowed" + }, + { + "name": "1", + "value": 1, + "description": "Software change Master Key selection not allowed" + } + ] + }, + { + "width": 1, + "id": "fuse14-bit-4", + "name": "OTFAD1_KEY_SEL", + "description": "OTFAD1 Key selection", + "values": [ + { + "name": "0", + "value": 0, + "description": "select USER_KEY5 as OTFAD1 Key" + }, + { + "name": "1", + "value": 1, + "description": "select PUF key[1] low 128 bt as OTFAD1 key" + } + ] + }, + { + "width": 1, + "id": "fuse14-bit-5", + "name": "OTFAD1_KEY_SEL_LOCK", + "description": "Lock OTFAD1 Key selection", + "values": [ + { + "name": "0", + "value": 0, + "description": "Software change OTFAD1 Key selection allowed" + }, + { + "name": "1", + "value": 1, + "description": "Software change OTFAD1 Key selection not allowed" + } + ] + }, + { + "width": 1, + "id": "fuse14-bit-6", + "name": "OTFAD2_KEY_SEL", + "description": "OTFAD2 Key selection", + "values": [ + { + "name": "0", + "value": 0, + "description": "select USER_KEY5 as OTFAD2 Key" + }, + { + "name": "1", + "value": 1, + "description": "select PUF key[1] low 128 bt as OTFAD2 key" + } + ] + }, + { + "width": 1, + "id": "fuse14-bit-7", + "name": "OTFAD2_KEY_SEL_LOCK", + "description": "Lock OTFAD2 Key selection", + "values": [ + { + "name": "0", + "value": 0, + "description": "Software change OTFAD2 Key selection allowed" + }, + { + "name": "1", + "value": 1, + "description": "Software change OTFAD2 Key selection not allowed" + } + ] + }, + { + "width": 1, + "id": "fuse14-bit-8", + "name": "LOAD_IEE_KEY", + "description": "Load IEE Key on start up", + "values": [ + { + "name": "0", + "value": 0, + "description": "not Load IEE key after reset" + }, + { + "name": "1", + "value": 1, + "description": "Load IEE key after reset" + } + ] + }, + { + "width": 1 + }, + { + "width": 6 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x8F0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved15", + "name": "Reserved 0x8F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x08F0", + "index_int": "0x000F", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "IDs", + "description": "Fuses 0x900-0x930: Different identifiers" + }, + "registers": [ + { + "id": "fuse16", + "name": "LOT_NO_ENC1", + "description": "FSL-wide unique, encoded LOT ID STD II/JTAG CHALLENGE/Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[42:11]" + ], + "offset_int": "0x0900", + "index_int": "0x0010", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse16-bits-0-31", + "name": "LOT_NO_ENC[42:11]", + "description": "FSL-wide unique, encoded LOT ID STD II/JTAG CHALLENGE/Unique ID" + } + ] + }, + { + "id": "fuse17", + "name": "LOT_NO_ENC0_WAFER_COORD", + "description": "FSL-wide unique, encoded LOT ID STD II/JTAG CHALLENGE/Unique ID", + "deprecated_names": [ + "LOT_NO_ENC[10:0]" + ], + "offset_int": "0x0910", + "index_int": "0x0011", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 11, + "id": "fuse17-bits-0-10", + "name": "LOT_NO_ENC[10:0]", + "description": "FSL-wide unique, encoded LOT ID STD II/JTAG CHALLENGE/Unique ID" + }, + { + "width": 5, + "id": "fuse17-bits-11-15", + "name": "WAFER_NO[4:0]", + "description": "The wafer number of the wafer on which the device was fabricated/JTAG CHALLENGE/Unique ID" + }, + { + "width": 8, + "id": "fuse17-bits-16-23", + "name": "DIE-Y-CORDINATE[7:0]", + "description": "The Y-coordinate of the die location on the wafer/JTAG CHALLENGE/Unique ID" + }, + { + "width": 8, + "id": "fuse17-bits-24-31", + "name": "DIE-X-CORDINATE[7:0]", + "description": "The X-coordinate of the die location on the wafer/JTAG CHALLENGE/Unique ID" + } + ] + }, + { + "id": "fuse18", + "name": "SI_REV", + "description": "Fuse SI_REV", + "offset_int": "0x0920", + "index_int": "0x0012", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 4, + "id": "fuse18-bits-24-27", + "name": "SI_REV[3:0]", + "description": "Silicon Revision number." + }, + { + "width": 4 + } + ] + }, + { + "id": "fuse19", + "name": "SPEED_GRADING", + "description": "Fuse SPEED_GRADING", + "offset_int": "0x0930", + "index_int": "0x0013", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 2, + "id": "fuse19-bits-0-1", + "name": "SPEED_GRADING[1:0]", + "description": "Burned by tester program, for indicating M7 core speed" + }, + { + "width": 2, + "id": "fuse19-bits-2-3", + "name": "SPEED_GRADING[3:2]", + "description": "Burned by tester program, for indicating M4 core speed" + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 24 + } + ] + } + ] + }, + { + "group": { + "name": "BOOT_CFG", + "description": "Fuses 0x940-0x950: Boot config fuse registers" + }, + "registers": [ + { + "id": "fuse20", + "name": "BOOT_CFG0", + "description": "Fuse BOOT_CFG0", + "offset_int": "0x0940", + "index_int": "0x0014", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 8, + "id": "fuse20-bits-0-7", + "name": "BOOT_CFG1[7:0]", + "description": "See Boot sheet" + }, + { + "width": 8, + "id": "fuse20-bits-8-15", + "name": "BOOT_CFG2[7:0]", + "description": "See Boot sheet" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse21", + "name": "BOOT_CFG1", + "description": "Fuse BOOT_CFG1", + "offset_int": "0x0950", + "index_int": "0x0015", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 8, + "id": "fuse21-bits-0-7", + "name": "BOOT_CFG3[7:0]", + "description": "See Boot sheet" + }, + { + "width": 8, + "id": "fuse21-bits-8-15", + "name": "BOOT_CFG4[7:0]", + "description": "See Boot sheet" + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "SEC_BOOT_CFG1", + "description": "Fuse 0x960: Security boot config 1 fuse register" + }, + "registers": [ + { + "id": "fuse22", + "name": "SEC_BOOT_CFG1", + "description": "Fuse SEC_BOOT_CFG1", + "offset_int": "0x0960", + "index_int": "0x0016", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "fuse22-bit-1", + "name": "SEC_CONFIG[1]", + "description": "Security Configuration (with SEC_CONFIG[0])", + "values": [ + { + "name": "Open", + "value": 0, + "description": "Open (allows any program image, even if the authentication fails)" + }, + { + "name": "Closed", + "value": 1, + "description": "Closed (The program image executes only if authenticated)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse22-bit-4", + "name": "BT_FUSE_SEL", + "description": "Determines, whether using fuses for boot configuration, or GPIO /Serial loader", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse22-bit-5", + "name": "FORCE_COLD_BOOT", + "description": "Force cold boot when A9 core come out of reset. Reflected in SBMR reg of SRC", + "values": [ + { + "name": "0", + "value": 0, + "description": "Default behavior equivalent to the rest of the i.MX6 family allowing a fast recovery from low power modes. That is, the ROM is allowed to jump to the address previously programmed in the SRC persistent register." + }, + { + "name": "1", + "value": 1, + "description": "Fast recovery path in the ROM is not allowed and a cold boot is always performed. Customers wanting a higher level of security should burn this fuse." + } + ] + }, + { + "width": 2, + "id": "fuse22-bits-6-7", + "name": "JTAG_SMODE[1:0]", + "description": "JTAG Security Mode. Controls the security mode of the JTAG debug interface", + "values": [ + { + "name": "00", + "value": 0, + "description": "JTAG enable mode" + }, + { + "name": "01", + "value": 1, + "description": "Secure JTAG mode" + }, + { + "name": "11", + "value": 3, + "description": "No debug mode" + } + ] + }, + { + "width": 1, + "id": "fuse22-bit-8", + "name": "KTE", + "description": "Kill Trace Enable. Enables tracing capability on ETM, and other modules", + "values": [ + { + "name": "0", + "value": 0, + "description": "Bus tracing is allowed" + }, + { + "name": "1", + "value": 1, + "description": "Bus tracing is allowed in case security state as defined by Secure JTAG allows it (for example, JTAG_ENABLE or NO_DEBUG)" + } + ] + }, + { + "width": 1, + "id": "fuse22-bit-9", + "name": "JTAG_HEO", + "description": "JTAG HAB Enable Override. Disallows HAB JTAG enabling. The HAB may normally enable JTAG debugging by means of the HAB_JDE-bit in the OCOTP SCS register. The JTAG_HEO-bit can override this behavior", + "values": [ + { + "name": "0", + "value": 0, + "description": "HAB may enable JTAG debug access" + }, + { + "name": "1", + "value": 1, + "description": "HAB JTAG enable is overridden (HAB may not enable JTAG debug access)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse22-bit-11", + "name": "JTAG_DISABLE", + "description": "Disable/Enable the Secure JTAG Controller module. This fuse is used to create highest JTAG security level, where JTAG is totally blocked.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Secure JTAG Controller is enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "Secure JTAG Controller is disabled" + } + ] + }, + { + "width": 1, + "id": "fuse22-bit-12", + "name": "BT_CORE_SEL", + "description": "Boot Core Selection.\nOnly applied to multi-core part.", + "values": [ + { + "name": "boot from M7", + "value": 0, + "description": "boot from M7" + }, + { + "name": "boot from M4", + "value": 1, + "description": "boot from M4" + } + ] + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "BOOT_PARAM", + "description": "Fuses 0x970-0x9B0: Boot parameters fuse registers" + }, + "registers": [ + { + "id": "fuse23", + "name": "BOOT_PARAM1", + "description": "Fuse BOOT_PARAM1", + "offset_int": "0x0970", + "index_int": "0x0017", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1, + "id": "fuse23-bit-0", + "name": "eMMC 5.0 - RESET TO PRE-IDLE STATE", + "description": "eMMC 5.0 - RESET TO PRE-IDLE STATE", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-1", + "name": "SD2_RST_POLARITY_SELECTION", + "description": "SD2_RST_POLARITY_SELECTION", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-2", + "name": "SD1_RST_POLARITY_SELECTION", + "description": "SD1_RST_POLARITY_SELECTION", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-3", + "name": "SD1_VOLTAGE_SELECTION", + "description": "SD1_VOLTAGE_SELECTION", + "values": [ + { + "name": "3.3V", + "value": 0, + "description": "3.3V" + }, + { + "name": "1.8V", + "value": 1, + "description": "1.8V" + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-4", + "name": "USDHC_CMD_IOMUX_SION_BIT_DISABLE", + "description": "USDHC_CMD_IOMUX_SION_BIT_DISABLE", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-5", + "name": "PWR_STABLE_CYCLE_SELECTION", + "description": "PWR_STABLE_CYCLE_SELECTION", + "values": [ + { + "name": "5 ms", + "value": 0, + "description": "5 ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "2.5ms" + } + ] + }, + { + "width": 2, + "id": "fuse23-bits-6-7", + "name": "SD_PWR_CYCLE_SELECTION", + "description": "SD_PWR_CYCLE_SELECTION", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "2.5ms" + } + ] + }, + { + "width": 2, + "id": "fuse23-bits-8-9", + "name": "SDMMC_DLL_DLY Calibration Step", + "description": "SDMMC_DLL_DLY Calibration Step", + "values": [ + { + "name": "1", + "value": 0, + "description": "1" + }, + { + "name": "2", + "value": 1, + "description": "2" + }, + { + "name": "4", + "value": 2, + "description": "4" + }, + { + "name": "6", + "value": 3, + "description": "6" + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-10", + "name": "DLL_OVERRIDE", + "description": "DLL_OVERRIDE", + "values": [ + { + "name": "0", + "value": 0, + "description": "DLL Slave Mode for SD/eMMC (delay 10, step 2)" + }, + { + "name": "1", + "value": 1, + "description": "DLL Override Mode for SD/eMMC" + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-11", + "name": "USB SDP DISABLE", + "description": "USB SDP DISABLE", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-12", + "name": "ENCRYPT_XIP_ENGINE", + "description": "ENCRYPT_XIP_ENGINE", + "values": [ + { + "name": "OTFAD", + "value": 0, + "description": "OTFAD (128bit AES-CTR)" + }, + { + "name": "IEE", + "value": 1, + "description": "IEE (128/256bit AES-CTR, 256/512bit AES-XTS)" + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-13", + "name": "PUF Zeroize", + "description": "PUF Zeroize", + "values": [ + { + "name": "0", + "value": 0, + "description": "not zeroize PUF" + }, + { + "name": "1", + "value": 1, + "description": "zeroize PUF after boot" + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-14", + "name": "XMC_CHK_EN", + "description": "XMC_CHK_EN", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "XMC Integrity check is not enabled" + }, + { + "name": "Enable", + "value": 1, + "description": "XMC Integrity Check is enabled" + } + ] + }, + { + "width": 1, + "id": "fuse23-bit-15", + "name": "SDMMC_MFG_MODE_DISABLE", + "description": "SDMMC_MFG_MODE_DISABLE", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse24", + "name": "BOOT_PARAM2", + "description": "Fuse BOOT_PARAM2", + "offset_int": "0x0980", + "index_int": "0x0018", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse24-bits-0-15", + "name": "BOOT_PARM2", + "description": "Boot parameters. See Boot sheet." + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse25", + "name": "BOOT_PARAM3", + "description": "Fuse BOOT_PARAM3", + "offset_int": "0x0990", + "index_int": "0x0019", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse25-bits-0-15", + "name": "BOOT_PARM3", + "description": "Boot parameters. See Boot sheet." + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse26", + "name": "BOOT_PARAM4", + "description": "Fuse BOOT_PARAM4", + "offset_int": "0x09A0", + "index_int": "0x001A", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1, + "id": "fuse26-bit-0", + "name": "SDP_DISABLE", + "description": "SDP_DISABLE", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-1", + "name": "UART_SDP_DISABLE", + "description": "UART_SDP_DISABLE", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-2", + "name": "OSC_REF_FREQ", + "description": "OSC_REF_FREQ", + "values": [ + { + "name": "24MHz", + "value": 0, + "description": "24MHz" + }, + { + "name": "19.2MHz", + "value": 1, + "description": "19.2MHz" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-3", + "name": "BOOT_FREQ", + "description": "BOOT_FREQ", + "values": [ + { + "name": "0", + "value": 0, + "description": "M7: 400MHz (M4: 200MHz)" + }, + { + "name": "1", + "value": 1, + "description": "M7: 700MHz (M4: 240MHz)" + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-4-5", + "name": "LPB_BOOT", + "description": "Divide (Core / Bus) based on Boot Frequencies", + "values": [ + { + "name": "Div by 1", + "value": 0, + "description": "Div by 1" + }, + { + "name": "Div by 2", + "value": 1, + "description": "Div by 2" + }, + { + "name": "Div by 4", + "value": 2, + "description": "Div by 4" + }, + { + "name": "Div by 8", + "value": 3, + "description": "Div by 8" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-6", + "name": "D_CACHE_DISABLE", + "description": "D_CACHE_DISABLE", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-7", + "name": "I_CACHE_DISABLE", + "description": "I_CACHE_DISABLE", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 2, + "id": "fuse26-bits-8-9", + "name": "FLASH_CONNECTION_SEL", + "description": "FLASH_CONNECTION_SEL", + "values": [ + { + "name": "0", + "value": 0, + "description": "Connected via PORTA" + }, + { + "name": "1", + "value": 1, + "description": "Parallel Mode" + }, + { + "name": "2", + "value": 2, + "description": "Connected via PORTB" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-10", + "name": "FLEXSPI_PIN_GROUP_SEL", + "description": "FLEXSPI_PIN_GROUP_SEL", + "values": [ + { + "name": "0", + "value": 0, + "description": "Primary Group" + }, + { + "name": "1", + "value": 1, + "description": "Secondary Group" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-11", + "name": "FLEXSPI_DQS_PIN_SEL", + "description": "FLEXSPI_DQS_PIN_SEL", + "values": [ + { + "name": "0", + "value": 0, + "description": "Primary DQS pin" + }, + { + "name": "1", + "value": 1, + "description": "Secondary DQS Pin" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-12", + "name": "Wipe Invalid Image", + "description": "Wipe Invalid Image", + "values": [ + { + "name": "Do not wipe", + "value": 0, + "description": "Do not wipe out invalid image from internal RAM" + }, + { + "name": "Wipe", + "value": 1, + "description": "Wipe" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-13", + "name": "ENABLE_SECURE_CPY", + "description": "ENABLE_SECURE_CPY", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-14", + "name": "FORCE_INTERNAL_BOOT", + "description": "FORCE_INTERNAL_BOOT", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-15", + "name": "WDOG_ENABLE", + "description": "WDOG_ENABLE", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse27", + "name": "BOOT_PARAM5", + "description": "Fuse BOOT_PARAM5", + "offset_int": "0x09B0", + "index_int": "0x001B", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 3, + "id": "fuse27-bits-0-2", + "name": "WDOG Timeout Select", + "description": "WDOG Timeout Select", + "values": [ + { + "name": "64s", + "value": 0, + "description": "64s" + }, + { + "name": "32s", + "value": 1, + "description": "32s" + }, + { + "name": "16s", + "value": 2, + "description": "16s" + }, + { + "name": "8s", + "value": 3, + "description": "8s" + }, + { + "name": "4s", + "value": 4, + "description": "4s" + } + ] + }, + { + "width": 2, + "id": "fuse27-bits-3-4", + "name": "WDOG_B_PIN_SEL", + "description": "WDOG_B_PIN_SEL", + "values": [ + { + "name": "GPIO_DISP_B2_00", + "value": 0, + "description": "GPIO_DISP_B2_00" + }, + { + "name": "GPIO_DISP_B2_15", + "value": 1, + "description": "GPIO_DISP_B2_15" + }, + { + "name": "GPIO_AD_04", + "value": 2, + "description": "GPIO_AD_04" + }, + { + "name": "GPIO_EMC_B2_18", + "value": 3, + "description": "GPIO_EMC_B2_18" + } + ] + }, + { + "width": 1, + "id": "fuse27-bit-5", + "name": "WDOG_B_PIN_EN", + "description": "WDOG_B_PIN_EN", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse27-bits-8-9", + "name": "DICE_EN", + "description": "DICE_EN", + "values": [ + { + "name": "0", + "value": 0, + "description": "DICE Disabled - Do not perform DICE CDI calculation" + }, + { + "name": "1", + "value": 1, + "description": "DICE Enabled. DICE CDI is calculated." + }, + { + "name": "2", + "value": 2, + "description": "DICE Enabled. DICE CDI is calculated." + }, + { + "name": "3", + "value": 3, + "description": "DICE Enabled. DICE CDI is calculated." + } + ] + }, + { + "width": 2, + "id": "fuse27-bits-10-11", + "name": "DICE_INC_NXP_CFG", + "description": "DICE_INC_NXP_CFG", + "values": [ + { + "name": "Not included", + "value": 0, + "description": "Not included" + }, + { + "name": "1", + "value": 1, + "description": "NXP area included in CDI - 0x840-0x870 + 0x1100-12F0" + }, + { + "name": "2", + "value": 2, + "description": "NXP area included in CDI - 0x840-0x870 + 0x1100-12F0" + }, + { + "name": "3", + "value": 3, + "description": "NXP area included in CDI - 0x840-0x870 + 0x1100-12F0" + } + ] + }, + { + "width": 2, + "id": "fuse27-bits-12-13", + "name": "DICE_CUST_CFG", + "description": "DICE_CUST_CFG", + "values": [ + { + "name": "Not included", + "value": 0, + "description": "Not included" + }, + { + "name": "1", + "value": 1, + "description": "customer area included in CDI - 0x8E0 + 0x940-0x9B0 + 0xB00-0xB70" + }, + { + "name": "2", + "value": 2, + "description": "customer area included in CDI - 0x8E0 + 0x940-0x9B0 + 0xB00-0xB70" + }, + { + "name": "3", + "value": 3, + "description": "customer area included in CDI - 0x8E0 + 0x940-0x9B0 + 0xB00-0xB70" + } + ] + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0x9C0-0xA70", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved28", + "name": "Reserved 0x9C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x09C0", + "index_int": "0x001C", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved29", + "name": "Reserved 0x9D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x09D0", + "index_int": "0x001D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved30", + "name": "Reserved 0x9E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x09E0", + "index_int": "0x001E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved31", + "name": "Reserved 0x9F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x09F0", + "index_int": "0x001F", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved32", + "name": "Reserved 0xA00", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0A00", + "index_int": "0x0020", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved33", + "name": "Reserved 0xA10", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0A10", + "index_int": "0x0021", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved34", + "name": "Reserved 0xA20", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0A20", + "index_int": "0x0022", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved35", + "name": "Reserved 0xA30", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0A30", + "index_int": "0x0023", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved36", + "name": "Reserved 0xA40", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0A40", + "index_int": "0x0024", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved37", + "name": "Reserved 0xA50", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0A50", + "index_int": "0x0025", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved38", + "name": "Reserved 0xA60", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0A60", + "index_int": "0x0026", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved39", + "name": "Reserved 0xA70", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0A70", + "index_int": "0x0027", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "MAC", + "description": "Fuses 0xA80-0xAD0: Ethernet MAC Address" + }, + "registers": [ + { + "id": "fuse40", + "name": "MAC1_ADDR1", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC1_ADDR[47:16]" + ], + "offset_int": "0x0A80", + "index_int": "0x0028", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse40-bits-0-31", + "name": "MAC1_ADDR[47:16]", + "description": "Ethernet MAC Address" + } + ] + }, + { + "id": "fuse41", + "name": "MAC1_ADDR0", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC1_ADDR[15:0]" + ], + "offset_int": "0x0A90", + "index_int": "0x0029", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 16, + "id": "fuse41-bits-0-15", + "name": "MAC1_ADDR[15:0]", + "description": "Ethernet MAC Address" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse42", + "name": "MAC2_ADDR1", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC2_ADDR[47:16]" + ], + "offset_int": "0x0AA0", + "index_int": "0x002A", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse42-bits-0-31", + "name": "MAC2_ADDR[47:16]", + "description": "Ethernet MAC Address" + } + ] + }, + { + "id": "fuse43", + "name": "MAC2_ADDR0", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC2_ADDR[15:0]" + ], + "offset_int": "0x0AB0", + "index_int": "0x002B", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 16, + "id": "fuse43-bits-0-15", + "name": "MAC2_ADDR[15:0]", + "description": "Ethernet MAC Address" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse44", + "name": "MAC3_ADDR1", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC3_ADDR[47:16]" + ], + "offset_int": "0x0AC0", + "index_int": "0x002C", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse44-bits-0-31", + "name": "MAC3_ADDR[47:16]", + "description": "Ethernet MAC Address" + } + ] + }, + { + "id": "fuse45", + "name": "MAC3_ADDR0", + "description": "Ethernet MAC Address", + "deprecated_names": [ + "MAC3_ADDR[15:0]" + ], + "offset_int": "0x0AD0", + "index_int": "0x002D", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 16, + "id": "fuse45-bits-0-15", + "name": "MAC3_ADDR[15:0]", + "description": "Ethernet MAC Address" + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "USB", + "description": "Fuse 0xAE0: USB fuse register" + }, + "registers": [ + { + "id": "fuse46", + "name": "USB", + "description": "Fuse USB", + "offset_int": "0x0AE0", + "index_int": "0x002E", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 16, + "id": "fuse46-bits-0-15", + "name": "USB_VID[15:0]", + "description": "USB VID" + }, + { + "width": 16, + "id": "fuse46-bits-16-31", + "name": "USB_PID[15:0]", + "description": "USB PID" + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 0xAF0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved47", + "name": "Reserved 0xAF0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0AF0", + "index_int": "0x002F", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 24 + } + ] + } + ] + }, + { + "group": { + "name": "M7_SRK_HASH", + "description": "Fuses 0xB00-0xB70: SRK key for M7 fuse registers" + }, + "registers": [ + { + "id": "fuse48", + "name": "M7_SRK_HASH[255:224]", + "description": "SRK key for M7, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0B00", + "index_int": "0x0030", + "individual_write_lock": "implicit" + }, + { + "id": "fuse49", + "name": "M7_SRK_HASH[223:192]", + "description": "SRK key for M7, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0B10", + "index_int": "0x0031", + "individual_write_lock": "implicit" + }, + { + "id": "fuse50", + "name": "M7_SRK_HASH[191:160]", + "description": "SRK key for M7, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0B20", + "index_int": "0x0032", + "individual_write_lock": "implicit" + }, + { + "id": "fuse51", + "name": "M7_SRK_HASH[159:128]", + "description": "SRK key for M7, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0B30", + "index_int": "0x0033", + "individual_write_lock": "implicit" + }, + { + "id": "fuse52", + "name": "M7_SRK_HASH[127:96]", + "description": "SRK key for M7, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0B40", + "index_int": "0x0034", + "individual_write_lock": "implicit" + }, + { + "id": "fuse53", + "name": "M7_SRK_HASH[95:64]", + "description": "SRK key for M7, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0B50", + "index_int": "0x0035", + "individual_write_lock": "implicit" + }, + { + "id": "fuse54", + "name": "M7_SRK_HASH[63:32]", + "description": "SRK key for M7, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0B60", + "index_int": "0x0036", + "individual_write_lock": "implicit" + }, + { + "id": "fuse55", + "name": "M7_SRK_HASH[31:0]", + "description": "SRK key for M7, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0B70", + "index_int": "0x0037", + "individual_write_lock": "implicit" + } + ] + }, + { + "group": { + "name": "M4_SRK_HASH", + "description": "Fuses 0xB80-0xBF0: SRK Key for M4 fuse registers" + }, + "registers": [ + { + "id": "fuse56", + "name": "M4_SRK_HASH[255:224]", + "description": "SRK key for M4, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0B80", + "index_int": "0x0038", + "individual_write_lock": "implicit" + }, + { + "id": "fuse57", + "name": "M4_SRK_HASH[223:192]", + "description": "SRK key for M4, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0B90", + "index_int": "0x0039", + "individual_write_lock": "implicit" + }, + { + "id": "fuse58", + "name": "M4_SRK_HASH[191:160]", + "description": "SRK key for M4, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0BA0", + "index_int": "0x003A", + "individual_write_lock": "implicit" + }, + { + "id": "fuse59", + "name": "M4_SRK_HASH[159:128]", + "description": "SRK key for M4, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0BB0", + "index_int": "0x003B", + "individual_write_lock": "implicit" + }, + { + "id": "fuse60", + "name": "M4_SRK_HASH[127:96]", + "description": "SRK key for M4, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0BC0", + "index_int": "0x003C", + "individual_write_lock": "implicit" + }, + { + "id": "fuse61", + "name": "M4_SRK_HASH[95:64]", + "description": "SRK key for M4, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0BD0", + "index_int": "0x003D", + "individual_write_lock": "implicit" + }, + { + "id": "fuse62", + "name": "M4_SRK_HASH[63:32]", + "description": "SRK key for M4, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0BE0", + "index_int": "0x003E", + "individual_write_lock": "implicit" + }, + { + "id": "fuse63", + "name": "M4_SRK_HASH[31:0]", + "description": "SRK key for M4, no HW visible lines. NO HW Visible signals available", + "offset_int": "0x0BF0", + "index_int": "0x003F", + "individual_write_lock": "implicit" + } + ] + }, + { + "group": { + "name": "Reserved 0xC00-0xC60", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved64", + "name": "Reserved 0xC00", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0C00", + "index_int": "0x0040", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved65", + "name": "Reserved 0xC10", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0C10", + "index_int": "0x0041", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved66", + "name": "Reserved 0xC20", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0C20", + "index_int": "0x0042", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved67", + "name": "Reserved 0xC30", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0C30", + "index_int": "0x0043", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved68", + "name": "Reserved 0xC40", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0C40", + "index_int": "0x0044", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved69", + "name": "Reserved 0xC50", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0C50", + "index_int": "0x0045", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved70", + "name": "Reserved 0xC60", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0C60", + "index_int": "0x0046", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "BOOT_CONFIG_MISC", + "description": "Fuses 0xC70-0xCA0: Boot config misc fuse registers" + }, + "registers": [ + { + "id": "fuse71", + "name": "BOOT_CONFIG_MISC1", + "description": "Fuse BOOT_CONFIG_MISC1", + "offset_int": "0x0C70", + "index_int": "0x0047", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 1, + "id": "fuse71-bit-0", + "name": "OTFAD1_SCRAMBLE_EN", + "description": "Enable OTFAD1's kek scramble", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse71-bit-2", + "name": "OTFAD1_RESTRICT_IPS", + "description": "Restrict OTFAD1's IPS bus", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse71-bit-4", + "name": "OTFAD2_SCRAMBLE_EN", + "description": "Enable OTFAD2's kek scramble", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse71-bit-6", + "name": "OTFAD2_RESTRICT_IPS", + "description": "Restrict OTFAD2's IPS bus", + "values": [ + { + "name": "disabled", + "value": 0, + "description": "disabled" + }, + { + "name": "enabled", + "value": 1, + "description": "enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 8, + "id": "fuse71-bits-8-15", + "name": "BOOT_CONFIG_MISC1[7:0]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "deprecated_names": [ + "BOOT_CONFIG_MISC1[15:8]" + ] + }, + { + "width": 6, + "id": "fuse71-bits-16-21", + "name": "Default_FlexRAM_Part[5:0]", + "description": "Default FlexRAM RAM bank partitioning" + }, + { + "width": 10, + "id": "fuse71-bits-22-31", + "name": "BOOT_CONFIG_MISC1[17:8]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "deprecated_names": [ + "BOOT_CONFIG_MISC1[31:22]" + ] + } + ] + }, + { + "id": "fuse72", + "name": "BOOT_CONFIG_MISC2[31:0]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x0C80", + "index_int": "0x0048", + "individual_write_lock": "implicit" + }, + { + "id": "fuse73", + "name": "BOOT_CONFIG_MISC3[31:0]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x0C90", + "index_int": "0x0049", + "individual_write_lock": "implicit" + }, + { + "id": "fuse74", + "name": "BOOT_CONFIG_MISC4[31:0]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x0CA0", + "index_int": "0x004A", + "individual_write_lock": "implicit" + } + ] + }, + { + "group": { + "name": "JTAG_RESP", + "description": "Fuses 0xCB0-0xCE0: JTAG Response fuse registers" + }, + "registers": [ + { + "id": "fuse75", + "name": "JTAG_RESP[127:96]", + "description": "JTAG Response", + "offset_int": "0x0CB0", + "index_int": "0x004B", + "individual_write_lock": "implicit" + }, + { + "id": "fuse76", + "name": "JTAG_RESP[95:64]", + "description": "JTAG Response", + "offset_int": "0x0CC0", + "index_int": "0x004C", + "individual_write_lock": "implicit" + }, + { + "id": "fuse77", + "name": "JTAG_RESP[63:32]", + "description": "JTAG Response", + "offset_int": "0x0CD0", + "index_int": "0x004D", + "individual_write_lock": "implicit" + }, + { + "id": "fuse78", + "name": "JTAG_RESP[31:0]", + "description": "JTAG Response", + "offset_int": "0x0CE0", + "index_int": "0x004E", + "individual_write_lock": "implicit" + } + ] + }, + { + "group": { + "name": "Reserved 0xCF0-0xDF0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved79", + "name": "Reserved 0xCF0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0CF0", + "index_int": "0x004F", + "is_reserved": true, + "bitfields": [ + { + "width": 8 + }, + { + "width": 8 + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved80", + "name": "Reserved 0xD00", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0D00", + "index_int": "0x0050", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved81", + "name": "Reserved 0xD10", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0D10", + "index_int": "0x0051", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved82", + "name": "Reserved 0xD20", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0D20", + "index_int": "0x0052", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved83", + "name": "Reserved 0xD30", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0D30", + "index_int": "0x0053", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved84", + "name": "Reserved 0xD40", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0D40", + "index_int": "0x0054", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved85", + "name": "Reserved 0xD50", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0D50", + "index_int": "0x0055", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved86", + "name": "Reserved 0xD60", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0D60", + "index_int": "0x0056", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved87", + "name": "Reserved 0xD70", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0D70", + "index_int": "0x0057", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved88", + "name": "Reserved 0xD80", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0D80", + "index_int": "0x0058", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved89", + "name": "Reserved 0xD90", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0D90", + "index_int": "0x0059", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved90", + "name": "Reserved 0xDA0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0DA0", + "index_int": "0x005A", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved91", + "name": "Reserved 0xDB0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0DB0", + "index_int": "0x005B", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved92", + "name": "Reserved 0xDC0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0DC0", + "index_int": "0x005C", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved93", + "name": "Reserved 0xDD0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0DD0", + "index_int": "0x005D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved94", + "name": "Reserved 0xDE0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0DE0", + "index_int": "0x005E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved95", + "name": "Reserved 0xDF0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x0DF0", + "index_int": "0x005F", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "USER_KEYx", + "description": "Fuses 0xE00-0x1070: User keys fuse registers" + }, + "registers": [ + { + "id": "fuse96", + "name": "USER_KEY1[255:224]", + "description": "User Key #1", + "offset_int": "0x0E00", + "index_int": "0x0060", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse97", + "name": "USER_KEY1[223:192]", + "description": "User Key #1", + "offset_int": "0x0E10", + "index_int": "0x0061", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse98", + "name": "USER_KEY1[191:160]", + "description": "User Key #1", + "offset_int": "0x0E20", + "index_int": "0x0062", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse99", + "name": "USER_KEY1[159:128]", + "description": "User Key #1", + "offset_int": "0x0E30", + "index_int": "0x0063", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse100", + "name": "USER_KEY1[127:96]", + "description": "User Key #1", + "offset_int": "0x0E40", + "index_int": "0x0064", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse101", + "name": "USER_KEY1[95:64]", + "description": "User Key #1", + "offset_int": "0x0E50", + "index_int": "0x0065", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse102", + "name": "USER_KEY1[63:32]", + "description": "User Key #1", + "offset_int": "0x0E60", + "index_int": "0x0066", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse103", + "name": "USER_KEY1[31:0]", + "description": "User Key #1", + "offset_int": "0x0E70", + "index_int": "0x0067", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0004" + } + }, + { + "id": "fuse104", + "name": "USER_KEY2[255:224]", + "description": "User Key #2", + "offset_int": "0x0E80", + "index_int": "0x0068", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0008" + } + }, + { + "id": "fuse105", + "name": "USER_KEY2[223:192]", + "description": "User Key #2", + "offset_int": "0x0E90", + "index_int": "0x0069", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0008" + } + }, + { + "id": "fuse106", + "name": "USER_KEY2[191:160]", + "description": "User Key #2", + "offset_int": "0x0EA0", + "index_int": "0x006A", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0008" + } + }, + { + "id": "fuse107", + "name": "USER_KEY2[159:128]", + "description": "User Key #2", + "offset_int": "0x0EB0", + "index_int": "0x006B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0008" + } + }, + { + "id": "fuse108", + "name": "USER_KEY2[127:96]", + "description": "User Key #2", + "offset_int": "0x0EC0", + "index_int": "0x006C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0008" + } + }, + { + "id": "fuse109", + "name": "USER_KEY2[95:64]", + "description": "User Key #2", + "offset_int": "0x0ED0", + "index_int": "0x006D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0008" + } + }, + { + "id": "fuse110", + "name": "USER_KEY2[63:32]", + "description": "User Key #2", + "offset_int": "0x0EE0", + "index_int": "0x006E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0008" + } + }, + { + "id": "fuse111", + "name": "USER_KEY2[31:0]", + "description": "User Key #2", + "offset_int": "0x0EF0", + "index_int": "0x006F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0008" + } + }, + { + "id": "fuse112", + "name": "USER_KEY3[255:224]", + "description": "User Key #3", + "offset_int": "0x0F00", + "index_int": "0x0070", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0010" + } + }, + { + "id": "fuse113", + "name": "USER_KEY3[223:192]", + "description": "User Key #3", + "offset_int": "0x0F10", + "index_int": "0x0071", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0010" + } + }, + { + "id": "fuse114", + "name": "USER_KEY3[191:160]", + "description": "User Key #3", + "offset_int": "0x0F20", + "index_int": "0x0072", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0010" + } + }, + { + "id": "fuse115", + "name": "USER_KEY3[159:128]", + "description": "User Key #3", + "offset_int": "0x0F30", + "index_int": "0x0073", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0010" + } + }, + { + "id": "fuse116", + "name": "USER_KEY3[127:96]", + "description": "User Key #3", + "offset_int": "0x0F40", + "index_int": "0x0074", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0010" + } + }, + { + "id": "fuse117", + "name": "USER_KEY3[95:64]", + "description": "User Key #3", + "offset_int": "0x0F50", + "index_int": "0x0075", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0010" + } + }, + { + "id": "fuse118", + "name": "USER_KEY3[63:32]", + "description": "User Key #3", + "offset_int": "0x0F60", + "index_int": "0x0076", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0010" + } + }, + { + "id": "fuse119", + "name": "USER_KEY3[31:0]", + "description": "User Key #3", + "offset_int": "0x0F70", + "index_int": "0x0077", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0010" + } + }, + { + "id": "fuse120", + "name": "USER_KEY4[255:224]", + "description": "User Key #4", + "offset_int": "0x0F80", + "index_int": "0x0078", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0020" + } + }, + { + "id": "fuse121", + "name": "USER_KEY4[223:192]", + "description": "User Key #4", + "offset_int": "0x0F90", + "index_int": "0x0079", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0020" + } + }, + { + "id": "fuse122", + "name": "USER_KEY4[191:160]", + "description": "User Key #4", + "offset_int": "0x0FA0", + "index_int": "0x007A", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0020" + } + }, + { + "id": "fuse123", + "name": "USER_KEY4[159:128]", + "description": "User Key #4", + "offset_int": "0x0FB0", + "index_int": "0x007B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0020" + } + }, + { + "id": "fuse124", + "name": "USER_KEY4[127:96]", + "description": "User Key #4", + "offset_int": "0x0FC0", + "index_int": "0x007C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0020" + } + }, + { + "id": "fuse125", + "name": "USER_KEY4[95:64]", + "description": "User Key #4", + "offset_int": "0x0FD0", + "index_int": "0x007D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0020" + } + }, + { + "id": "fuse126", + "name": "USER_KEY4[63:32]", + "description": "User Key #4", + "offset_int": "0x0FE0", + "index_int": "0x007E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0020" + } + }, + { + "id": "fuse127", + "name": "USER_KEY4[31:0]", + "description": "User Key #4", + "offset_int": "0x0FF0", + "index_int": "0x007F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0020" + } + }, + { + "id": "fuse128", + "name": "USER_KEY5[255:224]", + "description": "User Key #5", + "offset_int": "0x1000", + "index_int": "0x0080", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0040" + } + }, + { + "id": "fuse129", + "name": "USER_KEY5[223:192]", + "description": "User Key #5", + "offset_int": "0x1010", + "index_int": "0x0081", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0040" + } + }, + { + "id": "fuse130", + "name": "USER_KEY5[191:160]", + "description": "User Key #5", + "offset_int": "0x1020", + "index_int": "0x0082", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0040" + } + }, + { + "id": "fuse131", + "name": "USER_KEY5[159:128]", + "description": "User Key #5", + "offset_int": "0x1030", + "index_int": "0x0083", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0040" + } + }, + { + "id": "fuse132", + "name": "USER_KEY5[127:96]", + "description": "User Key #5", + "offset_int": "0x1040", + "index_int": "0x0084", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0040" + } + }, + { + "id": "fuse133", + "name": "USER_KEY5[95:64]", + "description": "User Key #5", + "offset_int": "0x1050", + "index_int": "0x0085", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0040" + } + }, + { + "id": "fuse134", + "name": "USER_KEY5[63:32]", + "description": "User Key #5", + "offset_int": "0x1060", + "index_int": "0x0086", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0040" + } + }, + { + "id": "fuse135", + "name": "USER_KEY5[31:0]", + "description": "User Key #5", + "offset_int": "0x1070", + "index_int": "0x0087", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0040" + } + } + ] + }, + { + "group": { + "name": "Reserved 0x1080-0x12F0", + "description": "Reserved for future use." + }, + "registers": [ + { + "id": "Reserved136", + "name": "Reserved 0x1080", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1080", + "index_int": "0x0088", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved137", + "name": "Reserved 0x1090", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1090", + "index_int": "0x0089", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved138", + "name": "Reserved 0x10A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x10A0", + "index_int": "0x008A", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved139", + "name": "Reserved 0x10B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x10B0", + "index_int": "0x008B", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved140", + "name": "Reserved 0x10C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x10C0", + "index_int": "0x008C", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved141", + "name": "Reserved 0x10D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x10D0", + "index_int": "0x008D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved142", + "name": "Reserved 0x10E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x10E0", + "index_int": "0x008E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved143", + "name": "Reserved 0x10F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x10F0", + "index_int": "0x008F", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved144", + "name": "Reserved 0x1100", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1100", + "index_int": "0x0090", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved145", + "name": "Reserved 0x1110", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1110", + "index_int": "0x0091", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved146", + "name": "Reserved 0x1120", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1120", + "index_int": "0x0092", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved147", + "name": "Reserved 0x1130", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1130", + "index_int": "0x0093", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved148", + "name": "Reserved 0x1140", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1140", + "index_int": "0x0094", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved149", + "name": "Reserved 0x1150", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1150", + "index_int": "0x0095", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved150", + "name": "Reserved 0x1160", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1160", + "index_int": "0x0096", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved151", + "name": "Reserved 0x1170", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1170", + "index_int": "0x0097", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved152", + "name": "Reserved 0x1180", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1180", + "index_int": "0x0098", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved153", + "name": "Reserved 0x1190", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1190", + "index_int": "0x0099", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved154", + "name": "Reserved 0x11A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x11A0", + "index_int": "0x009A", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved155", + "name": "Reserved 0x11B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x11B0", + "index_int": "0x009B", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved156", + "name": "Reserved 0x11C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x11C0", + "index_int": "0x009C", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved157", + "name": "Reserved 0x11D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x11D0", + "index_int": "0x009D", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved158", + "name": "Reserved 0x11E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x11E0", + "index_int": "0x009E", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved159", + "name": "Reserved 0x11F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x11F0", + "index_int": "0x009F", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved160", + "name": "Reserved 0x1200", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1200", + "index_int": "0x00A0", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved161", + "name": "Reserved 0x1210", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1210", + "index_int": "0x00A1", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved162", + "name": "Reserved 0x1220", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1220", + "index_int": "0x00A2", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved163", + "name": "Reserved 0x1230", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1230", + "index_int": "0x00A3", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved164", + "name": "Reserved 0x1240", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1240", + "index_int": "0x00A4", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved165", + "name": "Reserved 0x1250", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1250", + "index_int": "0x00A5", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved166", + "name": "Reserved 0x1260", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1260", + "index_int": "0x00A6", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved167", + "name": "Reserved 0x1270", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1270", + "index_int": "0x00A7", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved168", + "name": "Reserved 0x1280", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1280", + "index_int": "0x00A8", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved169", + "name": "Reserved 0x1290", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x1290", + "index_int": "0x00A9", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved170", + "name": "Reserved 0x12A0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x12A0", + "index_int": "0x00AA", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved171", + "name": "Reserved 0x12B0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x12B0", + "index_int": "0x00AB", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved172", + "name": "Reserved 0x12C0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x12C0", + "index_int": "0x00AC", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved173", + "name": "Reserved 0x12D0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x12D0", + "index_int": "0x00AD", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved174", + "name": "Reserved 0x12E0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x12E0", + "index_int": "0x00AE", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + }, + { + "id": "Reserved175", + "name": "Reserved 0x12F0", + "description": "Reserved for future use. Modification may result in unpredictable system behavior. Software should not rely on the value.", + "offset_int": "0x12F0", + "index_int": "0x00AF", + "is_reserved": true, + "bitfields": [ + { + "width": 32 + } + ] + } + ] + }, + { + "group": { + "name": "GPx", + "description": "Fuses 0x1300-0x17F0: General purpose fuse registers" + }, + "registers": [ + { + "id": "fuse176", + "name": "GP1[511:480]", + "description": "General Purpose fuse register #1", + "offset_int": "0x1300", + "index_int": "0x00B0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse177", + "name": "GP1[479:448]", + "description": "General Purpose fuse register #1", + "offset_int": "0x1310", + "index_int": "0x00B1", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse178", + "name": "GP1[447:416]", + "description": "General Purpose fuse register #1", + "offset_int": "0x1320", + "index_int": "0x00B2", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse179", + "name": "GP1[415:384]", + "description": "General Purpose fuse register #1", + "offset_int": "0x1330", + "index_int": "0x00B3", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse180", + "name": "GP1[383:352]", + "description": "General Purpose fuse register #1", + "offset_int": "0x1340", + "index_int": "0x00B4", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse181", + "name": "GP1[351:320]", + "description": "General Purpose fuse register #1", + "offset_int": "0x1350", + "index_int": "0x00B5", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse182", + "name": "GP1[319:288]", + "description": "General Purpose fuse register #1", + "offset_int": "0x1360", + "index_int": "0x00B6", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse183", + "name": "GP1[287:256]", + "description": "General Purpose fuse register #1", + "offset_int": "0x1370", + "index_int": "0x00B7", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse184", + "name": "GP1[255:224]", + "description": "General Purpose fuse register #1", + "offset_int": "0x1380", + "index_int": "0x00B8", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse185", + "name": "GP1[223:192]", + "description": "General Purpose fuse register #1", + "offset_int": "0x1390", + "index_int": "0x00B9", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse186", + "name": "GP1[191:160]", + "description": "General Purpose fuse register #1", + "offset_int": "0x13A0", + "index_int": "0x00BA", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse187", + "name": "GP1[159:128]", + "description": "General Purpose fuse register #1", + "offset_int": "0x13B0", + "index_int": "0x00BB", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse188", + "name": "GP1[127:96]", + "description": "General Purpose fuse register #1", + "offset_int": "0x13C0", + "index_int": "0x00BC", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse189", + "name": "GP1[95:64]", + "description": "General Purpose fuse register #1", + "offset_int": "0x13D0", + "index_int": "0x00BD", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse190", + "name": "GP1[63:32]", + "description": "General Purpose fuse register #1", + "offset_int": "0x13E0", + "index_int": "0x00BE", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse191", + "name": "GP1[31:0]", + "description": "General Purpose fuse register #1", + "offset_int": "0x13F0", + "index_int": "0x00BF", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0400" + } + }, + { + "id": "fuse192", + "name": "GP2[511:480]", + "description": "General Purpose fuse register #2", + "offset_int": "0x1400", + "index_int": "0x00C0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse193", + "name": "GP2[479:448]", + "description": "General Purpose fuse register #2", + "offset_int": "0x1410", + "index_int": "0x00C1", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse194", + "name": "GP2[447:416]", + "description": "General Purpose fuse register #2", + "offset_int": "0x1420", + "index_int": "0x00C2", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse195", + "name": "GP2[415:384]", + "description": "General Purpose fuse register #2", + "offset_int": "0x1430", + "index_int": "0x00C3", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse196", + "name": "GP2[383:352]", + "description": "General Purpose fuse register #2", + "offset_int": "0x1440", + "index_int": "0x00C4", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse197", + "name": "GP2[351:320]", + "description": "General Purpose fuse register #2", + "offset_int": "0x1450", + "index_int": "0x00C5", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse198", + "name": "GP2[319:288]", + "description": "General Purpose fuse register #2", + "offset_int": "0x1460", + "index_int": "0x00C6", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse199", + "name": "GP2[287:256]", + "description": "General Purpose fuse register #2", + "offset_int": "0x1470", + "index_int": "0x00C7", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse200", + "name": "GP2[255:224]", + "description": "General Purpose fuse register #2", + "offset_int": "0x1480", + "index_int": "0x00C8", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse201", + "name": "GP2[223:192]", + "description": "General Purpose fuse register #2", + "offset_int": "0x1490", + "index_int": "0x00C9", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse202", + "name": "GP2[191:160]", + "description": "General Purpose fuse register #2", + "offset_int": "0x14A0", + "index_int": "0x00CA", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse203", + "name": "GP2[159:128]", + "description": "General Purpose fuse register #2", + "offset_int": "0x14B0", + "index_int": "0x00CB", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse204", + "name": "GP2[127:96]", + "description": "General Purpose fuse register #2", + "offset_int": "0x14C0", + "index_int": "0x00CC", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse205", + "name": "GP2[95:64]", + "description": "General Purpose fuse register #2", + "offset_int": "0x14D0", + "index_int": "0x00CD", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse206", + "name": "GP2[63:32]", + "description": "General Purpose fuse register #2", + "offset_int": "0x14E0", + "index_int": "0x00CE", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse207", + "name": "GP2[31:0]", + "description": "General Purpose fuse register #2", + "offset_int": "0x14F0", + "index_int": "0x00CF", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x0800" + } + }, + { + "id": "fuse208", + "name": "GP3[511:480]", + "description": "General Purpose fuse register #3", + "offset_int": "0x1500", + "index_int": "0x00D0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse209", + "name": "GP3[479:448]", + "description": "General Purpose fuse register #3", + "offset_int": "0x1510", + "index_int": "0x00D1", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse210", + "name": "GP3[447:416]", + "description": "General Purpose fuse register #3", + "offset_int": "0x1520", + "index_int": "0x00D2", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse211", + "name": "GP3[415:384]", + "description": "General Purpose fuse register #3", + "offset_int": "0x1530", + "index_int": "0x00D3", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse212", + "name": "GP3[383:352]", + "description": "General Purpose fuse register #3", + "offset_int": "0x1540", + "index_int": "0x00D4", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse213", + "name": "GP3[351:320]", + "description": "General Purpose fuse register #3", + "offset_int": "0x1550", + "index_int": "0x00D5", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse214", + "name": "GP3[319:288]", + "description": "General Purpose fuse register #3", + "offset_int": "0x1560", + "index_int": "0x00D6", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse215", + "name": "GP3[287:256]", + "description": "General Purpose fuse register #3", + "offset_int": "0x1570", + "index_int": "0x00D7", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse216", + "name": "GP3[255:224]", + "description": "General Purpose fuse register #3", + "offset_int": "0x1580", + "index_int": "0x00D8", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse217", + "name": "GP3[223:192]", + "description": "General Purpose fuse register #3", + "offset_int": "0x1590", + "index_int": "0x00D9", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse218", + "name": "GP3[191:160]", + "description": "General Purpose fuse register #3", + "offset_int": "0x15A0", + "index_int": "0x00DA", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse219", + "name": "GP3[159:128]", + "description": "General Purpose fuse register #3", + "offset_int": "0x15B0", + "index_int": "0x00DB", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse220", + "name": "GP3[127:96]", + "description": "General Purpose fuse register #3", + "offset_int": "0x15C0", + "index_int": "0x00DC", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse221", + "name": "GP3[95:64]", + "description": "General Purpose fuse register #3", + "offset_int": "0x15D0", + "index_int": "0x00DD", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse222", + "name": "GP3[63:32]", + "description": "General Purpose fuse register #3", + "offset_int": "0x15E0", + "index_int": "0x00DE", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse223", + "name": "GP3[31:0]", + "description": "General Purpose fuse register #3", + "offset_int": "0x15F0", + "index_int": "0x00DF", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x1000" + } + }, + { + "id": "fuse224", + "name": "GP4[511:480]", + "description": "General Purpose fuse register #4", + "offset_int": "0x1600", + "index_int": "0x00E0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse225", + "name": "GP4[479:448]", + "description": "General Purpose fuse register #4", + "offset_int": "0x1610", + "index_int": "0x00E1", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse226", + "name": "GP4[447:416]", + "description": "General Purpose fuse register #4", + "offset_int": "0x1620", + "index_int": "0x00E2", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse227", + "name": "GP4[415:384]", + "description": "General Purpose fuse register #4", + "offset_int": "0x1630", + "index_int": "0x00E3", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse228", + "name": "GP4[383:352]", + "description": "General Purpose fuse register #4", + "offset_int": "0x1640", + "index_int": "0x00E4", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse229", + "name": "GP4[351:320]", + "description": "General Purpose fuse register #4", + "offset_int": "0x1650", + "index_int": "0x00E5", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse230", + "name": "GP4[319:288]", + "description": "General Purpose fuse register #4", + "offset_int": "0x1660", + "index_int": "0x00E6", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse231", + "name": "GP4[287:256]", + "description": "General Purpose fuse register #4", + "offset_int": "0x1670", + "index_int": "0x00E7", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse232", + "name": "GP4[255:224]", + "description": "General Purpose fuse register #4", + "offset_int": "0x1680", + "index_int": "0x00E8", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse233", + "name": "GP4[223:192]", + "description": "General Purpose fuse register #4", + "offset_int": "0x1690", + "index_int": "0x00E9", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse234", + "name": "GP4[191:160]", + "description": "General Purpose fuse register #4", + "offset_int": "0x16A0", + "index_int": "0x00EA", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse235", + "name": "GP4[159:128]", + "description": "General Purpose fuse register #4", + "offset_int": "0x16B0", + "index_int": "0x00EB", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse236", + "name": "GP4[127:96]", + "description": "General Purpose fuse register #4", + "offset_int": "0x16C0", + "index_int": "0x00EC", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse237", + "name": "GP4[95:64]", + "description": "General Purpose fuse register #4", + "offset_int": "0x16D0", + "index_int": "0x00ED", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse238", + "name": "GP4[63:32]", + "description": "General Purpose fuse register #4", + "offset_int": "0x16E0", + "index_int": "0x00EE", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse239", + "name": "GP4[31:0]", + "description": "General Purpose fuse register #4", + "offset_int": "0x16F0", + "index_int": "0x00EF", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x2000" + } + }, + { + "id": "fuse240", + "name": "GP5[511:480]", + "description": "General Purpose fuse register #5", + "offset_int": "0x1700", + "index_int": "0x00F0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse241", + "name": "GP5[479:448]", + "description": "General Purpose fuse register #5", + "offset_int": "0x1710", + "index_int": "0x00F1", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse242", + "name": "GP5[447:416]", + "description": "General Purpose fuse register #5", + "offset_int": "0x1720", + "index_int": "0x00F2", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse243", + "name": "GP5[415:384]", + "description": "General Purpose fuse register #5", + "offset_int": "0x1730", + "index_int": "0x00F3", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse244", + "name": "GP5[383:352]", + "description": "General Purpose fuse register #5", + "offset_int": "0x1740", + "index_int": "0x00F4", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse245", + "name": "GP5[351:320]", + "description": "General Purpose fuse register #5", + "offset_int": "0x1750", + "index_int": "0x00F5", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse246", + "name": "GP5[319:288]", + "description": "General Purpose fuse register #5", + "offset_int": "0x1760", + "index_int": "0x00F6", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse247", + "name": "GP5[287:256]", + "description": "General Purpose fuse register #5", + "offset_int": "0x1770", + "index_int": "0x00F7", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse248", + "name": "GP5[255:224]", + "description": "General Purpose fuse register #5", + "offset_int": "0x1780", + "index_int": "0x00F8", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse249", + "name": "GP5[223:192]", + "description": "General Purpose fuse register #5", + "offset_int": "0x1790", + "index_int": "0x00F9", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse250", + "name": "GP5[191:160]", + "description": "General Purpose fuse register #5", + "offset_int": "0x17A0", + "index_int": "0x00FA", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse251", + "name": "GP5[159:128]", + "description": "General Purpose fuse register #5", + "offset_int": "0x17B0", + "index_int": "0x00FB", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse252", + "name": "GP5[127:96]", + "description": "General Purpose fuse register #5", + "offset_int": "0x17C0", + "index_int": "0x00FC", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse253", + "name": "GP5[95:64]", + "description": "General Purpose fuse register #5", + "offset_int": "0x17D0", + "index_int": "0x00FD", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse254", + "name": "GP5[63:32]", + "description": "General Purpose fuse register #5", + "offset_int": "0x17E0", + "index_int": "0x00FE", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + }, + { + "id": "fuse255", + "name": "GP5[31:0]", + "description": "General Purpose fuse register #5", + "offset_int": "0x17F0", + "index_int": "0x00FF", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse9", + "read_lock_int": "0x4000" + } + } + ] + }, + { + "group": { + "name": "BOOT_CONFIG_MISC5", + "description": "Fuses 0x1800-0x18F0: Boot config misc fuse registers" + }, + "registers": [ + { + "id": "fuse256", + "name": "BOOT_CONFIG_MISC5[511:480]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x1800", + "index_int": "0x0100", + "individual_write_lock": "implicit" + }, + { + "id": "fuse257", + "name": "BOOT_CONFIG_MISC5[479:448]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x1810", + "index_int": "0x0101", + "individual_write_lock": "implicit" + }, + { + "id": "fuse258", + "name": "BOOT_CONFIG_MISC5[447:416]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x1820", + "index_int": "0x0102", + "individual_write_lock": "implicit" + }, + { + "id": "fuse259", + "name": "BOOT_CONFIG_MISC5[415:384]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x1830", + "index_int": "0x0103", + "individual_write_lock": "implicit" + }, + { + "id": "fuse260", + "name": "BOOT_CONFIG_MISC5[383:352]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x1840", + "index_int": "0x0104", + "individual_write_lock": "implicit" + }, + { + "id": "fuse261", + "name": "BOOT_CONFIG_MISC5[351:320]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x1850", + "index_int": "0x0105", + "individual_write_lock": "implicit" + }, + { + "id": "fuse262", + "name": "BOOT_CONFIG_MISC5[319:288]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x1860", + "index_int": "0x0106", + "individual_write_lock": "implicit" + }, + { + "id": "fuse263", + "name": "BOOT_CONFIG_MISC5[287:256]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x1870", + "index_int": "0x0107", + "individual_write_lock": "implicit" + }, + { + "id": "fuse264", + "name": "BOOT_CONFIG_MISC5[255:224]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x1880", + "index_int": "0x0108", + "individual_write_lock": "implicit" + }, + { + "id": "fuse265", + "name": "BOOT_CONFIG_MISC5[223:192]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x1890", + "index_int": "0x0109", + "individual_write_lock": "implicit" + }, + { + "id": "fuse266", + "name": "BOOT_CONFIG_MISC5[191:160]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x18A0", + "index_int": "0x010A", + "individual_write_lock": "implicit" + }, + { + "id": "fuse267", + "name": "BOOT_CONFIG_MISC5[159:128]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x18B0", + "index_int": "0x010B", + "individual_write_lock": "implicit" + }, + { + "id": "fuse268", + "name": "BOOT_CONFIG_MISC5[127:96]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x18C0", + "index_int": "0x010C", + "individual_write_lock": "implicit" + }, + { + "id": "fuse269", + "name": "BOOT_CONFIG_MISC5[95:64]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x18D0", + "index_int": "0x010D", + "individual_write_lock": "implicit" + }, + { + "id": "fuse270", + "name": "BOOT_CONFIG_MISC5[63:32]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x18E0", + "index_int": "0x010E", + "individual_write_lock": "implicit" + }, + { + "id": "fuse271", + "name": "BOOT_CONFIG_MISC5[31:0]", + "description": "Boot configuration misc fields are boot device dependent. See the reference manual for details.", + "offset_int": "0x18F0", + "index_int": "0x010F", + "individual_write_lock": "implicit" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1171/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1171/database.yaml new file mode 100644 index 0000000..b84ee23 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1171/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1172 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1172/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1172/database.yaml new file mode 100644 index 0000000..d46777f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1172/database.yaml @@ -0,0 +1,54 @@ +# Copyright 2023-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1176 + +# General MCU information +info: + memory_map: + itcm: + start_int: "0x0" + size_int: "0x40000" + external: false + non_xip_type: int_ram + dtcm: + start_int: "0x20000000" + size_int: "0x40000" + external: false + non_xip_type: int_ram + ocram1: + start_int: "0x20240000" + size_int: "0x80000" + external: false + non_xip_type: int_ram + ocram2: + start_int: "0x202C0000" + size_int: "0x80000" + external: false + non_xip_type: int_ram + ocram-ecc1: + start_int: "0x20340000" + size_int: "0x10000" + external: false + non_xip_type: none + ocram-ecc2: + start_int: "0x20350000" + size_int: "0x10000" + external: false + non_xip_type: none + flexspi1: + start_int: "0x30000000" + size_int: "0x10000000" + external: true + non_xip_type: ext_ram_flexspi + flexspi2: + start_int: "0x60000000" + size_int: "0x1F800000" + external: true + non_xip_type: ext_ram_flexspi + sdram: + start_int: "0x80000000" + size_int: "0x4000000" + external: true + non_xip_type: ext_ram_semc diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1173/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1173/database.yaml new file mode 100644 index 0000000..1b0dff9 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1173/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1176 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1175/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1175/database.yaml new file mode 100644 index 0000000..1b0dff9 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1175/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1176 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1176/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1176/database.yaml new file mode 100644 index 0000000..17a0954 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1176/database.yaml @@ -0,0 +1,68 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1166 + +# General MCU information +info: + purpose: i.MX RT Crossover MCUs + spsdk_predecessor_name: rt117x + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX-RT1170 + memory_map: + itcm: + start_int: "0x0" + size_int: "0x40000" + external: false + non_xip_type: int_ram + cm4_itcm: + start_int: "0x1FFE0000" + size_int: "0x20000" + external: false + non_xip_type: int_ram + dtcm: + start_int: "0x20000000" + size_int: "0x40000" + external: false + non_xip_type: int_ram + cm4_ocram: + start_int: "0x20200000" + size_int: "0x40000" + external: false + non_xip_type: int_ram + ocram1: + start_int: "0x20240000" + size_int: "0x80000" + external: false + non_xip_type: int_ram + ocram2: + start_int: "0x202C0000" + size_int: "0x80000" + external: false + non_xip_type: int_ram + ocram-ecc1: + start_int: "0x20340000" + size_int: "0x10000" + external: false + non_xip_type: none + ocram-ecc2: + start_int: "0x20350000" + size_int: "0x10000" + external: false + non_xip_type: none + flexspi1: + start_int: "0x30000000" + size_int: "0x10000000" + external: true + non_xip_type: ext_ram_flexspi + flexspi2: + start_int: "0x60000000" + size_int: "0x1F800000" + external: true + non_xip_type: ext_ram_flexspi + sdram: + start_int: "0x80000000" + size_int: "0x4000000" + external: true + non_xip_type: ext_ram_semc diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1181/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1181/database.yaml new file mode 100644 index 0000000..311f978 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1181/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1182 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1182/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1182/database.yaml new file mode 100644 index 0000000..23d1227 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1182/database.yaml @@ -0,0 +1,69 @@ +# Copyright 2023-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1189 + +# General MCU information +info: + memory_map: + code-tcm: + start_int: 0x0FFE0000 + size_int: 0x20000 + external: false + non_xip_type: int_ram + system-tcm: + start_int: 0x20000000 + size_int: 0x20000 + external: false + non_xip_type: int_ram + ocram1_ns: + start_int: 0x20480000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + ocram1_s: + start_int: 0x30480000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + ocram2_ns: + start_int: 0x20500000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + ocram2_s: + start_int: 0x30500000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + flexspi1_ns: + start_int: 0x28000000 + size_int: 0x08000000 + external: true + non_xip_type: ext_ram_flexspi + mirror_of: flexspi1_s + flexspi1_s: + start_int: 0x38000000 + size_int: 0x08000000 + external: true + non_xip_type: ext_ram_flexspi + flexspi2_ns: + start_int: 0x04000000 + size_int: 0x04000000 + external: true + non_xip_type: ext_ram_flexspi + mirror_of: flexspi2_s + evk_default: true + flexspi2_s: + start_int: 0x14000000 + size_int: 0x04000000 + external: true + non_xip_type: ext_ram_flexspi + isp: + rom: + protocol: mboot + interfaces: [uart] + flashloader: + protocol: mboot + interfaces: [uart] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1186/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1186/database.yaml new file mode 100644 index 0000000..a508bca --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1186/database.yaml @@ -0,0 +1,13 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1189 + +revisions: + a0: {} +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1187/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1187/database.yaml new file mode 100644 index 0000000..509474a --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1187/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt1189 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/database.yaml new file mode 100644 index 0000000..0479881 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/database.yaml @@ -0,0 +1,315 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + b0: {} +latest: b0 + +# General MCU information +info: + purpose: i.MX RT Crossover MCUs + spsdk_predecessor_name: rt118x + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX-RT1180 + memory_map: + code-tcm: + start_int: 0x0FFE0000 + size_int: 0x20000 + external: false + non_xip_type: int_ram + system-tcm: + start_int: 0x20000000 + size_int: 0x20000 + external: false + non_xip_type: int_ram + cm7_itcm_ns: + start_int: 0x20380000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_itcm_s: + start_int: 0x30380000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_dtcm_ns: + start_int: 0x20400000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + cm7_dtcm_s: + start_int: 0x30400000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + ocram1_ns: + start_int: 0x20480000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + ocram1_s: + start_int: 0x30480000 + size_int: 0x80000 + external: false + non_xip_type: int_ram + ocram2_ns: + start_int: 0x20500000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + ocram2_s: + start_int: 0x30500000 + size_int: 0x40000 + external: false + non_xip_type: int_ram + flexspi1_ns: + start_int: 0x28000000 + size_int: 0x08000000 + external: true + non_xip_type: ext_ram_flexspi + mirror_of: flexspi1_s + flexspi1_s: + start_int: 0x38000000 + size_int: 0x08000000 + external: true + non_xip_type: ext_ram_flexspi + flexspi2_ns: + start_int: 0x04000000 + size_int: 0x04000000 + external: true + non_xip_type: ext_ram_flexspi + mirror_of: flexspi2_s + evk_default: true + flexspi2_s: + start_int: 0x14000000 + size_int: 0x04000000 + external: true + non_xip_type: ext_ram_flexspi + sdram: + start_int: 0x80000000 + size_int: 0x10000000 + external: true + non_xip_type: ext_ram_semc + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x014C + flashloader: + protocol: mboot + interfaces: [uart, usb, spi] + usb: + - vid: 0x15a2 + pid: 0x0073 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: + tool: blhost + grouped_registers: + - uid: otfad1_key + name: OTFAD1_KEY + width: 128 + reverse_subregs_order: True + reversed: True + config_as_hexstring: true + description: OTFAD1 Key known as KEK. + sub_regs: [fuse184, fuse185, fuse186, fuse187] + - uid: otfad2_key + name: OTFAD2_KEY + width: 128 + reverse_subregs_order: True + reversed: True + config_as_hexstring: true + description: OTFAD2 Key known as KEK. + sub_regs: [fuse178, fuse179, fuse180, fuse181] + - uid: srkh + name: SRKH + width: 256 + reversed: True + config_as_hexstring: True + description: "SHA256 hash digest of hash of four SRK keys" + sub_regs: + [ + "fuse128", + "fuse129", + "fuse130", + "fuse131", + "fuse132", + "fuse133", + "fuse134", + "fuse135", + ] + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x1ffe_0000 + size: 0xc000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_srk] + rot_type: srk_table_ahab + + # ======== DAT section ======== + dat: + socc: 0x5254049C # SOCC identification + based_on_ele: True # Flag if the implementation of DAT is based on EdgeLock Enclave + dat_is_using_sha256_always: True + dmbox_ap_ix: 0 + + # ======== AHAB section ======== + ahab: + container_types: [1] # Supported container types + core_ids: + CORTEX_M33: [1, "cortex-m33", "Cortex M33"] + CORTEX_M7: [2, "cortex-m7", "Cortex M7"] + ELE: [6, "ele", "EdgeLock Enclave"] + image_types: + application: + EXECUTABLE: [0x03, executable, Executable Image] + DATA: [0x04, data, Data Image] + PROVISIONING_IMAGE: [0x07, provisioning_image, Provisioning Image] + PROVISIONING_DATA: [0x09, provisioning_data, Provisioning data Image] + ele: + ELE: [0x06, ele, EdgeLock Enclave Image] + + image_types_mapping: + ele: [6] + + allow_empty_hash: True + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== XMCD section ======== + xmcd: + mem_types: + flexspi_ram: + simplified: + reg_spec: ../../common/xmcd/flexspi_ram_simplified.json + full: + reg_spec: ../../common/xmcd/flexspi_ram_full.json + semc_sdram: + simplified: + reg_spec: ../../common/xmcd/semc_sdram_simplified.json + full: + reg_spec: ../../common/xmcd/semc_sdram_full.json + fuses: + _name: "XMCD CRC" + fuse31: + fuse31-bit-20: 1 # XMC_CRC32_CHECK_EN + fuse32: "__crc" # XMC_CRC32_CHECK_SUM + + # ======== IEE section ======== + iee: + generate_keyblob: False + has_kek_fuses: False + additional_template: ["key_blobs_with_ele"] + + # ======== OTFAD section ======== + otfad: + keyblob_byte_swap_cnt: 8 + sb_21_supported: False + has_kek_fuses: True + supports_key_scrambling: True + reversed_scramble_key: True + + fuses_1: # Fuses for OTFAD1 + _name: Configuration of fuses for OTFAD1 + _no_verify: True + fuse188: # OTFAD CFG Fuse + fuse188-bit-3: 1 # OTFAD Enable + fuse188-bit-7: __scramble_enabled # OTFAD enable scrambling + fuse188-bits-8-15: __key_scramble_align # OTFAD scramble align + fuse189: __key_scramble_mask # OTFAD Scramble Key + otfad1_key: __kek # OTFAD Key + + fuses_2: # Fuses for OTFAD2 + _name: Configuration of fuses for OTFAD2 + _no_verify: True + fuse182: # OTFAD CFG Fuse + fuse182-bit-3: 1 # OTFAD Enable + fuse182-bit-7: __scramble_enabled # OTFAD enable scrambling + fuse182-bits-8-15: __key_scramble_align # OTFAD scramble align + fuse183: __key_scramble_mask # OTFAD Scramble Key + otfad2_key: __kek # OTFAD Key + + additional_template: ["otfad_scramble"] + additional_template_text: | + Is important to use physical addresses (non-secure) in settings of OTFAD to proper run the decryption on device. + For example: + In case of using FlexSPI2 the secure base address address is 0x1400_0000. But in setting of the OTFAD use 0x0400_0000 as a base address. + The code must be still linked on secure base address 0x1400_0000 to proper run of OTFAD hardware. + + Same is for FlexSPI1, but instead of 0x3800_0000 base address, the 0x2800_0000 must be used in OTFAD configuration. + + # ======== Bootable image section ======== + bootable_image: + mem_types: + serial_downloader: + segments: + xmcd: 0x00 + ahab_container: 0x400 + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + xmcd: 0x0800 + ahab_container: 0x1000 + flexspi_nand: + segments: + xmcd: 0x00 + ahab_container: 0x400 + semc_nand: + segments: + xmcd: 0x00 + ahab_container: 0x400 + emmc: + segments: + #secondary_image_table: 0x200 (not used) + xmcd: 0x400 + ahab_container: 0x800 + sd: + segments: + #secondary_image_table: 0x200 (not used) + xmcd: 0x400 + ahab_container: 0x800 + + # ======== EdgeLock Enclave section ======== + ele: + ele_device: mboot + # ======== Memory configuration ======== + memcfg: + peripherals: + flexspi_nor: + instances: [1, 2] + flexspi_nand: + instances: [1, 2] + semc_nor: + instances: [0] # probably not supported in latest version of Flashloader + semc_nand: + instances: [0] # probably not supported in latest version of Flashloader + sd: + instances: [1, 2] + emmc: + instances: [1, 2] + spi_nor: + instances: [1, 2, 4, 5] + + # ======== Misc signing section ======== + signing: + pss_padding: true + + # ===== TLV ===== + tlv_blob: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/fcb_flexspi_nor.json new file mode 100644 index 0000000..f61849c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/fcb_flexspi_nor.json @@ -0,0 +1,25685 @@ +{ + "cpu": "MIMXRT1189", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix", + "default_value_int": "0x56010000", + "bitfields": [ + { + "id": "field004-bits0-7", + "width": 8, + "name": "bugfix", + "access": "RW", + "description": "[07:00] Bugfix - 0" + }, + { + "id": "field004-bits8-15", + "width": 8, + "name": "minor", + "access": "RW", + "description": "[15:08] Minor" + }, + { + "id": "field004-bits16-23", + "width": 8, + "name": "major", + "access": "RW", + "description": "[23:16] Major - 1" + }, + { + "width": 8 + } + ] + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type: 0 - Generic, 1 - Quad Enable, 2 - SPI-to-xSPI, 3 - xSPI-to-SPI", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration. effective only when deviceModeCfgEnable = 1", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable", + "default_value_int": "0x0" + }, + { + "id": "Reserved01D", + "offset_int": "0x1d", + "reg_width": 24, + "name": "reserved1", + "description": " [0x01d-0x019] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x02c-0x02f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved3", + "description": " [0x03c-0x03f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 64, + "name": "reserved4", + "description": " [0x048-0x04f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 8, + "name": "csPadSettingOverrideEn", + "description": " [0x060-0x060] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field061", + "offset_int": "0x61", + "reg_width": 8, + "name": "csPadSettingOverride", + "description": " [0x061-0x061] Overriding pad setting of CS", + "default_value_int": "0x0" + }, + { + "id": "Reserved062", + "offset_int": "0x62", + "reg_width": 16, + "name": "reserved5", + "description": " [0x062-0x063] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 8, + "name": "sclkPadSettingOverrideEn", + "description": " [0x064-0x064] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field065", + "offset_int": "0x65", + "reg_width": 8, + "name": "sclkPadSettingOverride", + "description": " [0x065-0x065] Overriding pad setting of SCLK", + "default_value_int": "0x0" + }, + { + "id": "Reserved066", + "offset_int": "0x66", + "reg_width": 16, + "name": "reserved6", + "description": " [0x066-0x067] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 8, + "name": "dataPadSettingOverrideEn", + "description": " [0x068-0x068] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field069", + "offset_int": "0x69", + "reg_width": 8, + "name": "dataPadSettingOverride", + "description": " [0x069-0x069] Overriding pad setting of data signals", + "default_value_int": "0x0" + }, + { + "id": "Reserved06A", + "offset_int": "0x6a", + "reg_width": 16, + "name": "reserved7", + "description": " [0x06a-0x06b] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 8, + "name": "dqsPadSettingOverrideEn", + "description": " [0x06c-0x06c] Set to 0 if it is not supported", + "default_value_int": "0x0" + }, + { + "id": "field06D", + "offset_int": "0x6d", + "reg_width": 8, + "name": "dqsPadSettingOverride", + "description": " [0x06d-0x06d] Overriding pad setting of DQS", + "default_value_int": "0x0" + }, + { + "id": "Reserved06E", + "offset_int": "0x6e", + "reg_width": 16, + "name": "reserved8", + "description": " [0x06e-0x06f] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "dataValidTime", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field078-bits0-15", + "width": 16, + "name": "dllAValidTime", + "access": "RW", + "description": " Data valid time for DLLA in terms of 0.1 ns" + }, + { + "id": "field078-bits16-31", + "width": 16, + "name": "dllBValidTime", + "access": "RW", + "description": " Data valid time for DLLB in terms of 0.1 ns" + } + ] + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15" + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved9_0", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved9_1", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved9_2", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved9_3", + "description": " [0x1b0-0x1bf] Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same", + "default_value_int": "0x0" + }, + { + "id": "field1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " The data order is swapped in OPI DDR mode", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved10_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "reserved10_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "reserved10_2", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "reserved10_3", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "reserved10_4", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "flashStateCtx", + "description": " Flash State Context after being configured", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1D4-bits0-7", + "width": 8, + "name": "flashPorMode", + "access": "RW", + "description": " Flash POR Mode" + }, + { + "id": "field1D4-bits8-15", + "width": 8, + "name": "flashCurrentMode", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + }, + { + "width": 8 + }, + { + "id": "field1D4-bits24-31", + "width": 8, + "name": "flashRestoringSequence", + "access": "RW", + "description": " Sequence Number, valid number: 1-16" + } + ] + }, + { + "id": "Reserved1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "reserved11_0", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "reserved11_1", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "reserved11_2", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "reserved11_3", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "reserved11_4", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "reserved11_5", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "reserved11_6", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "reserved11_7", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "reserved11_8", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "reserved11_9", + "description": " Reserved for future use", + "default_value_int": "0x0", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/fuses.json new file mode 100644 index 0000000..9e3eddc --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt1189/fuses.json @@ -0,0 +1,3592 @@ +{ + "cpu": "mimxrt1189", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Write/Read/Override Protection" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCKS0", + "description": "Fuse 0", + "index_int": "0", + "bitfields": [ + { + "width": 3, + "id": "fuse0-bits-0-2", + "name": "BOOT_CFG_LOCK", + "description": "Boot Configuration Lock;\n000 - Unlocked (fuses can be read, sensed, burned or overridden in the corresponding \nOTP shadow register);\nxx1 - WP (Write Protect, the controlled field can not be burned);\nx1x - OP (Over-ride Protect, the controlled field shadow registers can not be over-written);\n1xx - RP (Read Protect, the controlled field can be sensed only, but can't be read from \nshadow registers)", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WP", + "value": 1, + "description": "WP" + }, + { + "name": "OP", + "value": 2, + "description": "OP" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP+WP" + }, + { + "name": "RP", + "value": 4, + "description": "RP" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP" + }, + { + "name": "RP+OP+WP", + "value": 7, + "description": "RP+OP+WP" + } + ] + }, + { + "width": 9 + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "LOCK_CFG_LOCK", + "description": "Lock for Fuse Lock bits;\n000 - Unlocked (fuses can be read, sensed, burned or overridden in the corresponding OTP shadow register);\nxx1 - WP (Write Protect, the controlled field can not be burned); x1x - OP (Over-ride Protect, the \ncontrolled field shadow registers can not be over-written);\n1xx - RP (Read Protect, the controlled field can be sensed only, but can't be read from \nshadow registers)", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WP", + "value": 1, + "description": "WP" + }, + { + "name": "OP", + "value": 2, + "description": "OP" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP+WP" + }, + { + "name": "RP", + "value": 4, + "description": "RP" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP" + }, + { + "name": "RP+OP+WP", + "value": 7, + "description": "RP+OP+WP" + } + ] + }, + { + "width": 17 + } + ] + }, + { + "id": "fuse1", + "name": "COM_DEVICE_ID_LOCKS", + "description": "Fuse 1", + "index_int": "0x0001", + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse1-bits-3-5", + "name": "COM_DEVICE_ID0_LOCK", + "description": "Communication Device ID0 Lock - Ethernet;\n000 - Unlocked (fuses can be read, sensed, burned or overridden in the corresponding OTP shadow register);\nxx1 - WP (Write Protect, the controlled field can not be burned); x1x - OP (Over-ride Protect, the \ncontrolled field shadow registers can not be over-written);\n1xx - RP (Read Protect, the controlled field can be sensed only, but can't be read from \nshadow registers)", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WP", + "value": 1, + "description": "WP" + }, + { + "name": "OP", + "value": 2, + "description": "OP" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP+WP" + }, + { + "name": "RP", + "value": 4, + "description": "RP" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP" + }, + { + "name": "RP+OP+WP", + "value": 7, + "description": "RP+OP+WP" + } + ] + }, + { + "width": 3, + "id": "fuse1-bits-6-8", + "name": "COM_DEVICE_ID1_LOCK", + "description": "Communication Device ID1 Lock - USB, Ethernet;\n000 - Unlocked (fuses can be read, sensed, burned or overridden in the corresponding OTP shadow register);\nxx1 - WP (Write Protect, the controlled field can not be burned); x1x - OP (Over-ride Protect, the \ncontrolled field shadow registers can not be over-written);\n1xx - RP (Read Protect, the controlled field can be sensed only, but can't be read from \nshadow registers)", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WP", + "value": 1, + "description": "WP" + }, + { + "name": "OP", + "value": 2, + "description": "OP" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP+WP" + }, + { + "name": "RP", + "value": 4, + "description": "RP" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP" + }, + { + "name": "RP+OP+WP", + "value": 7, + "description": "RP+OP+WP" + } + ] + }, + { + "width": 23 + } + ] + }, + { + "id": "fuse2", + "name": "ELE_OTFAD1_KEY_LOCK", + "description": "Fuse 2", + "index_int": "0x0002", + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse2-bits-3-5", + "name": "ELE_OTFAD1_KEY_LOCK", + "description": "ELE OTFAD1 Key Lock;\nxx1 - WP (Write Protect, the controlled field can not be burned);\nx1x - OP (Over-ride Protect, the controlled field shadow registers can not be over-written);\n1xx - RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers);", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WP", + "value": 1, + "description": "WP" + }, + { + "name": "OP", + "value": 2, + "description": "OP" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP+WP" + }, + { + "name": "RP", + "value": 4, + "description": "RP" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP" + }, + { + "name": "RP+OP+WP", + "value": 7, + "description": "RP+OP+WP" + } + ] + }, + { + "width": 26 + } + ] + }, + { + "id": "fuse4", + "name": "ELE_OEM_SRKH_LOCK", + "description": "Fuse 4", + "index_int": "0x0004", + "bitfields": [ + { + "width": 12 + }, + { + "width": 3, + "id": "fuse4-bits-12-14", + "name": "ELE_OEM_SRKH_LOCK", + "description": "ELE OEM SRK Hash Lock;\nxx1 - WP (Write Protect, the controlled field can not be burned);\nx1x - OP (Over-ride Protect, the controlled field shadow registers can not be over-written);\n1xx - RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers);", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WP", + "value": 1, + "description": "WP" + }, + { + "name": "OP", + "value": 2, + "description": "OP" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP+WP" + }, + { + "name": "RP", + "value": 4, + "description": "RP" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP" + }, + { + "name": "RP+OP+WP", + "value": 7, + "description": "RP+OP+WP" + } + ] + }, + { + "width": 17 + } + ] + }, + { + "id": "fuse6", + "name": "ELE_OTFAD2_KEY_LOCK", + "description": "Fuse 6", + "index_int": "0x0006", + "bitfields": [ + { + "width": 12 + }, + { + "width": 3, + "id": "fuse6-bits-12-14", + "name": "ELE_OTFAD2_KEY_LOCK", + "description": "ELE OTFAD Key Lock;\nxx1 - WP (Write Protect, the controlled field can not be burned);\nx1x - OP (Over-ride Protect, the controlled field shadow registers can not be over-written);\n1xx - RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers);", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WP", + "value": 1, + "description": "WP" + }, + { + "name": "OP", + "value": 2, + "description": "OP" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP+WP" + }, + { + "name": "RP", + "value": 4, + "description": "RP" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP" + }, + { + "name": "RP+OP+WP", + "value": 7, + "description": "RP+OP+WP" + } + ] + }, + { + "width": 17 + } + ] + } + ] + }, + { + "group": { + "name": "BOOT_CFG", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse24", + "name": "BOOT_CFG0", + "description": "Fuse 24 [799:792]", + "index_int": "0x0018", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 3, + "id": "fuse24-bits-0-2", + "name": "BOOT_MODE_FROM_FUSE", + "description": "BOOT_MODE_FROM_FUSE\n0-FlexSPI NOR\n1-FlexSPI NAND\n2-eMMC\n3-SD\n4-SEMC SLC raw NAND\n5-Serial Boot", + "values": [ + { + "name": "FlexSPI NOR", + "value": 0, + "description": "FlexSPI NOR" + }, + { + "name": "FlexSPI NAND", + "value": 1, + "description": "FlexSPI NAND" + }, + { + "name": "eMMC", + "value": 2, + "description": "eMMC" + }, + { + "name": "SD", + "value": 3, + "description": "SD" + }, + { + "name": "4", + "value": 4, + "description": "SEMC SLC raw NAND" + }, + { + "name": "Serial Boot", + "value": 5, + "description": "Serial Boot" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse24-bit-4", + "name": "RECOVERY_BOOT_EN", + "description": "RECOVERY_BOOT_EN\n0-Recovery boot is disabled\n1-Recovery boot is enabled", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Recovery boot is disabled" + }, + { + "name": "Enable", + "value": 1, + "description": "Recovery boot is enabled" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-5", + "name": "DIS_SDMMC_MFG_BOOT", + "description": "DIS_SDMMC_MFG_BOOT\n0-Enable\n1-Disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-6", + "name": "BT_FUSE_SEL", + "description": "BT_FUSE_SEL\n0-BOOT_MODE_FROM_FUSE is invalid\n1-BOOT_MODE_FROM_FUSE is valid", + "values": [ + { + "name": "0", + "value": 0, + "description": "BOOT_MODE_FROM_FUSE is invalid" + }, + { + "name": "1", + "value": 1, + "description": "BOOT_MODE_FROM_FUSE is valid" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-7", + "name": "FORCE_BT_FROM_FUSE", + "description": "FORCE_BT_FROM_FUSE\n0-Boot mode determined by BOOT_MODE pins \n1-Boot mode determined by BOOT_MODE_FROM_FUSE", + "values": [ + { + "name": "0", + "value": 0, + "description": "Boot mode determined by BOOT_MODE pins" + }, + { + "name": "1", + "value": 1, + "description": "Boot mode determined by BOOT_MODE_FROM_FUSE" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse24-bit-10", + "name": "DIS_UART_DWNLD", + "description": "DIS_UART_DWNLD\n0-Enable UART in Serial Downloader\n1-Disable UART in Serial Downloader", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable UART in Serial Downloader" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable UART in Serial Downloader" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-11", + "name": "DIS_SPI_DWNLD", + "description": "DIS_SPI_DWNLD\n0-Enable SPI in Serial Downloader\n1-Disable SPI in Serial Downloader", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable SPI in Serial Downloader" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable SPI in Serial Downloader" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-12", + "name": "DIS_USB_HID_DWNLD", + "description": "DIS_USB_HID_DWNLD\n0-Enable USB in Serial Downloader\n1-Disable USB in Serial Downloader", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable USB in Serial Downloader" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable USB in Serial Downloader" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-13", + "name": "DIS_INFINITE_LOOP", + "description": "DIS_INFINITE_LOOP\n0-Infinite loop is allowed\n1-Infinite Loop is forbidden", + "values": [ + { + "name": "0", + "value": 0, + "description": "Infinite loop is allowed" + }, + { + "name": "1", + "value": 1, + "description": "Infinite Loop is forbidden" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-14", + "name": "DIS_BT_MODE_API", + "description": "DIS_BT_MODE_API\n0-Allow boot from ROM API call\n1-Disallow boot from ROM API call", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "Allow boot from ROM API call" + }, + { + "name": "Disallow", + "value": 1, + "description": "Disallow boot from ROM API call" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-15", + "name": "DIS_SERIAL_DWNLD", + "description": "DIS_SERIAL_DWNLD\n0-Allow Serial downloader mode\n1-Disable Serial Downloader mode", + "values": [ + { + "name": "Allow", + "value": 0, + "description": "Allow Serial downloader mode" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable Serial Downloader mode" + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-16-17", + "name": "LPSPI_PORT_SEL", + "description": "LPSPI_PORT_SEL\n0-LPSPI1\n1-LPSPI2\n2-LPSPI3\n3-LPSPI4", + "values": [ + { + "name": "LPSPI1", + "value": 0, + "description": "LPSPI1" + }, + { + "name": "LPSPI2", + "value": 1, + "description": "LPSPI2" + }, + { + "name": "LPSPI3", + "value": 2, + "description": "LPSPI3" + }, + { + "name": "LPSPI4", + "value": 3, + "description": "LPSPI4" + } + ] + }, + { + "width": 2, + "id": "fuse24-bits-18-19", + "name": "LPSPI_SPEED", + "description": "LPSPI_SPEED\n0-30MHz\n1-10MHz\n2-30MHz Dual Read\n3-30MHz Quad Read", + "values": [ + { + "name": "30MHz", + "value": 0, + "description": "30MHz" + }, + { + "name": "10MHz", + "value": 1, + "description": "10MHz" + }, + { + "name": "2", + "value": 2, + "description": "30MHz Dual Read" + }, + { + "name": "3", + "value": 3, + "description": "30MHz Quad Read" + } + ] + }, + { + "width": 3, + "id": "fuse24-bits-20-22", + "name": "LPSPI_DUMMY_BYTES", + "description": "LPSPI_DUMMY_BYTES\n0-Default (4 cycles for dual/6 cycles for quad)\nn (non-zero) - 4n cycles for dual/2n cycles for quad", + "values": [ + { + "name": "Default", + "value": 0, + "description": "Default (4 cycles for dual/6 cycles for quad)" + } + ] + }, + { + "width": 1, + "id": "fuse24-bit-23", + "name": "LPSPI_INTERNAL_PULL", + "description": "LPSPI_INTERNAL_PULL\n0-No internal pull-up\n1-Internal pull-up enabled", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "No internal pull-up" + }, + { + "name": "Enable", + "value": 1, + "description": "Internal pull-up enabled" + } + ] + }, + { + "width": 4, + "id": "fuse24-bits-24-27", + "name": "BOOT_FAIL_IND_PIN", + "description": "BOOT_FAIL_IND_PIN\nn - GPIO4_IOn/GPIO_AD_n selected" + }, + { + "width": 3 + }, + { + "width": 1, + "id": "fuse24-bit-31", + "name": "BOOT_FAIL_IND_EN", + "description": "BOOT_FAIL_IND_EN\n0-Boot failure indicator pin is disabled \n1-Boot failure indicator pin is enabled", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Boot failure indicator pin is disabled" + }, + { + "name": "Enable", + "value": 1, + "description": "Boot failure indicator pin is enabled" + } + ] + } + ] + }, + { + "id": "fuse25", + "name": "BOOT_CFG1", + "description": "Fuse 25 [823:816]", + "index_int": "0x0019", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse25-bits-0-1", + "name": "xSPI_NOR_PROBE_TYPE", + "description": "xSPI_NOR_PROBE_TYPE (Non-0 only when xSPI_NOR_TYPE is 0)\n0-JESD216\n1-MXIC Octal\n2-Micron Octal\n3-Adesto Octal", + "values": [ + { + "name": "JESD216", + "value": 0, + "description": "JESD216" + }, + { + "name": "MXIC Octal", + "value": 1, + "description": "MXIC Octal" + }, + { + "name": "Micron Octal", + "value": 2, + "description": "Micron Octal" + }, + { + "name": "Adesto Octal", + "value": 3, + "description": "Adesto Octal" + } + ] + }, + { + "width": 2, + "id": "fuse25-bits-2-3", + "name": "xSPI_NOR_HOLD_TIME", + "description": "xSPI_NOR_HOLD_TIME\n0-500us\n1-1ms\n2-3ms\n3-10ms", + "values": [ + { + "name": "500us", + "value": 0, + "description": "500us" + }, + { + "name": "1ms", + "value": 1, + "description": "1ms" + }, + { + "name": "3ms", + "value": 2, + "description": "3ms" + }, + { + "name": "10ms", + "value": 3, + "description": "10ms" + } + ] + }, + { + "width": 3, + "id": "fuse25-bits-4-6", + "name": "xSPI_NOR_FREQ", + "description": "xSPI_NOR_FREQ\n0-100MHz\n1-120MHz\n2-133MHz\n3-166MHz\n4-200MHz\n5-80MHz\n6-60MHz\n7-50MHz", + "values": [ + { + "name": "100MHz", + "value": 0, + "description": "100MHz" + }, + { + "name": "120MHz", + "value": 1, + "description": "120MHz" + }, + { + "name": "133MHz", + "value": 2, + "description": "133MHz" + }, + { + "name": "166MHz", + "value": 3, + "description": "166MHz" + }, + { + "name": "200MHz", + "value": 4, + "description": "200MHz" + }, + { + "name": "80MHz", + "value": 5, + "description": "80MHz" + }, + { + "name": "60MHz", + "value": 6, + "description": "60MHz" + }, + { + "name": "50MHz", + "value": 7, + "description": "50MHz" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-7", + "name": "xSPI_NOR_CONNECTION_SEL", + "description": "xSPI_NOR_CONNECTION_SEL\n0-Connected via PORTA CS0\n1-Connected via PORTB CS0", + "values": [ + { + "name": "0", + "value": 0, + "description": "Connected via PORTA CS0" + }, + { + "name": "1", + "value": 1, + "description": "Connected via PORTB CS0" + } + ] + }, + { + "width": 3, + "id": "fuse25-bits-8-10", + "name": "xSPI_NOR_TYPE", + "description": "xSPI_NOR_TYPE\n0-Boot with default 0x03 Read\n1-Reserved\n2-HyperFLASH 1V8\n3-HyperFLASH 3V0\n4-MXIC Octal Read\n5-Micron Octal DDR ReadOthers - Reserved", + "values": [ + { + "name": "0", + "value": 0, + "description": "Boot with default 0x03 Read" + }, + { + "name": "2", + "value": 2, + "description": "HyperFLASH 1V8" + }, + { + "name": "3", + "value": 3, + "description": "HyperFLASH 3V0" + }, + { + "name": "4", + "value": 4, + "description": "MXIC Octal Read" + }, + { + "name": "5", + "value": 5, + "description": "Micron Octal DDR ReadOthers - Reserved" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-11", + "name": "RST_REQUIRED", + "description": "RST_REQUIRED\nReset required after boot failure. Set if xSPI_NOR_ ENCRYPT_XIP_EN is 1" + }, + { + "width": 2, + "id": "fuse25-bits-12-13", + "name": "xSPI_NOR_RESET_TYPE", + "description": "xSPI_NOR_RESET_TYPE (Non-0 only when xSPI_NOR_TYPE is 0)\n0-Reset sequence is specified in FLASH_STATE_CTX Register\n1-Reset FLASH by Reset Pin before access\n2-Reset FLASH by JEDEC Hardware Reset flow\n3-Typical Reset Sequence (0x66, 0x99)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset sequence is specified in FLASH_STATE_CTX Register" + }, + { + "name": "1", + "value": 1, + "description": "Reset FLASH by Reset Pin before access" + }, + { + "name": "2", + "value": 2, + "description": "Reset FLASH by JEDEC Hardware Reset flow" + }, + { + "name": "3", + "value": 3, + "description": "Typical Reset Sequence (0x66, 0x99)" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse25-bit-16", + "name": "xSPI_NOR_ENCRYPT_XIP_EN", + "description": "xSPI_NOR_ENCRYPT_XIP_EN\n0-Encrypted XIP is disabled\n1-Encrypted XIP is enabled", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Encrypted XIP is disabled" + }, + { + "name": "Enable", + "value": 1, + "description": "Encrypted XIP is enabled" + } + ] + }, + { + "width": 1, + "id": "fuse25-bit-17", + "name": "XSPI_NOR_ENCRYPT_ENG", + "description": "XSPI_NOR_ENCRYPT_ENG\n0-OTFAD\n1-IEE", + "values": [ + { + "name": "OTFAD", + "value": 0, + "description": "OTFAD" + }, + { + "name": "IEE", + "value": 1, + "description": "IEE" + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse25-bit-20", + "name": "DIS_xSPI_NOR_FCB", + "description": "DIS_xSPI_NOR_FCB\n0-Enable FLASH CFG Block\n1-Disable FLASH CFG Block", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable FLASH CFG Block" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable FLASH CFG Block" + } + ] + }, + { + "width": 3 + }, + { + "width": 8 + } + ] + }, + { + "id": "fuse26", + "name": "BOOT_CFG2", + "description": "Fuse 26 [847:840]", + "index_int": "0x001A", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 3, + "id": "fuse26-bits-0-2", + "name": "FLEXSPI_PAD_SETTING_OVERRIDE", + "description": "FLEXSPI_PAD_SETTING_OVERRIDE\n0-Slew rate , 0: slow slew rate, 1: fast slew rate bit\n1-Drive Strength, 0: normal driver, 1 : high driver bit\n2-Pull selection, 0: pull off, 1 - Pull on", + "values": [ + { + "name": "0", + "value": 0, + "description": "Slew rate , 0: slow slew rate, 1: fast slew rate bit" + }, + { + "name": "1", + "value": 1, + "description": "Drive Strength, 0: normal driver, 1 : high driver bit" + }, + { + "name": "2", + "value": 2, + "description": "Pull selection, 0: pull off, 1 - Pull on" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-3", + "name": "FLEXSPI_PAD_OVERRIDE_EN", + "description": "FLEXSPI_PAD_OVERRIDE_EN\n0-Use default pad setting\n1-Use the pad setting specified by FLEXSPI_PAD_SETTING_OVERRIDE FUSE field", + "values": [ + { + "name": "0", + "value": 0, + "description": "Use default pad setting" + }, + { + "name": "1", + "value": 1, + "description": "Use the pad setting specified by FLEXSPI_PAD_SETTING_OVERRIDE FUSE field" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-4", + "name": "FLEXSPI_RESET_PIN_SEL", + "description": "FLEXSPI_RESET_PIN_SEL\nSelect the Reset Pin\n0-Reset Pin 0\n1-Reset Pin 1", + "values": [ + { + "name": "Reset Pin 0", + "value": 0, + "description": "Reset Pin 0" + }, + { + "name": "Reset Pin 1", + "value": 1, + "description": "Reset Pin 1" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-5", + "name": "xSPI_LOOPBACK_DQS_PIN_SEL", + "description": "xSPI_LOOPBACK_DQS_PIN_SEL\n0-Secondary (dummy) DQS pin\n1-Standard DQS pin", + "values": [ + { + "name": "Secondary", + "value": 0, + "description": "Secondary (dummy) DQS pin" + }, + { + "name": "1", + "value": 1, + "description": "Standard DQS pin" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-6", + "name": "FLEXSPI_PIN_GROUP_SEL", + "description": "FLEXSPI_PIN_GROUP_SEL\n0-Primary group\n1-Secondary group", + "values": [ + { + "name": "0", + "value": 0, + "description": "Primary group" + }, + { + "name": "1", + "value": 1, + "description": "Secondary group" + } + ] + }, + { + "width": 1, + "id": "fuse26-bit-7", + "name": "FLEXSPI_INSTANCE", + "description": "FLEXSPI_INSTANCE\n0-FLEXSPI1\n1-FLEXSPI2", + "values": [ + { + "name": "FLEXSPI1", + "value": 0, + "description": "FLEXSPI1" + }, + { + "name": "FLEXSPI2", + "value": 1, + "description": "FLEXSPI2" + } + ] + }, + { + "width": 5, + "id": "fuse26-bits-8-12", + "name": "FLEXSPI_DELAY_CELL_NUM", + "description": "FLEXSPI_DELAY_CELL_NUM\nZero - Use the Delay cell value calculated by ROM\nOthers - Use the Delay cell value in terms of 100ps" + }, + { + "width": 3 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse27", + "name": "BOOT_CFG3", + "description": "Fuse 27 [887:880]", + "index_int": "0x001B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse27-bit-0", + "name": "xSPI_NAND_SEARCH_COUNT", + "description": "xSPI_NAND_SEARCH_COUNT\n0-1\n1-2", + "values": [ + { + "name": "1", + "value": 0, + "description": "1" + }, + { + "name": "2", + "value": 1, + "description": "2" + } + ] + }, + { + "width": 1, + "id": "fuse27-bit-1", + "name": "xSPI_NAND_COL_ADDR_WIDTH", + "description": "xSPI_NAND_COL_ADDR_WIDTH\n0-12 bits\n1-13bits", + "values": [ + { + "name": "12 bits", + "value": 0, + "description": "12 bits" + }, + { + "name": "13bits", + "value": 1, + "description": "13bits" + } + ] + }, + { + "width": 2, + "id": "fuse27-bits-2-3", + "name": "xSPI_NAND_CS_INTERVAL", + "description": "xSPI_NAND_CS_INTERVAL\n CS de-asserted interval between two commands\n0-100ns\n1-200ns\n2-400ns\n3-50ns", + "values": [ + { + "name": "100ns", + "value": 0, + "description": "100ns" + }, + { + "name": "200ns", + "value": 1, + "description": "200ns" + }, + { + "name": "400ns", + "value": 2, + "description": "400ns" + }, + { + "name": "50ns", + "value": 3, + "description": "50ns" + } + ] + }, + { + "width": 2, + "id": "fuse27-bits-4-5", + "name": "xSPI_NAND_SEARCH_STRIDE", + "description": "xSPI_NAND_SEARCH_STRIDE\n0-64 pages\n1-128 pages\n2-256 pages\n3-32 pages", + "values": [ + { + "name": "64 pages", + "value": 0, + "description": "64 pages" + }, + { + "name": "128 pages", + "value": 1, + "description": "128 pages" + }, + { + "name": "256 pages", + "value": 2, + "description": "256 pages" + }, + { + "name": "32 pages", + "value": 3, + "description": "32 pages" + } + ] + }, + { + "width": 2, + "id": "fuse27-bits-6-7", + "name": "xSPI_NAND_HOLD_TIME", + "description": "xSPI_NAND_HOLD_TIME\nHold Time before issuing Command to FLASH\n0-Wait until FLASH is idle by polling status register in the FLASH\n1-500us \n2-1ms \n3-3ms", + "values": [ + { + "name": "0", + "value": 0, + "description": "Wait until FLASH is idle by polling status register in the FLASH" + }, + { + "name": "500us", + "value": 1, + "description": "500us" + }, + { + "name": "1ms", + "value": 2, + "description": "1ms" + }, + { + "name": "3ms", + "value": 3, + "description": "3ms" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "fuse27-bits-10-11", + "name": "xSPI_NAND_RESET_TYPE", + "description": "xSPI_NAND_RESET_TYPE\n0-No reset\n1-Reset the FLASH by 0xFF\n2-Reset the FLASH by 0x66, 0x99\n3-Reset the FLASH by dedicated Reset Pin", + "values": [ + { + "name": "No reset", + "value": 0, + "description": "No reset" + }, + { + "name": "1", + "value": 1, + "description": "Reset the FLASH by 0xFF" + }, + { + "name": "2", + "value": 2, + "description": "Reset the FLASH by 0x66, 0x99" + }, + { + "name": "3", + "value": 3, + "description": "Reset the FLASH by dedicated Reset Pin" + } + ] + }, + { + "width": 1, + "id": "fuse27-bit-12", + "name": "xSPI_NAND_CONNECTION_SEL", + "description": "xSPI_NAND_CONNECTION_SEL\n0-Connected via PORTA CS0\n1-Connected via PORTB CS0", + "values": [ + { + "name": "0", + "value": 0, + "description": "Connected via PORTA CS0" + }, + { + "name": "1", + "value": 1, + "description": "Connected via PORTB CS0" + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse27-bits-16-18", + "name": "xSPI_NAND_FREQ", + "description": "xSPI_NAND_FREQ\n0-80MHz \n1-100MHz \n2-120MHz \n3-133MHz \n4-166MHz \n5-200MHz \n6-60MHz \n7-30MHz", + "values": [ + { + "name": "80MHz", + "value": 0, + "description": "80MHz" + }, + { + "name": "100MHz", + "value": 1, + "description": "100MHz" + }, + { + "name": "120MHz", + "value": 2, + "description": "120MHz" + }, + { + "name": "133MHz", + "value": 3, + "description": "133MHz" + }, + { + "name": "166MHz", + "value": 4, + "description": "166MHz" + }, + { + "name": "200MHz", + "value": 5, + "description": "200MHz" + }, + { + "name": "60MHz", + "value": 6, + "description": "60MHz" + }, + { + "name": "30MHz", + "value": 7, + "description": "30MHz" + } + ] + }, + { + "width": 5 + }, + { + "width": 8 + } + ] + }, + { + "id": "fuse28", + "name": "BOOT_CFG4", + "description": "Fuse 28 [911:904]", + "index_int": "0x001C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse28-bit-0", + "name": "USDHC_PORT", + "description": "USDHC_PORT\n0-USDHC1\n1-USDHC2", + "values": [ + { + "name": "USDHC1", + "value": 0, + "description": "USDHC1" + }, + { + "name": "USDHC2", + "value": 1, + "description": "USDHC2" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-1", + "name": "SION_DISABLE", + "description": "SION_DISABLE\n0-Enable\n1-Disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-2", + "name": "USDHC1_RST_POLARITY", + "description": "USDHC1_RST_POLARITY\n0-Reset active low\n1-Reset active high", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-3", + "name": "USDHC2_RST_POLARITY", + "description": "USDHC2_RST_POLARITY\n0-Reset active low\n1-Reset active high", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 2, + "id": "fuse28-bits-4-5", + "name": "PWR_CYCLE", + "description": "PWR_CYCLE\n0-20ms\n1-10ms\n2-5ms\n3-2.5ms", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "2.5ms" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-6", + "name": "PWR_CYCLE_EN", + "description": "PWR_CYCLE_EN\n0-No power cycle\n1-Enabled via SD_RST", + "values": [ + { + "name": "0", + "value": 0, + "description": "No power cycle" + }, + { + "name": "1", + "value": 1, + "description": "Enabled via SD_RST" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-7", + "name": "PWR_STABLE_CYCLE", + "description": "PWR_STABLE_CYCLE\n0-5ms\n1-2.5ms", + "values": [ + { + "name": "5ms", + "value": 0, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "2.5ms" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-8", + "name": "MMC_SPEED", + "description": "MMC_SPEED\n0-Normal\n1-High speed", + "values": [ + { + "name": "Normal", + "value": 0, + "description": "Normal" + }, + { + "name": "High speed", + "value": 1, + "description": "High speed" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-9", + "name": "NO_PREIDLE_STATE", + "description": "NO_PREIDLE_STATE\n0-Issue pre-idle command\n1-Do not issue", + "values": [ + { + "name": "0", + "value": 0, + "description": "Issue pre-idle command" + }, + { + "name": "Do not issue", + "value": 1, + "description": "Do not issue" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-10", + "name": "USDHC1_VSEL", + "description": "USDHC1_VSEL\n0-3v3\n1-1v8", + "values": [ + { + "name": "3v3", + "value": 0, + "description": "3v3" + }, + { + "name": "1v8", + "value": 1, + "description": "1v8" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-11", + "name": "USDHC2_VSEL", + "description": "USDHC2_VSEL\n0-3v3\n1-1v8", + "values": [ + { + "name": "3v3", + "value": 0, + "description": "3v3" + }, + { + "name": "1v8", + "value": 1, + "description": "1v8" + } + ] + }, + { + "width": 2, + "id": "fuse28-bits-12-13", + "name": "MMC_BUS_WIDTH", + "description": "MMC_BUS_WIDTH\n0-4-bit\n1-8-bit\n2-4-bit DDR\n3-8-bit DDR", + "values": [ + { + "name": "4-bit", + "value": 0, + "description": "4-bit" + }, + { + "name": "8-bit", + "value": 1, + "description": "8-bit" + }, + { + "name": "4-bit DDR", + "value": 2, + "description": "4-bit DDR" + }, + { + "name": "8-bit DDR", + "value": 3, + "description": "8-bit DDR" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-14", + "name": "MMC_FAST_BOOT_EN", + "description": "MMC_FAST_BOOT_EN\n0-Normal boot\n1-Fast boot", + "values": [ + { + "name": "Normal boot", + "value": 0, + "description": "Normal boot" + }, + { + "name": "Fast boot", + "value": 1, + "description": "Fast boot" + } + ] + }, + { + "width": 1, + "id": "fuse28-bit-15", + "name": "MMC_FAST_BOOT_ACK_EN", + "description": "MMC_FAST_BOOT_ACK_EN\n0-Disabled\n1-Enabled", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse29", + "name": "BOOT_CFG5", + "description": "Fuse 29 [959:952]", + "index_int": "0x001D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse29-bit-0", + "name": "SEARCH_COUNT", + "description": "SEARCH_COUNT\n0-1\n1-2", + "values": [ + { + "name": "1", + "value": 0, + "description": "1" + }, + { + "name": "2", + "value": 1, + "description": "2" + } + ] + }, + { + "width": 1, + "id": "fuse29-bit-1", + "name": "PORT_WIDTH", + "description": "PORT_WIDTH\n0-8-bit\n1-16-bit", + "values": [ + { + "name": "8-bit", + "value": 0, + "description": "8-bit" + }, + { + "name": "16-bit", + "value": 1, + "description": "16-bit" + } + ] + }, + { + "width": 1, + "id": "fuse29-bit-2", + "name": "ECC_SEL", + "description": "ECC_SEL\n0-NAND device ECC\n1-SEMC built-in ECC", + "values": [ + { + "name": "0", + "value": 0, + "description": "NAND device ECC" + }, + { + "name": "1", + "value": 1, + "description": "SEMC built-in ECC" + } + ] + }, + { + "width": 1, + "id": "fuse29-bit-3", + "name": "SEMC_ECC_MODE", + "description": "SEMC_ECC_MODE\n0-BCH4\n1-BCH8", + "values": [ + { + "name": "BCH4", + "value": 0, + "description": "BCH4" + }, + { + "name": "BCH8", + "value": 1, + "description": "BCH8" + } + ] + }, + { + "width": 1, + "id": "fuse29-bit-4", + "name": "EDO_MODE", + "description": "EDO_MODE\n0-EDO mode\n1-Non-EDO mode", + "values": [ + { + "name": "EDO mode", + "value": 0, + "description": "EDO mode" + }, + { + "name": "Non", + "value": 1, + "description": "Non-EDO mode" + } + ] + }, + { + "width": 1, + "id": "fuse29-bit-5", + "name": "ACCESS_CMD", + "description": "ACCESS_CMD\n0-IP read\n1-AHB read", + "values": [ + { + "name": "IP read", + "value": 0, + "description": "IP read" + }, + { + "name": "AHB read", + "value": 1, + "description": "AHB read" + } + ] + }, + { + "width": 1, + "id": "fuse29-bit-6", + "name": "RDY_POLARITY", + "description": "RDY_POLARITY\n0-High active\n1-Low active", + "values": [ + { + "name": "High active", + "value": 0, + "description": "High active" + }, + { + "name": "Low active", + "value": 1, + "description": "Low active" + } + ] + }, + { + "width": 1, + "id": "fuse29-bit-7", + "name": "RDY_CHECK_TYPE", + "description": "RDY_CHECK_TYPE\n0-Via status register\n1-Via R/B# pin", + "values": [ + { + "name": "0", + "value": 0, + "description": "Via status register" + }, + { + "name": "Via R/B# pin", + "value": 1, + "description": "Via R/B# pin" + } + ] + }, + { + "width": 3, + "id": "fuse29-bits-8-10", + "name": "TIMING_MODE", + "description": "TIMING_MODE\n000-Mode0: 10MHz \n001-Mode1: 20MHz \n010-Mode2: 28MHz \n011-Mode3: 33MHz \n100-Mode4: 40MHz \n101-Mode5: 50MHz \n11x-Fastest Mode", + "values": [ + { + "name": "10MHz", + "value": 0, + "description": "Mode0: 10MHz" + }, + { + "name": "20MHz", + "value": 1, + "description": "Mode1: 20MHz" + }, + { + "name": "28MHz", + "value": 2, + "description": "Mode2: 28MHz" + }, + { + "name": "33MHz", + "value": 3, + "description": "Mode3: 33MHz" + }, + { + "name": "40MHz", + "value": 4, + "description": "Mode4: 40MHz" + }, + { + "name": "50MHz", + "value": 5, + "description": "Mode5: 50MHz" + }, + { + "name": "Fastest Mode", + "value": 6, + "description": "Fastest Mode" + } + ] + }, + { + "width": 1 + }, + { + "width": 3, + "id": "fuse29-bits-12-14", + "name": "PCS_SEL", + "description": "PCS_SEL\n000-CSX0\n001-CSX1\n010-CSX2\n011-CSX3\n100-A8\nOthers-CSX0", + "values": [ + { + "name": "CSX0", + "value": 0, + "description": "CSX0" + }, + { + "name": "CSX1", + "value": 1, + "description": "CSX1" + }, + { + "name": "CSX2", + "value": 2, + "description": "CSX2" + }, + { + "name": "CSX3", + "value": 3, + "description": "CSX3" + }, + { + "name": "A8", + "value": 4, + "description": "A8" + } + ] + }, + { + "width": 1 + }, + { + "width": 4, + "id": "fuse29-bits-16-19", + "name": "BOOT_SEARCH_STRIDE", + "description": "BOOT_SEARCH_STRIDE\n Search Stride for FCB and DBBT Search strides in terms of page\nzero: 64 \nother: Value = 2^(BOOT_SEARCH_STRIDE)" + }, + { + "width": 3, + "id": "fuse29-bits-20-22", + "name": "ROW_COL_ADDR_MODE", + "description": "ROW_COL_ADDR_MODE\n Applicable only for non-ONFI devices\n00x-5 bytes (CA2+RA3) \n010-4 bytes (CA2+RA2) \n011-3 bytes (CA2+RA1) \n10x-4 bytes (CA1+RA3) \n110-3 bytes (CA1+RA2) \n111-2 bytes (CA1+RA1)", + "values": [ + { + "name": "00x", + "value": 0, + "description": "5 bytes (CA2+RA3)" + }, + { + "name": "010", + "value": 2, + "description": "4 bytes (CA2+RA2)" + }, + { + "name": "011", + "value": 3, + "description": "3 bytes (CA2+RA1)" + }, + { + "name": "10x", + "value": 4, + "description": "4 bytes (CA1+RA3)" + }, + { + "name": "110", + "value": 6, + "description": "3 bytes (CA1+RA2)" + }, + { + "name": "111", + "value": 7, + "description": "2 bytes (CA1+RA1)" + } + ] + }, + { + "width": 1, + "id": "fuse29-bit-23", + "name": "STATUS_CMD_TYPE", + "description": "STATUS_CMD_TYPE\nApplicable only fornon-ONFI devices\n0-Common (0x70)\n1-Enhanced (0x78)", + "values": [ + { + "name": "Common", + "value": 0, + "description": "Common (0x70)" + }, + { + "name": "Enhanced", + "value": 1, + "description": "Enhanced (0x78)" + } + ] + }, + { + "width": 3, + "id": "fuse29-bits-24-26", + "name": "COL_ADDRESS_WIDTH", + "description": "COL_ADDRESS_WIDTH\n000-12bits \n001-09bits \n010-10bits \n011-11bits \n100-13bits \n101-14bits \n110-15bits \n111-16bits", + "values": [ + { + "name": "12bits", + "value": 0, + "description": "12bits" + }, + { + "name": "09bits", + "value": 1, + "description": "09bits" + }, + { + "name": "10bits", + "value": 2, + "description": "10bits" + }, + { + "name": "11bits", + "value": 3, + "description": "11bits" + }, + { + "name": "13bits", + "value": 4, + "description": "13bits" + }, + { + "name": "14bits", + "value": 5, + "description": "14bits" + }, + { + "name": "15bits", + "value": 6, + "description": "15bits" + }, + { + "name": "16bits", + "value": 7, + "description": "16bits" + } + ] + }, + { + "width": 1, + "id": "fuse29-bit-27", + "name": "DEV_ECC_INIT_STATUS", + "description": "DEV_ECC_INIT_STATUS (Applicable only for non-ONFI devices)\n0-Enabled\n1-Disabled", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 3, + "id": "fuse29-bits-28-30", + "name": "Pages_In_Block", + "description": "Pages_In_Block\n000-128 \n001-8 \n010-16 \n011-32 \n100-64 \n101-256 \n110-512 \n111-1024", + "values": [ + { + "name": "128", + "value": 0, + "description": "128" + }, + { + "name": "8", + "value": 1, + "description": "8" + }, + { + "name": "16", + "value": 2, + "description": "16" + }, + { + "name": "32", + "value": 3, + "description": "32" + }, + { + "name": "64", + "value": 4, + "description": "64" + }, + { + "name": "256", + "value": 5, + "description": "256" + }, + { + "name": "512", + "value": 6, + "description": "512" + }, + { + "name": "1024", + "value": 7, + "description": "1024" + } + ] + }, + { + "width": 1, + "id": "fuse29-bit-31", + "name": "ONFI_COMPLIANCE_SEL", + "description": "ONFI_COMPLIANCE_SEL\n0-ONFI 1.0\n1-Non-ONFI", + "values": [ + { + "name": "ONFI 1.0", + "value": 0, + "description": "ONFI 1.0" + }, + { + "name": "Non-ONFI", + "value": 1, + "description": "Non-ONFI" + } + ] + } + ] + }, + { + "id": "fuse30", + "name": "BOOT_CFG6", + "description": "Fuse 30 [991:984]", + "index_int": "0x001E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse30-bit-0", + "name": "USDHC_PORT", + "description": "USDHC_PORT\n0-USDHC1\n1-USDHC2", + "values": [ + { + "name": "USDHC1", + "value": 0, + "description": "USDHC1" + }, + { + "name": "USDHC2", + "value": 1, + "description": "USDHC2" + } + ] + }, + { + "width": 1, + "id": "fuse30-bit-1", + "name": "SION_DISABLE", + "description": "SION_DISABLE\n0-Enable\n1-Disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse30-bit-2", + "name": "USDHC1_RST_POLARITY", + "description": "USDHC1_RST_POLARITY\n0-Reset active low\n1-Reset active high", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1, + "id": "fuse30-bit-3", + "name": "USDHC2_RST_POLARITY", + "description": "USDHC2_RST_POLARITY\n0-Reset active low\n1-Reset active high", + "values": [ + { + "name": "0", + "value": 0, + "description": "Reset active low" + }, + { + "name": "1", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 2, + "id": "fuse30-bits-4-5", + "name": "PWR_CYCLE", + "description": "PWR_CYCLE\n0-20ms\n1-10ms\n2-5ms\n3-2.5ms", + "values": [ + { + "name": "20ms", + "value": 0, + "description": "20ms" + }, + { + "name": "10ms", + "value": 1, + "description": "10ms" + }, + { + "name": "5ms", + "value": 2, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 3, + "description": "2.5ms" + } + ] + }, + { + "width": 1, + "id": "fuse30-bit-6", + "name": "PWR_CYCLE_EN", + "description": "PWR_CYCLE_EN\n0-No power cycle\n1-Enabled via SD_RST", + "values": [ + { + "name": "0", + "value": 0, + "description": "No power cycle" + }, + { + "name": "1", + "value": 1, + "description": "Enabled via SD_RST" + } + ] + }, + { + "width": 1, + "id": "fuse30-bit-7", + "name": "PWR_STABLE_CYCLE", + "description": "PWR_STABLE_CYCLE\n0-5ms\n1-2.5ms", + "values": [ + { + "name": "5ms", + "value": 0, + "description": "5ms" + }, + { + "name": "2.5ms", + "value": 1, + "description": "2.5ms" + } + ] + }, + { + "width": 2, + "id": "fuse30-bits-8-9", + "name": "SD_SPEED", + "description": "SD_SPEED\n0-Normal (SDR12)\n1-High (SDR25)\n2-SDR50\n3-SDR104", + "values": [ + { + "name": "Normal", + "value": 0, + "description": "Normal (SDR12)" + }, + { + "name": "High", + "value": 1, + "description": "High (SDR25)" + }, + { + "name": "SDR50", + "value": 2, + "description": "SDR50" + }, + { + "name": "SDR104", + "value": 3, + "description": "SDR104" + } + ] + }, + { + "width": 1, + "id": "fuse30-bit-10", + "name": "SD_BUS_WIDTH", + "description": "SD_BUS_WIDTH\n0-1-bit\n1-4-bit", + "values": [ + { + "name": "1-bit", + "value": 0, + "description": "1-bit" + }, + { + "name": "4-bit", + "value": 1, + "description": "4-bit" + } + ] + }, + { + "width": 11 + }, + { + "width": 2, + "id": "fuse30-bits-22-23", + "name": "DLL_DELAY_CALIB_STEP", + "description": "DLL_DELAY_CALIB_STEP\n00-1 \n01-2 \n10-4 \n11-6", + "values": [ + { + "name": "1", + "value": 0, + "description": "1" + }, + { + "name": "2", + "value": 1, + "description": "2" + }, + { + "name": "4", + "value": 2, + "description": "4" + }, + { + "name": "6", + "value": 3, + "description": "6" + } + ] + }, + { + "width": 7, + "id": "fuse30-bits-24-30", + "name": "DLL_DELAY_CALIB_START", + "description": "DLL_DELAY_CALIB_START\n DLL tuning start" + }, + { + "width": 1, + "id": "fuse30-bit-31", + "name": "DLL_DELAY_OVERRIDE", + "description": "DLL_DELAY_OVERRIDE\n0-DLL Slave Mode\n1-DLL Override Mode", + "values": [ + { + "name": "0", + "value": 0, + "description": "DLL Slave Mode" + }, + { + "name": "1", + "value": 1, + "description": "DLL Override Mode" + } + ] + } + ] + }, + { + "id": "fuse31", + "name": "BOOT_CFG7", + "description": "Fuse 31 [1023:1016]", + "index_int": "0x001F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 6, + "id": "fuse31-bits-0-5", + "name": "2ND_IMG_OFFSET", + "description": "2ND_IMG_OFFSET\nzero - No 2nd physical image present\nOtherwise - 2nd physical image located at 2ND_IMG_SIZE_UNIT* 2ND_IMG_OFFSET" + }, + { + "width": 2, + "id": "fuse31-bits-6-7", + "name": "2ND_IMG_SIZE_UNIT", + "description": "2ND_IMG_SIZE_UNIT\n0-256KB \n1-1MB \n2-4MB \n3-16MB", + "values": [ + { + "name": "256KB", + "value": 0, + "description": "256KB" + }, + { + "name": "1MB", + "value": 1, + "description": "1MB" + }, + { + "name": "4MB", + "value": 2, + "description": "4MB" + }, + { + "name": "16MB", + "value": 3, + "description": "16MB" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-8", + "name": "WDOG_EN", + "description": "WDOG_EN\n0-Disable all WDOGs during boot\n1-Keep WDOG1 enabled during boot", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable all WDOGs during boot" + }, + { + "name": "Enable", + "value": 1, + "description": "Keep WDOG1 enabled during boot" + } + ] + }, + { + "width": 3, + "id": "fuse31-bits-9-11", + "name": "WDOG_TIMEOUT_SEL", + "description": "WDOG_TIMEOUT_SEL\n0-128s \n1-64s \n2-32s \n3-16s \n4-8s \nOthers-4s", + "values": [ + { + "name": "128s", + "value": 0, + "description": "128s" + }, + { + "name": "64s", + "value": 1, + "description": "64s" + }, + { + "name": "32s", + "value": 2, + "description": "32s" + }, + { + "name": "16s", + "value": 3, + "description": "16s" + }, + { + "name": "8s", + "value": 4, + "description": "8s" + } + ] + }, + { + "width": 4 + }, + { + "width": 1, + "id": "fuse31-bit-16", + "name": "POR_PRELOAD_CM33_TCM_ECC", + "description": "POR_PRELOAD_CM33_TCM_ECC\n0-Not load\n1-load", + "values": [ + { + "name": "Not load", + "value": 0, + "description": "Not load" + }, + { + "name": "load", + "value": 1, + "description": "load" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-17", + "name": "POR_PRELOAD_CM7_TCM_ECC", + "description": "POR_PRELOAD_CM7_TCM_ECC\n0-Not load\n1-load", + "values": [ + { + "name": "Not load", + "value": 0, + "description": "Not load" + }, + { + "name": "load", + "value": 1, + "description": "load" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-18", + "name": "Release_M7_RST_STAT", + "description": "Release_M7_RST_STAT\n0-RST assert\n1-RST release (Required to access M7TCM)", + "values": [ + { + "name": "RST assert", + "value": 0, + "description": "RST assert" + }, + { + "name": "1", + "value": 1, + "description": "RST release (Required to access M7TCM)" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-19", + "name": "BOOT_FREQ", + "description": "BOOT_FREQ\n0-200MHz derived from RC400M\n1-240MHz derived from PLL480MHz", + "values": [ + { + "name": "0", + "value": 0, + "description": "200MHz derived from RC400M" + }, + { + "name": "1", + "value": 1, + "description": "240MHz derived from PLL480MHz" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-20", + "name": "XMC_CRC32_CHECK_EN", + "description": "XMC_CRC32_CHECK_EN\n0-Disabled\n1-Enabled", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3 + }, + { + "width": 6 + }, + { + "width": 1, + "id": "fuse31-bit-30", + "name": "INVERT_CM33_PRELOAD", + "description": "INVERT_CM33_PRELOAD\n(impacts POR_PRELOAD_CM33_TCM_ECC)\n0-no invert\n1-invert", + "values": [ + { + "name": "no invert", + "value": 0, + "description": "no invert" + }, + { + "name": "invert", + "value": 1, + "description": "invert" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse32", + "name": "BOOT_CFG8", + "description": "XMCD CRC32 sum value", + "index_int": "0x0020", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + } + ] + }, + { + "group": { + "name": "OEM_SRKH", + "description": "OEM SRK Hash" + }, + "registers": [ + { + "id": "fuse128", + "name": "OEM_SRKH7", + "description": "OEM SRK HASH7", + "index_int": "0x0080", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse129", + "name": "OEM_SRKH6", + "description": "OEM SRK HASH6", + "index_int": "0x0081", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse130", + "name": "OEM_SRKH5", + "description": "OEM SRK HASH5", + "index_int": "0x0082", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse131", + "name": "OEM_SRKH4", + "description": "OEM SRK HASH4", + "index_int": "0x0083", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse132", + "name": "OEM_SRKH3", + "description": "OEM SRK HASH3", + "index_int": "0x0084", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse133", + "name": "OEM_SRKH2", + "description": "OEM SRK HASH2", + "index_int": "0x0085", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse134", + "name": "OEM_SRKH1", + "description": "OEM SRK HASH1", + "index_int": "0x0086", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse135", + "name": "OEM_SRKH0", + "description": "OEM SRK HASH0", + "index_int": "0x0087", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse4", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + } + ] + }, + { + "group": { + "name": "OTFAD", + "description": "OTFAD configuration" + }, + "registers": [ + { + "id": "fuse178", + "name": "OTFAD2_KEY3", + "description": "OTFAD2 key 3", + "index_int": "0x00B2", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse179", + "name": "OTFAD2_KEY2", + "description": "OTFAD2 key 2", + "index_int": "0x00B3", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse180", + "name": "OTFAD2_KEY1", + "description": "OTFAD2 key 1", + "index_int": "0x00B4", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse181", + "name": "OTFAD2_KEY0", + "description": "OTFAD2 key 0", + "index_int": "0x00B5", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse182", + "name": "OTFAD2_CFG", + "description": "Fuse 182", + "index_int": "0x00B6", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 3, + "access": "none" + }, + { + "width": 1, + "id": "fuse182-bit-3", + "name": "OTFAD2_ENABLE", + "description": "OTFAD2 enable", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse182-bit-4", + "name": "OTFAD2_DISABLE_OVERRIDE", + "description": "OTFAD2 disable override", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse182-bit-5", + "name": "OTFAD2_KEY_BLOB_EN", + "description": "OTFAD2 key blob enable", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse182-bit-6", + "name": "OTFAD2_KEY_SCRAMBLE_CRC_EN", + "description": "OTFAD2 key scramble CRC enable, write-only", + "access": "WO", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse182-bit-7", + "name": "OTFAD2_KEY_SCRAMBLE_EN", + "description": "OTFAD2 key scramble enable, write-only", + "access": "WO", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 8, + "id": "fuse182-bits-8-15", + "name": "OTFAD2_KEY_SCRAMBLE_ALIGN", + "description": "OTFAD2 key scramble align, write-only", + "access": "WO" + }, + { + "width": 1, + "id": "fuse182-bit-16", + "name": "OTFAD2_RESTRICT_OTFAD_IPS", + "description": "OTFAD2 restrictOTFAD IPS, write-only", + "access": "WO", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 15, + "access": "none" + } + ] + }, + { + "id": "fuse183", + "name": "OTFAD2_KEY_SCRAMBLE", + "description": "OTFAD2 key scramble", + "index_int": "0x00B7", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse6", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse184", + "name": "OTFAD1_KEY3", + "description": "OTFAD1 key 3", + "index_int": "0x00B8", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse185", + "name": "OTFAD1_KEY2", + "description": "OTFAD1 key 2", + "index_int": "0x00B9", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse186", + "name": "OTFAD1_KEY1", + "description": "OTFAD1 key 1", + "index_int": "0x00BA", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse187", + "name": "OTFAD1_KEY0", + "description": "OTFAD1 key 0", + "index_int": "0x00BB", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse188", + "name": "OTFAD1_CFG", + "description": "Fuse 188", + "index_int": "0x00BC", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 3, + "access": "none" + }, + { + "width": 1, + "id": "fuse188-bit-3", + "name": "OTFAD1_ENABLE", + "description": "OTFAD1 enable", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse188-bit-4", + "name": "OTFAD1_DISABLE_OVERRIDE", + "description": "OTFAD1 disable override", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse188-bit-5", + "name": "OTFAD1_KEY_BLOB_EN", + "description": "OTFAD1 key blob enable", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse188-bit-6", + "name": "OTFAD1_KEY_SCRAMBLE_CRC_EN", + "description": "OTFAD1 key scramble CRC enable, write-only", + "access": "WO", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse188-bit-7", + "name": "OTFAD1_KEY_SCRAMBLE_EN", + "description": "OTFAD1 key scramble enable, write-only", + "access": "WO", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 8, + "id": "fuse188-bits-8-15", + "name": "OTFAD1_KEY_SCRAMBLE_ALIGN", + "description": "OTFAD1 key scramble align, write-only", + "access": "WO" + }, + { + "width": 1, + "id": "fuse188-bit-16", + "name": "OTFAD1_RESTRICT_OTFAD_IPS", + "description": "OTFAD1RESTRICT OTFAD IPS, write-only", + "access": "WO", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 15, + "access": "none" + } + ] + }, + { + "id": "fuse189", + "name": "OTFAD1_KEY_SCRAMBLE", + "description": "OTFAD1 key scramble", + "index_int": "0x00BD", + "access": "WO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + } + ] + }, + { + "group": { + "name": "MISC", + "description": "MISC configuration" + }, + "registers": [ + { + "id": "fuse312", + "name": "USB1", + "description": "Fuse 312", + "index_int": "0x0138", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse312-bits-0-15", + "name": "USB_VID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "fuse312-bits-16-31", + "name": "USB1_PID", + "description": "USB0 Product ID" + } + ] + }, + { + "id": "fuse313", + "name": "USB2", + "description": "Fuse 313", + "index_int": "0x0139", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse313-bits-0-15", + "name": "USB2_PID", + "description": "USB1 Product ID" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse315", + "name": "MAC1_ADDR_31_0", + "description": "MAC_0 Address", + "index_int": "0x013B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse316", + "name": "MAC1_MAC2", + "description": "Fuse 316", + "index_int": "0x013C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse316-bits-0-15", + "name": "MAC1_ADDR_47_32", + "description": "MAC_0 Address" + }, + { + "width": 16, + "id": "fuse316-bits-16-31", + "name": "MAC2_ADDR_47_32", + "description": "MAC_1 Address" + } + ] + }, + { + "id": "fuse317", + "name": "MAC2_ADDR_31_0", + "description": "MAC_1 Address", + "index_int": "0x013D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse318", + "name": "MAC3_ADDR_31_0", + "description": "MAC_2 Address", + "index_int": "0x013E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse319", + "name": "MAC3_MAC4", + "description": "Fuse 319", + "index_int": "0x013F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse319-bits-0-15", + "name": "MAC3_ADDR_47_32", + "description": "MAC_2 Address" + }, + { + "width": 16, + "id": "fuse319-bits-16-31", + "name": "MAC4_ADDR_47_32", + "description": "MAC_3 Address" + } + ] + }, + { + "id": "fuse320", + "name": "MAC4_ADDR_31_0", + "description": "MAC_3 Address", + "index_int": "0x0140", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse321", + "name": "MAC5_ADDR_31_0", + "description": "MAC_4 Address", + "index_int": "0x0141", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + } + }, + { + "id": "fuse322", + "name": "MAC5_MAC6", + "description": "Fuse 322", + "index_int": "0x0142", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse322-bits-0-15", + "name": "MAC5_ADDR_47_32", + "description": "MAC_4 Address" + }, + { + "width": 16, + "id": "fuse322-bits-16-31", + "name": "MAC6_ADDR_47_32", + "description": "MAC_5 Address" + } + ] + }, + { + "id": "fuse323", + "name": "MAC6_ADDR_31_0", + "description": "MAC_5 Address", + "index_int": "0x0143", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse324", + "name": "MAC7_ADDR_31_0", + "description": "MAC_6 Address", + "index_int": "0x0144", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse325", + "name": "MAC7_MAC8", + "description": "Fuse 325", + "index_int": "0x0145", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse325-bits-0-15", + "name": "MAC7_ADDR_47_32", + "description": "MAC_6 Address" + }, + { + "width": 16, + "id": "fuse325-bits-16-31", + "name": "MAC8_ADDR_47_32", + "description": "MAC_7 Address" + } + ] + }, + { + "id": "fuse326", + "name": "MAC8_ADDR_31_0", + "description": "MAC_7 Address", + "index_int": "0x0146", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse327", + "name": "MISC", + "description": "Fuse 327", + "index_int": "0x0147", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse327-bit-0", + "name": "MAC_ADDR_DISABLE", + "description": "MAC ADDR Disable", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse327-bit-1", + "name": "USB_ADDR_DISABLE", + "description": "USB ADDR Disable", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 2, + "id": "fuse327-bits-2-3", + "name": "CM33_TCM_CFG", + "description": "CM33 TCM configuration", + "values": [ + { + "name": "REGULAR_TCM", + "value": 0, + "description": "REGULAR_TCM (128 kB Code TCM, 128 kB Sys TCM);" + }, + { + "name": "DOUBLE_CODE_TCM", + "value": 1, + "description": "DOUBLE_CODE_TCM (256 kB Code TCM);" + }, + { + "name": "DOUBLE_SYS_TCM", + "value": 2, + "description": "DOUBLE_SYS_TCM (256 kB Sys TCM);" + } + ] + }, + { + "width": 3, + "id": "fuse327-bits-4-6", + "name": "CM7_TCM_CFG", + "description": "CM7 TCM configuration", + "values": [ + { + "name": "REGULAR_TCM", + "value": 0, + "description": "REGULAR_TCM (256 kB ITCM, 256 kB DTCM)" + }, + { + "name": "DOUBLE_ITCM", + "value": 1, + "description": "DOUBLE_ITCM (512 kB ITCM)" + }, + { + "name": "DOUBLE_DTCM", + "value": 2, + "description": "DOUBLE_DTCM (512 kB DTCM)" + }, + { + "name": "HALF_ITCM", + "value": 4, + "description": "HALF_ITCM (128 kB ITCM, 384 kB DTCM)" + }, + { + "name": "HALF_DTCM", + "value": 5, + "description": "HALF_DTCM (384 kB ITCM, 128 kB DTCM)" + } + ] + }, + { + "width": 2, + "id": "fuse327-bits-7-8", + "name": "FORCE_EWMOUT", + "description": "EWM_FORCE_OUT", + "values": [ + { + "name": "00", + "value": 0, + "description": "No EWM_OUT output is forced to GPIO, user should use IOMUXC to configure pinmux and select GPIO to output EWM_OUT" + }, + { + "name": "01", + "value": 1, + "description": "EWM_OUT output is forced to GPIO_AON_27 (ALT7), GPIO_AON_27 IOMUXC control register is override and no longer works." + }, + { + "name": "10", + "value": 2, + "description": "EWM_OUT output is forced to GPIO_AD_12 (ALT7), GPIO_AD_12 IOMUXC control register is override and no longer works." + }, + { + "name": "11", + "value": 3, + "description": "EWM_OUT output is forced to GPIO_AD_29 (ALT7), GPIO_AD_29 IOMUXC control register is" + } + ] + }, + { + "width": 23 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt533s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt533s/database.yaml new file mode 100644 index 0000000..af61bc3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt533s/database.yaml @@ -0,0 +1,37 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt595s + +# General MCU information +info: + memory_map: + flexspi0_ns: + start_int: "0x08000000" + size_int: "0x04000000" + external: true + flexspi0_s: + start_int: "0x18000000" + size_int: "0x04000000" + external: true + mirror_of: flexspi0_ns + flexspi1_ns: + start_int: "0x28000000" + size_int: "0x04000000" + external: true + flexspi1_s: + start_int: "0x38000000" + size_int: "0x04000000" + external: true + mirror_of: flexspi1_ns + sram: + start_int: 0x20080000 + size_int: 0x280000 + external: false + non_xip_type: int_ram + usb-ram: + start_int: 0x40140000 + size_int: 0x4000 + external: false + non_xip_type: int_ram diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt533s/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt533s/tz.json new file mode 100644 index 0000000..2c622db --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt533s/tz.json @@ -0,0 +1,2293 @@ +{ + "cpu": "mimxrt533s", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Secure vector table address (vtor_addr)", + "description": "TrustZone register - Secure vector table address (vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "Non-secure vector table address (vtor_ns_addr)", + "description": "TrustZone register - Non-secure vector table address (vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "Interrupt target non-secure register 0 (nvic_itns0)", + "description": "TrustZone register - Interrupt target non-secure register 0 (nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "Interrupt target non-secure register 1 (nvic_itns1)", + "description": "TrustZone register - Interrupt target non-secure register 1 (nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "MPU Control Register (mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "Non-secure MPU Control Register (mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "SAU Control Register (sau_ctrl)", + "description": "TrustZone register - SAU Control Register (sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "ROM Slave Rule Register 0 (bootrom0_slave_rule0)", + "description": "TrustZone register - ROM Slave Rule Register 0 (bootrom0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (bootrom0_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (bootrom0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (bootrom0_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (bootrom0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (bootrom0_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (bootrom0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (bootrom0_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (bootrom0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "Quad/Octal SPI Slave Rule Register 0 (qospi_slave_rule0)", + "description": "TrustZone register - Quad/Octal SPI Slave Rule Register 0 (qospi_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 0 (qospi0_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 0 (qospi0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 1 (qospi0_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 1 (qospi0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 2 (qospi0_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 2 (qospi0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 3 (qospi0_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 3 (qospi0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 0 (qospi1_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 0 (qospi1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 1 (qospi1_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 1 (qospi1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 2 (qospi1_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 2 (qospi1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 3 (qospi1_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 3 (qospi1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 0 (qospi2_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 0 (qospi2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 1 (qospi2_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 1 (qospi2_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 2 (qospi2_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 2 (qospi2_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 3 (qospi2_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 3 (qospi2_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 0 (qospi3_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 0 (qospi3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 1 (qospi3_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 1 (qospi3_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 2 (qospi3_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 2 (qospi3_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 3 (qospi3_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 3 (qospi3_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 0 (qospi4_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 0 (qospi4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 1 (qospi4_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 1 (qospi4_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 2 (qospi4_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 2 (qospi4_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 3 (qospi4_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 3 (qospi4_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 0 (ram00_mem_rule0)", + "description": "TrustZone register - RAM00 Memory Rule Register 0 (ram00_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 1 (ram00_mem_rule1)", + "description": "TrustZone register - RAM00 Memory Rule Register 1 (ram00_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 2 (ram00_mem_rule2)", + "description": "TrustZone register - RAM00 Memory Rule Register 2 (ram00_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 3 (ram00_mem_rule3)", + "description": "TrustZone register - RAM00 Memory Rule Register 3 (ram00_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 0 (ram01_mem_rule0)", + "description": "TrustZone register - RAM01 Memory Rule Register 0 (ram01_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 1 (ram01_mem_rule1)", + "description": "TrustZone register - RAM01 Memory Rule Register 1 (ram01_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 2 (ram01_mem_rule2)", + "description": "TrustZone register - RAM01 Memory Rule Register 2 (ram01_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 3 (ram01_mem_rule3)", + "description": "TrustZone register - RAM01 Memory Rule Register 3 (ram01_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 0 (ram10_mem_rule0)", + "description": "TrustZone register - RAM10 Memory Rule Register 0 (ram10_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 1 (ram10_mem_rule1)", + "description": "TrustZone register - RAM10 Memory Rule Register 1 (ram10_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 2 (ram10_mem_rule2)", + "description": "TrustZone register - RAM10 Memory Rule Register 2 (ram10_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 3 (ram10_mem_rule3)", + "description": "TrustZone register - RAM10 Memory Rule Register 3 (ram10_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 0 (ram11_mem_rule0)", + "description": "TrustZone register - RAM11 Memory Rule Register 0 (ram11_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 1 (ram11_mem_rule1)", + "description": "TrustZone register - RAM11 Memory Rule Register 1 (ram11_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 2 (ram11_mem_rule2)", + "description": "TrustZone register - RAM11 Memory Rule Register 2 (ram11_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 3 (ram11_mem_rule3)", + "description": "TrustZone register - RAM11 Memory Rule Register 3 (ram11_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 0 (ram20_mem_rule0)", + "description": "TrustZone register - RAM20 Memory Rule Register 0 (ram20_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 1 (ram20_mem_rule1)", + "description": "TrustZone register - RAM20 Memory Rule Register 1 (ram20_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 2 (ram20_mem_rule2)", + "description": "TrustZone register - RAM20 Memory Rule Register 2 (ram20_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 3 (ram20_mem_rule3)", + "description": "TrustZone register - RAM20 Memory Rule Register 3 (ram20_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 0 (ram21_mem_rule0)", + "description": "TrustZone register - RAM21 Memory Rule Register 0 (ram21_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 1 (ram21_mem_rule1)", + "description": "TrustZone register - RAM21 Memory Rule Register 1 (ram21_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 2 (ram21_mem_rule2)", + "description": "TrustZone register - RAM21 Memory Rule Register 2 (ram21_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 3 (ram21_mem_rule3)", + "description": "TrustZone register - RAM21 Memory Rule Register 3 (ram21_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 0 (ram22_mem_rule0)", + "description": "TrustZone register - RAM22 Memory Rule Register 0 (ram22_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 1 (ram22_mem_rule1)", + "description": "TrustZone register - RAM22 Memory Rule Register 1 (ram22_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 2 (ram22_mem_rule2)", + "description": "TrustZone register - RAM22 Memory Rule Register 2 (ram22_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 3 (ram22_mem_rule3)", + "description": "TrustZone register - RAM22 Memory Rule Register 3 (ram22_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 0 (ram23_mem_rule0)", + "description": "TrustZone register - RAM23 Memory Rule Register 0 (ram23_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 1 (ram23_mem_rule1)", + "description": "TrustZone register - RAM23 Memory Rule Register 1 (ram23_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 2 (ram23_mem_rule2)", + "description": "TrustZone register - RAM23 Memory Rule Register 2 (ram23_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 3 (ram23_mem_rule3)", + "description": "TrustZone register - RAM23 Memory Rule Register 3 (ram23_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "RAM3 Slave Rule Register (ram3_slave_rule)", + "description": "TrustZone register - RAM3 Slave Rule Register (ram3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 0 (ram30_mem_rule0)", + "description": "TrustZone register - RAM30 Memory Rule Register 0 (ram30_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 1 (ram30_mem_rule1)", + "description": "TrustZone register - RAM30 Memory Rule Register 1 (ram30_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 2 (ram30_mem_rule2)", + "description": "TrustZone register - RAM30 Memory Rule Register 2 (ram30_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 3 (ram30_mem_rule3)", + "description": "TrustZone register - RAM30 Memory Rule Register 3 (ram30_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 0 (ram31_mem_rule0)", + "description": "TrustZone register - RAM31 Memory Rule Register 0 (ram31_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 1 (ram31_mem_rule1)", + "description": "TrustZone register - RAM31 Memory Rule Register 1 (ram31_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 2 (ram31_mem_rule2)", + "description": "TrustZone register - RAM31 Memory Rule Register 2 (ram31_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 3 (ram31_mem_rule3)", + "description": "TrustZone register - RAM31 Memory Rule Register 3 (ram31_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 0 (ram32_mem_rule0)", + "description": "TrustZone register - RAM32 Memory Rule Register 0 (ram32_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 1 (ram32_mem_rule1)", + "description": "TrustZone register - RAM32 Memory Rule Register 1 (ram32_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 2 (ram32_mem_rule2)", + "description": "TrustZone register - RAM32 Memory Rule Register 2 (ram32_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 3 (ram32_mem_rule3)", + "description": "TrustZone register - RAM32 Memory Rule Register 3 (ram32_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 0 (ram33_mem_rule0)", + "description": "TrustZone register - RAM33 Memory Rule Register 0 (ram33_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 1 (ram33_mem_rule1)", + "description": "TrustZone register - RAM33 Memory Rule Register 1 (ram33_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 2 (ram33_mem_rule2)", + "description": "TrustZone register - RAM33 Memory Rule Register 2 (ram33_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 3 (ram33_mem_rule3)", + "description": "TrustZone register - RAM33 Memory Rule Register 3 (ram33_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "RAM4 Slave Rule Register (ram4_slave_rule)", + "description": "TrustZone register - RAM4 Slave Rule Register (ram4_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 0 (ram40_mem_rule0)", + "description": "TrustZone register - RAM40 Memory Rule Register 0 (ram40_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 1 (ram40_mem_rule1)", + "description": "TrustZone register - RAM40 Memory Rule Register 1 (ram40_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 2 (ram40_mem_rule2)", + "description": "TrustZone register - RAM40 Memory Rule Register 2 (ram40_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 3 (ram40_mem_rule3)", + "description": "TrustZone register - RAM40 Memory Rule Register 3 (ram40_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 0 (ram41_mem_rule0)", + "description": "TrustZone register - RAM41 Memory Rule Register 0 (ram41_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 1 (ram41_mem_rule1)", + "description": "TrustZone register - RAM41 Memory Rule Register 1 (ram41_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 2 (ram41_mem_rule2)", + "description": "TrustZone register - RAM41 Memory Rule Register 2 (ram41_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 3 (ram41_mem_rule3)", + "description": "TrustZone register - RAM41 Memory Rule Register 3 (ram41_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 0 (ram42_mem_rule0)", + "description": "TrustZone register - RAM42 Memory Rule Register 0 (ram42_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 1 (ram42_mem_rule1)", + "description": "TrustZone register - RAM42 Memory Rule Register 1 (ram42_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 2 (ram42_mem_rule2)", + "description": "TrustZone register - RAM42 Memory Rule Register 2 (ram42_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 3 (ram42_mem_rule3)", + "description": "TrustZone register - RAM42 Memory Rule Register 3 (ram42_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 0 (ram43_mem_rule0)", + "description": "TrustZone register - RAM43 Memory Rule Register 0 (ram43_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 1 (ram43_mem_rule1)", + "description": "TrustZone register - RAM43 Memory Rule Register 1 (ram43_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 2 (ram43_mem_rule2)", + "description": "TrustZone register - RAM43 Memory Rule Register 2 (ram43_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 3 (ram43_mem_rule3)", + "description": "TrustZone register - RAM43 Memory Rule Register 3 (ram43_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "RAM5 Slave Rule Register (ram5_slave_rule)", + "description": "TrustZone register - RAM5 Slave Rule Register (ram5_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 0 (ram50_mem_rule0)", + "description": "TrustZone register - RAM50 Memory Rule Register 0 (ram50_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 1 (ram50_mem_rule1)", + "description": "TrustZone register - RAM50 Memory Rule Register 1 (ram50_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 2 (ram50_mem_rule2)", + "description": "TrustZone register - RAM50 Memory Rule Register 2 (ram50_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 3 (ram50_mem_rule3)", + "description": "TrustZone register - RAM50 Memory Rule Register 3 (ram50_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 0 (ram51_mem_rule0)", + "description": "TrustZone register - RAM51 Memory Rule Register 0 (ram51_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 1 (ram51_mem_rule1)", + "description": "TrustZone register - RAM51 Memory Rule Register 1 (ram51_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 2 (ram51_mem_rule2)", + "description": "TrustZone register - RAM51 Memory Rule Register 2 (ram51_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 3 (ram51_mem_rule3)", + "description": "TrustZone register - RAM51 Memory Rule Register 3 (ram51_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 0 (ram52_mem_rule0)", + "description": "TrustZone register - RAM52 Memory Rule Register 0 (ram52_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 1 (ram52_mem_rule1)", + "description": "TrustZone register - RAM52 Memory Rule Register 1 (ram52_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 2 (ram52_mem_rule2)", + "description": "TrustZone register - RAM52 Memory Rule Register 2 (ram52_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 3 (ram52_mem_rule3)", + "description": "TrustZone register - RAM52 Memory Rule Register 3 (ram52_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 0 (ram53_mem_rule0)", + "description": "TrustZone register - RAM53 Memory Rule Register 0 (ram53_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 1 (ram53_mem_rule1)", + "description": "TrustZone register - RAM53 Memory Rule Register 1 (ram53_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 2 (ram53_mem_rule2)", + "description": "TrustZone register - RAM53 Memory Rule Register 2 (ram53_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 3 (ram53_mem_rule3)", + "description": "TrustZone register - RAM53 Memory Rule Register 3 (ram53_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "RAM6 Slave Rule Register (ram6_slave_rule)", + "description": "TrustZone register - RAM6 Slave Rule Register (ram6_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 0 (ram60_mem_rule0)", + "description": "TrustZone register - RAM60 Memory Rule Register 0 (ram60_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 1 (ram60_mem_rule1)", + "description": "TrustZone register - RAM60 Memory Rule Register 1 (ram60_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 2 (ram60_mem_rule2)", + "description": "TrustZone register - RAM60 Memory Rule Register 2 (ram60_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 3 (ram60_mem_rule3)", + "description": "TrustZone register - RAM60 Memory Rule Register 3 (ram60_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 0 (ram61_mem_rule0)", + "description": "TrustZone register - RAM61 Memory Rule Register 0 (ram61_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 1 (ram61_mem_rule1)", + "description": "TrustZone register - RAM61 Memory Rule Register 1 (ram61_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 2 (ram61_mem_rule2)", + "description": "TrustZone register - RAM61 Memory Rule Register 2 (ram61_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 3 (ram61_mem_rule3)", + "description": "TrustZone register - RAM61 Memory Rule Register 3 (ram61_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 0 (ram62_mem_rule0)", + "description": "TrustZone register - RAM62 Memory Rule Register 0 (ram62_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 1 (ram62_mem_rule1)", + "description": "TrustZone register - RAM62 Memory Rule Register 1 (ram62_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 2 (ram62_mem_rule2)", + "description": "TrustZone register - RAM62 Memory Rule Register 2 (ram62_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 3 (ram62_mem_rule3)", + "description": "TrustZone register - RAM62 Memory Rule Register 3 (ram62_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 0 (ram63_mem_rule0)", + "description": "TrustZone register - RAM63 Memory Rule Register 0 (ram63_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 1 (ram63_mem_rule1)", + "description": "TrustZone register - RAM63 Memory Rule Register 1 (ram63_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 2 (ram63_mem_rule2)", + "description": "TrustZone register - RAM63 Memory Rule Register 2 (ram63_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 3 (ram63_mem_rule3)", + "description": "TrustZone register - RAM63 Memory Rule Register 3 (ram63_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "RAM7 Slave Rule Register (ram7_slave_rule)", + "description": "TrustZone register - RAM7 Slave Rule Register (ram7_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 0 (ram70_mem_rule0)", + "description": "TrustZone register - RAM70 Memory Rule Register 0 (ram70_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 1 (ram70_mem_rule1)", + "description": "TrustZone register - RAM70 Memory Rule Register 1 (ram70_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 2 (ram70_mem_rule2)", + "description": "TrustZone register - RAM70 Memory Rule Register 2 (ram70_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field300", + "offset_int": "0x300", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 3 (ram70_mem_rule3)", + "description": "TrustZone register - RAM70 Memory Rule Register 3 (ram70_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field304", + "offset_int": "0x304", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 0 (ram71_mem_rule0)", + "description": "TrustZone register - RAM71 Memory Rule Register 0 (ram71_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field308", + "offset_int": "0x308", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 1 (ram71_mem_rule1)", + "description": "TrustZone register - RAM71 Memory Rule Register 1 (ram71_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field30C", + "offset_int": "0x30c", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 2 (ram71_mem_rule2)", + "description": "TrustZone register - RAM71 Memory Rule Register 2 (ram71_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field310", + "offset_int": "0x310", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 3 (ram71_mem_rule3)", + "description": "TrustZone register - RAM71 Memory Rule Register 3 (ram71_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field314", + "offset_int": "0x314", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 0 (ram72_mem_rule0)", + "description": "TrustZone register - RAM72 Memory Rule Register 0 (ram72_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field318", + "offset_int": "0x318", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 1 (ram72_mem_rule1)", + "description": "TrustZone register - RAM72 Memory Rule Register 1 (ram72_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field31C", + "offset_int": "0x31c", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 2 (ram72_mem_rule2)", + "description": "TrustZone register - RAM72 Memory Rule Register 2 (ram72_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field320", + "offset_int": "0x320", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 3 (ram72_mem_rule3)", + "description": "TrustZone register - RAM72 Memory Rule Register 3 (ram72_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field324", + "offset_int": "0x324", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 0 (ram73_mem_rule0)", + "description": "TrustZone register - RAM73 Memory Rule Register 0 (ram73_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field328", + "offset_int": "0x328", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 1 (ram73_mem_rule1)", + "description": "TrustZone register - RAM73 Memory Rule Register 1 (ram73_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field32C", + "offset_int": "0x32c", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 2 (ram73_mem_rule2)", + "description": "TrustZone register - RAM73 Memory Rule Register 2 (ram73_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field330", + "offset_int": "0x330", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 3 (ram73_mem_rule3)", + "description": "TrustZone register - RAM73 Memory Rule Register 3 (ram73_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field334", + "offset_int": "0x334", + "reg_width": 32, + "name": "RAM8 Slave Rule Register (ram8_slave_rule)", + "description": "TrustZone register - RAM8 Slave Rule Register (ram8_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field338", + "offset_int": "0x338", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 0 (ram80_mem_rule0)", + "description": "TrustZone register - RAM80 Memory Rule Register 0 (ram80_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field33C", + "offset_int": "0x33c", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 1 (ram80_mem_rule1)", + "description": "TrustZone register - RAM80 Memory Rule Register 1 (ram80_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field340", + "offset_int": "0x340", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 2 (ram80_mem_rule2)", + "description": "TrustZone register - RAM80 Memory Rule Register 2 (ram80_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field344", + "offset_int": "0x344", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 3 (ram80_mem_rule3)", + "description": "TrustZone register - RAM80 Memory Rule Register 3 (ram80_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field348", + "offset_int": "0x348", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 0 (ram81_mem_rule0)", + "description": "TrustZone register - RAM81 Memory Rule Register 0 (ram81_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field34C", + "offset_int": "0x34c", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 1 (ram81_mem_rule1)", + "description": "TrustZone register - RAM81 Memory Rule Register 1 (ram81_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field350", + "offset_int": "0x350", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 2 (ram81_mem_rule2)", + "description": "TrustZone register - RAM81 Memory Rule Register 2 (ram81_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field354", + "offset_int": "0x354", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 3 (ram81_mem_rule3)", + "description": "TrustZone register - RAM81 Memory Rule Register 3 (ram81_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field358", + "offset_int": "0x358", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 0 (ram82_mem_rule0)", + "description": "TrustZone register - RAM81 Memory Rule Register 0 (ram82_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field35C", + "offset_int": "0x35c", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 1 (ram82_mem_rule1)", + "description": "TrustZone register - RAM81 Memory Rule Register 1 (ram82_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field360", + "offset_int": "0x360", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 2 (ram82_mem_rule2)", + "description": "TrustZone register - RAM81 Memory Rule Register 2 (ram82_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field364", + "offset_int": "0x364", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 3 (ram82_mem_rule3)", + "description": "TrustZone register - RAM81 Memory Rule Register 3 (ram82_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field368", + "offset_int": "0x368", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 0 (ram83_mem_rule0)", + "description": "TrustZone register - RAM81 Memory Rule Register 0 (ram83_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field36C", + "offset_int": "0x36c", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 1 (ram83_mem_rule1)", + "description": "TrustZone register - RAM81 Memory Rule Register 1 (ram83_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field370", + "offset_int": "0x370", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 2 (ram83_mem_rule2)", + "description": "TrustZone register - RAM81 Memory Rule Register 2 (ram83_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field374", + "offset_int": "0x374", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 3 (ram83_mem_rule3)", + "description": "TrustZone register - RAM81 Memory Rule Register 3 (ram83_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field378", + "offset_int": "0x378", + "reg_width": 32, + "name": "(ezh_ram_slave_rule)", + "description": "TrustZone register - (ezh_ram_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field37C", + "offset_int": "0x37c", + "reg_width": 32, + "name": "(ezh_ram0_slave_rule0)", + "description": "TrustZone register - (ezh_ram0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field380", + "offset_int": "0x380", + "reg_width": 32, + "name": "(ezh_ram0_slave_rule1)", + "description": "TrustZone register - (ezh_ram0_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field384", + "offset_int": "0x384", + "reg_width": 32, + "name": "(ezh_ram0_slave_rule2)", + "description": "TrustZone register - (ezh_ram0_slave_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field388", + "offset_int": "0x388", + "reg_width": 32, + "name": "(ezh_ram0_slave_rule3)", + "description": "TrustZone register - (ezh_ram0_slave_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field38C", + "offset_int": "0x38c", + "reg_width": 32, + "name": "Quad/Octal SPI Slave Rule Register 0 (qospi1_slave_rule0)", + "description": "TrustZone register - Quad/Octal SPI Slave Rule Register 0 (qospi1_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field390", + "offset_int": "0x390", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 0 (qospi10_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 0 (qospi10_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field394", + "offset_int": "0x394", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 1 (qospi10_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 1 (qospi10_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field398", + "offset_int": "0x398", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 2 (qospi10_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 2 (qospi10_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field39C", + "offset_int": "0x39c", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 3 (qospi10_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 3 (qospi10_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3A0", + "offset_int": "0x3a0", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 0 (qospi11_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 0 (qospi11_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3A4", + "offset_int": "0x3a4", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 1 (qospi11_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 1 (qospi11_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3A8", + "offset_int": "0x3a8", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 2 (qospi11_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 2 (qospi11_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3AC", + "offset_int": "0x3ac", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 3 (qospi11_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 3 (qospi11_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3B0", + "offset_int": "0x3b0", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 0 (qospi12_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 0 (qospi12_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3B4", + "offset_int": "0x3b4", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 1 (qospi12_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 1 (qospi12_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3B8", + "offset_int": "0x3b8", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 2 (qospi12_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 2 (qospi12_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3BC", + "offset_int": "0x3bc", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 3 (qospi12_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 3 (qospi12_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3C0", + "offset_int": "0x3c0", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 0 (qospi13_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 0 (qospi13_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3C4", + "offset_int": "0x3c4", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 1 (qospi13_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 1 (qospi13_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3C8", + "offset_int": "0x3c8", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 2 (qospi13_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 2 (qospi13_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3CC", + "offset_int": "0x3cc", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 3 (qospi13_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 3 (qospi13_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3D0", + "offset_int": "0x3d0", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 0 (qospi14_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 0 (qospi14_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3D4", + "offset_int": "0x3d4", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 1 (qospi14_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 1 (qospi14_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3D8", + "offset_int": "0x3d8", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 2 (qospi14_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 2 (qospi14_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3DC", + "offset_int": "0x3dc", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 3 (qospi14_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 3 (qospi14_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3E0", + "offset_int": "0x3e0", + "reg_width": 32, + "name": "APB Bridge Slave Rule Register (apb_bridge_slave_rule0)", + "description": "TrustZone register - APB Bridge Slave Rule Register (apb_bridge_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3E4", + "offset_int": "0x3e4", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3E8", + "offset_int": "0x3e8", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3EC", + "offset_int": "0x3ec", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3F0", + "offset_int": "0x3f0", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3F4", + "offset_int": "0x3f4", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3F8", + "offset_int": "0x3f8", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3FC", + "offset_int": "0x3fc", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field400", + "offset_int": "0x400", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field404", + "offset_int": "0x404", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field408", + "offset_int": "0x408", + "reg_width": 32, + "name": "AIPS bridge 0 Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "description": "TrustZone register - AIPS bridge 0 Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field40C", + "offset_int": "0x40c", + "reg_width": 32, + "name": "AIPS bridge 0 Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "description": "TrustZone register - AIPS bridge 0 Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field410", + "offset_int": "0x410", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field414", + "offset_int": "0x414", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field418", + "offset_int": "0x418", + "reg_width": 32, + "name": "AIPS Bridge Slave Rule Register (aips_bridge_slave_rule0)", + "description": "TrustZone register - AIPS Bridge Slave Rule Register (aips_bridge_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field41C", + "offset_int": "0x41c", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field420", + "offset_int": "0x420", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field424", + "offset_int": "0x424", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field428", + "offset_int": "0x428", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 0 (security_ctrl_mem_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 0 (security_ctrl_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field42C", + "offset_int": "0x42c", + "reg_width": 32, + "name": "AHB Peripherals 3 Slave Rule Register 0 (ahb_periph3_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 3 Slave Rule Register 0 (ahb_periph3_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field430", + "offset_int": "0x430", + "reg_width": 32, + "name": "AHB Peripherals 3 Slave Rule Register 0 (ahb_periph3_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 3 Slave Rule Register 0 (ahb_periph3_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field434", + "offset_int": "0x434", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field438", + "offset_int": "0x438", + "reg_width": 32, + "name": "Secure GPIO Register 1 (sec_gp_reg1)", + "description": "TrustZone register - Secure GPIO Register 1 (sec_gp_reg1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field43C", + "offset_int": "0x43c", + "reg_width": 32, + "name": "Secure GPIO Register 2 (sec_gp_reg2)", + "description": "TrustZone register - Secure GPIO Register 2 (sec_gp_reg2)", + "default_value_int": "0xffffffff" + }, + { + "id": "field440", + "offset_int": "0x440", + "reg_width": 32, + "name": "Secure GPIO Register 3 (sec_gp_reg3)", + "description": "TrustZone register - Secure GPIO Register 3 (sec_gp_reg3)", + "default_value_int": "0xffffffff" + }, + { + "id": "field444", + "offset_int": "0x444", + "reg_width": 32, + "name": "Secure GPIO Register 4 (sec_gp_reg4)", + "description": "TrustZone register - Secure GPIO Register 4 (sec_gp_reg4)", + "default_value_int": "0xffffffff" + }, + { + "id": "field448", + "offset_int": "0x448", + "reg_width": 32, + "name": "Secure GPIO Register 5 (sec_gp_reg5)", + "description": "TrustZone register - Secure GPIO Register 5 (sec_gp_reg5)", + "default_value_int": "0xffffffff" + }, + { + "id": "field44C", + "offset_int": "0x44c", + "reg_width": 32, + "name": "Secure GPIO Register 6 (sec_gp_reg6)", + "description": "TrustZone register - Secure GPIO Register 6 (sec_gp_reg6)", + "default_value_int": "0xffffffff" + }, + { + "id": "field450", + "offset_int": "0x450", + "reg_width": 32, + "name": "Secure GPIO Register 7 (sec_gp_reg7)", + "description": "TrustZone register - Secure GPIO Register 7 (sec_gp_reg7)", + "default_value_int": "0xffffffff" + }, + { + "id": "field454", + "offset_int": "0x454", + "reg_width": 32, + "name": "Secure GPIO Register 8 for DSP (sec_gp_reg8)", + "description": "TrustZone register - Secure GPIO Register 8 for DSP (sec_gp_reg8)", + "default_value_int": "0xffffffff" + }, + { + "id": "field458", + "offset_int": "0x458", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0xaaaa" + }, + { + "id": "field45C", + "offset_int": "0x45c", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field460", + "offset_int": "0x460", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field464", + "offset_int": "0x464", + "reg_width": 32, + "name": "M33 Lock Control Register (m33_lock_reg)", + "description": "TrustZone register - M33 Lock Control Register (m33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field468", + "offset_int": "0x468", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field46C", + "offset_int": "0x46c", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field470", + "offset_int": "0x470", + "reg_width": 32, + "name": "Miscellaneous TZM settings (misc_tzm_settings)", + "description": "TrustZone register - Miscellaneous TZM settings (misc_tzm_settings)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt555s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt555s/database.yaml new file mode 100644 index 0000000..cb18346 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt555s/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt595s diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/database.yaml new file mode 100644 index 0000000..35bbcc1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/database.yaml @@ -0,0 +1,322 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + b0: {} +latest: b0 + +# General MCU information +info: + purpose: i.MX RT Crossover MCUs + spsdk_predecessor_name: rt5xx + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX-RT500 + memory_map: + flexspi0_ns: + start_int: "0x08000000" + size_int: "0x04000000" + external: true + flexspi0_s: + start_int: "0x18000000" + size_int: "0x04000000" + external: true + mirror_of: flexspi0_ns + flexspi1_ns: + start_int: "0x28000000" + size_int: "0x04000000" + external: true + flexspi1_s: + start_int: "0x38000000" + size_int: "0x04000000" + external: true + mirror_of: flexspi1_ns + sram: + start_int: "0x20080000" + size_int: "0x480000" + external: false + non_xip_type: int_ram + usb-ram: + start_int: "0x40140000" + size_int: "0x4000" + external: false + non_xip_type: int_ram + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0023 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: + grouped_registers: + - uid: otfad_kek_seed + name: OTFAD_KEK_SEED + width: 128 + reversed: True + config_as_hexstring: True + description: + "When OTP key store is used (USE_PUF = 0), this 128-bit user + programmed value is used to derive OTFAD_KEK.\n\nOTFAD_KEK[127:0] = + AES_ENCRYPT (OTP_MASTER_KEK, OTFAD_KEK_SEED[127:0])" + sub_regs: ["fuse108", "fuse109", "fuse110", "fuse111"] + - uid: otp_master_key + name: OTP_MASTER_KEY + width: 256 + config_as_hexstring: True + description: "Master Key used to derive different usage keys (HMAC_KEY, + ENC_IMAGE_KEY, SB2_KEK, OTFAD_KEK). \n- ENC_BOOT_HMAC_KEY[127:0] = + AES_ENCRYPT (OTP_MASTER_KEK, 0x00000000000000000000000000000000)\n- + ENC_BOOT_AES_KEY[256:0] = AES_ENCRYPT (OTP_MASTER_KEK, + 0x00000000000000000000000000000001) || AES_ENCRYPT (OTP_MASTER_KEK, + 0x00000000000000000000000000000002)\n- SB_KEK[256:0] = AES_ENCRYPT + (OTP_MASTER_KEK, 0x00000000000000000000000000000003) || AES_ENCRYPT + (OTP_MASTER_KEK, 0x00000000000000000000000000000004) OR if + SBKEK_SEED != 0 then SB_KEK[255:0] = AES_ENCRYPT (OTP_MASTER_KEK, + SBKEK_SEED[255:0])\n- OTFAD_KEK[127:0] = AES_ENCRYPT + (OTP_MASTER_KEK, OTFAD_KEK_SEED[127:0])" + sub_regs: + [ + "fuse112", + "fuse113", + "fuse114", + "fuse115", + "fuse116", + "fuse117", + "fuse118", + "fuse119", + ] + - uid: rkth + name: RKTH + width: 256 + reversed: True + config_as_hexstring: True + description: + "SHA256 hash digest of hash of four Root Of Trust Keys (modulus || + exponent).\nFor i in 0..3:\n Let M[i] = BE(Modulus i)\n Let + E[i] = BE(Exponent i)\n Let RKH[i] = SHA256( M[i] || E[i] )\n Let + RKTH = SHA256( RKH[0] || RKH[1] || RKH[2] || RKH[3] )\nNote: + Documentation update needed when using blhost due to endianness issue." + sub_regs: + [ + "fuse120", + "fuse121", + "fuse122", + "fuse123", + "fuse124", + "fuse125", + "fuse126", + "fuse127", + ] + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x0010_C000 + size: 0x1000 + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert1] + rot_type: "cert_block_1" + + # ======== DAT section ======== + dat: + socc: 0 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_ram: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZone + signed_ram: + image_type: SIGNED_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinRelocTable + - Mbi_MixinLoadAddress + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinCertBlockV1 + - Mbi_MixinHmacMandatory + - Mbi_MixinKeyStore + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + - Mbi_ExportMixinHmacKeyStoreFinalize + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinRelocTable + - Mbi_MixinLoadAddress + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + encrypted_signed_ram: + image_type: ENCRYPTED_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinRelocTable + - Mbi_MixinLoadAddress + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinCertBlockV1 + - Mbi_MixinHwKey + - Mbi_MixinKeyStore + - Mbi_MixinHmacMandatory + - Mbi_MixinCtrInitVector + - Mbi_ExportMixinAppTrustZoneCertBlockEncrypt + - Mbi_ExportMixinRsaSign + - Mbi_ExportMixinHmacKeyStoreFinalize + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZone + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinCertBlockV1 + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + plain: plain_ram + crc: crc_ram + signed: signed_ram + encrypted: encrypted_signed_ram + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== Bootable image section ======== + bootable_image: + mem_types: + flexspi_nor: + segments: + keyblob: 0x0000 + fcb: 0x0400 + image_version: 0x0600 + keystore: 0x0800 + mbi: 0x1000 + remap_align: 0x40000 # 256 KB + sd: + segments: + mbi: 0x1000 + emmc: + segments: + mbi: 0x1000 + recovery_spi_sb21: + segments: + sb21: 0x1000 + recovery_spi_mbi: + segments: + mbi: 0x1000 + # ======== Secure binary v2.1 section ======== + sb21: + keyblobs: true + supported_commands: + [ + erase, + load, + enable, + keywrap, + encrypt, + fill, + jump, + version_check, + keystore_to_nv, + keystore_from_nv, + programFuses, + ] + + # ======== Shadow registers section ======== + shadow_regs: + inverted_regs: + fuse95: fuse104 # DCFG_CC_SOCU -> DCFG_CC_SOCU_AP + computed_fields: + fuse95: # DCFG_CC_SOCU + fuse95-bit-31: comalg_dcfg_cc_socu_test_en # DEV_TEST_EN + fuse95-bits-0-7: comalg_dcfg_cc_socu_crc8 # CRC8 + fuse100: # DCFG_CC_SOCU_NS + fuse100-bits-0-7: comalg_dcfg_cc_socu_crc8 # CRC8 + + # ======== Trust Zone section ======== + tz: + reg_spec: tz.json + + # ======== OTFAD section ======== + otfad: + key_blob_rec_size: 64 + key_blob_max_cnt: 4 + key_blob_min_cnt: 4 + byte_swap: false + keyblob_byte_swap_cnt: 0 + sb_21_supported: True + has_kek_fuses: False + additional_template: [] + additional_template_text: "" + + fuses: + _no_verify: True + otp_master_key: __otp_master_key + otfad_kek_seed: __otfad_kek_seed + fuse106: + fuse106-bit-12: 1 + + # ======== Memory configuration ======== + memcfg: + peripherals: + flexspi_nor: + instances: [0, 1] + flexspi_nand: + instances: [0, 1] + sd: + instances: [0, 1] + emmc: + instances: [0, 1] + spi_nor: + reg_spec: ../../common/memcfg/opt_word_spi_nor_legacy.json + instances: [0, 1, 2, 3, 4, 5, 6, 7] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/fcb_flexspi_nor.json new file mode 100644 index 0000000..4fe6446 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/fcb_flexspi_nor.json @@ -0,0 +1,25599 @@ +{ + "cpu": "MIMXRT595S", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL ", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix ", + "default_value_int": "0x56010400" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3 ", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet ", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc. ", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command ", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration ", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details ", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details ", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal ", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details ", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH ", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1 ", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2 ", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1 ", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2 ", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command ", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands ", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field078-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps " + }, + { + "id": "field078-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells " + } + ] + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field07A-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps " + }, + { + "id": "field07A-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells " + } + ] + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31 ", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy ", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command ", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same ", + "default_value_int": "0x0" + }, + { + "id": "field1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " Data order (D0, D1, D2, D3) is swapped (D1,D0, D3, D2) ", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3 ", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command ", + "default_value_int": "0x0" + }, + { + "id": "field1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false ", + "default_value_int": "0x0" + }, + { + "id": "field1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution ", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size ", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "flashStateCtx", + "description": " Flash State Context ", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "reserve2_0", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "reserve2_1", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "reserve2_2", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "reserve2_3", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "reserve2_4", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "reserve2_5", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "reserve2_6", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "reserve2_7", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "reserve2_8", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "reserve2_9", + "description": " Reserved for future use ", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/fuses.json new file mode 100644 index 0000000..dc3ee69 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/fuses.json @@ -0,0 +1,3975 @@ +{ + "cpu": "MIMXRT595S", + "shadow_reg_base_addr_int": "0x40130000", + "groups": [ + { + "group": { + "name": "SHADOW_LOCK", + "description": "Fuses used to define read/write access permissions to shadows registers of Customer configured OTP words." + }, + "registers": [ + { + "id": "fuse8", + "name": "CUST_WR_RD_LOCK0", + "description": "Fuses used to define read/write access permissions to shadows registers of Customer configured OTP words. This is a redundant OTP word hence only 16 bits defined.", + "index_int": "0x0008", + "shadow_reg_offset_int": "0x0020", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1, + "id": "fuse8-bit-0", + "name": "DCFG_CC_SOCU_WR", + "description": "When set locks APB write access to DCFG_CC_SOCU and DCFG_CC_SOCU_AP shadow registers. (Fuse 256)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse8-bit-1", + "name": "DCFG_CC_SOCU_NS_WR", + "description": "When set locks APB write access to DCFG_CC_SOCU_NS shadow registers. (Fuse 257)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse8-bit-2", + "name": "OTFAD_CFG_WR_LOCK", + "description": "When set locks APB write access to OTFAD_CFG shadow register. (Fuse 258)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse8-bit-4", + "name": "KEY_SCRAMBLE_SEED_WR_LOCK", + "description": "When set locks APB write access to KEY_SCRAMBLE_SEED shadow register. (Fuse 260)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse8-bit-5", + "name": "KEY_SCRAMBLE_SEED_RD_LOCK", + "description": "When set locks APB read access to KEY_SCRAMBLE_SEED shadow register. (Fuse 261)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse8-bit-6", + "name": "OTFAD_KEK_SEED_WR_LOCK", + "description": "When set locks APB write access to OTFAD_KEK_SEED shadow registers. (Fuse 262)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse8-bit-8", + "name": "OTP_MASTER_KEY_WR_LOCK", + "description": "When set locks APB write access to OTP_MASTER_KEY shadow registers. (Fuse 264)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse8-bit-9", + "name": "SEC_BOOT_CFG5_WR_LOCK", + "description": "When set locks APB write access to SEC_BOOT_CFG5 shadow registers. (Fuse 265)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 6 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse9", + "name": "CUST_WR_RD_LOCK1", + "description": "Fuses used to define read/write access permissions to shadows registers of customer configured OTP words. This is a redundant OTP word hence only 16 bits defined.", + "index_int": "0x0009", + "shadow_reg_offset_int": "0x0024", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 4 + }, + { + "width": 1, + "id": "fuse9-bit-4", + "name": "CRC4_WR_LOCK", + "description": "When set locks APB write access to CRC4 shadow register. (Fuse 292)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-5", + "name": "CRC4_RD_LOCK", + "description": "When set locks APB read access to CRC4 shadow register. (Fuse 293)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-6", + "name": "CRC5_WR_LOCK", + "description": "When set locks APB write access to CRC5 shadow register. (Fuse 294)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-7", + "name": "CRC5_RD_LOCK", + "description": "When set locks APB read access to CRC5 shadow register. (Fuse 295)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-8", + "name": "CRC6_WR_LOCK", + "description": "When set locks APB write access to CRC6 shadow register. (Fuse 296)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-9", + "name": "CRC6_RD_LOCK", + "description": "When set locks APB read access to CRC6 shadow register. (Fuse 297)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-10", + "name": "CRC7_WR_LOCK", + "description": "When set locks APB write access to CRC7 shadow register. (Fuse 298)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-11", + "name": "CRC7_RD_LOCK", + "description": "When set locks APB read access to CRC7 shadow register. (Fuse 299)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-12", + "name": "BOOT_CFG0_WR_LOCK", + "description": "When set locks APB write access to BOOT_CFG0 and RKTH shadow register. (Fuse 300)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-13", + "name": "BOOT_CFG1_WR_LOCK", + "description": "When set locks APB write access to BOOT_CFG1 shadow register. (Fuse 301)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-14", + "name": "BOOT_CFG2_WR_LOCK", + "description": "When set locks APB write access to BOOT_CFG2 shadow register. (Fuse 302)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-15", + "name": "BOOT_CFG3_WR_LOCK", + "description": "When set locks APB write access to BOOT_CFG3 shadow register. (Fuse 303)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "DEBUG_CFG", + "description": "DEBUG_CFG group" + }, + "registers": [ + { + "id": "fuse95", + "name": "DCFG_CC_SOCU", + "description": "Debug Configuration word (tier-1 developer). Use DCFG_CC_SOCU_WR to write lock this OTP word.\nCombinations of PIN and DFLT bits and resulting restriction level:\n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product.\n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate.\n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected.\n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "index_int": "0x005F", + "shadow_reg_offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0001" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse95-bits-0-7", + "name": "CRC8", + "description": "CRC-8/ITU of upper 3 bytes of this register. Polynomial=0x07, initial value= 0x00, XorOut=0x55.", + "calculated": "CRC-8/ITU" + }, + { + "width": 1, + "id": "fuse95-bit-8", + "name": "DFLT_NIDEN", + "description": "Fixed state of Non-secure non-invasive debug enable, when PINNED_NIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-9", + "name": "DFLT_DBGEN", + "description": "Fixed state of Non-secure invasive debug enable, when PINNED_DBGEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-10", + "name": "DFLT_SPNIDEN", + "description": "Fixed state of secure non-invasive debug enable, when PINNED_SPNIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-11", + "name": "DFLT_SPIDEN", + "description": "Fixed state of secure invasive debug enable, when PINNED_SPIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-12", + "name": "DFLT_TAPEN", + "description": "Fixed state of Test Access Port enable, when PINNED_TAPEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-13", + "name": "DFLT_DSPEN", + "description": "Fixed state of DSP invasive debug enable, when PINNED_DSPEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-14", + "name": "DFLT_ISPCMDEN", + "description": "Fixed state of ISP boot flow commands enable, when PINNED_ISPCMDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-15", + "name": "DFLT_PMCMDEN", + "description": "Fixed state of permanent modification commands (set Fault analysis mode) enable, when PINNED_NIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-16", + "name": "PINNED_NIDEN", + "description": "Fix the state of Non-secure non-invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-17", + "name": "PINNED_DBGEN", + "description": "Fix the state of Non-secure invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-18", + "name": "PINNED_SPNIDEN", + "description": "Fix the state of secure non-invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-19", + "name": "PINNED_SPIDEN", + "description": "Fix the state of secure invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-20", + "name": "PINNED_TAPEN", + "description": "Fix the state of Test Access Port enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-21", + "name": "PINNED_DSPEN", + "description": "Fix the state of DSP invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-22", + "name": "PINNED_ISPCMDEN", + "description": "Fix the state of ISP boot flow commands enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-23", + "name": "PINNED_PMCMDEN", + "description": "Fix the state of permanent modification commands (set Fault analysis mode) enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-24", + "name": "FORCE_UUID_MATCH", + "description": "When set, debug authentication protocol only accepts \"Debug Credential\" certificates (DC) with matching UUID.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 6 + }, + { + "width": 1, + "id": "fuse95-bit-31", + "name": "DEV_TEST_EN", + "description": "Enable test mode.\nThis bit should be clear in OTP words. But during development to test different\nDCFG_CC_SOCU settings without programming OTP words, developers can write the\nvalues to shadow registers corresponding to OTP words (95 & 104) with this bit set.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + } + ] + }, + { + "id": "fuse100", + "name": "DCFG_CC_SOCU_NS", + "description": "Debug Configuration word (tier-2 developer). Use DCFG_CC_SOCU_NS_WR to write lock this OTP word.\nCombinations of PIN and DFLT bits and resulting restriction level:\n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product.\n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate.\n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected.\n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "index_int": "0x0064", + "shadow_reg_offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse100-bits-0-7", + "name": "CRC8", + "description": "CRC-8/ITU of upper 3 bytes of this register. Polynomial=0x07, initial value= 0x00, XorOut=0x55.", + "calculated": "CRC-8/ITU" + }, + { + "width": 1, + "id": "fuse100-bit-8", + "name": "DFLT_NIDEN", + "description": "Fixed state of Non-secure non-invasive debug enable, when PINNED_NIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-9", + "name": "DFLT_DBGEN", + "description": "Fixed state of Non-secure invasive debug enable, when PINNED_DBGEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-10", + "name": "DFLT_SPNIDEN", + "description": "Fixed state of secure non-invasive debug enable, when PINNED_SPNIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-11", + "name": "DFLT_SPIDEN", + "description": "Fixed state of secure invasive debug enable, when PINNED_SPIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-12", + "name": "DFLT_TAPEN", + "description": "Fixed state of Test Access Port enable, when PINNED_TAPEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-13", + "name": "DFLT_DSPEN", + "description": "Fixed state of DSP invasive debug enable, when PINNED_DSPEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-14", + "name": "DFLT_ISPCMDEN", + "description": "Fixed state of ISP boot flow commands enable, when PINNED_ISPCMDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-15", + "name": "DFLT_PMCMDEN", + "description": "Fixed state of permanent modification commands (set Fault analysis mode) enable, when PINNED_NIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-16", + "name": "PINNED_NIDEN", + "description": "Fix the state of Non-secure non-invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-17", + "name": "PINNED_DBGEN", + "description": "Fix the state of Non-secure invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-18", + "name": "PINNED_SPNIDEN", + "description": "Fix the state of secure non-invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-19", + "name": "PINNED_SPIDEN", + "description": "Fix the state of secure invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-20", + "name": "PINNED_TAPEN", + "description": "Fix the state of Test Access Port enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-21", + "name": "PINNED_DSPEN", + "description": "Fix the state of DSP invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-22", + "name": "PINNED_ISPCMDEN", + "description": "Fix the state of ISP boot flow commands enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-23", + "name": "PINNED_PMCMDEN", + "description": "Fix the state of permanent modification commands (set Fault analysis mode) enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-24", + "name": "FORCE_UUID_MATCH", + "description": "When set, debug authentication protocol only accepts \"Debug Credential\" certificates (DC) with matching UUID.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 6 + }, + { + "width": 1, + "id": "fuse100-bit-31", + "name": "DEV_TEST_EN", + "description": "Enable test mode.\nThis bit should be clear in OTP words. But during development to test different\nDCFG_CC_SOCU settings without programming OTP words, developers can write the\nvalues to shadow registers corresponding to OTP words (95 & 104) with this bit set.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + } + ] + }, + { + "id": "fuse104", + "name": "DCFG_CC_SOCU_AP", + "description": "Anti-pole (inverse) value of Debug Configuration word(DCFG_CC_SOCU). Use DCFG_CC_SOCU_WR to write lock this OTP word.", + "index_int": "0x0068", + "shadow_reg_offset_int": "0x01A0", + "individual_write_lock": "always_lock", + "calculated": { + "method": "inverse", + "src_register_id": "fuse95" + }, + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0001" + } + } + ] + }, + { + "group": { + "name": "BOOT_CFG", + "description": "BOOT_CFG group" + }, + "registers": [ + { + "id": "fuse96", + "name": "BOOT_CFG0", + "description": "Boot configuration word0. Shadow register is present for this word thus SW could access the register directly to read contents.", + "deprecated_names": [ + "BOOT_CFG[0]" + ], + "index_int": "0x0060", + "shadow_reg_offset_int": "0x0180", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse96-bits-0-3", + "name": "PRIMARY_BOOT_SRC", + "description": "Primary boot Source. (a.k.a. Master boot source)", + "values": [ + { + "name": "ISP_PIN_BOOT", + "value": 0, + "description": "ISP pins will determine boot source." + }, + { + "name": "QSPI_BOOT", + "value": 1, + "description": "Boot from Octal/Quad SPI flash device using FlexSpi channel A interface pins." + }, + { + "name": "SDHC0_BOOT", + "value": 2, + "description": "Boot from eMMC device or SD card connected to SDHC0 port." + }, + { + "name": "SDHC1_BOOT", + "value": 3, + "description": "Boot from eMMC device or SD card connected to SDHC1 port." + }, + { + "name": "SPI_SLV_BOOT", + "value": 4, + "description": "Boot using SPI slave interface using master boot mode." + }, + { + "name": "UART_BOOT", + "value": 6, + "description": "Boot using UART interface using master boot mode." + }, + { + "name": "SPI_FC_BOOT", + "value": 7, + "description": "Boot from 1-bit SPI flash device from FlexCom interface pins selected by REDUNDANT_SPI_PORT field. Only load-to-RAM images are supported in this mode." + }, + { + "name": "ISP_MODE", + "value": 9, + "description": "Always enter ISP mode. DEFAULT_ISP_MODE field will determine the ISP interface." + }, + { + "name": "QSPI_REC_BOOT", + "value": 12, + "description": "Boot from Octal/Quad SPI flash device using FlexSPI channel A interface pins. If image is not found check recovery boot using SPI-flash device through FlexComm." + }, + { + "name": "SDHC0_REC_BOOT", + "value": 13, + "description": "Boot from SDHC0 port device. If image is not found check recovery boot using SPI-flash device through FlexComm." + }, + { + "name": "SDHC1_REC_BOOT", + "value": 14, + "description": "Boot from SDHC1 port device. If image is not found check recovery boot using SPI-flash device through FlexComm." + } + ] + }, + { + "width": 3, + "id": "fuse96-bits-4-6", + "name": "DEFAULT_ISP_MODE", + "description": "When a valid image is not available to master boot, ROM switches to ISP mode for programming primary boot devices. This field determines the default ISP mode.", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto detect ISP mode. ROM monitors USB, UART, SPI and I2C interfaces for any activity." + }, + { + "name": "USB_HID_ISP", + "value": 1, + "description": "Support ISP command interface using USB HID class only." + }, + { + "name": "UART_ISP", + "value": 2, + "description": "Support ISP command interface on UART port only." + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "Support ISP command interface on SPI port only." + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "Support ISP command interface on I2C port only." + }, + { + "name": "DISABLE_ISP", + "value": 7, + "description": "Disable ISP fall through when proper image is not found on primary boot device." + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-7", + "name": "BOOT_CLK_SPEED", + "description": "Defines clock speeds during boot.", + "values": [ + { + "name": "NORMAL_CLK", + "value": 0, + "description": "Normal boot. All clocks are set to 48MHz using IRC48M, except USB block. USB block will use external XTAL clock." + }, + { + "name": "HISPEED_CLK", + "value": 1, + "description": "High-speed boot.\n o Core clock is set to 198MHz using main_pll with IRC48M as input\n o UART, I2C : 48MHz (IRC48M)\n o SPI, SDHC: 198MHz (main_pll)\n o USB: external XTAL\n o OSPI: Set to different speed using aux0_pll. Speed of OSPI interface is obtained from Boot Configuration Block present on OSPI-flash device.\n \u00b7 SDR: 30/50/60/72/80/90/100 MHz\n \u00b7 DDR: 30/50/60/72/80 MHz" + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-8", + "name": "RSA4K_EN", + "description": "Use 4096 bit RSA keys only for certificate validations. By default the ROM assume 2048-bit keys.", + "values": [ + { + "name": "RSA2K", + "value": 0, + "description": "Use RSA2K or higher key length operations to validate certificates, image and debug credentials." + }, + { + "name": "RSA4K", + "value": 1, + "description": "Use RSA4K operations to validate certificates, image and debug credentials." + } + ] + }, + { + "width": 2, + "id": "fuse96-bits-9-10", + "name": "WDT_WAIT", + "description": "Refresh time period for Watchdog timer. IF configured boot ROM starts watchdog timer for the specified refresh period. If the timer is not refreshed or halted SoC reset is issued. This feature is used for detecting denial of service attacks during secure boot.", + "values": [ + { + "name": "WDT_DISABLE", + "value": 0, + "description": "Watchdog timer is disabled." + }, + { + "name": "WDT_250_MS", + "value": 1, + "description": "Refresh timer is set to 250 milliseconds." + }, + { + "name": "WDT_500_MS", + "value": 2, + "description": "Refresh timer is set to 500 milliseconds." + }, + { + "name": "WDT_1000_MS", + "value": 3, + "description": "Refresh timer is set to 500 milliseconds." + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "fuse96-bits-13-14", + "name": "TZM_IMAGE_TYPE", + "description": "TZM_IMAGE_TYPE bit-field", + "values": [ + { + "name": "TZM_NORMAL", + "value": 0, + "description": "TrustZone-M mode is determined by the image header." + }, + { + "name": "TZM_DISABLE", + "value": 1, + "description": "Disable TrustZone-M features. ROM will always boot to a non-secure code and all TZ-M features are disabled." + }, + { + "name": "TZM_ENABLE", + "value": 2, + "description": "TrustZone-M features are enabled. ROM will always boot to secure code." + }, + { + "name": "TZM_PRESET", + "value": 3, + "description": "TrustZone-M features are enabled and setting are loaded from image header and locked before branching to user code." + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-15", + "name": "PSA_BSTATE_SKIP", + "description": "If set, ROM skips computation of boot state defined by PSA specification. As part of boot state computation ROM includes OTP words \n- Shadow register values of 95 to 104 \n- Fuse values of words 128 to 147.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-16", + "name": "PSA_BSTATE_INC_KEYS", + "description": "If set, boot state computation includes OTP shadow register values of words 106 to 127.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 3, + "id": "fuse96-bits-17-19", + "name": "REDUNDANT_SPI_PORT", + "description": "FlexComm port to use for redundant SPI flash boot.", + "values": [ + { + "name": "FC0", + "value": 0, + "description": "Use FlexCom0 pins P0_0 (SCK), P0_1 (MISO), P0_2 (MOSI), P0_3 (SEL)" + }, + { + "name": "FC1", + "value": 1, + "description": "Use FlexCom1 pins P0_7 (SCK), P0_8 (MISO), P0_9 (MOSI), P0_10 (SEL)" + }, + { + "name": "FC2", + "value": 2, + "description": "Use FlexCom2 pins P0_14 (SCK), P0_15 (MISO), P0_16 (MOSI), P0_17 (SEL)" + }, + { + "name": "FC3", + "value": 3, + "description": "Use FlexCom3 pins P0_21 (SCK), P0_22 (MISO), P0_23 (MOSI), P0_24 (SEL)" + }, + { + "name": "FC4", + "value": 4, + "description": "Use FlexCom4 pins P0_28 (SCK), P0_29 (MISO), P0_30 (MOSI), P0_31 (SEL)" + }, + { + "name": "FC5", + "value": 5, + "description": "Use FlexCom5 pins P1_3 (SCK), P1_4 (MISO), P1_5 (MOSI), P1_6 (SEL)" + }, + { + "name": "FC6", + "value": 6, + "description": "Use FlexCom6 pins P3_25 (SCK), P3_26 (MISO), P3_27 (MOSI), P3_28 (SEL)" + }, + { + "name": "FC7", + "value": 7, + "description": "Use FlexCom7 pins P4_0 (SCK), P4_1 (MISO), P4_2 (MOSI), P4_3 (SEL)" + } + ] + }, + { + "width": 2, + "id": "fuse96-bits-20-21", + "name": "SECURE_BOOT_EN", + "description": "Force secure image only.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Allow non-secure images with and without CRC. Used during development." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Secure boot is enabled. The images have to be signed and optionally AES-CTR encrypted using pre-shared key. ROM does signature checking first and then does decryption of authenticated image." + }, + { + "name": "ENABLED_2", + "value": 2, + "description": "Secure boot is enabled." + }, + { + "name": "ENABLED_3", + "value": 3, + "description": "Secure boot is enabled." + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-22", + "name": "DICE_INC_OTP", + "description": "Include non-field updatable OTP Fields in DICE computation. OTP values in shadow registers are used in computation for words 95, 96, 98, 99, 104, 120 - 127.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-23", + "name": "DICE_SKIP", + "description": "If set, ROM skips computation of Composite Device Identifier (CDI) defined in DICE specification. But ROM will continue to hide UDS source in OTP and PUF (index 15) before passing control to user code.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 8, + "id": "fuse96-bits-24-31", + "name": "BOOT_FAIL_PIN", + "description": "GPIO port and pin number to use for indicating boot failure. Boot ROM will drive this pin high before locking the chip on error conditions. Applications can use this pin to power cycle the system.\n[2:0] - Defines GPIO port\n[7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "fuse97", + "name": "BOOT_CFG1", + "description": "Boot configuration word specifying Quad/Octal-SPI flash devices settings.", + "deprecated_names": [ + "BOOT_CFG[1]" + ], + "index_int": "0x0061", + "shadow_reg_offset_int": "0x0184", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse97-bit-0", + "name": "QSPI_AUTO_PROBE_EN", + "description": "Octal/Quad SPI flash auto probe feature enable.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 3, + "id": "fuse97-bits-1-3", + "name": "QSPI_PROBE_TYPE", + "description": "Octal/Quad SPI flash probe type.", + "values": [ + { + "name": "QSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MICRON_OCTAL", + "value": 1, + "description": "Micron Octal FLASH" + }, + { + "name": "MACRONIX_OCTAL", + "value": 2, + "description": "Macronix Octal FLASH" + }, + { + "name": "ADESTO_OCTAL", + "value": 3, + "description": "Adesto Octal FLASH" + } + ] + }, + { + "width": 3, + "id": "fuse97-bits-4-6", + "name": "QSPI_FLASH_TYPE", + "description": "Define typical Serial NOR Flash types", + "values": [ + { + "name": "QSPI_ADDR_3B", + "value": 0, + "description": "Use 3byte (24-bit) address read (0x03) by default" + }, + { + "name": "QSPI_ADDR_4B", + "value": 1, + "description": "Use 4byte (32-bit) address read (0x13) by default" + }, + { + "name": "HYPER_1V8", + "value": 2, + "description": "HyperFlash 1V8" + }, + { + "name": "HYPER_3V3", + "value": 3, + "description": "HyperFlash 3V3" + }, + { + "name": "OSPI_DDR_MXIC", + "value": 4, + "description": "MXIC Octal DDR" + }, + { + "name": "OSPI_DDR_MICRON", + "value": 5, + "description": "Micron Octal DDR" + } + ] + }, + { + "width": 4, + "id": "fuse97-bits-7-10", + "name": "QSPI_DUMMY_CYCLES", + "description": "Octal/Quad SPI flash dummy cycles for read command." + }, + { + "width": 3, + "id": "fuse97-bits-11-13", + "name": "QSPI_FREQUENCY", + "description": "Octal/Quad SPI flash interface frequency.", + "values": [ + { + "name": "QSPI_60MHZ", + "value": 0, + "description": "60MHz" + }, + { + "name": "QSPI_80MHZ", + "value": 1, + "description": "80MHz" + }, + { + "name": "QSPI_90MHZ", + "value": 2, + "description": "90MHz" + }, + { + "name": "QSPI_100MHZ", + "value": 3, + "description": "100MHz" + }, + { + "name": "QSPI_120MHZ", + "value": 4, + "description": "120MHz" + }, + { + "name": "QSPI_133MHZ", + "value": 5, + "description": "133MHz" + }, + { + "name": "QSPI_166MHZ", + "value": 6, + "description": "166MHz" + }, + { + "name": "QSPI_200MHZ", + "value": 7, + "description": "200MHz" + } + ] + }, + { + "width": 1, + "id": "fuse97-bit-14", + "name": "QSPI_RESET_PIN_ENABLE", + "description": "Use QSPI_RESET_PIN to reset the flash device.", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "Octal/Quad SPI flash device reset pin is not connected or available." + }, + { + "name": "EN_RESET", + "value": 1, + "description": "Octal/Quad SPI flash device reset pin is connected to a GPIO (QSPI_RESET_PIN)." + } + ] + }, + { + "width": 3, + "id": "fuse97-bits-15-17", + "name": "QSPI_RESET_PIN_GPIO_PORT", + "description": "GPIO port and pin number to use for Octal/Quad SPI flash reset function.\nDefines GPIO port." + }, + { + "width": 5, + "id": "fuse97-bits-18-22", + "name": "QSPI_RESET_PIN_GPIO_PIN_NUM", + "description": "GPIO port and pin number to use for Octal/Quad SPI flash reset function.\nDefines GPIO pin number." + }, + { + "width": 2, + "id": "fuse97-bits-23-24", + "name": "QSPI_HOLD TIME", + "description": "Wait time before access to Serial Flash.", + "values": [ + { + "name": "WAIT_500_US", + "value": 0, + "description": "Wait for 500 micro seconds." + }, + { + "name": "WAIT_1_MS", + "value": 1, + "description": "Wait for 1 milliseconds." + }, + { + "name": "WAIT_3_MS", + "value": 2, + "description": "Wait for 3 milliseconds." + }, + { + "name": "WAIT_10_MS", + "value": 3, + "description": "Wait for 10 milliseconds." + } + ] + }, + { + "width": 4, + "id": "fuse97-bits-25-28", + "name": "QSPI_PWR_HOLD_TIME", + "description": "Delay after POR before accessing Quad/Octal-SPI flash devices in addition to delay defined by QSPI_HOLD TIME field.", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No delay" + }, + { + "name": "100US_DELAY", + "value": 1, + "description": "Waits additional 100 micro-seconds." + }, + { + "name": "500US_DELAY", + "value": 2, + "description": "Waits additional 500 micro-seconds." + }, + { + "name": "1MS_DELAY", + "value": 3, + "description": "Waits additional 1 milli-seconds." + }, + { + "name": "10MS_DELAY", + "value": 4, + "description": "Waits additional 10 milli-seconds." + }, + { + "name": "20MS_DELAY", + "value": 5, + "description": "Waits additional 20 milli-seconds." + }, + { + "name": "40MS_DELAY", + "value": 6, + "description": "Waits additional 40 milli-seconds." + }, + { + "name": "60MS_DELAY", + "value": 7, + "description": "Waits additional 60 milli-seconds." + }, + { + "name": "80MS_DELAY", + "value": 8, + "description": "Waits additional 80 milli-seconds." + }, + { + "name": "100MS_DELAY", + "value": 9, + "description": "Waits additional 100 milli-seconds." + }, + { + "name": "120MS_DELAY", + "value": 10, + "description": "Waits additional 120 milli-seconds." + }, + { + "name": "140MS_DELAY", + "value": 11, + "description": "Waits additional 140 milli-seconds." + }, + { + "name": "160MS_DELAY", + "value": 12, + "description": "Waits additional 160 milli-seconds." + }, + { + "name": "180MS_DELAY", + "value": 13, + "description": "Waits additional 180 milli-seconds." + }, + { + "name": "200MS_DELAY", + "value": 14, + "description": "Waits additional 200 milli-seconds." + }, + { + "name": "220MS_DELAY", + "value": 15, + "description": "Waits additional 220 milli-seconds." + } + ] + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse97-bit-31", + "name": "QSPI_ISP_AUTO_PROBE_EN", + "description": "Enable auto probing of Octal/Quad SPI flash device on SP mode entry. \nSet this bit when using secure update (receive-sb ISP command) feature with PUF keystore. So that ROM auto-detects the flash device and loads the PUF key store prior to receiving ISP commands.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + } + ] + }, + { + "id": "fuse98", + "name": "BOOT_CFG2", + "description": "Boot configuration word specifying settings for SD card and eMMC boot interface.", + "deprecated_names": [ + "BOOT_CFG[2]" + ], + "index_int": "0x0062", + "shadow_reg_offset_int": "0x0188", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse98-bit-0", + "name": "SDHC_DEVICE_TYPE", + "description": "Device type connected to SDHC port.", + "values": [ + { + "name": "eMMC_DEV", + "value": 0, + "description": "eMMC device" + }, + { + "name": "SD_DEV", + "value": 1, + "description": "SD card device" + } + ] + }, + { + "width": 2, + "id": "fuse98-bits-1-2", + "name": "SDHC_BUS_WIDTH", + "description": "Bus width of the device connected to SDHC.", + "values": [ + { + "name": "SD_1B_MMC_4B", + "value": 0, + "description": "For SD cards use 1-bit data bus. \nFor eMMC use 4-bit data bus." + }, + { + "name": "SD_4B_MMC_8B", + "value": 1, + "description": "For SD cards use 4-bit data bus. \nFor eMMC use 8-bit data bus." + }, + { + "name": "MMC_4B_DDR", + "value": 2, + "description": "For eMMC use 4-bit bus in DDR mode." + }, + { + "name": "MMC_8B_DDR", + "value": 3, + "description": "For eMMC use 8-bit bus in DDR mode." + } + ] + }, + { + "width": 2, + "id": "fuse98-bits-3-4", + "name": "SDHC_SPEED", + "description": "Speed ratings of eMMC devices and SD card devices.", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal speed for eMMC devices. SDR12 speeds for SD." + }, + { + "name": "HIGH", + "value": 1, + "description": "High speed for eMMC devices. SDR25 speeds for SD." + }, + { + "name": "SDR50", + "value": 2, + "description": "SDR50 speeds for SD card." + }, + { + "name": "SDR104", + "value": 3, + "description": "SDR104" + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-5", + "name": "SDHC_PWR_CYCLE_EN", + "description": "Enable SDHC power cycle via USDHC_RST pad.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-6", + "name": "SDHC0_PWR_POL", + "description": "Polarity of power enable signal for SDHC0 port.", + "values": [ + { + "name": "ACTIVE_HIGH", + "value": 0, + "description": "Active high signal." + }, + { + "name": "ACTIVE_LOW", + "value": 1, + "description": "Active low signal." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-7", + "name": "SDHC1_PWR_POL", + "description": "Polarity of power enable signal for SDHC1 port.", + "values": [ + { + "name": "ACTIVE_HIGH", + "value": 0, + "description": "Active high signal." + }, + { + "name": "ACTIVE_LOW", + "value": 1, + "description": "Active low signal." + } + ] + }, + { + "width": 2, + "id": "fuse98-bits-8-9", + "name": "SDHC_PWR_CYCLE_WAIT", + "description": "Wait time after powering down the SDHC devices.", + "values": [ + { + "name": "WAIT_20_MS", + "value": 0, + "description": "Wait 20 milliseconds." + }, + { + "name": "WAIT_10_MS", + "value": 1, + "description": "Wait 10 milliseconds." + }, + { + "name": "WAIT_05_MS", + "value": 2, + "description": "Wait 5 milliseconds." + }, + { + "name": "WAIT_2_5_MS", + "value": 3, + "description": "Wait 2.5 milliseconds." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-10", + "name": "SDHC_PWR_STABLE_WAIT", + "description": "Wait time for power to stabilize after enabling power to SDHC devices.", + "values": [ + { + "name": "WAIT_5_MS", + "value": 0, + "description": "Wait 5 milliseconds." + }, + { + "name": "WAIT_2_5_MS", + "value": 1, + "description": "Wait 2.5 milliseconds." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-11", + "name": "SDHC0_CARD_VOLTAGE", + "description": "SD Voltage selection for SDHC0 port.", + "values": [ + { + "name": "3V3", + "value": 0, + "description": "Uses 3v3 rail." + }, + { + "name": "1V8", + "value": 1, + "description": "Uses 1v8 rail." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-12", + "name": "SDHC1_CARD_VOLTAGE", + "description": "SD Voltage selection for SDHC1 port.", + "values": [ + { + "name": "3V3", + "value": 0, + "description": "Uses 3v3 rail." + }, + { + "name": "1V8", + "value": 1, + "description": "Uses 1v8 rail." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-13", + "name": "MMC_RESET_PRE_IDLE_STATE", + "description": "Reset the MMC to Pre-Idle state before starting boot mode", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-14", + "name": "SDHC_FASTBOOT_MODE", + "description": "Specifies if the boot mode is enabled in Extended CSD register of the eMMC device.", + "values": [ + { + "name": "NORMAL_MODE", + "value": 0, + "description": "eMMC operates in transfer mode after power-up." + }, + { + "name": "BOOT_MODE", + "value": 1, + "description": "eMMC operates in boot mode after power-up." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-15", + "name": "SDHC_FASTBOOT_ACK_EN", + "description": "Specifies if the eMMC device sends boot acknowledge pattern during boot operation.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-16", + "name": "SDHC_PAD_CTL_FREEZE", + "description": "When using SDHC interface in high speed modes, the auto pad compensation control logic could cause interference due to modifications in IO drive strength. Hence it is recommended to freeze the compensated value and enable auto compensation periodically in application code by putting the pad back to normal mode. When this field is set ROM freezes the auto compensation circuit during boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-17", + "name": "SDHC_PAD_CTL_FAST_FREEZE", + "description": "Same as SDHC_PAD_CTL_FREEZE, but in this mode the time taken for switching the compensation from Fast Freeze mode to Normal mode is considerably smaller than the delay incurred in switching from Freeze mode to Normal mode.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-18", + "name": "QSPI_PAD_CTL_FREEZE", + "description": "When using QSPI interface in high speed modes, the auto pad compensation control logic could cause interference due to modifications in IO drive strength. Hence it is recommended to freeze the compensated value and enable auto compensation periodically in application code by putting the pad back to normal mode. When this field is set ROM freezes the auto compensation circuit during boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-19", + "name": "QSPI_PAD_CTL_FAST_FREEZE", + "description": "Same as QSPI_PAD_CTL_FREEZE, but in this mode the time taken for switching the compensation from Fast Freeze mode to Normal mode is considerably smaller than the delay incurred in switching from Freeze mode to Normal mode.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 8 + }, + { + "width": 4, + "id": "fuse98-bits-28-31", + "name": "QSPI_IMAGE_SIZE", + "description": "Any offset in memory mapped FlexSPI area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. QSPI_IMAGE_OFFSET field specifies the offset location of second image. QSPI_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped.", + "values": [ + { + "name": "SIZE_OFFSET", + "value": 0, + "description": "Size of the remapped area (aka second half) is same as first half. It is determined by QSPI_IMAGE_OFFSET Field. \n Remap size = QSPI_IMAGE_OFFSET * 256KByte;" + }, + { + "name": "SIZE_1MB", + "value": 1, + "description": "Size of remapped area is 1MByte." + }, + { + "name": "SIZE_2MB", + "value": 2, + "description": "Size of remapped area is 2MByte." + }, + { + "name": "SIZE_3MB", + "value": 3, + "description": "Size of remapped area is 3MByte." + }, + { + "name": "SIZE_4MB", + "value": 4, + "description": "Size of remapped area is 4MByte." + }, + { + "name": "SIZE_5MB", + "value": 5, + "description": "Size of remapped area is 5MByte." + }, + { + "name": "SIZE_6MB", + "value": 6, + "description": "Size of remapped area is 6MByte." + }, + { + "name": "SIZE_7MB", + "value": 7, + "description": "Size of remapped area is 7MByte." + }, + { + "name": "SIZE_8MB", + "value": 8, + "description": "Size of remapped area is 8MByte." + }, + { + "name": "SIZE_9MB", + "value": 9, + "description": "Size of remapped area is 9MByte." + }, + { + "name": "SIZE_10MB", + "value": 10, + "description": "Size of remapped area is 10MByte." + }, + { + "name": "SIZE_11MB", + "value": 11, + "description": "Size of remapped area is 11MByte." + }, + { + "name": "SIZE_12MB", + "value": 12, + "description": "Size of remapped area is 12MByte." + }, + { + "name": "SIZE_256KB", + "value": 13, + "description": "Size of remapped area is 256KByte." + }, + { + "name": "SIZE_512KB", + "value": 14, + "description": "Size of remapped area is 512KByte." + }, + { + "name": "SIZE_768KB", + "value": 15, + "description": "Size of remapped area is 768KByte." + } + ] + } + ] + }, + { + "id": "fuse99", + "name": "BOOT_CFG3", + "description": "Boot configuration word specifying delay lines settings for SDHC and QSPI interfaces.", + "deprecated_names": [ + "BOOT_CFG[3]" + ], + "index_int": "0x0063", + "shadow_reg_offset_int": "0x018C", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x8000" + }, + "bitfields": [ + { + "width": 7, + "id": "fuse99-bits-0-6", + "name": "QSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for Flash read sampling via DQS (either internal loopback or external DQS)" + }, + { + "width": 1, + "id": "fuse99-bit-7", + "name": "SDHC_DLL_TUNING_OVERRIDE_ENABLE", + "description": "SDHC_DLL_TUNING_OVERRIDE_ENABLE bit-field", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Default\uff1a DLL delay tuning start 10, DLL delay tuning step 2 ( this config can cover most of user cases.)" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override by SDHC_DLL_SETTING" + } + ] + }, + { + "width": 8, + "id": "fuse99-bits-8-15", + "name": "SDHC_DLL_TUNING_START", + "description": "DLL delay tuning start." + }, + { + "width": 3, + "id": "fuse99-bits-16-18", + "name": "SDHC_DLL_TUNING_STEP", + "description": "DLL delay tuning step." + }, + { + "width": 3, + "id": "fuse99-bits-19-21", + "name": "USB_PLL_DIV_SEL", + "description": "USB PLL divider value. Used for configuring USB PLL during USB ISP and DFU boot modes. The value corresponds to the PLL_DIV_SEL field of the USBPHY_PLL_SIC register." + }, + { + "width": 10, + "id": "fuse99-bits-22-31", + "name": "QSPI_IMAGE_OFFSET", + "description": "Any offset within memory mapped FlexSPI area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which can be programmed at offset 0 or higher offset. QSPI_IMAGE_OFFSET field specifies the offset location of second image. QSPI_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped. \nIf this field is left blank boot ROM assumes that application intends to not use dual image boot feature. The physical flash offset is computed as below:\n physical offset = QSPI_IMAGE_OFFSET * 256KByte;" + } + ] + } + ] + }, + { + "group": { + "name": "SECURITY_EPOCH", + "description": "OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different lifecycle stages of the device." + }, + "registers": [ + { + "id": "fuse101", + "name": "SEC_BOOT_CFG5", + "description": "Boot configuration word5. \n- This word is set in redundant mode. Thus individual bits can be programmed separately at different lifecycle stages of the device.", + "deprecated_names": [ + "SEC_BOOT_CFG[5]" + ], + "index_int": "0x0065", + "shadow_reg_offset_int": "0x0194", + "individual_write_lock": "user", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse101-bits-0-3", + "name": "REVOKE_ROOTKEY", + "description": "Revoke up to 4 root keys. When a bit is set corresponding root key is revoked." + }, + { + "width": 1, + "id": "fuse101-bit-4", + "name": "FA_MODE_EN", + "description": "Enable Fault Analysis mode.\n- When set ROM checks and erases customer sensitive assets (AES keys or key codes) stored in IFR/OTP. \n- Issues zeroized command to PUF (disables key decoding until POR)\n- Blocks all HW routed OTP keys and set lock bits on those registers\n- Enables all debug ports and waits in loop for tester.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 2, + "id": "fuse101-bits-5-6", + "name": "ENABLE_CRC_CHECK", + "description": "Enable CRC checking of OTP words.", + "values": [ + { + "name": "CRC_DISABLE", + "value": 0, + "description": "CRC checking of OTP words is disabled." + }, + { + "name": "CRC_ENABLE", + "value": 1, + "description": "CRC check of all OTP words is enabled." + }, + { + "name": "CRC_NXPONLY", + "value": 2, + "description": "CRC check is enabled only for NXP programmed OTP words." + }, + { + "name": "CRC_ENABLE2", + "value": 3, + "description": "CRC check of all OTP words is enabled." + } + ] + }, + { + "width": 1, + "id": "fuse101-bit-7", + "name": "USE_PUF", + "description": "Use PUF to store AES keys and UDS.", + "values": [ + { + "name": "KEY_IN_OTP", + "value": 0, + "description": "AES keys and UDS are read from OTP." + }, + { + "name": "KEY_IN_PUF", + "value": 1, + "description": "AES keys and UDS are read from PUF." + } + ] + }, + { + "width": 1, + "id": "fuse101-bit-8", + "name": "PUF_BLOCK_ENROLL", + "description": "Block further enrollment of PUF block. When this bit is set ROM blocks generation of new activation codes.", + "values": [ + { + "name": "ENROLL_EN", + "value": 0, + "description": "Enable generation of new activation code." + }, + { + "name": "ENROLL_DIS", + "value": 1, + "description": "Disable generation of new activation code." + } + ] + }, + { + "width": 1, + "id": "fuse101-bit-9", + "name": "PUF_BLOCK_SET_KEY", + "description": "Block further enrollment of PUF block. When this bit is set ROM blocks generation of new key codes.", + "values": [ + { + "name": "KEY_GEN_EN", + "value": 0, + "description": "Enable generation of new key codes." + }, + { + "name": "KEY_GEN_DIS", + "value": 1, + "description": "Disable generation of new key codes." + } + ] + }, + { + "width": 6 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse102", + "name": "REVOKE_IMG_KEY", + "description": "Image keys revocation identifier.", + "index_int": "0x0066", + "shadow_reg_offset_int": "0x0198", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse102-bits-0-15", + "name": "REVOKE_IMG_KEY", + "description": "To implement anti-rollback feature, the image key certificate should be revoked using this field. The in-field FW update process should blow the least unblown bit. During image key certificate validation this field is compare with the certificate content (upper 2 bytes of serial number field in X.509 certificate)." + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse103", + "name": "SEC_BOOT_CFG7", + "description": "Boot configuration word7. \n- This word is set in redundant mode. Thus individual bits can be programmed separately at different lifecycle stages of the device.", + "deprecated_names": [ + "SEC_BOOT_CFG[7]" + ], + "index_int": "0x0067", + "shadow_reg_offset_int": "0x019C", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse103-bits-0-15", + "name": "DAP_VENDOR_USAGE", + "description": "Lower 16-bits of Vendor Usage field in Debug Credentials defined in NXP's Debug Authentication Protocol specifications Version 1.0." + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "USB_CFG", + "description": "USB_CFG group" + }, + "registers": [ + { + "id": "fuse105", + "name": "USB_ID", + "description": "Override default USB ID's used by ROM during USB master boot and ISP modes.", + "index_int": "0x0069", + "individual_write_lock": "always_lock", + "bitfields": [ + { + "width": 16, + "id": "fuse105-bits-0-15", + "name": "USB_VID", + "description": "USB vendor ID." + }, + { + "width": 16, + "id": "fuse105-bits-16-31", + "name": "USB_PID", + "description": "USB product ID." + } + ] + } + ] + }, + { + "group": { + "name": "OTFAD_CFG", + "description": "OTFAD_CFG group" + }, + "registers": [ + { + "id": "fuse106", + "name": "OTFAD_CFG", + "description": "Configuration word to control OTFAD key blob loading during boot process.", + "index_int": "0x006A", + "shadow_reg_offset_int": "0x01A8", + "individual_write_lock": "user", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0004" + }, + "bitfields": [ + { + "width": 12 + }, + { + "width": 1, + "id": "fuse106-bit-12", + "name": "OTFAD_ENABLE", + "description": "When this field is set, it indicates to ROM that OTFAD feature is enabled and should initialize the OTFAD engine before accessing the memory mapped QSPI flash buffer area.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse106-bit-13", + "name": "KEYBLOB_RESTRICT_REG", + "description": "ROM after loading OTFAD registers restricts read access before jumping to user code. Only CTR registers are writable in this mode.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 2 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "KEY_STORE", + "description": "KEY_STORE group" + }, + "registers": [ + { + "id": "fuse107", + "name": "KEY_SCRAMBLE_SEED", + "description": "Key scramble data used as input to scramble master key stored in OTP.", + "index_int": "0x006B", + "shadow_reg_offset_int": "0x01AC", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0010", + "read_lock_int": "0x0020" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse107-bits-0-31", + "name": "SCRAMBLE_INPUT", + "description": "32-bit random value programmed by user which will be used as one of the two inputs to scramble OTP_MASTER_KEY key." + } + ] + }, + { + "id": "fuse108", + "name": "OTFAD_KEK_SEED_31_0", + "description": "When OTP key store is used (USE_PUF = 0), this 128-bit user programmed value is used to derive OTFAD_KEK.\n\nOTFAD_KEK[127:0] = AES_ENCRYPT (OTP_MASTER_KEY, OTFAD_KEK_SEED[127:0]);", + "index_int": "0x006C", + "shadow_reg_offset_int": "0x01B0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0040" + } + }, + { + "id": "fuse109", + "name": "OTFAD_KEK_SEED_63_32", + "description": "OTFAD_KEK_SEED_63_32 register", + "index_int": "0x006D", + "shadow_reg_offset_int": "0x01B4", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0040" + } + }, + { + "id": "fuse110", + "name": "OTFAD_KEK_SEED_95_64", + "description": "OTFAD_KEK_SEED_95_64 register", + "index_int": "0x006E", + "shadow_reg_offset_int": "0x01B8", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0040" + } + }, + { + "id": "fuse111", + "name": "OTFAD_KEK_SEED_127_96", + "description": "OTFAD_KEK_SEED_127_96 register", + "index_int": "0x006F", + "shadow_reg_offset_int": "0x01BC", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0040" + } + }, + { + "id": "fuse112", + "name": "OTP_MASTER_KEY[31:0]", + "description": "Master Key used to derive different usage keys (HMAC_KEY, ENC_IMAGE_KEY, SB2_KEK, OTFAD_KEK). \n\n- ENC_BOOT_HMAC_KEY[127:0] = AES_ENCRYPT (OTP_MASTER_KEY, 0x00000000000000000000000000000000);\n- ENC_BOOT_AES_KEY[255:0] = AES_ENCRYPT (OTP_MASTER_KEY, 0x00000000000000000000000000000001) || AES_ENCRYPT (OTP_MASTER_KEY, 0x00000000000000000000000000000002);\n- SB_KEK[255:0] = AES_ENCRYPT (OTP_MASTER_KEY, 0x00000000000000000000000000000003) || AES_ENCRYPT (OTP_MASTER_KEY, 0x00000000000000000000000000000004); \n- OTFAD_KEK[127:0] = AES_ENCRYPT (OTP_MASTER_KEY, OTFAD_KEK_SEED[127:0]);", + "index_int": "0x0070", + "shadow_reg_offset_int": "0x01C0", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse113", + "name": "OTP_MASTER_KEY[63:32]", + "description": "OTP_MASTER_KEY[63:32] register", + "index_int": "0x0071", + "shadow_reg_offset_int": "0x01C4", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse114", + "name": "OTP_MASTER_KEY[95:64]", + "description": "OTP_MASTER_KEY[95:64] register", + "index_int": "0x0072", + "shadow_reg_offset_int": "0x01C8", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse115", + "name": "OTP_MASTER_KEY[127:96]", + "description": "OTP_MASTER_KEY[127:96] register", + "index_int": "0x0073", + "shadow_reg_offset_int": "0x01CC", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse116", + "name": "OTP_MASTER_KEY[159:128]", + "description": "OTP_MASTER_KEY[159:128] register", + "index_int": "0x0074", + "shadow_reg_offset_int": "0x01D0", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse117", + "name": "OTP_MASTER_KEY[191:160]", + "description": "OTP_MASTER_KEY[191:160] register", + "index_int": "0x0075", + "shadow_reg_offset_int": "0x01D4", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse118", + "name": "OTP_MASTER_KEY[223:192]", + "description": "OTP_MASTER_KEY[223:192] register", + "index_int": "0x0076", + "shadow_reg_offset_int": "0x01D8", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse119", + "name": "OTP_MASTER_KEY[255:224]", + "description": "OTP_MASTER_KEY[255:224] register", + "index_int": "0x0077", + "shadow_reg_offset_int": "0x01DC", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse120", + "name": "RKTH_255_224", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys (modulus || exponent).\nFor i in 0..3:\n Let M[i] = BE(Modulus i)\n Let E[i] = BE(Exponent i)\n Let RKH[i] = SHA256( M[i] || E[i] )\n Let RKTH = SHA256( RKH[0] || RKH[1] || RKH[2] || RKH[3] )\nNote: Documentation update needed when using blhost due to endianness issue.", + "index_int": "0x0078", + "shadow_reg_offset_int": "0x01E0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse121", + "name": "RKTH_223_192", + "description": "RKTH_223_192 register", + "index_int": "0x0079", + "shadow_reg_offset_int": "0x01E4", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse122", + "name": "RKTH_191_160", + "description": "RKTH_191_160 register", + "index_int": "0x007A", + "shadow_reg_offset_int": "0x01E8", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse123", + "name": "RKTH_159_128", + "description": "RKTH_159_128 register", + "index_int": "0x007B", + "shadow_reg_offset_int": "0x01EC", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse124", + "name": "RKTH_127_96", + "description": "RKTH_127_96 register", + "index_int": "0x007C", + "shadow_reg_offset_int": "0x01F0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse125", + "name": "RKTH_95_64", + "description": "RKTH_95_64 register", + "index_int": "0x007D", + "shadow_reg_offset_int": "0x01F4", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse126", + "name": "RKTH_63_32", + "description": "RKTH_63_32 register", + "index_int": "0x007E", + "shadow_reg_offset_int": "0x01F8", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse127", + "name": "RKTH_31_0", + "description": "RKTH_31_0 register", + "index_int": "0x007F", + "shadow_reg_offset_int": "0x01FC", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + } + ] + }, + { + "group": { + "name": "NT_FW_VERSION", + "description": "NT_FW_VERSION group" + }, + "registers": [ + { + "id": "fuse128", + "name": "NT_FW_VER_15_0", + "description": "Non-trusted firmware version counter (0 - 255). OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device.", + "index_int": "0x0080", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse128-bits-0-15", + "name": "NT_FW_VER_15_0", + "description": "Non-trusted firmware version counter (0 - 255). OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device." + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse129", + "name": "NT_FW_VER_31_16", + "description": "NT_FW_VER_31_16 register", + "index_int": "0x0081", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse129-bits-0-15", + "name": "NT_FW_VER_31_16", + "description": "NT_FW_VER_31_16 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse130", + "name": "NT_FW_VER_47_32", + "description": "NT_FW_VER_47_32 register", + "index_int": "0x0082", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse130-bits-0-15", + "name": "NT_FW_VER_47_32", + "description": "NT_FW_VER_47_32 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse131", + "name": "NT_FW_VER_63_48", + "description": "NT_FW_VER_63_48 register", + "index_int": "0x0083", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse131-bits-0-15", + "name": "NT_FW_VER_63_48", + "description": "NT_FW_VER_63_48 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse132", + "name": "NT_FW_VER_79_64", + "description": "NT_FW_VER_79_64 register", + "index_int": "0x0084", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse132-bits-0-15", + "name": "NT_FW_VER_79_64", + "description": "NT_FW_VER_79_64 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse133", + "name": "NT_FW_VER_95_80", + "description": "NT_FW_VER_95_80 register", + "index_int": "0x0085", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse133-bits-0-15", + "name": "NT_FW_VER_95_80", + "description": "NT_FW_VER_95_80 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse134", + "name": "NT_FW_VER_111_96", + "description": "NT_FW_VER_111_96 register", + "index_int": "0x0086", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse134-bits-0-15", + "name": "NT_FW_VER_111_96", + "description": "NT_FW_VER_111_96 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse135", + "name": "NT_FW_VER_127_112", + "description": "NT_FW_VER_127_112 register", + "index_int": "0x0087", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse135-bits-0-15", + "name": "NT_FW_VER_127_112", + "description": "NT_FW_VER_127_112 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse136", + "name": "NT_FW_VER_143_128", + "description": "NT_FW_VER_143_128 register", + "index_int": "0x0088", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse136-bits-0-15", + "name": "NT_FW_VER_143_128", + "description": "NT_FW_VER_143_128 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse137", + "name": "NT_FW_VER_159_144", + "description": "NT_FW_VER_159_144 register", + "index_int": "0x0089", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse137-bits-0-15", + "name": "NT_FW_VER_159_144", + "description": "NT_FW_VER_159_144 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse138", + "name": "NT_FW_VER_175_160", + "description": "NT_FW_VER_175_160 register", + "index_int": "0x008A", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse138-bits-0-15", + "name": "NT_FW_VER_175_160", + "description": "NT_FW_VER_175_160 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse139", + "name": "NT_FW_VER_191_176", + "description": "NT_FW_VER_191_176 register", + "index_int": "0x008B", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse139-bits-0-15", + "name": "NT_FW_VER_191_176", + "description": "NT_FW_VER_191_176 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse140", + "name": "NT_FW_VER_207_192", + "description": "NT_FW_VER_207_192 register", + "index_int": "0x008C", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse140-bits-0-15", + "name": "NT_FW_VER_207_192", + "description": "NT_FW_VER_207_192 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse141", + "name": "NT_FW_VER_223_208", + "description": "NT_FW_VER_223_208 register", + "index_int": "0x008D", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse141-bits-0-15", + "name": "NT_FW_VER_223_208", + "description": "NT_FW_VER_223_208 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse142", + "name": "NT_FW_VER_239_224", + "description": "NT_FW_VER_239_224 register", + "index_int": "0x008E", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse142-bits-0-15", + "name": "NT_FW_VER_239_224", + "description": "NT_FW_VER_239_224 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse143", + "name": "NT_FW_VER_255_240", + "description": "NT_FW_VER_255_240 register", + "index_int": "0x008F", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse143-bits-0-15", + "name": "NT_FW_VER_255_240", + "description": "NT_FW_VER_255_240 register" + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "TZ_FW_VERSION", + "description": "TZ_FW_VERSION group" + }, + "registers": [ + { + "id": "fuse144", + "name": "TZ_FW_VER_15_0", + "description": "Trusted firmware version counter (0 - 63). OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device.", + "index_int": "0x0090", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse144-bits-0-15", + "name": "TZ_FW_VER_15_0", + "description": "Trusted firmware version counter (0 - 63). OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device." + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse145", + "name": "TZ_FW_VER_31_16", + "description": "TZ_FW_VER_31_16 register", + "index_int": "0x0091", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse145-bits-0-15", + "name": "TZ_FW_VER_31_16", + "description": "TZ_FW_VER_31_16 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse146", + "name": "TZ_FW_VER_47_32", + "description": "TZ_FW_VER_47_32 register", + "index_int": "0x0092", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse146-bits-0-15", + "name": "TZ_FW_VER_47_32", + "description": "TZ_FW_VER_47_32 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse147", + "name": "TZ_FW_VER_63_48", + "description": "TZ_FW_VER_63_48 register", + "index_int": "0x0093", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse147-bits-0-15", + "name": "TZ_FW_VER_63_48", + "description": "TZ_FW_VER_63_48 register" + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "USER_DATA", + "description": "USER_DATA group" + }, + "registers": [ + { + "id": "fuse148", + "name": "USER_RED_0", + "description": "Customer defined data.OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device.", + "index_int": "0x0094", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse148-bits-0-15", + "name": "USER_RED_0", + "description": "Customer defined data.OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device." + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse149", + "name": "USER_RED_1", + "description": "USER_RED_1 register", + "index_int": "0x0095", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse149-bits-0-15", + "name": "USER_RED_1", + "description": "USER_RED_1 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse150", + "name": "USER_RED_2", + "description": "USER_RED_2 register", + "index_int": "0x0096", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse150-bits-0-15", + "name": "USER_RED_2", + "description": "USER_RED_2 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse151", + "name": "USER_RED_3", + "description": "USER_RED_3 register", + "index_int": "0x0097", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse151-bits-0-15", + "name": "USER_RED_3", + "description": "USER_RED_3 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse152", + "name": "USER_ECC_0", + "description": "Customer defined data.OTP words in this block are ECC fuse words. Thus all bits in these words can be programmed at one shot.", + "index_int": "0x0098", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse153", + "name": "USER_ECC_1", + "description": "USER_ECC_1 register", + "index_int": "0x0099", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse154", + "name": "USER_ECC_2", + "description": "USER_ECC_2 register", + "index_int": "0x009A", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse155", + "name": "USER_ECC_3", + "description": "USER_ECC_3 register", + "index_int": "0x009B", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse156", + "name": "USER_ECC_4", + "description": "USER_ECC_4 register", + "index_int": "0x009C", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse157", + "name": "USER_ECC_5", + "description": "USER_ECC_5 register", + "index_int": "0x009D", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse158", + "name": "USER_ECC_6", + "description": "USER_ECC_6 register", + "index_int": "0x009E", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse159", + "name": "USER_ECC_7", + "description": "USER_ECC_7 register", + "index_int": "0x009F", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK1", + "description": "USER_BANK1 group" + }, + "registers": [ + { + "id": "fuse392", + "name": "USER_BANK1_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x0188", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse393", + "name": "USER_BANK1_1", + "description": "USER_BANK1_1 register", + "index_int": "0x0189", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse394", + "name": "USER_BANK1_2", + "description": "USER_BANK1_2 register", + "index_int": "0x018A", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse395", + "name": "USER_BANK1_3", + "description": "USER_BANK1_3 register", + "index_int": "0x018B", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse396", + "name": "USER_BANK1_4", + "description": "USER_BANK1_4 register", + "index_int": "0x018C", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse397", + "name": "USER_BANK1_5", + "description": "USER_BANK1_5 register", + "index_int": "0x018D", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse398", + "name": "USER_BANK1_6", + "description": "USER_BANK1_6 register", + "index_int": "0x018E", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse399", + "name": "USER_BANK1_7", + "description": "USER_BANK1_7 register", + "index_int": "0x018F", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK2", + "description": "USER_BANK2 group" + }, + "registers": [ + { + "id": "fuse400", + "name": "USER_BANK2_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x0190", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse401", + "name": "USER_BANK2_1", + "description": "USER_BANK2_1 register", + "index_int": "0x0191", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse402", + "name": "USER_BANK2_2", + "description": "USER_BANK2_2 register", + "index_int": "0x0192", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse403", + "name": "USER_BANK2_3", + "description": "USER_BANK2_3 register", + "index_int": "0x0193", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse404", + "name": "USER_BANK2_4", + "description": "USER_BANK2_4 register", + "index_int": "0x0194", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse405", + "name": "USER_BANK2_5", + "description": "USER_BANK2_5 register", + "index_int": "0x0195", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse406", + "name": "USER_BANK2_6", + "description": "USER_BANK2_6 register", + "index_int": "0x0196", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse407", + "name": "USER_BANK2_7", + "description": "USER_BANK2_7 register", + "index_int": "0x0197", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK3", + "description": "USER_BANK3 group" + }, + "registers": [ + { + "id": "fuse408", + "name": "USER_BANK3_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x0198", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse409", + "name": "USER_BANK3_1", + "description": "USER_BANK3_1 register", + "index_int": "0x0199", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse410", + "name": "USER_BANK3_2", + "description": "USER_BANK3_2 register", + "index_int": "0x019A", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse411", + "name": "USER_BANK3_3", + "description": "USER_BANK3_3 register", + "index_int": "0x019B", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse412", + "name": "USER_BANK3_4", + "description": "USER_BANK3_4 register", + "index_int": "0x019C", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse413", + "name": "USER_BANK3_5", + "description": "USER_BANK3_5 register", + "index_int": "0x019D", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse414", + "name": "USER_BANK3_6", + "description": "USER_BANK3_6 register", + "index_int": "0x019E", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse415", + "name": "USER_BANK3_7", + "description": "USER_BANK3_7 register", + "index_int": "0x019F", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK4", + "description": "USER_BANK4 group" + }, + "registers": [ + { + "id": "fuse416", + "name": "USER_BANK4_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x01A0", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse417", + "name": "USER_BANK4_1", + "description": "USER_BANK4_1 register", + "index_int": "0x01A1", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse418", + "name": "USER_BANK4_2", + "description": "USER_BANK4_2 register", + "index_int": "0x01A2", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse419", + "name": "USER_BANK4_3", + "description": "USER_BANK4_3 register", + "index_int": "0x01A3", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse420", + "name": "USER_BANK4_4", + "description": "USER_BANK4_4 register", + "index_int": "0x01A4", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse421", + "name": "USER_BANK4_5", + "description": "USER_BANK4_5 register", + "index_int": "0x01A5", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse422", + "name": "USER_BANK4_6", + "description": "USER_BANK4_6 register", + "index_int": "0x01A6", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse423", + "name": "USER_BANK4_7", + "description": "USER_BANK4_7 register", + "index_int": "0x01A7", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK5", + "description": "USER_BANK5 group" + }, + "registers": [ + { + "id": "fuse424", + "name": "USER_BANK5_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x01A8", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse425", + "name": "USER_BANK5_1", + "description": "USER_BANK5_1 register", + "index_int": "0x01A9", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse426", + "name": "USER_BANK5_2", + "description": "USER_BANK5_2 register", + "index_int": "0x01AA", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse427", + "name": "USER_BANK5_3", + "description": "USER_BANK5_3 register", + "index_int": "0x01AB", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse428", + "name": "USER_BANK5_4", + "description": "USER_BANK5_4 register", + "index_int": "0x01AC", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse429", + "name": "USER_BANK5_5", + "description": "USER_BANK5_5 register", + "index_int": "0x01AD", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse430", + "name": "USER_BANK5_6", + "description": "USER_BANK5_6 register", + "index_int": "0x01AE", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse431", + "name": "USER_BANK5_7", + "description": "USER_BANK5_7 register", + "index_int": "0x01AF", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK6", + "description": "USER_BANK6 group" + }, + "registers": [ + { + "id": "fuse432", + "name": "USER_BANK6_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x01B0", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse433", + "name": "USER_BANK6_1", + "description": "USER_BANK6_1 register", + "index_int": "0x01B1", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse434", + "name": "USER_BANK6_2", + "description": "USER_BANK6_2 register", + "index_int": "0x01B2", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse435", + "name": "USER_BANK6_3", + "description": "USER_BANK6_3 register", + "index_int": "0x01B3", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse436", + "name": "USER_BANK6_4", + "description": "USER_BANK6_4 register", + "index_int": "0x01B4", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse437", + "name": "USER_BANK6_5", + "description": "USER_BANK6_5 register", + "index_int": "0x01B5", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse438", + "name": "USER_BANK6_6", + "description": "USER_BANK6_6 register", + "index_int": "0x01B6", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse439", + "name": "USER_BANK6_7", + "description": "USER_BANK6_7 register", + "index_int": "0x01B7", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK7", + "description": "USER_BANK7 group" + }, + "registers": [ + { + "id": "fuse440", + "name": "USER_BANK7_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x01B8", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse441", + "name": "USER_BANK7_1", + "description": "USER_BANK7_1 register", + "index_int": "0x01B9", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse442", + "name": "USER_BANK7_2", + "description": "USER_BANK7_2 register", + "index_int": "0x01BA", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse443", + "name": "USER_BANK7_3", + "description": "USER_BANK7_3 register", + "index_int": "0x01BB", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse444", + "name": "USER_BANK7_4", + "description": "USER_BANK7_4 register", + "index_int": "0x01BC", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse445", + "name": "USER_BANK7_5", + "description": "USER_BANK7_5 register", + "index_int": "0x01BD", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse446", + "name": "USER_BANK7_6", + "description": "USER_BANK7_6 register", + "index_int": "0x01BE", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse447", + "name": "USER_BANK7_7", + "description": "USER_BANK7_7 register", + "index_int": "0x01BF", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK8", + "description": "USER_BANK8 group" + }, + "registers": [ + { + "id": "fuse448", + "name": "USER_BANK8_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x01C0", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse449", + "name": "USER_BANK8_1", + "description": "USER_BANK8_1 register", + "index_int": "0x01C1", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse450", + "name": "USER_BANK8_2", + "description": "USER_BANK8_2 register", + "index_int": "0x01C2", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse451", + "name": "USER_BANK8_3", + "description": "USER_BANK8_3 register", + "index_int": "0x01C3", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse452", + "name": "USER_BANK8_4", + "description": "USER_BANK8_4 register", + "index_int": "0x01C4", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse453", + "name": "USER_BANK8_5", + "description": "USER_BANK8_5 register", + "index_int": "0x01C5", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse454", + "name": "USER_BANK8_6", + "description": "USER_BANK8_6 register", + "index_int": "0x01C6", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse455", + "name": "USER_BANK8_7", + "description": "USER_BANK8_7 register", + "index_int": "0x01C7", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "CRC_BANK", + "description": "CRC_BANK group" + }, + "registers": [ + { + "id": "fuse492", + "name": "CRC4", + "description": "CRC of BOOT_CFG configuration data. Word 96 to 100 (0x180 - 0x18F).", + "index_int": "0x01EC", + "shadow_reg_offset_int": "0x07B0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0010", + "read_lock_int": "0x0020" + } + }, + { + "id": "fuse493", + "name": "CRC5", + "description": "CRC of SECURE_CFG configuration data. Word 107 to 127 (0x1A4 - 0x200).", + "index_int": "0x01ED", + "shadow_reg_offset_int": "0x07B4", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0080" + } + }, + { + "id": "fuse494", + "name": "CRC6", + "description": "CRC of customer programmed mode fuse (Word 8 and 9).", + "index_int": "0x01EE", + "shadow_reg_offset_int": "0x07B8", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0100", + "read_lock_int": "0x0200" + } + }, + { + "id": "fuse495", + "name": "CRC7", + "description": "Customer defined.", + "index_int": "0x01EF", + "shadow_reg_offset_int": "0x07BC", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0400", + "read_lock_int": "0x0800" + } + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/tz.json new file mode 100644 index 0000000..34c96bb --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt595s/tz.json @@ -0,0 +1,2293 @@ +{ + "cpu": "mimxrt595s", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Secure vector table address (vtor_addr)", + "description": "TrustZone register - Secure vector table address (vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "Non-secure vector table address (vtor_ns_addr)", + "description": "TrustZone register - Non-secure vector table address (vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "Interrupt target non-secure register 0 (nvic_itns0)", + "description": "TrustZone register - Interrupt target non-secure register 0 (nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "Interrupt target non-secure register 1 (nvic_itns1)", + "description": "TrustZone register - Interrupt target non-secure register 1 (nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "MPU Control Register (mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "Non-secure MPU Control Register (mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "SAU Control Register (sau_ctrl)", + "description": "TrustZone register - SAU Control Register (sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "ROM Slave Rule Register 0 (bootrom0_slave_rule0)", + "description": "TrustZone register - ROM Slave Rule Register 0 (bootrom0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (bootrom0_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (bootrom0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (bootrom0_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (bootrom0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (bootrom0_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (bootrom0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (bootrom0_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (bootrom0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "Quad/Octal SPI Slave Rule Register 0 (qospi_slave_rule0)", + "description": "TrustZone register - Quad/Octal SPI Slave Rule Register 0 (qospi_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 0 (qospi0_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 0 (qospi0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 1 (qospi0_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 1 (qospi0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 2 (qospi0_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 2 (qospi0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 3 (qospi0_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 3 (qospi0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 0 (qospi1_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 0 (qospi1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 1 (qospi1_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 1 (qospi1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 2 (qospi1_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 2 (qospi1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 3 (qospi1_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 3 (qospi1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 0 (qospi2_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 0 (qospi2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 1 (qospi2_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 1 (qospi2_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 2 (qospi2_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 2 (qospi2_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 3 (qospi2_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 3 (qospi2_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 0 (qospi3_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 0 (qospi3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 1 (qospi3_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 1 (qospi3_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 2 (qospi3_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 2 (qospi3_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 3 (qospi3_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 3 (qospi3_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 0 (qospi4_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 0 (qospi4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 1 (qospi4_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 1 (qospi4_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 2 (qospi4_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 2 (qospi4_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 3 (qospi4_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 3 (qospi4_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 0 (ram00_mem_rule0)", + "description": "TrustZone register - RAM00 Memory Rule Register 0 (ram00_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 1 (ram00_mem_rule1)", + "description": "TrustZone register - RAM00 Memory Rule Register 1 (ram00_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 2 (ram00_mem_rule2)", + "description": "TrustZone register - RAM00 Memory Rule Register 2 (ram00_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 3 (ram00_mem_rule3)", + "description": "TrustZone register - RAM00 Memory Rule Register 3 (ram00_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 0 (ram01_mem_rule0)", + "description": "TrustZone register - RAM01 Memory Rule Register 0 (ram01_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 1 (ram01_mem_rule1)", + "description": "TrustZone register - RAM01 Memory Rule Register 1 (ram01_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 2 (ram01_mem_rule2)", + "description": "TrustZone register - RAM01 Memory Rule Register 2 (ram01_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 3 (ram01_mem_rule3)", + "description": "TrustZone register - RAM01 Memory Rule Register 3 (ram01_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 0 (ram10_mem_rule0)", + "description": "TrustZone register - RAM10 Memory Rule Register 0 (ram10_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 1 (ram10_mem_rule1)", + "description": "TrustZone register - RAM10 Memory Rule Register 1 (ram10_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 2 (ram10_mem_rule2)", + "description": "TrustZone register - RAM10 Memory Rule Register 2 (ram10_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 3 (ram10_mem_rule3)", + "description": "TrustZone register - RAM10 Memory Rule Register 3 (ram10_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 0 (ram11_mem_rule0)", + "description": "TrustZone register - RAM11 Memory Rule Register 0 (ram11_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 1 (ram11_mem_rule1)", + "description": "TrustZone register - RAM11 Memory Rule Register 1 (ram11_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 2 (ram11_mem_rule2)", + "description": "TrustZone register - RAM11 Memory Rule Register 2 (ram11_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 3 (ram11_mem_rule3)", + "description": "TrustZone register - RAM11 Memory Rule Register 3 (ram11_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 0 (ram20_mem_rule0)", + "description": "TrustZone register - RAM20 Memory Rule Register 0 (ram20_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 1 (ram20_mem_rule1)", + "description": "TrustZone register - RAM20 Memory Rule Register 1 (ram20_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 2 (ram20_mem_rule2)", + "description": "TrustZone register - RAM20 Memory Rule Register 2 (ram20_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 3 (ram20_mem_rule3)", + "description": "TrustZone register - RAM20 Memory Rule Register 3 (ram20_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 0 (ram21_mem_rule0)", + "description": "TrustZone register - RAM21 Memory Rule Register 0 (ram21_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 1 (ram21_mem_rule1)", + "description": "TrustZone register - RAM21 Memory Rule Register 1 (ram21_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 2 (ram21_mem_rule2)", + "description": "TrustZone register - RAM21 Memory Rule Register 2 (ram21_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 3 (ram21_mem_rule3)", + "description": "TrustZone register - RAM21 Memory Rule Register 3 (ram21_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 0 (ram22_mem_rule0)", + "description": "TrustZone register - RAM22 Memory Rule Register 0 (ram22_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 1 (ram22_mem_rule1)", + "description": "TrustZone register - RAM22 Memory Rule Register 1 (ram22_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 2 (ram22_mem_rule2)", + "description": "TrustZone register - RAM22 Memory Rule Register 2 (ram22_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 3 (ram22_mem_rule3)", + "description": "TrustZone register - RAM22 Memory Rule Register 3 (ram22_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 0 (ram23_mem_rule0)", + "description": "TrustZone register - RAM23 Memory Rule Register 0 (ram23_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 1 (ram23_mem_rule1)", + "description": "TrustZone register - RAM23 Memory Rule Register 1 (ram23_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 2 (ram23_mem_rule2)", + "description": "TrustZone register - RAM23 Memory Rule Register 2 (ram23_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 3 (ram23_mem_rule3)", + "description": "TrustZone register - RAM23 Memory Rule Register 3 (ram23_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "RAM3 Slave Rule Register (ram3_slave_rule)", + "description": "TrustZone register - RAM3 Slave Rule Register (ram3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 0 (ram30_mem_rule0)", + "description": "TrustZone register - RAM30 Memory Rule Register 0 (ram30_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 1 (ram30_mem_rule1)", + "description": "TrustZone register - RAM30 Memory Rule Register 1 (ram30_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 2 (ram30_mem_rule2)", + "description": "TrustZone register - RAM30 Memory Rule Register 2 (ram30_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 3 (ram30_mem_rule3)", + "description": "TrustZone register - RAM30 Memory Rule Register 3 (ram30_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 0 (ram31_mem_rule0)", + "description": "TrustZone register - RAM31 Memory Rule Register 0 (ram31_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 1 (ram31_mem_rule1)", + "description": "TrustZone register - RAM31 Memory Rule Register 1 (ram31_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 2 (ram31_mem_rule2)", + "description": "TrustZone register - RAM31 Memory Rule Register 2 (ram31_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 3 (ram31_mem_rule3)", + "description": "TrustZone register - RAM31 Memory Rule Register 3 (ram31_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 0 (ram32_mem_rule0)", + "description": "TrustZone register - RAM32 Memory Rule Register 0 (ram32_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 1 (ram32_mem_rule1)", + "description": "TrustZone register - RAM32 Memory Rule Register 1 (ram32_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 2 (ram32_mem_rule2)", + "description": "TrustZone register - RAM32 Memory Rule Register 2 (ram32_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 3 (ram32_mem_rule3)", + "description": "TrustZone register - RAM32 Memory Rule Register 3 (ram32_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 0 (ram33_mem_rule0)", + "description": "TrustZone register - RAM33 Memory Rule Register 0 (ram33_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 1 (ram33_mem_rule1)", + "description": "TrustZone register - RAM33 Memory Rule Register 1 (ram33_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 2 (ram33_mem_rule2)", + "description": "TrustZone register - RAM33 Memory Rule Register 2 (ram33_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 3 (ram33_mem_rule3)", + "description": "TrustZone register - RAM33 Memory Rule Register 3 (ram33_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "RAM4 Slave Rule Register (ram4_slave_rule)", + "description": "TrustZone register - RAM4 Slave Rule Register (ram4_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 0 (ram40_mem_rule0)", + "description": "TrustZone register - RAM40 Memory Rule Register 0 (ram40_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 1 (ram40_mem_rule1)", + "description": "TrustZone register - RAM40 Memory Rule Register 1 (ram40_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 2 (ram40_mem_rule2)", + "description": "TrustZone register - RAM40 Memory Rule Register 2 (ram40_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 3 (ram40_mem_rule3)", + "description": "TrustZone register - RAM40 Memory Rule Register 3 (ram40_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 0 (ram41_mem_rule0)", + "description": "TrustZone register - RAM41 Memory Rule Register 0 (ram41_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 1 (ram41_mem_rule1)", + "description": "TrustZone register - RAM41 Memory Rule Register 1 (ram41_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 2 (ram41_mem_rule2)", + "description": "TrustZone register - RAM41 Memory Rule Register 2 (ram41_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 3 (ram41_mem_rule3)", + "description": "TrustZone register - RAM41 Memory Rule Register 3 (ram41_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 0 (ram42_mem_rule0)", + "description": "TrustZone register - RAM42 Memory Rule Register 0 (ram42_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 1 (ram42_mem_rule1)", + "description": "TrustZone register - RAM42 Memory Rule Register 1 (ram42_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 2 (ram42_mem_rule2)", + "description": "TrustZone register - RAM42 Memory Rule Register 2 (ram42_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 3 (ram42_mem_rule3)", + "description": "TrustZone register - RAM42 Memory Rule Register 3 (ram42_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 0 (ram43_mem_rule0)", + "description": "TrustZone register - RAM43 Memory Rule Register 0 (ram43_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 1 (ram43_mem_rule1)", + "description": "TrustZone register - RAM43 Memory Rule Register 1 (ram43_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 2 (ram43_mem_rule2)", + "description": "TrustZone register - RAM43 Memory Rule Register 2 (ram43_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 3 (ram43_mem_rule3)", + "description": "TrustZone register - RAM43 Memory Rule Register 3 (ram43_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "RAM5 Slave Rule Register (ram5_slave_rule)", + "description": "TrustZone register - RAM5 Slave Rule Register (ram5_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 0 (ram50_mem_rule0)", + "description": "TrustZone register - RAM50 Memory Rule Register 0 (ram50_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 1 (ram50_mem_rule1)", + "description": "TrustZone register - RAM50 Memory Rule Register 1 (ram50_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 2 (ram50_mem_rule2)", + "description": "TrustZone register - RAM50 Memory Rule Register 2 (ram50_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 3 (ram50_mem_rule3)", + "description": "TrustZone register - RAM50 Memory Rule Register 3 (ram50_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 0 (ram51_mem_rule0)", + "description": "TrustZone register - RAM51 Memory Rule Register 0 (ram51_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 1 (ram51_mem_rule1)", + "description": "TrustZone register - RAM51 Memory Rule Register 1 (ram51_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 2 (ram51_mem_rule2)", + "description": "TrustZone register - RAM51 Memory Rule Register 2 (ram51_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 3 (ram51_mem_rule3)", + "description": "TrustZone register - RAM51 Memory Rule Register 3 (ram51_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 0 (ram52_mem_rule0)", + "description": "TrustZone register - RAM52 Memory Rule Register 0 (ram52_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 1 (ram52_mem_rule1)", + "description": "TrustZone register - RAM52 Memory Rule Register 1 (ram52_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 2 (ram52_mem_rule2)", + "description": "TrustZone register - RAM52 Memory Rule Register 2 (ram52_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 3 (ram52_mem_rule3)", + "description": "TrustZone register - RAM52 Memory Rule Register 3 (ram52_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 0 (ram53_mem_rule0)", + "description": "TrustZone register - RAM53 Memory Rule Register 0 (ram53_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 1 (ram53_mem_rule1)", + "description": "TrustZone register - RAM53 Memory Rule Register 1 (ram53_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 2 (ram53_mem_rule2)", + "description": "TrustZone register - RAM53 Memory Rule Register 2 (ram53_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 3 (ram53_mem_rule3)", + "description": "TrustZone register - RAM53 Memory Rule Register 3 (ram53_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "RAM6 Slave Rule Register (ram6_slave_rule)", + "description": "TrustZone register - RAM6 Slave Rule Register (ram6_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 0 (ram60_mem_rule0)", + "description": "TrustZone register - RAM60 Memory Rule Register 0 (ram60_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 1 (ram60_mem_rule1)", + "description": "TrustZone register - RAM60 Memory Rule Register 1 (ram60_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 2 (ram60_mem_rule2)", + "description": "TrustZone register - RAM60 Memory Rule Register 2 (ram60_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 3 (ram60_mem_rule3)", + "description": "TrustZone register - RAM60 Memory Rule Register 3 (ram60_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 0 (ram61_mem_rule0)", + "description": "TrustZone register - RAM61 Memory Rule Register 0 (ram61_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 1 (ram61_mem_rule1)", + "description": "TrustZone register - RAM61 Memory Rule Register 1 (ram61_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 2 (ram61_mem_rule2)", + "description": "TrustZone register - RAM61 Memory Rule Register 2 (ram61_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 3 (ram61_mem_rule3)", + "description": "TrustZone register - RAM61 Memory Rule Register 3 (ram61_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 0 (ram62_mem_rule0)", + "description": "TrustZone register - RAM62 Memory Rule Register 0 (ram62_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 1 (ram62_mem_rule1)", + "description": "TrustZone register - RAM62 Memory Rule Register 1 (ram62_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 2 (ram62_mem_rule2)", + "description": "TrustZone register - RAM62 Memory Rule Register 2 (ram62_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 3 (ram62_mem_rule3)", + "description": "TrustZone register - RAM62 Memory Rule Register 3 (ram62_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 0 (ram63_mem_rule0)", + "description": "TrustZone register - RAM63 Memory Rule Register 0 (ram63_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 1 (ram63_mem_rule1)", + "description": "TrustZone register - RAM63 Memory Rule Register 1 (ram63_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 2 (ram63_mem_rule2)", + "description": "TrustZone register - RAM63 Memory Rule Register 2 (ram63_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 3 (ram63_mem_rule3)", + "description": "TrustZone register - RAM63 Memory Rule Register 3 (ram63_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "RAM7 Slave Rule Register (ram7_slave_rule)", + "description": "TrustZone register - RAM7 Slave Rule Register (ram7_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 0 (ram70_mem_rule0)", + "description": "TrustZone register - RAM70 Memory Rule Register 0 (ram70_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 1 (ram70_mem_rule1)", + "description": "TrustZone register - RAM70 Memory Rule Register 1 (ram70_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 2 (ram70_mem_rule2)", + "description": "TrustZone register - RAM70 Memory Rule Register 2 (ram70_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field300", + "offset_int": "0x300", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 3 (ram70_mem_rule3)", + "description": "TrustZone register - RAM70 Memory Rule Register 3 (ram70_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field304", + "offset_int": "0x304", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 0 (ram71_mem_rule0)", + "description": "TrustZone register - RAM71 Memory Rule Register 0 (ram71_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field308", + "offset_int": "0x308", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 1 (ram71_mem_rule1)", + "description": "TrustZone register - RAM71 Memory Rule Register 1 (ram71_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field30C", + "offset_int": "0x30c", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 2 (ram71_mem_rule2)", + "description": "TrustZone register - RAM71 Memory Rule Register 2 (ram71_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field310", + "offset_int": "0x310", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 3 (ram71_mem_rule3)", + "description": "TrustZone register - RAM71 Memory Rule Register 3 (ram71_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field314", + "offset_int": "0x314", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 0 (ram72_mem_rule0)", + "description": "TrustZone register - RAM72 Memory Rule Register 0 (ram72_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field318", + "offset_int": "0x318", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 1 (ram72_mem_rule1)", + "description": "TrustZone register - RAM72 Memory Rule Register 1 (ram72_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field31C", + "offset_int": "0x31c", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 2 (ram72_mem_rule2)", + "description": "TrustZone register - RAM72 Memory Rule Register 2 (ram72_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field320", + "offset_int": "0x320", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 3 (ram72_mem_rule3)", + "description": "TrustZone register - RAM72 Memory Rule Register 3 (ram72_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field324", + "offset_int": "0x324", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 0 (ram73_mem_rule0)", + "description": "TrustZone register - RAM73 Memory Rule Register 0 (ram73_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field328", + "offset_int": "0x328", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 1 (ram73_mem_rule1)", + "description": "TrustZone register - RAM73 Memory Rule Register 1 (ram73_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field32C", + "offset_int": "0x32c", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 2 (ram73_mem_rule2)", + "description": "TrustZone register - RAM73 Memory Rule Register 2 (ram73_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field330", + "offset_int": "0x330", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 3 (ram73_mem_rule3)", + "description": "TrustZone register - RAM73 Memory Rule Register 3 (ram73_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field334", + "offset_int": "0x334", + "reg_width": 32, + "name": "RAM8 Slave Rule Register (ram8_slave_rule)", + "description": "TrustZone register - RAM8 Slave Rule Register (ram8_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field338", + "offset_int": "0x338", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 0 (ram80_mem_rule0)", + "description": "TrustZone register - RAM80 Memory Rule Register 0 (ram80_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field33C", + "offset_int": "0x33c", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 1 (ram80_mem_rule1)", + "description": "TrustZone register - RAM80 Memory Rule Register 1 (ram80_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field340", + "offset_int": "0x340", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 2 (ram80_mem_rule2)", + "description": "TrustZone register - RAM80 Memory Rule Register 2 (ram80_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field344", + "offset_int": "0x344", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 3 (ram80_mem_rule3)", + "description": "TrustZone register - RAM80 Memory Rule Register 3 (ram80_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field348", + "offset_int": "0x348", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 0 (ram81_mem_rule0)", + "description": "TrustZone register - RAM81 Memory Rule Register 0 (ram81_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field34C", + "offset_int": "0x34c", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 1 (ram81_mem_rule1)", + "description": "TrustZone register - RAM81 Memory Rule Register 1 (ram81_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field350", + "offset_int": "0x350", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 2 (ram81_mem_rule2)", + "description": "TrustZone register - RAM81 Memory Rule Register 2 (ram81_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field354", + "offset_int": "0x354", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 3 (ram81_mem_rule3)", + "description": "TrustZone register - RAM81 Memory Rule Register 3 (ram81_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field358", + "offset_int": "0x358", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 0 (ram82_mem_rule0)", + "description": "TrustZone register - RAM81 Memory Rule Register 0 (ram82_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field35C", + "offset_int": "0x35c", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 1 (ram82_mem_rule1)", + "description": "TrustZone register - RAM81 Memory Rule Register 1 (ram82_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field360", + "offset_int": "0x360", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 2 (ram82_mem_rule2)", + "description": "TrustZone register - RAM81 Memory Rule Register 2 (ram82_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field364", + "offset_int": "0x364", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 3 (ram82_mem_rule3)", + "description": "TrustZone register - RAM81 Memory Rule Register 3 (ram82_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field368", + "offset_int": "0x368", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 0 (ram83_mem_rule0)", + "description": "TrustZone register - RAM81 Memory Rule Register 0 (ram83_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field36C", + "offset_int": "0x36c", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 1 (ram83_mem_rule1)", + "description": "TrustZone register - RAM81 Memory Rule Register 1 (ram83_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field370", + "offset_int": "0x370", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 2 (ram83_mem_rule2)", + "description": "TrustZone register - RAM81 Memory Rule Register 2 (ram83_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field374", + "offset_int": "0x374", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 3 (ram83_mem_rule3)", + "description": "TrustZone register - RAM81 Memory Rule Register 3 (ram83_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field378", + "offset_int": "0x378", + "reg_width": 32, + "name": "(ezh_ram_slave_rule)", + "description": "TrustZone register - (ezh_ram_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field37C", + "offset_int": "0x37c", + "reg_width": 32, + "name": "(ezh_ram0_slave_rule0)", + "description": "TrustZone register - (ezh_ram0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field380", + "offset_int": "0x380", + "reg_width": 32, + "name": "(ezh_ram0_slave_rule1)", + "description": "TrustZone register - (ezh_ram0_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field384", + "offset_int": "0x384", + "reg_width": 32, + "name": "(ezh_ram0_slave_rule2)", + "description": "TrustZone register - (ezh_ram0_slave_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field388", + "offset_int": "0x388", + "reg_width": 32, + "name": "(ezh_ram0_slave_rule3)", + "description": "TrustZone register - (ezh_ram0_slave_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field38C", + "offset_int": "0x38c", + "reg_width": 32, + "name": "Quad/Octal SPI Slave Rule Register 0 (qospi1_slave_rule0)", + "description": "TrustZone register - Quad/Octal SPI Slave Rule Register 0 (qospi1_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field390", + "offset_int": "0x390", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 0 (qospi10_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 0 (qospi10_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field394", + "offset_int": "0x394", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 1 (qospi10_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 1 (qospi10_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field398", + "offset_int": "0x398", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 2 (qospi10_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 2 (qospi10_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field39C", + "offset_int": "0x39c", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 3 (qospi10_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 3 (qospi10_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3A0", + "offset_int": "0x3a0", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 0 (qospi11_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 0 (qospi11_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3A4", + "offset_int": "0x3a4", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 1 (qospi11_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 1 (qospi11_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3A8", + "offset_int": "0x3a8", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 2 (qospi11_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 2 (qospi11_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3AC", + "offset_int": "0x3ac", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 3 (qospi11_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 3 (qospi11_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3B0", + "offset_int": "0x3b0", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 0 (qospi12_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 0 (qospi12_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3B4", + "offset_int": "0x3b4", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 1 (qospi12_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 1 (qospi12_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3B8", + "offset_int": "0x3b8", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 2 (qospi12_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 2 (qospi12_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3BC", + "offset_int": "0x3bc", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 3 (qospi12_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 3 (qospi12_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3C0", + "offset_int": "0x3c0", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 0 (qospi13_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 0 (qospi13_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3C4", + "offset_int": "0x3c4", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 1 (qospi13_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 1 (qospi13_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3C8", + "offset_int": "0x3c8", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 2 (qospi13_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 2 (qospi13_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3CC", + "offset_int": "0x3cc", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 3 (qospi13_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 3 (qospi13_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3D0", + "offset_int": "0x3d0", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 0 (qospi14_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 0 (qospi14_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3D4", + "offset_int": "0x3d4", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 1 (qospi14_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 1 (qospi14_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3D8", + "offset_int": "0x3d8", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 2 (qospi14_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 2 (qospi14_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3DC", + "offset_int": "0x3dc", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 3 (qospi14_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 3 (qospi14_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3E0", + "offset_int": "0x3e0", + "reg_width": 32, + "name": "APB Bridge Slave Rule Register (apb_bridge_slave_rule0)", + "description": "TrustZone register - APB Bridge Slave Rule Register (apb_bridge_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3E4", + "offset_int": "0x3e4", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3E8", + "offset_int": "0x3e8", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3EC", + "offset_int": "0x3ec", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3F0", + "offset_int": "0x3f0", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3F4", + "offset_int": "0x3f4", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3F8", + "offset_int": "0x3f8", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3FC", + "offset_int": "0x3fc", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field400", + "offset_int": "0x400", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field404", + "offset_int": "0x404", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field408", + "offset_int": "0x408", + "reg_width": 32, + "name": "AIPS bridge 0 Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "description": "TrustZone register - AIPS bridge 0 Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field40C", + "offset_int": "0x40c", + "reg_width": 32, + "name": "AIPS bridge 0 Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "description": "TrustZone register - AIPS bridge 0 Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field410", + "offset_int": "0x410", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field414", + "offset_int": "0x414", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field418", + "offset_int": "0x418", + "reg_width": 32, + "name": "AIPS Bridge Slave Rule Register (aips_bridge_slave_rule0)", + "description": "TrustZone register - AIPS Bridge Slave Rule Register (aips_bridge_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field41C", + "offset_int": "0x41c", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field420", + "offset_int": "0x420", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field424", + "offset_int": "0x424", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field428", + "offset_int": "0x428", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 0 (security_ctrl_mem_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 0 (security_ctrl_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field42C", + "offset_int": "0x42c", + "reg_width": 32, + "name": "AHB Peripherals 3 Slave Rule Register 0 (ahb_periph3_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 3 Slave Rule Register 0 (ahb_periph3_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field430", + "offset_int": "0x430", + "reg_width": 32, + "name": "AHB Peripherals 3 Slave Rule Register 0 (ahb_periph3_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 3 Slave Rule Register 0 (ahb_periph3_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field434", + "offset_int": "0x434", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field438", + "offset_int": "0x438", + "reg_width": 32, + "name": "Secure GPIO Register 1 (sec_gp_reg1)", + "description": "TrustZone register - Secure GPIO Register 1 (sec_gp_reg1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field43C", + "offset_int": "0x43c", + "reg_width": 32, + "name": "Secure GPIO Register 2 (sec_gp_reg2)", + "description": "TrustZone register - Secure GPIO Register 2 (sec_gp_reg2)", + "default_value_int": "0xffffffff" + }, + { + "id": "field440", + "offset_int": "0x440", + "reg_width": 32, + "name": "Secure GPIO Register 3 (sec_gp_reg3)", + "description": "TrustZone register - Secure GPIO Register 3 (sec_gp_reg3)", + "default_value_int": "0xffffffff" + }, + { + "id": "field444", + "offset_int": "0x444", + "reg_width": 32, + "name": "Secure GPIO Register 4 (sec_gp_reg4)", + "description": "TrustZone register - Secure GPIO Register 4 (sec_gp_reg4)", + "default_value_int": "0xffffffff" + }, + { + "id": "field448", + "offset_int": "0x448", + "reg_width": 32, + "name": "Secure GPIO Register 5 (sec_gp_reg5)", + "description": "TrustZone register - Secure GPIO Register 5 (sec_gp_reg5)", + "default_value_int": "0xffffffff" + }, + { + "id": "field44C", + "offset_int": "0x44c", + "reg_width": 32, + "name": "Secure GPIO Register 6 (sec_gp_reg6)", + "description": "TrustZone register - Secure GPIO Register 6 (sec_gp_reg6)", + "default_value_int": "0xffffffff" + }, + { + "id": "field450", + "offset_int": "0x450", + "reg_width": 32, + "name": "Secure GPIO Register 7 (sec_gp_reg7)", + "description": "TrustZone register - Secure GPIO Register 7 (sec_gp_reg7)", + "default_value_int": "0xffffffff" + }, + { + "id": "field454", + "offset_int": "0x454", + "reg_width": 32, + "name": "Secure GPIO Register 8 for DSP (sec_gp_reg8)", + "description": "TrustZone register - Secure GPIO Register 8 for DSP (sec_gp_reg8)", + "default_value_int": "0xffffffff" + }, + { + "id": "field458", + "offset_int": "0x458", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0xaaaa" + }, + { + "id": "field45C", + "offset_int": "0x45c", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field460", + "offset_int": "0x460", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field464", + "offset_int": "0x464", + "reg_width": 32, + "name": "M33 Lock Control Register (m33_lock_reg)", + "description": "TrustZone register - M33 Lock Control Register (m33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field468", + "offset_int": "0x468", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field46C", + "offset_int": "0x46c", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field470", + "offset_int": "0x470", + "reg_width": 32, + "name": "Miscellaneous TZM settings (misc_tzm_settings)", + "description": "TrustZone register - Miscellaneous TZM settings (misc_tzm_settings)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/database.yaml new file mode 100644 index 0000000..5d12abc --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/database.yaml @@ -0,0 +1,57 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt595s + +revisions: + a0: + features: + tz: + reg_spec: tz_a0.json + + b0: + features: + tz: + reg_spec: tz_b0.json + +# General MCU information +info: + purpose: i.MX RT Crossover MCUs + spsdk_predecessor_name: rt6xx + # Web page of MCU representative + web: https://www.nxp.com/products/i.MX-RT600 + memory_map: + flexspi0_ns: + start_int: "0x08000000" + size_int: "0x04000000" + external: true + flexspi0_s: + start_int: "0x18000000" + size_int: "0x04000000" + external: true + mirror_of: flexspi0_ns + flexspi1_ns: + start_int: "0x28000000" + size_int: "0x04000000" + external: true + flexspi1_s: + start_int: "0x38000000" + size_int: "0x04000000" + external: true + mirror_of: flexspi1_ns + sram: + start_int: "0x20000" + size_int: "0x460000" + external: false + non_xip_type: int_ram + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0020 + +features: + otfad: + byte_swap: true diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/fcb_flexspi_nor.json new file mode 100644 index 0000000..df7004e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/fcb_flexspi_nor.json @@ -0,0 +1,25599 @@ +{ + "cpu": "MIMXRT685S", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL ", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix ", + "default_value_int": "0x56020000" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3 ", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet ", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc. ", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command ", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration ", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details ", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details ", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal ", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details ", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH ", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1 ", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2 ", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1 ", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2 ", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command ", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands ", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field078-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps " + }, + { + "id": "field078-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells " + } + ] + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field07A-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps " + }, + { + "id": "field07A-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells " + } + ] + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31 ", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy ", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command ", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same ", + "default_value_int": "0x0" + }, + { + "id": "field1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " Data order (D0, D1, D2, D3) is swapped (D1,D0, D3, D2) ", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3 ", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command ", + "default_value_int": "0x0" + }, + { + "id": "field1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false ", + "default_value_int": "0x0" + }, + { + "id": "field1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution ", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size ", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "flashStateCtx", + "description": " Flash State Context ", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "reserve2_0", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "reserve2_1", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "reserve2_2", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "reserve2_3", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "reserve2_4", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "reserve2_5", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "reserve2_6", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "reserve2_7", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "reserve2_8", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "reserve2_9", + "description": " Reserved for future use ", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/fuses.json new file mode 100644 index 0000000..95a0373 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/fuses.json @@ -0,0 +1,3939 @@ +{ + "cpu": "MIMXRT685S", + "shadow_reg_base_addr_int": "0x40130000", + "groups": [ + { + "group": { + "name": "SHADOW_LOCK", + "description": "Fuses used to define read/write access permissions to shadows registers of Customer configured OTP words." + }, + "registers": [ + { + "id": "fuse8", + "name": "CUST_WR_RD_LOCK0", + "description": "Fuses used to define read/write access permissions to shadows registers of Customer configured OTP words. This is a redundant OTP word hence only 16 bits defined.", + "index_int": "0x0008", + "shadow_reg_offset_int": "0x0020", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 1, + "id": "fuse8-bit-0", + "name": "DCFG_CC_SOCU_WR", + "description": "When set locks APB write access to DCFG_CC_SOCU and DCFG_CC_SOCU_AP shadow registers. (Fuse 256)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse8-bit-1", + "name": "DCFG_CC_SOCU_NS_WR", + "description": "When set locks APB write access to DCFG_CC_SOCU_NS shadow registers. (Fuse 257)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse8-bit-2", + "name": "OTFAD_CFG_WR_LOCK", + "description": "When set locks APB write access to OTFAD_CFG shadow register. (Fuse 258)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse8-bit-4", + "name": "KEY_SCRAMBLE_SEED_WR_LOCK", + "description": "When set locks APB write access to KEY_SCRAMBLE_SEED shadow register. (Fuse 260)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse8-bit-5", + "name": "KEY_SCRAMBLE_SEED_RD_LOCK", + "description": "When set locks APB read access to KEY_SCRAMBLE_SEED shadow register. (Fuse 261)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse8-bit-6", + "name": "OTFAD_KEK_SEED_WR_LOCK", + "description": "When set locks APB write access to OTFAD_KEK_SEED shadow registers. (Fuse 262)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse8-bit-8", + "name": "OTP_MASTER_KEY_WR_LOCK", + "description": "When set locks APB write access to OTP_MASTER_KEY shadow registers. (Fuse 264)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse8-bit-9", + "name": "SEC_BOOT_CFG5_WR_LOCK", + "description": "When set locks APB write access to SEC_BOOT_CFG5 shadow registers. (Fuse 265)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 6 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse9", + "name": "CUST_WR_RD_LOCK1", + "description": "Fuses used to define read/write access permissions to shadows registers of customer configured OTP words. This is a redundant OTP word hence only 16 bits defined.", + "index_int": "0x0009", + "shadow_reg_offset_int": "0x0024", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 4 + }, + { + "width": 1, + "id": "fuse9-bit-4", + "name": "CRC4_WR_LOCK", + "description": "When set locks APB write access to CRC4 shadow register. (Fuse 292)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-5", + "name": "CRC4_RD_LOCK", + "description": "When set locks APB read access to CRC4 shadow register. (Fuse 293)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-6", + "name": "CRC5_WR_LOCK", + "description": "When set locks APB write access to CRC5 shadow register. (Fuse 294)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-7", + "name": "CRC5_RD_LOCK", + "description": "When set locks APB read access to CRC5 shadow register. (Fuse 295)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-8", + "name": "CRC6_WR_LOCK", + "description": "When set locks APB write access to CRC6 shadow register. (Fuse 296)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-9", + "name": "CRC6_RD_LOCK", + "description": "When set locks APB read access to CRC6 shadow register. (Fuse 297)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-10", + "name": "CRC7_WR_LOCK", + "description": "When set locks APB write access to CRC7 shadow register. (Fuse 298)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-11", + "name": "CRC7_RD_LOCK", + "description": "When set locks APB read access to CRC7 shadow register. (Fuse 299)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-12", + "name": "BOOT_CFG0_WR_LOCK", + "description": "When set locks APB write access to BOOT_CFG0 and RKTH shadow register. (Fuse 300)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-13", + "name": "BOOT_CFG1_WR_LOCK", + "description": "When set locks APB write access to BOOT_CFG1 shadow register. (Fuse 301)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-14", + "name": "BOOT_CFG2_WR_LOCK", + "description": "When set locks APB write access to BOOT_CFG2 shadow register. (Fuse 302)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse9-bit-15", + "name": "BOOT_CFG3_WR_LOCK", + "description": "When set locks APB write access to BOOT_CFG3 shadow register. (Fuse 303)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "DEBUG_CFG", + "description": "DEBUG_CFG group" + }, + "registers": [ + { + "id": "fuse95", + "name": "DCFG_CC_SOCU", + "description": "Debug Configuration word (tier-1 developer). Use DCFG_CC_SOCU_WR to write lock this OTP word.\nCombinations of PIN and DFLT bits and resulting restriction level:\n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product.\n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate.\n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected.\n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "index_int": "0x005F", + "shadow_reg_offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0001" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse95-bits-0-7", + "name": "CRC8", + "description": "CRC-8/ITU of upper 3 bytes of this register. Polynomial=0x07, initial value= 0x00, XorOut=0x55.", + "calculated": "CRC-8/ITU" + }, + { + "width": 1, + "id": "fuse95-bit-8", + "name": "DFLT_NIDEN", + "description": "Fixed state of Non-secure non-invasive debug enable, when PINNED_NIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-9", + "name": "DFLT_DBGEN", + "description": "Fixed state of Non-secure invasive debug enable, when PINNED_DBGEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-10", + "name": "DFLT_SPNIDEN", + "description": "Fixed state of secure non-invasive debug enable, when PINNED_SPNIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-11", + "name": "DFLT_SPIDEN", + "description": "Fixed state of secure invasive debug enable, when PINNED_SPIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-12", + "name": "DFLT_TAPEN", + "description": "Fixed state of Test Access Port enable, when PINNED_TAPEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-13", + "name": "DFLT_HIFI4EN", + "description": "Fixed state of HiFi4 invasive debug enable, when PINNED_HIFI4EN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-14", + "name": "DFLT_ISPCMDEN", + "description": "Fixed state of ISP boot flow commands enable, when PINNED_ISPCMDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-15", + "name": "DFLT_PMCMDEN", + "description": "Fixed state of permanent modification commands (set Fault analysis mode) enable, when PINNED_NIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-16", + "name": "PINNED_NIDEN", + "description": "Fix the state of Non-secure non-invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-17", + "name": "PINNED_DBGEN", + "description": "Fix the state of Non-secure invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-18", + "name": "PINNED_SPNIDEN", + "description": "Fix the state of secure non-invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-19", + "name": "PINNED_SPIDEN", + "description": "Fix the state of secure invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-20", + "name": "PINNED_TAPEN", + "description": "Fix the state of Test Access Port enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-21", + "name": "PINNED_HIFI4EN", + "description": "Fix the state of HiFi4 invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-22", + "name": "PINNED_ISPCMDEN", + "description": "Fix the state of ISP boot flow commands enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-23", + "name": "PINNED_PMCMDEN", + "description": "Fix the state of permanent modification commands (set Fault analysis mode) enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse95-bit-24", + "name": "FORCE_UUID_MATCH", + "description": "When set, debug authentication protocol only accepts \"Debug Credential\" certificates (DC) with matching UUID.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 6 + }, + { + "width": 1, + "id": "fuse95-bit-31", + "name": "DEV_TEST_EN", + "description": "Enable test mode.\nThis bit should be clear in OTP words. But during development to test different\nDCFG_CC_SOCU settings without programming OTP words, developers can write the\nvalues to shadow registers corresponding to OTP words (95 & 104) with this bit set.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + } + ] + }, + { + "id": "fuse100", + "name": "DCFG_CC_SOCU_NS", + "description": "Debug Configuration word (tier-2 developer). Use DCFG_CC_SOCU_NS_WR to write lock this OTP word.\nCombinations of PIN and DFLT bits and resulting restriction level:\n- PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product.\n- PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at start up. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate.\n- PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected.\n- PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "index_int": "0x0064", + "shadow_reg_offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse100-bits-0-7", + "name": "CRC8", + "description": "CRC-8/ITU of upper 3 bytes of this register. Polynomial=0x07, initial value= 0x00, XorOut=0x55.", + "calculated": "CRC-8/ITU" + }, + { + "width": 1, + "id": "fuse100-bit-8", + "name": "DFLT_NIDEN", + "description": "Fixed state of Non-secure non-invasive debug enable, when PINNED_NIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-9", + "name": "DFLT_DBGEN", + "description": "Fixed state of Non-secure invasive debug enable, when PINNED_DBGEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-10", + "name": "DFLT_SPNIDEN", + "description": "Fixed state of secure non-invasive debug enable, when PINNED_SPNIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-11", + "name": "DFLT_SPIDEN", + "description": "Fixed state of secure invasive debug enable, when PINNED_SPIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-12", + "name": "DFLT_TAPEN", + "description": "Fixed state of Test Access Port enable, when PINNED_TAPEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-13", + "name": "DFLT_HIFI4EN", + "description": "Fixed state of HiFi4 invasive debug enable, when PINNED_HIFI4EN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-14", + "name": "DFLT_ISPCMDEN", + "description": "Fixed state of ISP boot flow commands enable, when PINNED_ISPCMDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-15", + "name": "DFLT_PMCMDEN", + "description": "Fixed state of permanent modification commands (set Fault analysis mode) enable, when PINNED_NIDEN is set.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-16", + "name": "PINNED_NIDEN", + "description": "Fix the state of Non-secure non-invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-17", + "name": "PINNED_DBGEN", + "description": "Fix the state of Non-secure invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-18", + "name": "PINNED_SPNIDEN", + "description": "Fix the state of secure non-invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-19", + "name": "PINNED_SPIDEN", + "description": "Fix the state of secure invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-20", + "name": "PINNED_TAPEN", + "description": "Fix the state of Test Access Port enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "State of the field is fixed." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-21", + "name": "PINNED_HIFI4EN", + "description": "Fix the state of HiFi4 invasive debug enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-22", + "name": "PINNED_ISPCMDEN", + "description": "Fix the state of ISP boot flow commands enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-23", + "name": "PINNED_PMCMDEN", + "description": "Fix the state of permanent modification commands (set Fault analysis mode) enable.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse100-bit-24", + "name": "FORCE_UUID_MATCH", + "description": "When set, debug authentication protocol only accepts \"Debug Credential\" certificates (DC) with matching UUID.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 6 + }, + { + "width": 1, + "id": "fuse100-bit-31", + "name": "DEV_TEST_EN", + "description": "Enable test mode.\nThis bit should be clear in OTP words. But during development to test different\nDCFG_CC_SOCU settings without programming OTP words, developers can write the\nvalues to shadow registers corresponding to OTP words (95 & 104) with this bit set.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + } + ] + }, + { + "id": "fuse104", + "name": "DCFG_CC_SOCU_AP", + "description": "Anti-pole (inverse) value of Debug Configuration word(DCFG_CC_SOCU). Use DCFG_CC_SOCU_WR to write lock this OTP word.", + "index_int": "0x0068", + "shadow_reg_offset_int": "0x01A0", + "individual_write_lock": "always_lock", + "calculated": { + "method": "inverse", + "src_register_id": "fuse95" + }, + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0001" + } + } + ] + }, + { + "group": { + "name": "BOOT_CFG", + "description": "BOOT_CFG group" + }, + "registers": [ + { + "id": "fuse96", + "name": "BOOT_CFG0", + "description": "Boot configuration word0. Shadow register is present for this word thus SW could access the register directly to read contents.", + "deprecated_names": [ + "BOOT_CFG[0]" + ], + "index_int": "0x0060", + "shadow_reg_offset_int": "0x0180", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse96-bits-0-3", + "name": "PRIMARY_BOOT_SRC", + "description": "Primary boot Source. (a.k.a. Master boot source)", + "values": [ + { + "name": "ISP_PIN_BOOT", + "value": 0, + "description": "ISP pins will determine boot source." + }, + { + "name": "QSPI_A_BOOT", + "value": 1, + "description": "Boot from Octal/Quad SPI flash device using FlexSpi channel A interface pins." + }, + { + "name": "SDHC0_BOOT", + "value": 2, + "description": "Boot from eMMC device or SD card connected to SDHC0 port." + }, + { + "name": "SDHC1_BOOT", + "value": 3, + "description": "Boot from eMMC device or SD card connected to SDHC1 port." + }, + { + "name": "SPI_SLV_BOOT", + "value": 4, + "description": "Boot using SPI slave interface using master boot mode." + }, + { + "name": "QSPI_B_BOOT", + "value": 5, + "description": "Boot from Octal/Quad SPI flash device using FlexSpi channel B interface pins. Only load-to-RAM image are supported in this mode." + }, + { + "name": "UART_BOOT", + "value": 6, + "description": "Boot using UART interface using master boot mode." + }, + { + "name": "SPI_FC_BOOT", + "value": 7, + "description": "Boot from 1-bit SPI flash device from FlexCom interface pins selected by REDUNDANT_SPI_PORT field. Only load-to-RAM images are supported in this mode." + }, + { + "name": "ISP_MODE", + "value": 9, + "description": "Always enter ISP mode. DEFAULT_ISP_MODE field will determine the ISP interface." + }, + { + "name": "QSPI_B_REC_BOOT", + "value": 11, + "description": "Boot from Octal/Quad SPI flash device using FlexSPI channel B interface pins. If image is not found check recovery boot using SPI-flash device through FlexComm." + }, + { + "name": "QSPI_A_REC_BOOT", + "value": 12, + "description": "Boot from Octal/Quad SPI flash device using FlexSPI channel A interface pins. If image is not found check recovery boot using SPI-flash device through FlexComm." + }, + { + "name": "SDHC0_REC_BOOT", + "value": 13, + "description": "Boot from SDHC0 port device. If image is not found check recovery boot using SPI-flash device through FlexComm." + }, + { + "name": "SDHC1_REC_BOOT", + "value": 14, + "description": "Boot from SDHC1 port device. If image is not found check recovery boot using SPI-flash device through FlexComm." + } + ] + }, + { + "width": 3, + "id": "fuse96-bits-4-6", + "name": "DEFAULT_ISP_MODE", + "description": "When a valid image is not available to master boot, ROM switches to ISP mode for programming primary boot devices. This field determines the default ISP mode.", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto detect ISP mode. ROM monitors USB, UART, SPI and I2C interfaces for any activity." + }, + { + "name": "USB_HID_ISP", + "value": 1, + "description": "Support ISP command interface using USB HID class only." + }, + { + "name": "UART_ISP", + "value": 2, + "description": "Support ISP command interface on UART port only." + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "Support ISP command interface on SPI port only." + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "Support ISP command interface on I2C port only." + }, + { + "name": "DISABLE_ISP", + "value": 7, + "description": "Disable ISP fall through when proper image is not found on primary boot device." + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-7", + "name": "BOOT_CLK_SPEED", + "description": "Defines clock speeds during boot.", + "values": [ + { + "name": "NORMAL_CLK", + "value": 0, + "description": "Normal boot. All clocks are set to 48MHz using IRC48M, except USB block. USB block will use external XTAL clock." + }, + { + "name": "HISPEED_CLK", + "value": 1, + "description": "High-speed boot.\n o Core clock is set to 198MHz using main_pll with IRC48M as input\n o UART, I2C : 48MHz (IRC48M)\n o SPI, SDHC: 198MHz (main_pll)\n o USB: external XTAL\n o OSPI: Set to different speed using aux0_pll. Speed of OSPI interface is obtained from Boot Configuration Block present on OSPI-flash device.\n \u00b7 SDR: 30/50/60/72/80/90/100 MHz\n \u00b7 DDR: 30/50/60/72/80 MHz" + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-8", + "name": "RSA4K_EN", + "description": "Use 4096 bit RSA keys only for certificate validations. By default the ROM assume 2048-bit keys.", + "values": [ + { + "name": "RSA2K", + "value": 0, + "description": "Use RSA2K or higher key length operations to validate certificates, image and debug credentials." + }, + { + "name": "RSA4K", + "value": 1, + "description": "Use RSA4K operations to validate certificates, image and debug credentials." + } + ] + }, + { + "width": 4 + }, + { + "width": 2, + "id": "fuse96-bits-13-14", + "name": "TZM_IMAGE_TYPE", + "description": "TZM_IMAGE_TYPE bit-field", + "values": [ + { + "name": "TZM_NORMAL", + "value": 0, + "description": "TrustZone-M mode is determined by the image header." + }, + { + "name": "TZM_DISABLE", + "value": 1, + "description": "Disable TrustZone-M features. ROM will always boot to a non-secure code and all TZ-M features are disabled." + }, + { + "name": "TZM_ENABLE", + "value": 2, + "description": "TrustZone-M features are enabled. ROM will always boot to secure code." + }, + { + "name": "TZM_PRESET", + "value": 3, + "description": "TrustZone-M features are enabled and setting are loaded from image header and locked before branching to user code." + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-15", + "name": "PSA_BSTATE_SKIP", + "description": "If set, ROM skips computation of boot state defined by PSA specification. As part of boot state computation ROM includes OTP words \n- Shadow register values of 95 to 104 \n- Fuse values of words 128 to 147.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-16", + "name": "PSA_BSTATE_INC_KEYS", + "description": "If set, boot state computation includes OTP shadow register values of words 106 to 127.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 3, + "id": "fuse96-bits-17-19", + "name": "REDUNDANT_SPI_PORT", + "description": "FlexComm port to use for redundant SPI flash boot.", + "values": [ + { + "name": "FC0", + "value": 0, + "description": "Use FlexCom0 pins P0_0 (SCK), P0_1 (MISO), P0_2 (MOSI), P0_3 (SEL)" + }, + { + "name": "FC1", + "value": 1, + "description": "Use FlexCom1 pins P0_7 (SCK), P0_8 (MISO), P0_9 (MOSI), P0_10 (SEL)" + }, + { + "name": "FC2", + "value": 2, + "description": "Use FlexCom2 pins P0_14 (SCK), P0_15 (MISO), P0_16 (MOSI), P0_17 (SEL)" + }, + { + "name": "FC3", + "value": 3, + "description": "Use FlexCom3 pins P0_21 (SCK), P0_22 (MISO), P0_23 (MOSI), P0_24 (SEL)" + }, + { + "name": "FC4", + "value": 4, + "description": "Use FlexCom4 pins P0_28 (SCK), P0_29 (MISO), P0_30 (MOSI), P0_31 (SEL)" + }, + { + "name": "FC5", + "value": 5, + "description": "Use FlexCom5 pins P1_3 (SCK), P1_4 (MISO), P1_5 (MOSI), P1_6 (SEL)" + }, + { + "name": "FC6", + "value": 6, + "description": "Use FlexCom6 pins P3_25 (SCK), P3_26 (MISO), P3_27 (MOSI), P3_28 (SEL)" + }, + { + "name": "FC7", + "value": 7, + "description": "Use FlexCom7 pins P4_0 (SCK), P4_1 (MISO), P4_2 (MOSI), P4_3 (SEL)" + } + ] + }, + { + "width": 2, + "id": "fuse96-bits-20-21", + "name": "SECURE_BOOT_EN", + "description": "Force secure image only.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Allow non-secure images with and without CRC. Used during development." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Secure boot is enabled. The images have to be signed and optionally AES-CTR encrypted using pre-shared key. ROM does signature checking first and then does decryption of authenticated image." + }, + { + "name": "ENABLED_2", + "value": 2, + "description": "Secure boot is enabled." + }, + { + "name": "ENABLED_3", + "value": 3, + "description": "Secure boot is enabled." + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-22", + "name": "DICE_INC_OTP", + "description": "Include non-field updatable OTP Fields in DICE computation. OTP values in shadow registers are used in computation for words 95, 96, 98, 99, 104, 120 - 127.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse96-bit-23", + "name": "DICE_SKIP", + "description": "If set, ROM skips computation of Composite Device Identifier (CDI) defined in DICE specification. But ROM will continue to hide UDS source in OTP and PUF (index 15) before passing control to user code.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 8, + "id": "fuse96-bits-24-31", + "name": "BOOT_FAIL_PIN", + "description": "GPIO port and pin number to use for indicating boot failure. Boot ROM will drive this pin high before locking the chip on error conditions. Applications can use this pin to power cycle the system.\n[2:0] - Defines GPIO port\n[7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "fuse97", + "name": "BOOT_CFG1", + "description": "Boot configuration word specifying Quad/Octal-SPI flash devices settings.", + "deprecated_names": [ + "BOOT_CFG[1]" + ], + "index_int": "0x0061", + "shadow_reg_offset_int": "0x0184", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse97-bit-0", + "name": "QSPI_AUTO_PROBE_EN", + "description": "Quad/Octal-SPI flash auto probe feature enable.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 3, + "id": "fuse97-bits-1-3", + "name": "QSPI_PROBE_TYPE", + "description": "Quad/Octal-SPI flash probe type.", + "values": [ + { + "name": "QSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + }, + { + "name": "MICRON_OCTAL", + "value": 1, + "description": "Micron Octal FLASH" + }, + { + "name": "MACRONIX_OCTAL", + "value": 2, + "description": "Macronix Octal FLASH" + }, + { + "name": "ADESTO_OCTAL", + "value": 3, + "description": "Adesto Octal FLASH" + } + ] + }, + { + "width": 3, + "id": "fuse97-bits-4-6", + "name": "QSPI_FLASH_TYPE", + "description": "Define typical Serial NOR Flash types", + "values": [ + { + "name": "QSPI_ADDR_3B", + "value": 0, + "description": "Use 3byte (24-bit) address read (0x03) by default" + }, + { + "name": "QSPI_ADDR_4B", + "value": 1, + "description": "Use 4byte (32-bit) address read (0x13) by default" + }, + { + "name": "HYPER_1V8", + "value": 2, + "description": "HyperFlash 1V8" + }, + { + "name": "HYPER_3V3", + "value": 3, + "description": "HyperFlash 3V3" + }, + { + "name": "OSPI_DDR_MXIC", + "value": 4, + "description": "MXIC Octal DDR" + }, + { + "name": "OSPI_DDR_MICRON", + "value": 5, + "description": "Micron Octal DDR" + } + ] + }, + { + "width": 4, + "id": "fuse97-bits-7-10", + "name": "QSPI_DUMMY_CYCLES", + "description": "Quad/Octal-SPI dummy cycles for read command." + }, + { + "width": 3, + "id": "fuse97-bits-11-13", + "name": "QSPI_FREQUENCY", + "description": "Quad/Octal-SPI flash interface frequency.", + "values": [ + { + "name": "QSPI_60MHZ", + "value": 0, + "description": "60MHz" + }, + { + "name": "QSPI_80MHZ", + "value": 1, + "description": "80MHz" + }, + { + "name": "QSPI_90MHZ", + "value": 2, + "description": "90MHz" + }, + { + "name": "QSPI_100MHZ", + "value": 3, + "description": "100MHz" + }, + { + "name": "QSPI_120MHZ", + "value": 4, + "description": "120MHz" + }, + { + "name": "QSPI_133MHZ", + "value": 5, + "description": "133MHz" + }, + { + "name": "QSPI_166MHZ", + "value": 6, + "description": "166MHz" + }, + { + "name": "QSPI_200MHZ", + "value": 7, + "description": "200MHz" + } + ] + }, + { + "width": 1, + "id": "fuse97-bit-14", + "name": "QSPI_RESET_PIN_ENABLE", + "description": "Use QSPI_RESET_PIN to reset the flash device.", + "values": [ + { + "name": "NO_RESET", + "value": 0, + "description": "Octal/QSPI device reset pin is not connected or available." + }, + { + "name": "EN_RESET", + "value": 1, + "description": "Octal/QSPI device reset pin is connected to a GPIO (QSPI_RESET_PIN)." + } + ] + }, + { + "width": 3, + "id": "fuse97-bits-15-17", + "name": "QSPI_RESET_PIN_GPIO_PORT", + "description": "GPIO port and pin number to use for O/QSPI reset function.\nDefines GPIO port." + }, + { + "width": 5, + "id": "fuse97-bits-18-22", + "name": "QSPI_RESET_PIN_GPIO_PIN_NUM", + "description": "GPIO port and pin number to use for O/QSPI reset function.\nDefines GPIO pin number." + }, + { + "width": 2, + "id": "fuse97-bits-23-24", + "name": "QSPI_HOLD TIME", + "description": "Wait time before access to Serial Flash.", + "values": [ + { + "name": "WAIT_500_US", + "value": 0, + "description": "Wait for 500 micro seconds." + }, + { + "name": "WAIT_1_MS", + "value": 1, + "description": "Wait for 1 milliseconds." + }, + { + "name": "WAIT_3_MS", + "value": 2, + "description": "Wait for 3 milliseconds." + }, + { + "name": "WAIT_10_MS", + "value": 3, + "description": "Wait for 10 milliseconds." + } + ] + }, + { + "width": 4, + "id": "fuse97-bits-25-28", + "name": "QSPI_PWR_HOLD_TIME", + "description": "Delay after POR before accessing Quad/Octal-SPI flash devices in addition to delay defined by QSPI_HOLD TIME field.", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No delay" + }, + { + "name": "100US_DELAY", + "value": 1, + "description": "Waits additional 100 micro-seconds." + }, + { + "name": "500US_DELAY", + "value": 2, + "description": "Waits additional 500 micro-seconds." + }, + { + "name": "1MS_DELAY", + "value": 3, + "description": "Waits additional 1 milli-seconds." + }, + { + "name": "10MS_DELAY", + "value": 4, + "description": "Waits additional 10 milli-seconds." + }, + { + "name": "20MS_DELAY", + "value": 5, + "description": "Waits additional 20 milli-seconds." + }, + { + "name": "40MS_DELAY", + "value": 6, + "description": "Waits additional 40 milli-seconds." + }, + { + "name": "60MS_DELAY", + "value": 7, + "description": "Waits additional 60 milli-seconds." + }, + { + "name": "80MS_DELAY", + "value": 8, + "description": "Waits additional 80 milli-seconds." + }, + { + "name": "100MS_DELAY", + "value": 9, + "description": "Waits additional 100 milli-seconds." + }, + { + "name": "120MS_DELAY", + "value": 10, + "description": "Waits additional 120 milli-seconds." + }, + { + "name": "140MS_DELAY", + "value": 11, + "description": "Waits additional 140 milli-seconds." + }, + { + "name": "160MS_DELAY", + "value": 12, + "description": "Waits additional 160 milli-seconds." + }, + { + "name": "180MS_DELAY", + "value": 13, + "description": "Waits additional 180 milli-seconds." + }, + { + "name": "200MS_DELAY", + "value": 14, + "description": "Waits additional 200 milli-seconds." + }, + { + "name": "220MS_DELAY", + "value": 15, + "description": "Waits additional 220 milli-seconds." + } + ] + }, + { + "width": 3 + } + ] + }, + { + "id": "fuse98", + "name": "BOOT_CFG2", + "description": "Boot configuration word specifying settings for SD card and eMMC boot interface.", + "deprecated_names": [ + "BOOT_CFG[2]" + ], + "index_int": "0x0062", + "shadow_reg_offset_int": "0x0188", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x4000" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse98-bit-0", + "name": "SDHC_DEVICE_TYPE", + "description": "Device type connected to SDHC port.", + "values": [ + { + "name": "eMMC_DEV", + "value": 0, + "description": "eMMC device" + }, + { + "name": "SD_DEV", + "value": 1, + "description": "SD card device" + } + ] + }, + { + "width": 2, + "id": "fuse98-bits-1-2", + "name": "SDHC_BUS_WIDTH", + "description": "Bus width of the device connected to SDHC.", + "values": [ + { + "name": "SD_1B_MMC_4B", + "value": 0, + "description": "For SD cards use 1-bit data bus. \nFor eMMC use 4-bit data bus." + }, + { + "name": "SD_4B_MMC_8B", + "value": 1, + "description": "For SD cards use 4-bit data bus. \nFor eMMC use 8-bit data bus." + }, + { + "name": "MMC_4B_DDR", + "value": 2, + "description": "For eMMC use 4-bit bus in DDR mode." + }, + { + "name": "MMC_8B_DDR", + "value": 3, + "description": "For eMMC use 8-bit bus in DDR mode." + } + ] + }, + { + "width": 2, + "id": "fuse98-bits-3-4", + "name": "SDHC_SPEED", + "description": "Speed ratings of eMMC devices and SD card devices.", + "values": [ + { + "name": "NORMAL", + "value": 0, + "description": "Normal speed for eMMC devices. SDR12 speeds for SD." + }, + { + "name": "HIGH", + "value": 1, + "description": "High speed for eMMC devices. SDR25 speeds for SD." + }, + { + "name": "SDR50", + "value": 2, + "description": "SDR50 speeds for SD card." + }, + { + "name": "SDR104", + "value": 3, + "description": "SDR104" + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-5", + "name": "SDHC_PWR_CYCLE_EN", + "description": "Enable SDHC power cycle via USDHC_RST pad.", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disabled." + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enabled." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-6", + "name": "SDHC0_PWR_POL", + "description": "Polarity of power enable signal for SDHC0 port.", + "values": [ + { + "name": "ACTIVE_HIGH", + "value": 0, + "description": "Active high signal." + }, + { + "name": "ACTIVE_LOW", + "value": 1, + "description": "Active low signal." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-7", + "name": "SDHC1_PWR_POL", + "description": "Polarity of power enable signal for SDHC1 port.", + "values": [ + { + "name": "ACTIVE_HIGH", + "value": 0, + "description": "Active high signal." + }, + { + "name": "ACTIVE_LOW", + "value": 1, + "description": "Active low signal." + } + ] + }, + { + "width": 2, + "id": "fuse98-bits-8-9", + "name": "SDHC_PWR_CYCLE_WAIT", + "description": "Wait time after powering down the SDHC devices.", + "values": [ + { + "name": "WAIT_20_MS", + "value": 0, + "description": "Wait 20 milliseconds." + }, + { + "name": "WAIT_10_MS", + "value": 1, + "description": "Wait 10 milliseconds." + }, + { + "name": "WAIT_05_MS", + "value": 2, + "description": "Wait 5 milliseconds." + }, + { + "name": "WAIT_2_5_MS", + "value": 3, + "description": "Wait 2.5 milliseconds." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-10", + "name": "SDHC_PWR_STABLE_WAIT", + "description": "Wait time for power to stabilize after enabling power to SDHC devices.", + "values": [ + { + "name": "WAIT_5_MS", + "value": 0, + "description": "Wait 5 milliseconds." + }, + { + "name": "WAIT_2_5_MS", + "value": 1, + "description": "Wait 2.5 milliseconds." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-11", + "name": "SDHC0_CARD_VOLTAGE", + "description": "SD Voltage selection for SDHC0 port.", + "values": [ + { + "name": "3V3", + "value": 0, + "description": "Uses 3v3 rail." + }, + { + "name": "1V8", + "value": 1, + "description": "Uses 1v8 rail." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-12", + "name": "SDHC1_CARD_VOLTAGE", + "description": "SD Voltage selection for SDHC1 port.", + "values": [ + { + "name": "3V3", + "value": 0, + "description": "Uses 3v3 rail." + }, + { + "name": "1V8", + "value": 1, + "description": "Uses 1v8 rail." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-13", + "name": "MMC_RESET_PRE_IDLE_STATE", + "description": "Reset the MMC to Pre-Idle state before starting boot mode", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-14", + "name": "SDHC_FASTBOOT_MODE", + "description": "Specifies if the boot mode is enabled in Extended CSD register of the eMMC device.", + "values": [ + { + "name": "NORMAL_MODE", + "value": 0, + "description": "eMMC operates in transfer mode after power-up." + }, + { + "name": "BOOT_MODE", + "value": 1, + "description": "eMMC operates in boot mode after power-up." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-15", + "name": "SDHC_FASTBOOT_ACK_EN", + "description": "Specifies if the eMMC device sends boot acknowledge pattern during boot operation.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-16", + "name": "SDHC_PAD_CTL_FREEZE", + "description": "When using SDHC interface in high speed modes, the auto pad compensation control logic could cause interference due to modifications in IO drive strength. Hence it is recommended to freeze the compensated value and enable auto compensation periodically in application code by putting the pad back to normal mode. When this field is set ROM freezes the auto compensation circuit during boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-17", + "name": "SDHC_PAD_CTL_FAST_FREEZE", + "description": "Same as SDHC_PAD_CTL_FREEZE, but in this mode the time taken for switching the compensation from Fast Freeze mode to Normal mode is considerably smaller than the delay incurred in switching from Freeze mode to Normal mode.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-18", + "name": "QSPI_PAD_CTL_FREEZE", + "description": "When using QSPI interface in high speed modes, the auto pad compensation control logic could cause interference due to modifications in IO drive strength. Hence it is recommended to freeze the compensated value and enable auto compensation periodically in application code by putting the pad back to normal mode. When this field is set ROM freezes the auto compensation circuit during boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse98-bit-19", + "name": "QSPI_PAD_CTL_FAST_FREEZE", + "description": "Same as QSPI_PAD_CTL_FREEZE, but in this mode the time taken for switching the compensation from Fast Freeze mode to Normal mode is considerably smaller than the delay incurred in switching from Freeze mode to Normal mode.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 8 + }, + { + "width": 4, + "id": "fuse98-bits-28-31", + "name": "QSPI_IMAGE_SIZE", + "description": "Any offset in memory mapped FlexSPI area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which are programmed at offset 0 or higher offset. QSPI_IMAGE_OFFSET field specifies the offset location of second image. QSPI_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped.", + "values": [ + { + "name": "SIZE_OFFSET", + "value": 0, + "description": "Size of the remapped area (aka second half) is same as first half. It is determined by QSPI_IMAGE_OFFSET Field. \n Remap size = QSPI_IMAGE_OFFSET * 256KByte;" + }, + { + "name": "SIZE_1MB", + "value": 1, + "description": "Size of remapped area is 1MByte." + }, + { + "name": "SIZE_2MB", + "value": 2, + "description": "Size of remapped area is 2MByte." + }, + { + "name": "SIZE_3MB", + "value": 3, + "description": "Size of remapped area is 3MByte." + }, + { + "name": "SIZE_4MB", + "value": 4, + "description": "Size of remapped area is 4MByte." + }, + { + "name": "SIZE_5MB", + "value": 5, + "description": "Size of remapped area is 5MByte." + }, + { + "name": "SIZE_6MB", + "value": 6, + "description": "Size of remapped area is 6MByte." + }, + { + "name": "SIZE_7MB", + "value": 7, + "description": "Size of remapped area is 7MByte." + }, + { + "name": "SIZE_8MB", + "value": 8, + "description": "Size of remapped area is 8MByte." + }, + { + "name": "SIZE_9MB", + "value": 9, + "description": "Size of remapped area is 9MByte." + }, + { + "name": "SIZE_10MB", + "value": 10, + "description": "Size of remapped area is 10MByte." + }, + { + "name": "SIZE_11MB", + "value": 11, + "description": "Size of remapped area is 11MByte." + }, + { + "name": "SIZE_12MB", + "value": 12, + "description": "Size of remapped area is 12MByte." + }, + { + "name": "SIZE_256KB", + "value": 13, + "description": "Size of remapped area is 256KByte." + }, + { + "name": "SIZE_512KB", + "value": 14, + "description": "Size of remapped area is 512KByte." + }, + { + "name": "SIZE_768KB", + "value": 15, + "description": "Size of remapped area is 768KByte." + } + ] + } + ] + }, + { + "id": "fuse99", + "name": "BOOT_CFG3", + "description": "Boot configuration word specifying delay lines settings for SDHC and QSPI interfaces.", + "deprecated_names": [ + "BOOT_CFG[3]" + ], + "index_int": "0x0063", + "shadow_reg_offset_int": "0x018C", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x8000" + }, + "bitfields": [ + { + "width": 7, + "id": "fuse99-bits-0-6", + "name": "QSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for Flash read sampling via DQS (either internal loopback or external DQS)" + }, + { + "width": 1, + "id": "fuse99-bit-7", + "name": "SDHC_DLL_TUNING_OVERRIDE_ENABLE", + "description": "SDHC_DLL_TUNING_OVERRIDE_ENABLE bit-field", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Default\uff1a DLL delay tuning start 10, DLL delay tuning step 2 ( this config can cover most of user cases.)" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Override by SDHC_DLL_SETTING" + } + ] + }, + { + "width": 8, + "id": "fuse99-bits-8-15", + "name": "SDHC_DLL_TUNING_START", + "description": "DLL delay tuning start." + }, + { + "width": 3, + "id": "fuse99-bits-16-18", + "name": "SDHC_DLL_TUNING_STEP", + "description": "DLL delay tuning step." + }, + { + "width": 3, + "id": "fuse99-bits-19-21", + "name": "USB_PLL_DIV_SEL", + "description": "USB PLL divider value. Used for configuring USB PLL during USB ISP and DFU boot modes. The value corresponds to the PLL_DIV_SEL field of the USBPHY_PLL_SIC register." + }, + { + "width": 10, + "id": "fuse99-bits-22-31", + "name": "QSPI_IMAGE_OFFSET", + "description": "Any offset within memory mapped FlexSPI area could be remapped to offset zero to support eXecute In Place (XIP) of image programmed at different offset. This allows to build all update images with same RO base address, which can be programmed at offset 0 or higher offset. QSPI_IMAGE_OFFSET field specifies the offset location of second image. QSPI_IMAGE_SIZE field specifies the size multiple to determine the size of area to be remapped. \nIf this field is left blank boot ROM assumes that application intends to not use dual image boot feature. The physical flash offset is computed as below:\n physical offset = QSPI_IMAGE_OFFSET * 256KByte;" + } + ] + } + ] + }, + { + "group": { + "name": "SECURITY_EPOCH", + "description": "OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different lifecycle stages of the device." + }, + "registers": [ + { + "id": "fuse101", + "name": "SEC_BOOT_CFG5", + "description": "Boot configuration word5. \n- This word is set in redundant mode. Thus individual bits can be programmed separately at different lifecycle stages of the device.", + "deprecated_names": [ + "SEC_BOOT_CFG[5]" + ], + "index_int": "0x0065", + "shadow_reg_offset_int": "0x0194", + "individual_write_lock": "user", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0200" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse101-bits-0-3", + "name": "REVOKE_ROOTKEY", + "description": "Revoke up to 4 root keys. When a bit is set corresponding root key is revoked." + }, + { + "width": 1, + "id": "fuse101-bit-4", + "name": "FA_MODE_EN", + "description": "Enable Fault Analysis mode.\n- When set ROM checks and erases customer sensitive assets (AES keys or key codes) stored in IFR/OTP. \n- Issues zeroized command to PUF (disables key decoding until POR)\n- Blocks all HW routed OTP keys and set lock bits on those registers\n- Enables all debug ports and waits in loop for tester.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 2, + "id": "fuse101-bits-5-6", + "name": "ENABLE_CRC_CHECK", + "description": "Enable CRC checking of OTP words.", + "values": [ + { + "name": "CRC_DISABLE", + "value": 0, + "description": "CRC checking of OTP words is disabled." + }, + { + "name": "CRC_ENABLE", + "value": 1, + "description": "CRC check of all OTP words is enabled." + }, + { + "name": "CRC_NXPONLY", + "value": 2, + "description": "CRC check is enabled only for NXP programmed OTP words." + }, + { + "name": "CRC_ENABLE2", + "value": 3, + "description": "CRC check of all OTP words is enabled." + } + ] + }, + { + "width": 1, + "id": "fuse101-bit-7", + "name": "USE_PUF", + "description": "Use PUF to store AES keys and UDS.", + "values": [ + { + "name": "KEY_IN_OTP", + "value": 0, + "description": "AES keys and UDS are read from OTP." + }, + { + "name": "KEY_IN_PUF", + "value": 1, + "description": "AES keys and UDS are read from PUF." + } + ] + }, + { + "width": 1, + "id": "fuse101-bit-8", + "name": "PUF_BLOCK_ENROLL", + "description": "Block further enrollment of PUF block. When this bit is set ROM blocks generation of new activation codes.", + "values": [ + { + "name": "ENROLL_EN", + "value": 0, + "description": "Enable generation of new activation code." + }, + { + "name": "ENROLL_DIS", + "value": 1, + "description": "Disable generation of new activation code." + } + ] + }, + { + "width": 1, + "id": "fuse101-bit-9", + "name": "PUF_BLOCK_SET_KEY", + "description": "Block further enrollment of PUF block. When this bit is set ROM blocks generation of new key codes.", + "values": [ + { + "name": "KEY_GEN_EN", + "value": 0, + "description": "Enable generation of new key codes." + }, + { + "name": "KEY_GEN_DIS", + "value": 1, + "description": "Disable generation of new key codes." + } + ] + }, + { + "width": 6 + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse102", + "name": "REVOKE_IMG_KEY", + "description": "Image keys revocation identifier.", + "index_int": "0x0066", + "shadow_reg_offset_int": "0x0198", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse102-bits-0-15", + "name": "REVOKE_IMG_KEY", + "description": "To implement anti-rollback feature, the image key certificate should be revoked using this field. The in-field FW update process should blow the least unblown bit. During image key certificate validation this field is compare with the certificate content (upper 2 bytes of serial number field in X.509 certificate)." + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse103", + "name": "SEC_BOOT_CFG7", + "description": "Boot configuration word7. \n- This word is set in redundant mode. Thus individual bits can be programmed separately at different lifecycle stages of the device.", + "deprecated_names": [ + "SEC_BOOT_CFG[7]" + ], + "index_int": "0x0067", + "shadow_reg_offset_int": "0x019C", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse103-bits-0-15", + "name": "DAP_VENDOR_USAGE", + "description": "Lower 16-bits of Vendor Usage field in Debug Credentials defined in NXP's Debug Authentication Protocol specifications Version 1.0." + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "USB_CFG", + "description": "USB_CFG group" + }, + "registers": [ + { + "id": "fuse105", + "name": "USB_ID", + "description": "Override default USB ID's used by ROM during USB master boot and ISP modes.", + "index_int": "0x0069", + "individual_write_lock": "always_lock", + "bitfields": [ + { + "width": 16, + "id": "fuse105-bits-0-15", + "name": "USB_VID", + "description": "USB vendor ID." + }, + { + "width": 16, + "id": "fuse105-bits-16-31", + "name": "USB_PID", + "description": "USB product ID." + } + ] + } + ] + }, + { + "group": { + "name": "OTFAD_CFG", + "description": "OTFAD_CFG group" + }, + "registers": [ + { + "id": "fuse106", + "name": "OTFAD_CFG", + "description": "Configuration word to control OTFAD key blob loading during boot process.", + "index_int": "0x006A", + "shadow_reg_offset_int": "0x01A8", + "individual_write_lock": "user", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0004" + }, + "bitfields": [ + { + "width": 12 + }, + { + "width": 1, + "id": "fuse106-bit-12", + "name": "OTFAD_ENABLE", + "description": "When this field is set, it indicates to ROM that OTFAD feature is enabled and should initialize the OTFAD engine before accessing the memory mapped QSPI flash buffer area.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 1, + "id": "fuse106-bit-13", + "name": "KEYBLOB_RESTRICT_REG", + "description": "ROM after loading OTFAD registers restricts read access before jumping to user code. Only CTR registers are writable in this mode.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Value 0." + }, + { + "name": "1", + "value": 1, + "description": "Value 1." + } + ] + }, + { + "width": 2 + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "KEY_STORE", + "description": "KEY_STORE group" + }, + "registers": [ + { + "id": "fuse107", + "name": "KEY_SCRAMBLE_SEED", + "description": "Key scramble data used as input to scramble master key stored in OTP.", + "index_int": "0x006B", + "shadow_reg_offset_int": "0x01AC", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0010", + "read_lock_int": "0x0020" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse107-bits-0-31", + "name": "SCRAMBLE_INPUT", + "description": "32-bit random value programmed by user which will be used as one of the two inputs to scramble OTP_MASTER_KEY key." + } + ] + }, + { + "id": "fuse108", + "name": "OTFAD_KEK_SEED_31_0", + "description": "When OTP key store is used (USE_PUF = 0), this 128-bit user programmed value is used to derive OTFAD_KEK.\n\nOTFAD_KEK[127:0] = AES_ENCRYPT (OTP_MASTER_KEY, OTFAD_KEK_SEED[127:0]);", + "index_int": "0x006C", + "shadow_reg_offset_int": "0x01B0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0040" + } + }, + { + "id": "fuse109", + "name": "OTFAD_KEK_SEED_63_32", + "description": "OTFAD_KEK_SEED_63_32 register", + "index_int": "0x006D", + "shadow_reg_offset_int": "0x01B4", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0040" + } + }, + { + "id": "fuse110", + "name": "OTFAD_KEK_SEED_95_64", + "description": "OTFAD_KEK_SEED_95_64 register", + "index_int": "0x006E", + "shadow_reg_offset_int": "0x01B8", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0040" + } + }, + { + "id": "fuse111", + "name": "OTFAD_KEK_SEED_127_96", + "description": "OTFAD_KEK_SEED_127_96 register", + "index_int": "0x006F", + "shadow_reg_offset_int": "0x01BC", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0040" + } + }, + { + "id": "fuse112", + "name": "OTP_MASTER_KEY[31:0]", + "description": "Master Key used to derive different usage keys (HMAC_KEY, ENC_IMAGE_KEY, SB2_KEK, OTFAD_KEK). \n\n- ENC_BOOT_HMAC_KEY[127:0] = AES_ENCRYPT (OTP_MASTER_KEY, 0x00000000000000000000000000000000);\n- ENC_BOOT_AES_KEY[255:0] = AES_ENCRYPT (OTP_MASTER_KEY, 0x00000000000000000000000000000001) || AES_ENCRYPT (OTP_MASTER_KEY, 0x00000000000000000000000000000002);\n- SB_KEK[255:0] = AES_ENCRYPT (OTP_MASTER_KEY, 0x00000000000000000000000000000003) || AES_ENCRYPT (OTP_MASTER_KEY, 0x00000000000000000000000000000004); \n- OTFAD_KEK[127:0] = AES_ENCRYPT (OTP_MASTER_KEY, OTFAD_KEK_SEED[127:0]);", + "index_int": "0x0070", + "shadow_reg_offset_int": "0x01C0", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse113", + "name": "OTP_MASTER_KEY[63:32]", + "description": "OTP_MASTER_KEY[63:32] register", + "index_int": "0x0071", + "shadow_reg_offset_int": "0x01C4", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse114", + "name": "OTP_MASTER_KEY[95:64]", + "description": "OTP_MASTER_KEY[95:64] register", + "index_int": "0x0072", + "shadow_reg_offset_int": "0x01C8", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse115", + "name": "OTP_MASTER_KEY[127:96]", + "description": "OTP_MASTER_KEY[127:96] register", + "index_int": "0x0073", + "shadow_reg_offset_int": "0x01CC", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse116", + "name": "OTP_MASTER_KEY[159:128]", + "description": "OTP_MASTER_KEY[159:128] register", + "index_int": "0x0074", + "shadow_reg_offset_int": "0x01D0", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse117", + "name": "OTP_MASTER_KEY[191:160]", + "description": "OTP_MASTER_KEY[191:160] register", + "index_int": "0x0075", + "shadow_reg_offset_int": "0x01D4", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse118", + "name": "OTP_MASTER_KEY[223:192]", + "description": "OTP_MASTER_KEY[223:192] register", + "index_int": "0x0076", + "shadow_reg_offset_int": "0x01D8", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse119", + "name": "OTP_MASTER_KEY[255:224]", + "description": "OTP_MASTER_KEY[255:224] register", + "index_int": "0x0077", + "shadow_reg_offset_int": "0x01DC", + "access": "WO", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse8", + "write_lock_int": "0x0100" + } + }, + { + "id": "fuse120", + "name": "RKTH_255_224", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys (modulus || exponent).\nFor i in 0..3:\n Let M[i] = BE(Modulus i)\n Let E[i] = BE(Exponent i)\n Let RKH[i] = SHA256( M[i] || E[i] )\n Let RKTH = SHA256( RKH[0] || RKH[1] || RKH[2] || RKH[3] )\nNote: Documentation update needed when using blhost due to endianness issue.", + "index_int": "0x0078", + "shadow_reg_offset_int": "0x01E0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse121", + "name": "RKTH_223_192", + "description": "RKTH_223_192 register", + "index_int": "0x0079", + "shadow_reg_offset_int": "0x01E4", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse122", + "name": "RKTH_191_160", + "description": "RKTH_191_160 register", + "index_int": "0x007A", + "shadow_reg_offset_int": "0x01E8", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse123", + "name": "RKTH_159_128", + "description": "RKTH_159_128 register", + "index_int": "0x007B", + "shadow_reg_offset_int": "0x01EC", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse124", + "name": "RKTH_127_96", + "description": "RKTH_127_96 register", + "index_int": "0x007C", + "shadow_reg_offset_int": "0x01F0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse125", + "name": "RKTH_95_64", + "description": "RKTH_95_64 register", + "index_int": "0x007D", + "shadow_reg_offset_int": "0x01F4", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse126", + "name": "RKTH_63_32", + "description": "RKTH_63_32 register", + "index_int": "0x007E", + "shadow_reg_offset_int": "0x01F8", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + }, + { + "id": "fuse127", + "name": "RKTH_31_0", + "description": "RKTH_31_0 register", + "index_int": "0x007F", + "shadow_reg_offset_int": "0x01FC", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x1000" + } + } + ] + }, + { + "group": { + "name": "NT_FW_VERSION", + "description": "NT_FW_VERSION group" + }, + "registers": [ + { + "id": "fuse128", + "name": "NT_FW_VER_15_0", + "description": "Non-trusted firmware version counter (0 - 255). OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device.", + "index_int": "0x0080", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse128-bits-0-15", + "name": "NT_FW_VER_15_0", + "description": "Non-trusted firmware version counter (0 - 255). OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device." + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse129", + "name": "NT_FW_VER_31_16", + "description": "NT_FW_VER_31_16 register", + "index_int": "0x0081", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse129-bits-0-15", + "name": "NT_FW_VER_31_16", + "description": "NT_FW_VER_31_16 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse130", + "name": "NT_FW_VER_47_32", + "description": "NT_FW_VER_47_32 register", + "index_int": "0x0082", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse130-bits-0-15", + "name": "NT_FW_VER_47_32", + "description": "NT_FW_VER_47_32 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse131", + "name": "NT_FW_VER_63_48", + "description": "NT_FW_VER_63_48 register", + "index_int": "0x0083", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse131-bits-0-15", + "name": "NT_FW_VER_63_48", + "description": "NT_FW_VER_63_48 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse132", + "name": "NT_FW_VER_79_64", + "description": "NT_FW_VER_79_64 register", + "index_int": "0x0084", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse132-bits-0-15", + "name": "NT_FW_VER_79_64", + "description": "NT_FW_VER_79_64 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse133", + "name": "NT_FW_VER_95_80", + "description": "NT_FW_VER_95_80 register", + "index_int": "0x0085", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse133-bits-0-15", + "name": "NT_FW_VER_95_80", + "description": "NT_FW_VER_95_80 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse134", + "name": "NT_FW_VER_111_96", + "description": "NT_FW_VER_111_96 register", + "index_int": "0x0086", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse134-bits-0-15", + "name": "NT_FW_VER_111_96", + "description": "NT_FW_VER_111_96 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse135", + "name": "NT_FW_VER_127_112", + "description": "NT_FW_VER_127_112 register", + "index_int": "0x0087", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse135-bits-0-15", + "name": "NT_FW_VER_127_112", + "description": "NT_FW_VER_127_112 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse136", + "name": "NT_FW_VER_143_128", + "description": "NT_FW_VER_143_128 register", + "index_int": "0x0088", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse136-bits-0-15", + "name": "NT_FW_VER_143_128", + "description": "NT_FW_VER_143_128 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse137", + "name": "NT_FW_VER_159_144", + "description": "NT_FW_VER_159_144 register", + "index_int": "0x0089", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse137-bits-0-15", + "name": "NT_FW_VER_159_144", + "description": "NT_FW_VER_159_144 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse138", + "name": "NT_FW_VER_175_160", + "description": "NT_FW_VER_175_160 register", + "index_int": "0x008A", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse138-bits-0-15", + "name": "NT_FW_VER_175_160", + "description": "NT_FW_VER_175_160 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse139", + "name": "NT_FW_VER_191_176", + "description": "NT_FW_VER_191_176 register", + "index_int": "0x008B", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse139-bits-0-15", + "name": "NT_FW_VER_191_176", + "description": "NT_FW_VER_191_176 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse140", + "name": "NT_FW_VER_207_192", + "description": "NT_FW_VER_207_192 register", + "index_int": "0x008C", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse140-bits-0-15", + "name": "NT_FW_VER_207_192", + "description": "NT_FW_VER_207_192 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse141", + "name": "NT_FW_VER_223_208", + "description": "NT_FW_VER_223_208 register", + "index_int": "0x008D", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse141-bits-0-15", + "name": "NT_FW_VER_223_208", + "description": "NT_FW_VER_223_208 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse142", + "name": "NT_FW_VER_239_224", + "description": "NT_FW_VER_239_224 register", + "index_int": "0x008E", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse142-bits-0-15", + "name": "NT_FW_VER_239_224", + "description": "NT_FW_VER_239_224 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse143", + "name": "NT_FW_VER_255_240", + "description": "NT_FW_VER_255_240 register", + "index_int": "0x008F", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse143-bits-0-15", + "name": "NT_FW_VER_255_240", + "description": "NT_FW_VER_255_240 register" + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "TZ_FW_VERSION", + "description": "TZ_FW_VERSION group" + }, + "registers": [ + { + "id": "fuse144", + "name": "TZ_FW_VER_15_0", + "description": "Trusted firmware version counter (0 - 63). OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device.", + "index_int": "0x0090", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse144-bits-0-15", + "name": "TZ_FW_VER_15_0", + "description": "Trusted firmware version counter (0 - 63). OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device." + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse145", + "name": "TZ_FW_VER_31_16", + "description": "TZ_FW_VER_31_16 register", + "index_int": "0x0091", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse145-bits-0-15", + "name": "TZ_FW_VER_31_16", + "description": "TZ_FW_VER_31_16 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse146", + "name": "TZ_FW_VER_47_32", + "description": "TZ_FW_VER_47_32 register", + "index_int": "0x0092", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse146-bits-0-15", + "name": "TZ_FW_VER_47_32", + "description": "TZ_FW_VER_47_32 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse147", + "name": "TZ_FW_VER_63_48", + "description": "TZ_FW_VER_63_48 register", + "index_int": "0x0093", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse147-bits-0-15", + "name": "TZ_FW_VER_63_48", + "description": "TZ_FW_VER_63_48 register" + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "USER_DATA", + "description": "USER_DATA group" + }, + "registers": [ + { + "id": "fuse148", + "name": "USER_RED_0", + "description": "Customer defined data.OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device.", + "index_int": "0x0094", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse148-bits-0-15", + "name": "USER_RED_0", + "description": "Customer defined data.OTP words in this block are redundant fuse words. Thus individual bits can be programmed separately at different point in time throughout the life of device." + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse149", + "name": "USER_RED_1", + "description": "USER_RED_1 register", + "index_int": "0x0095", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse149-bits-0-15", + "name": "USER_RED_1", + "description": "USER_RED_1 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse150", + "name": "USER_RED_2", + "description": "USER_RED_2 register", + "index_int": "0x0096", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse150-bits-0-15", + "name": "USER_RED_2", + "description": "USER_RED_2 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse151", + "name": "USER_RED_3", + "description": "USER_RED_3 register", + "index_int": "0x0097", + "individual_write_lock": "user", + "bitfields": [ + { + "width": 16, + "id": "fuse151-bits-0-15", + "name": "USER_RED_3", + "description": "USER_RED_3 register" + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse152", + "name": "USER_ECC_0", + "description": "Customer defined data.OTP words in this block are ECC fuse words. Thus all bits in these words can be programmed at one shot.", + "index_int": "0x0098", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse153", + "name": "USER_ECC_1", + "description": "USER_ECC_1 register", + "index_int": "0x0099", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse154", + "name": "USER_ECC_2", + "description": "USER_ECC_2 register", + "index_int": "0x009A", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse155", + "name": "USER_ECC_3", + "description": "USER_ECC_3 register", + "index_int": "0x009B", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse156", + "name": "USER_ECC_4", + "description": "USER_ECC_4 register", + "index_int": "0x009C", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse157", + "name": "USER_ECC_5", + "description": "USER_ECC_5 register", + "index_int": "0x009D", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse158", + "name": "USER_ECC_6", + "description": "USER_ECC_6 register", + "index_int": "0x009E", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse159", + "name": "USER_ECC_7", + "description": "USER_ECC_7 register", + "index_int": "0x009F", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK1", + "description": "USER_BANK1 group" + }, + "registers": [ + { + "id": "fuse392", + "name": "USER_BANK1_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x0188", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse393", + "name": "USER_BANK1_1", + "description": "USER_BANK1_1 register", + "index_int": "0x0189", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse394", + "name": "USER_BANK1_2", + "description": "USER_BANK1_2 register", + "index_int": "0x018A", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse395", + "name": "USER_BANK1_3", + "description": "USER_BANK1_3 register", + "index_int": "0x018B", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse396", + "name": "USER_BANK1_4", + "description": "USER_BANK1_4 register", + "index_int": "0x018C", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse397", + "name": "USER_BANK1_5", + "description": "USER_BANK1_5 register", + "index_int": "0x018D", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse398", + "name": "USER_BANK1_6", + "description": "USER_BANK1_6 register", + "index_int": "0x018E", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse399", + "name": "USER_BANK1_7", + "description": "USER_BANK1_7 register", + "index_int": "0x018F", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK2", + "description": "USER_BANK2 group" + }, + "registers": [ + { + "id": "fuse400", + "name": "USER_BANK2_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x0190", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse401", + "name": "USER_BANK2_1", + "description": "USER_BANK2_1 register", + "index_int": "0x0191", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse402", + "name": "USER_BANK2_2", + "description": "USER_BANK2_2 register", + "index_int": "0x0192", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse403", + "name": "USER_BANK2_3", + "description": "USER_BANK2_3 register", + "index_int": "0x0193", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse404", + "name": "USER_BANK2_4", + "description": "USER_BANK2_4 register", + "index_int": "0x0194", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse405", + "name": "USER_BANK2_5", + "description": "USER_BANK2_5 register", + "index_int": "0x0195", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse406", + "name": "USER_BANK2_6", + "description": "USER_BANK2_6 register", + "index_int": "0x0196", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse407", + "name": "USER_BANK2_7", + "description": "USER_BANK2_7 register", + "index_int": "0x0197", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK3", + "description": "USER_BANK3 group" + }, + "registers": [ + { + "id": "fuse408", + "name": "USER_BANK3_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x0198", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse409", + "name": "USER_BANK3_1", + "description": "USER_BANK3_1 register", + "index_int": "0x0199", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse410", + "name": "USER_BANK3_2", + "description": "USER_BANK3_2 register", + "index_int": "0x019A", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse411", + "name": "USER_BANK3_3", + "description": "USER_BANK3_3 register", + "index_int": "0x019B", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse412", + "name": "USER_BANK3_4", + "description": "USER_BANK3_4 register", + "index_int": "0x019C", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse413", + "name": "USER_BANK3_5", + "description": "USER_BANK3_5 register", + "index_int": "0x019D", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse414", + "name": "USER_BANK3_6", + "description": "USER_BANK3_6 register", + "index_int": "0x019E", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse415", + "name": "USER_BANK3_7", + "description": "USER_BANK3_7 register", + "index_int": "0x019F", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK4", + "description": "USER_BANK4 group" + }, + "registers": [ + { + "id": "fuse416", + "name": "USER_BANK4_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x01A0", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse417", + "name": "USER_BANK4_1", + "description": "USER_BANK4_1 register", + "index_int": "0x01A1", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse418", + "name": "USER_BANK4_2", + "description": "USER_BANK4_2 register", + "index_int": "0x01A2", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse419", + "name": "USER_BANK4_3", + "description": "USER_BANK4_3 register", + "index_int": "0x01A3", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse420", + "name": "USER_BANK4_4", + "description": "USER_BANK4_4 register", + "index_int": "0x01A4", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse421", + "name": "USER_BANK4_5", + "description": "USER_BANK4_5 register", + "index_int": "0x01A5", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse422", + "name": "USER_BANK4_6", + "description": "USER_BANK4_6 register", + "index_int": "0x01A6", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse423", + "name": "USER_BANK4_7", + "description": "USER_BANK4_7 register", + "index_int": "0x01A7", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK5", + "description": "USER_BANK5 group" + }, + "registers": [ + { + "id": "fuse424", + "name": "USER_BANK5_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x01A8", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse425", + "name": "USER_BANK5_1", + "description": "USER_BANK5_1 register", + "index_int": "0x01A9", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse426", + "name": "USER_BANK5_2", + "description": "USER_BANK5_2 register", + "index_int": "0x01AA", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse427", + "name": "USER_BANK5_3", + "description": "USER_BANK5_3 register", + "index_int": "0x01AB", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse428", + "name": "USER_BANK5_4", + "description": "USER_BANK5_4 register", + "index_int": "0x01AC", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse429", + "name": "USER_BANK5_5", + "description": "USER_BANK5_5 register", + "index_int": "0x01AD", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse430", + "name": "USER_BANK5_6", + "description": "USER_BANK5_6 register", + "index_int": "0x01AE", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse431", + "name": "USER_BANK5_7", + "description": "USER_BANK5_7 register", + "index_int": "0x01AF", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK6", + "description": "USER_BANK6 group" + }, + "registers": [ + { + "id": "fuse432", + "name": "USER_BANK6_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x01B0", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse433", + "name": "USER_BANK6_1", + "description": "USER_BANK6_1 register", + "index_int": "0x01B1", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse434", + "name": "USER_BANK6_2", + "description": "USER_BANK6_2 register", + "index_int": "0x01B2", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse435", + "name": "USER_BANK6_3", + "description": "USER_BANK6_3 register", + "index_int": "0x01B3", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse436", + "name": "USER_BANK6_4", + "description": "USER_BANK6_4 register", + "index_int": "0x01B4", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse437", + "name": "USER_BANK6_5", + "description": "USER_BANK6_5 register", + "index_int": "0x01B5", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse438", + "name": "USER_BANK6_6", + "description": "USER_BANK6_6 register", + "index_int": "0x01B6", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse439", + "name": "USER_BANK6_7", + "description": "USER_BANK6_7 register", + "index_int": "0x01B7", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK7", + "description": "USER_BANK7 group" + }, + "registers": [ + { + "id": "fuse440", + "name": "USER_BANK7_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x01B8", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse441", + "name": "USER_BANK7_1", + "description": "USER_BANK7_1 register", + "index_int": "0x01B9", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse442", + "name": "USER_BANK7_2", + "description": "USER_BANK7_2 register", + "index_int": "0x01BA", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse443", + "name": "USER_BANK7_3", + "description": "USER_BANK7_3 register", + "index_int": "0x01BB", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse444", + "name": "USER_BANK7_4", + "description": "USER_BANK7_4 register", + "index_int": "0x01BC", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse445", + "name": "USER_BANK7_5", + "description": "USER_BANK7_5 register", + "index_int": "0x01BD", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse446", + "name": "USER_BANK7_6", + "description": "USER_BANK7_6 register", + "index_int": "0x01BE", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse447", + "name": "USER_BANK7_7", + "description": "USER_BANK7_7 register", + "index_int": "0x01BF", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "USER_BANK8", + "description": "USER_BANK8 group" + }, + "registers": [ + { + "id": "fuse448", + "name": "USER_BANK8_0", + "description": "Customer programmable fuse bank containing 8 independent 32-bit fuse words. Each OTP word in this block are ECC protected. Thus all 32-bits in a word should be programmed at once.", + "index_int": "0x01C0", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse449", + "name": "USER_BANK8_1", + "description": "USER_BANK8_1 register", + "index_int": "0x01C1", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse450", + "name": "USER_BANK8_2", + "description": "USER_BANK8_2 register", + "index_int": "0x01C2", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse451", + "name": "USER_BANK8_3", + "description": "USER_BANK8_3 register", + "index_int": "0x01C3", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse452", + "name": "USER_BANK8_4", + "description": "USER_BANK8_4 register", + "index_int": "0x01C4", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse453", + "name": "USER_BANK8_5", + "description": "USER_BANK8_5 register", + "index_int": "0x01C5", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse454", + "name": "USER_BANK8_6", + "description": "USER_BANK8_6 register", + "index_int": "0x01C6", + "individual_write_lock": "always_lock" + }, + { + "id": "fuse455", + "name": "USER_BANK8_7", + "description": "USER_BANK8_7 register", + "index_int": "0x01C7", + "individual_write_lock": "always_lock" + } + ] + }, + { + "group": { + "name": "CRC_BANK", + "description": "CRC_BANK group" + }, + "registers": [ + { + "id": "fuse492", + "name": "CRC4", + "description": "CRC of BOOT_CFG configuration data. Word 96 to 100 (0x180 - 0x18F).", + "index_int": "0x01EC", + "shadow_reg_offset_int": "0x07B0", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0010", + "read_lock_int": "0x0020" + } + }, + { + "id": "fuse493", + "name": "CRC5", + "description": "CRC of SECURE_CFG configuration data. Word 107 to 127 (0x1A4 - 0x200).", + "index_int": "0x01ED", + "shadow_reg_offset_int": "0x07B4", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0040", + "read_lock_int": "0x0080" + } + }, + { + "id": "fuse494", + "name": "CRC6", + "description": "CRC of customer programmed mode fuse (Word 8 and 9).", + "index_int": "0x01EE", + "shadow_reg_offset_int": "0x07B8", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0100", + "read_lock_int": "0x0200" + } + }, + { + "id": "fuse495", + "name": "CRC7", + "description": "Customer defined.", + "index_int": "0x01EF", + "shadow_reg_offset_int": "0x07BC", + "individual_write_lock": "always_lock", + "lock": { + "register_id": "fuse9", + "write_lock_int": "0x0400", + "read_lock_int": "0x0800" + } + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/tz_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/tz_a0.json new file mode 100644 index 0000000..35956b6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/tz_a0.json @@ -0,0 +1,2005 @@ +{ + "cpu": "mimxrt685s", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Secure vector table address (vtor_addr)", + "description": "TrustZone register - Secure vector table address (vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "Non-secure vector table address (vtor_ns_addr)", + "description": "TrustZone register - Non-secure vector table address (vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "Interrupt target non-secure register 0 (nvic_itns0)", + "description": "TrustZone register - Interrupt target non-secure register 0 (nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "Interrupt target non-secure register 1 (nvic_itns1)", + "description": "TrustZone register - Interrupt target non-secure register 1 (nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "MPU Control Register (mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "Non-secure MPU Control Register(mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register(mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "SAU Control Register.(sau_ctrl)", + "description": "TrustZone register - SAU Control Register.(sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "ROM Slave Rule Register 0 (bootrom0_slave_rule0)", + "description": "TrustZone register - ROM Slave Rule Register 0 (bootrom0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (bootrom0_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (bootrom0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (bootrom0_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (bootrom0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (bootrom0_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (bootrom0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (bootrom0_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (bootrom0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "Quad/Octal SPI Slave Rule Register 0 (qospi_slave_rule0)", + "description": "TrustZone register - Quad/Octal SPI Slave Rule Register 0 (qospi_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 0 (qospi0_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 0 (qospi0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 1 (qospi0_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 1 (qospi0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 2 (qospi0_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 2 (qospi0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 3 (qospi0_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 3 (qospi0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 0 (qospi1_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 0 (qospi1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 1 (qospi1_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 1 (qospi1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 2 (qospi1_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 2 (qospi1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 3 (qospi1_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 3 (qospi1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 0 (qospi2_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 0 (qospi2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 1 (qospi2_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 1 (qospi2_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 2 (qospi2_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 2 (qospi2_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 3 (qospi2_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 3 (qospi2_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 0 (qospi3_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 0 (qospi3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 1 (qospi3_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 1 (qospi3_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 2 (qospi3_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 2 (qospi3_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 3 (qospi3_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 3 (qospi3_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 0 (ram00_mem_rule0)", + "description": "TrustZone register - RAM00 Memory Rule Register 0 (ram00_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 1 (ram00_mem_rule1)", + "description": "TrustZone register - RAM00 Memory Rule Register 1 (ram00_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 2 (ram00_mem_rule2)", + "description": "TrustZone register - RAM00 Memory Rule Register 2 (ram00_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 3 (ram00_mem_rule3)", + "description": "TrustZone register - RAM00 Memory Rule Register 3 (ram00_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 0 (ram01_mem_rule0)", + "description": "TrustZone register - RAM01 Memory Rule Register 0 (ram01_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 1 (ram01_mem_rule1)", + "description": "TrustZone register - RAM01 Memory Rule Register 1 (ram01_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 2 (ram01_mem_rule2)", + "description": "TrustZone register - RAM01 Memory Rule Register 2 (ram01_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 3 (ram01_mem_rule3)", + "description": "TrustZone register - RAM01 Memory Rule Register 3 (ram01_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 0 (ram10_mem_rule0)", + "description": "TrustZone register - RAM10 Memory Rule Register 0 (ram10_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 1 (ram10_mem_rule1)", + "description": "TrustZone register - RAM10 Memory Rule Register 1 (ram10_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 2 (ram10_mem_rule2)", + "description": "TrustZone register - RAM10 Memory Rule Register 2 (ram10_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 3 (ram10_mem_rule3)", + "description": "TrustZone register - RAM10 Memory Rule Register 3 (ram10_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 0 (ram11_mem_rule0)", + "description": "TrustZone register - RAM11 Memory Rule Register 0 (ram11_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 1 (ram11_mem_rule1)", + "description": "TrustZone register - RAM11 Memory Rule Register 1 (ram11_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 2 (ram11_mem_rule2)", + "description": "TrustZone register - RAM11 Memory Rule Register 2 (ram11_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 3 (ram11_mem_rule3)", + "description": "TrustZone register - RAM11 Memory Rule Register 3 (ram11_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 0 (ram20_mem_rule0)", + "description": "TrustZone register - RAM20 Memory Rule Register 0 (ram20_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 1 (ram20_mem_rule1)", + "description": "TrustZone register - RAM20 Memory Rule Register 1 (ram20_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 2 (ram20_mem_rule2)", + "description": "TrustZone register - RAM20 Memory Rule Register 2 (ram20_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 3 (ram20_mem_rule3)", + "description": "TrustZone register - RAM20 Memory Rule Register 3 (ram20_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 0 (ram21_mem_rule0)", + "description": "TrustZone register - RAM21 Memory Rule Register 0 (ram21_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 1 (ram21_mem_rule1)", + "description": "TrustZone register - RAM21 Memory Rule Register 1 (ram21_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 2 (ram21_mem_rule2)", + "description": "TrustZone register - RAM21 Memory Rule Register 2 (ram21_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 3 (ram21_mem_rule3)", + "description": "TrustZone register - RAM21 Memory Rule Register 3 (ram21_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 0 (ram22_mem_rule0)", + "description": "TrustZone register - RAM22 Memory Rule Register 0 (ram22_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 1 (ram22_mem_rule1)", + "description": "TrustZone register - RAM22 Memory Rule Register 1 (ram22_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 2 (ram22_mem_rule2)", + "description": "TrustZone register - RAM22 Memory Rule Register 2 (ram22_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 3 (ram22_mem_rule3)", + "description": "TrustZone register - RAM22 Memory Rule Register 3 (ram22_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 0 (ram23_mem_rule0)", + "description": "TrustZone register - RAM23 Memory Rule Register 0 (ram23_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 1 (ram23_mem_rule1)", + "description": "TrustZone register - RAM23 Memory Rule Register 1 (ram23_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 2 (ram23_mem_rule2)", + "description": "TrustZone register - RAM23 Memory Rule Register 2 (ram23_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 3 (ram23_mem_rule3)", + "description": "TrustZone register - RAM23 Memory Rule Register 3 (ram23_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "RAM3 Slave Rule Register (ram3_slave_rule)", + "description": "TrustZone register - RAM3 Slave Rule Register (ram3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 0 (ram30_mem_rule0)", + "description": "TrustZone register - RAM30 Memory Rule Register 0 (ram30_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 1 (ram30_mem_rule1)", + "description": "TrustZone register - RAM30 Memory Rule Register 1 (ram30_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 2 (ram30_mem_rule2)", + "description": "TrustZone register - RAM30 Memory Rule Register 2 (ram30_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 3 (ram30_mem_rule3)", + "description": "TrustZone register - RAM30 Memory Rule Register 3 (ram30_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 0 (ram31_mem_rule0)", + "description": "TrustZone register - RAM31 Memory Rule Register 0 (ram31_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 1 (ram31_mem_rule1)", + "description": "TrustZone register - RAM31 Memory Rule Register 1 (ram31_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 2 (ram31_mem_rule2)", + "description": "TrustZone register - RAM31 Memory Rule Register 2 (ram31_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 3 (ram31_mem_rule3)", + "description": "TrustZone register - RAM31 Memory Rule Register 3 (ram31_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 0 (ram32_mem_rule0)", + "description": "TrustZone register - RAM32 Memory Rule Register 0 (ram32_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 1 (ram32_mem_rule1)", + "description": "TrustZone register - RAM32 Memory Rule Register 1 (ram32_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 2 (ram32_mem_rule2)", + "description": "TrustZone register - RAM32 Memory Rule Register 2 (ram32_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 3 (ram32_mem_rule3)", + "description": "TrustZone register - RAM32 Memory Rule Register 3 (ram32_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 0 (ram33_mem_rule0)", + "description": "TrustZone register - RAM33 Memory Rule Register 0 (ram33_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 1 (ram33_mem_rule1)", + "description": "TrustZone register - RAM33 Memory Rule Register 1 (ram33_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 2 (ram33_mem_rule2)", + "description": "TrustZone register - RAM33 Memory Rule Register 2 (ram33_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 3 (ram33_mem_rule3)", + "description": "TrustZone register - RAM33 Memory Rule Register 3 (ram33_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "RAM4 Slave Rule Register (ram4_slave_rule)", + "description": "TrustZone register - RAM4 Slave Rule Register (ram4_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 0 (ram40_mem_rule0)", + "description": "TrustZone register - RAM40 Memory Rule Register 0 (ram40_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 1 (ram40_mem_rule1)", + "description": "TrustZone register - RAM40 Memory Rule Register 1 (ram40_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 2 (ram40_mem_rule2)", + "description": "TrustZone register - RAM40 Memory Rule Register 2 (ram40_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 3 (ram40_mem_rule3)", + "description": "TrustZone register - RAM40 Memory Rule Register 3 (ram40_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 0 (ram41_mem_rule0)", + "description": "TrustZone register - RAM41 Memory Rule Register 0 (ram41_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 1 (ram41_mem_rule1)", + "description": "TrustZone register - RAM41 Memory Rule Register 1 (ram41_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 2 (ram41_mem_rule2)", + "description": "TrustZone register - RAM41 Memory Rule Register 2 (ram41_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 3 (ram41_mem_rule3)", + "description": "TrustZone register - RAM41 Memory Rule Register 3 (ram41_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 0 (ram42_mem_rule0)", + "description": "TrustZone register - RAM42 Memory Rule Register 0 (ram42_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 1 (ram42_mem_rule1)", + "description": "TrustZone register - RAM42 Memory Rule Register 1 (ram42_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 2 (ram42_mem_rule2)", + "description": "TrustZone register - RAM42 Memory Rule Register 2 (ram42_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 3 (ram42_mem_rule3)", + "description": "TrustZone register - RAM42 Memory Rule Register 3 (ram42_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 0 (ram43_mem_rule0)", + "description": "TrustZone register - RAM43 Memory Rule Register 0 (ram43_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 1 (ram43_mem_rule1)", + "description": "TrustZone register - RAM43 Memory Rule Register 1 (ram43_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 2 (ram43_mem_rule2)", + "description": "TrustZone register - RAM43 Memory Rule Register 2 (ram43_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 3 (ram43_mem_rule3)", + "description": "TrustZone register - RAM43 Memory Rule Register 3 (ram43_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "RAM5 Slave Rule Register (ram5_slave_rule)", + "description": "TrustZone register - RAM5 Slave Rule Register (ram5_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 0 (ram50_mem_rule0)", + "description": "TrustZone register - RAM50 Memory Rule Register 0 (ram50_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 1 (ram50_mem_rule1)", + "description": "TrustZone register - RAM50 Memory Rule Register 1 (ram50_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 2 (ram50_mem_rule2)", + "description": "TrustZone register - RAM50 Memory Rule Register 2 (ram50_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 3 (ram50_mem_rule3)", + "description": "TrustZone register - RAM50 Memory Rule Register 3 (ram50_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 0 (ram51_mem_rule0)", + "description": "TrustZone register - RAM51 Memory Rule Register 0 (ram51_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 1 (ram51_mem_rule1)", + "description": "TrustZone register - RAM51 Memory Rule Register 1 (ram51_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 2 (ram51_mem_rule2)", + "description": "TrustZone register - RAM51 Memory Rule Register 2 (ram51_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 3 (ram51_mem_rule3)", + "description": "TrustZone register - RAM51 Memory Rule Register 3 (ram51_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 0 (ram52_mem_rule0)", + "description": "TrustZone register - RAM52 Memory Rule Register 0 (ram52_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 1 (ram52_mem_rule1)", + "description": "TrustZone register - RAM52 Memory Rule Register 1 (ram52_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 2 (ram52_mem_rule2)", + "description": "TrustZone register - RAM52 Memory Rule Register 2 (ram52_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 3 (ram52_mem_rule3)", + "description": "TrustZone register - RAM52 Memory Rule Register 3 (ram52_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 0 (ram53_mem_rule0)", + "description": "TrustZone register - RAM53 Memory Rule Register 0 (ram53_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 1 (ram53_mem_rule1)", + "description": "TrustZone register - RAM53 Memory Rule Register 1 (ram53_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 2 (ram53_mem_rule2)", + "description": "TrustZone register - RAM53 Memory Rule Register 2 (ram53_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 3 (ram53_mem_rule3)", + "description": "TrustZone register - RAM53 Memory Rule Register 3 (ram53_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "RAM6 Slave Rule Register (ram6_slave_rule)", + "description": "TrustZone register - RAM6 Slave Rule Register (ram6_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 0 (ram60_mem_rule0)", + "description": "TrustZone register - RAM60 Memory Rule Register 0 (ram60_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 1 (ram60_mem_rule1)", + "description": "TrustZone register - RAM60 Memory Rule Register 1 (ram60_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 2 (ram60_mem_rule2)", + "description": "TrustZone register - RAM60 Memory Rule Register 2 (ram60_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 3 (ram60_mem_rule3)", + "description": "TrustZone register - RAM60 Memory Rule Register 3 (ram60_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 0 (ram61_mem_rule0)", + "description": "TrustZone register - RAM61 Memory Rule Register 0 (ram61_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 1 (ram61_mem_rule1)", + "description": "TrustZone register - RAM61 Memory Rule Register 1 (ram61_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 2 (ram61_mem_rule2)", + "description": "TrustZone register - RAM61 Memory Rule Register 2 (ram61_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 3 (ram61_mem_rule3)", + "description": "TrustZone register - RAM61 Memory Rule Register 3 (ram61_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 0 (ram62_mem_rule0)", + "description": "TrustZone register - RAM62 Memory Rule Register 0 (ram62_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 1 (ram62_mem_rule1)", + "description": "TrustZone register - RAM62 Memory Rule Register 1 (ram62_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 2 (ram62_mem_rule2)", + "description": "TrustZone register - RAM62 Memory Rule Register 2 (ram62_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 3 (ram62_mem_rule3)", + "description": "TrustZone register - RAM62 Memory Rule Register 3 (ram62_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 0 (ram63_mem_rule0)", + "description": "TrustZone register - RAM63 Memory Rule Register 0 (ram63_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 1 (ram63_mem_rule1)", + "description": "TrustZone register - RAM63 Memory Rule Register 1 (ram63_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 2 (ram63_mem_rule2)", + "description": "TrustZone register - RAM63 Memory Rule Register 2 (ram63_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 3 (ram63_mem_rule3)", + "description": "TrustZone register - RAM63 Memory Rule Register 3 (ram63_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "RAM7 Slave Rule Register (ram7_slave_rule)", + "description": "TrustZone register - RAM7 Slave Rule Register (ram7_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 0 (ram70_mem_rule0)", + "description": "TrustZone register - RAM70 Memory Rule Register 0 (ram70_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 1 (ram70_mem_rule1)", + "description": "TrustZone register - RAM70 Memory Rule Register 1 (ram70_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 2 (ram70_mem_rule2)", + "description": "TrustZone register - RAM70 Memory Rule Register 2 (ram70_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 3 (ram70_mem_rule3)", + "description": "TrustZone register - RAM70 Memory Rule Register 3 (ram70_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 0 (ram71_mem_rule0)", + "description": "TrustZone register - RAM71 Memory Rule Register 0 (ram71_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 1 (ram71_mem_rule1)", + "description": "TrustZone register - RAM71 Memory Rule Register 1 (ram71_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 2 (ram71_mem_rule2)", + "description": "TrustZone register - RAM71 Memory Rule Register 2 (ram71_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field300", + "offset_int": "0x300", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 3 (ram71_mem_rule3)", + "description": "TrustZone register - RAM71 Memory Rule Register 3 (ram71_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field304", + "offset_int": "0x304", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 0 (ram72_mem_rule0)", + "description": "TrustZone register - RAM72 Memory Rule Register 0 (ram72_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field308", + "offset_int": "0x308", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 1 (ram72_mem_rule1)", + "description": "TrustZone register - RAM72 Memory Rule Register 1 (ram72_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field30C", + "offset_int": "0x30c", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 2 (ram72_mem_rule2)", + "description": "TrustZone register - RAM72 Memory Rule Register 2 (ram72_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field310", + "offset_int": "0x310", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 3 (ram72_mem_rule3)", + "description": "TrustZone register - RAM72 Memory Rule Register 3 (ram72_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field314", + "offset_int": "0x314", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 0 (ram73_mem_rule0)", + "description": "TrustZone register - RAM73 Memory Rule Register 0 (ram73_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field318", + "offset_int": "0x318", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 1 (ram73_mem_rule1)", + "description": "TrustZone register - RAM73 Memory Rule Register 1 (ram73_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field31C", + "offset_int": "0x31c", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 2 (ram73_mem_rule2)", + "description": "TrustZone register - RAM73 Memory Rule Register 2 (ram73_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field320", + "offset_int": "0x320", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 3 (ram73_mem_rule3)", + "description": "TrustZone register - RAM73 Memory Rule Register 3 (ram73_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field324", + "offset_int": "0x324", + "reg_width": 32, + "name": "RAM8 Slave Rule Register (ram8_slave_rule)", + "description": "TrustZone register - RAM8 Slave Rule Register (ram8_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field328", + "offset_int": "0x328", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 0 (ram80_mem_rule0)", + "description": "TrustZone register - RAM80 Memory Rule Register 0 (ram80_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field32C", + "offset_int": "0x32c", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 1 (ram80_mem_rule1)", + "description": "TrustZone register - RAM80 Memory Rule Register 1 (ram80_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field330", + "offset_int": "0x330", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 2 (ram80_mem_rule2)", + "description": "TrustZone register - RAM80 Memory Rule Register 2 (ram80_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field334", + "offset_int": "0x334", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 3 (ram80_mem_rule3)", + "description": "TrustZone register - RAM80 Memory Rule Register 3 (ram80_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field338", + "offset_int": "0x338", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 0 (ram81_mem_rule0)", + "description": "TrustZone register - RAM81 Memory Rule Register 0 (ram81_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field33C", + "offset_int": "0x33c", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 1 (ram81_mem_rule1)", + "description": "TrustZone register - RAM81 Memory Rule Register 1 (ram81_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field340", + "offset_int": "0x340", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 2 (ram81_mem_rule2)", + "description": "TrustZone register - RAM81 Memory Rule Register 2 (ram81_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field344", + "offset_int": "0x344", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 3 (ram81_mem_rule3)", + "description": "TrustZone register - RAM81 Memory Rule Register 3 (ram81_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field348", + "offset_int": "0x348", + "reg_width": 32, + "name": "HiFi4 DSP Slave Rule Register (pif_hifi4_x_slave_rule0)", + "description": "TrustZone register - HiFi4 DSP Slave Rule Register (pif_hifi4_x_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field34C", + "offset_int": "0x34c", + "reg_width": 32, + "name": "HiFi4 DSP Memory Rule Register 0 (pif_hifi4_x_mem_rule0)", + "description": "TrustZone register - HiFi4 DSP Memory Rule Register 0 (pif_hifi4_x_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field350", + "offset_int": "0x350", + "reg_width": 32, + "name": "HiFi4 DSP Memory Rule Register 1 (pif_hifi4_x_mem_rule1)", + "description": "TrustZone register - HiFi4 DSP Memory Rule Register 1 (pif_hifi4_x_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field354", + "offset_int": "0x354", + "reg_width": 32, + "name": "HiFi4 DSP Memory Rule Register 2 (pif_hifi4_x_mem_rule2)", + "description": "TrustZone register - HiFi4 DSP Memory Rule Register 2 (pif_hifi4_x_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field358", + "offset_int": "0x358", + "reg_width": 32, + "name": "HiFi4 DSP Memory Rule Register 3 (pif_hifi4_x_mem_rule3)", + "description": "TrustZone register - HiFi4 DSP Memory Rule Register 3 (pif_hifi4_x_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field35C", + "offset_int": "0x35c", + "reg_width": 32, + "name": "APB Bridge Slave Rule Register (apb_bridge_slave_rule0)", + "description": "TrustZone register - APB Bridge Slave Rule Register (apb_bridge_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field360", + "offset_int": "0x360", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field364", + "offset_int": "0x364", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field368", + "offset_int": "0x368", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field36C", + "offset_int": "0x36c", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field370", + "offset_int": "0x370", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field374", + "offset_int": "0x374", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field378", + "offset_int": "0x378", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field37C", + "offset_int": "0x37c", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field380", + "offset_int": "0x380", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 0 (ahb_periph0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field384", + "offset_int": "0x384", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register 1 (ahb_periph0_slave_rule1)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register 1 (ahb_periph0_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field388", + "offset_int": "0x388", + "reg_width": 32, + "name": "AIPS bridge 0 Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "description": "TrustZone register - AIPS bridge 0 Memory Rule Register 0 (aips_bridge0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field38C", + "offset_int": "0x38c", + "reg_width": 32, + "name": "AIPS bridge 0 Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "description": "TrustZone register - AIPS bridge 0 Memory Rule Register 1 (aips_bridge0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field390", + "offset_int": "0x390", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field394", + "offset_int": "0x394", + "reg_width": 32, + "name": "AIPS bridge 1 Slave Rule Register (aips_bridge1_slave_rule0)", + "description": "TrustZone register - AIPS bridge 1 Slave Rule Register (aips_bridge1_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field398", + "offset_int": "0x398", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field39C", + "offset_int": "0x39c", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3A0", + "offset_int": "0x3a0", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register 0 (ahb_periph2_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3A4", + "offset_int": "0x3a4", + "reg_width": 32, + "name": "AHB Peripherals 3 Slave Rule Register 0 (ahb_periph3_slave_rule0)", + "description": "TrustZone register - AHB Peripherals 3 Slave Rule Register 0 (ahb_periph3_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3A8", + "offset_int": "0x3a8", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3AC", + "offset_int": "0x3ac", + "reg_width": 32, + "name": "Secure GPIO Register 1 (sec_gp_reg1)", + "description": "TrustZone register - Secure GPIO Register 1 (sec_gp_reg1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3B0", + "offset_int": "0x3b0", + "reg_width": 32, + "name": "Secure GPIO Register 2 (sec_gp_reg2)", + "description": "TrustZone register - Secure GPIO Register 2 (sec_gp_reg2)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3B4", + "offset_int": "0x3b4", + "reg_width": 32, + "name": "Secure GPIO Register 3 (sec_gp_reg3)", + "description": "TrustZone register - Secure GPIO Register 3 (sec_gp_reg3)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3B8", + "offset_int": "0x3b8", + "reg_width": 32, + "name": "Secure GPIO Register 4 (sec_gp_reg4)", + "description": "TrustZone register - Secure GPIO Register 4 (sec_gp_reg4)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3BC", + "offset_int": "0x3bc", + "reg_width": 32, + "name": "Secure GPIO Register 5 (sec_gp_reg5)", + "description": "TrustZone register - Secure GPIO Register 5 (sec_gp_reg5)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3C0", + "offset_int": "0x3c0", + "reg_width": 32, + "name": "Secure GPIO Register 6 (sec_gp_reg6)", + "description": "TrustZone register - Secure GPIO Register 6 (sec_gp_reg6)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3C4", + "offset_int": "0x3c4", + "reg_width": 32, + "name": "Secure GPIO Register 7 (sec_gp_reg7)", + "description": "TrustZone register - Secure GPIO Register 7 (sec_gp_reg7)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3C8", + "offset_int": "0x3c8", + "reg_width": 32, + "name": "Secure GPIO Register 8 for DSP(sec_gp_reg8)", + "description": "TrustZone register - Secure GPIO Register 8 for DSP(sec_gp_reg8)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3CC", + "offset_int": "0x3cc", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0xaaaa" + }, + { + "id": "field3D0", + "offset_int": "0x3d0", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field3D4", + "offset_int": "0x3d4", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field3D8", + "offset_int": "0x3d8", + "reg_width": 32, + "name": "M33 Lock Control Register (m33_lock_reg)", + "description": "TrustZone register - M33 Lock Control Register (m33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field3DC", + "offset_int": "0x3dc", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field3E0", + "offset_int": "0x3e0", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0xaaaa" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/tz_b0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/tz_b0.json new file mode 100644 index 0000000..ae9499c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt685s/tz_b0.json @@ -0,0 +1,2117 @@ +{ + "cpu": "mimxrt685s", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Secure vector table address (vtor_addr)", + "description": "TrustZone register - Secure vector table address (vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "Non-secure vector table address (vtor_ns_addr)", + "description": "TrustZone register - Non-secure vector table address (vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "Interrupt target non-secure register 0 (nvic_itns0)", + "description": "TrustZone register - Interrupt target non-secure register 0 (nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "Interrupt target non-secure register 1 (nvic_itns1)", + "description": "TrustZone register - Interrupt target non-secure register 1 (nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "MPU Control Register (mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "Non-secure MPU Control Register. (mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register. (mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "SAU Control Register (sau_ctrl)", + "description": "TrustZone register - SAU Control Register (sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "ROM Slave Rule Register 0 (bootrom0_slave_rule0)", + "description": "TrustZone register - ROM Slave Rule Register 0 (bootrom0_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (bootrom0_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (bootrom0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (bootrom0_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (bootrom0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (bootrom0_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (bootrom0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (bootrom0_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (bootrom0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "Quad/Octal SPI Slave Rule Register 0 (qspi_slave_rule0)", + "description": "TrustZone register - Quad/Octal SPI Slave Rule Register 0 (qspi_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 0 (qspi0_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 0 (qspi0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 1 (qspi0_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 1 (qspi0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 2 (qspi0_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 2 (qspi0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "Quad/Octal SPI 0 Memory Rule Register 3 (qspi0_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 0 Memory Rule Register 3 (qspi0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 0 (qspi1_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 0 (qspi1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 1 (qspi1_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 1 (qspi1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 2 (qspi1_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 2 (qspi1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "Quad/Octal SPI 1 Memory Rule Register 3 (qspi1_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 1 Memory Rule Register 3 (qspi1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 0 (qspi2_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 0 (qspi2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 1 (qspi2_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 1 (qspi2_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 2 (qspi2_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 2 (qspi2_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "Quad/Octal SPI 2 Memory Rule Register 3 (qspi2_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 2 Memory Rule Register 3 (qspi2_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 0 (qspi3_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 0 (qspi3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 1 (qspi3_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 1 (qspi3_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 2 (qspi3_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 2 (qspi3_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "Quad/Octal SPI 3 Memory Rule Register 3 (qspi3_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 3 Memory Rule Register 3 (qspi3_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 0 (qspi4_mem_rule0)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 0 (qspi4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 1 (qspi4_mem_rule1)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 1 (qspi4_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 2 (qspi4_mem_rule2)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 2 (qspi4_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "Quad/Octal SPI 4 Memory Rule Register 3 (qspi4_mem_rule3)", + "description": "TrustZone register - Quad/Octal SPI 4 Memory Rule Register 3 (qspi4_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 0 (ram00_mem_rule0)", + "description": "TrustZone register - RAM00 Memory Rule Register 0 (ram00_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 1 (ram00_mem_rule1)", + "description": "TrustZone register - RAM00 Memory Rule Register 1 (ram00_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 2 (ram00_mem_rule2)", + "description": "TrustZone register - RAM00 Memory Rule Register 2 (ram00_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 3 (ram00_mem_rule3)", + "description": "TrustZone register - RAM00 Memory Rule Register 3 (ram00_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 0 (ram01_mem_rule0)", + "description": "TrustZone register - RAM01 Memory Rule Register 0 (ram01_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 1 (ram01_mem_rule1)", + "description": "TrustZone register - RAM01 Memory Rule Register 1 (ram01_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 2 (ram01_mem_rule2)", + "description": "TrustZone register - RAM01 Memory Rule Register 2 (ram01_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 3 (ram01_mem_rule3)", + "description": "TrustZone register - RAM01 Memory Rule Register 3 (ram01_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 0 (ram10_mem_rule0)", + "description": "TrustZone register - RAM10 Memory Rule Register 0 (ram10_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 1 (ram10_mem_rule1)", + "description": "TrustZone register - RAM10 Memory Rule Register 1 (ram10_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 2 (ram10_mem_rule2)", + "description": "TrustZone register - RAM10 Memory Rule Register 2 (ram10_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 3 (ram10_mem_rule3)", + "description": "TrustZone register - RAM10 Memory Rule Register 3 (ram10_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 0 (ram11_mem_rule0)", + "description": "TrustZone register - RAM11 Memory Rule Register 0 (ram11_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 1 (ram11_mem_rule1)", + "description": "TrustZone register - RAM11 Memory Rule Register 1 (ram11_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 2 (ram11_mem_rule2)", + "description": "TrustZone register - RAM11 Memory Rule Register 2 (ram11_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 3 (ram11_mem_rule3)", + "description": "TrustZone register - RAM11 Memory Rule Register 3 (ram11_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 0 (ram20_mem_rule0)", + "description": "TrustZone register - RAM20 Memory Rule Register 0 (ram20_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 1 (ram20_mem_rule1)", + "description": "TrustZone register - RAM20 Memory Rule Register 1 (ram20_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 2 (ram20_mem_rule2)", + "description": "TrustZone register - RAM20 Memory Rule Register 2 (ram20_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "RAM20 Memory Rule Register 3 (ram20_mem_rule3)", + "description": "TrustZone register - RAM20 Memory Rule Register 3 (ram20_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 0 (ram21_mem_rule0)", + "description": "TrustZone register - RAM21 Memory Rule Register 0 (ram21_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 1 (ram21_mem_rule1)", + "description": "TrustZone register - RAM21 Memory Rule Register 1 (ram21_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 2 (ram21_mem_rule2)", + "description": "TrustZone register - RAM21 Memory Rule Register 2 (ram21_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "RAM21 Memory Rule Register 3 (ram21_mem_rule3)", + "description": "TrustZone register - RAM21 Memory Rule Register 3 (ram21_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 0 (ram22_mem_rule0)", + "description": "TrustZone register - RAM22 Memory Rule Register 0 (ram22_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 1 (ram22_mem_rule1)", + "description": "TrustZone register - RAM22 Memory Rule Register 1 (ram22_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 2 (ram22_mem_rule2)", + "description": "TrustZone register - RAM22 Memory Rule Register 2 (ram22_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "RAM22 Memory Rule Register 3 (ram22_mem_rule3)", + "description": "TrustZone register - RAM22 Memory Rule Register 3 (ram22_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 0 (ram23_mem_rule0)", + "description": "TrustZone register - RAM23 Memory Rule Register 0 (ram23_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 1 (ram23_mem_rule1)", + "description": "TrustZone register - RAM23 Memory Rule Register 1 (ram23_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 2 (ram23_mem_rule2)", + "description": "TrustZone register - RAM23 Memory Rule Register 2 (ram23_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "RAM23 Memory Rule Register 3 (ram23_mem_rule3)", + "description": "TrustZone register - RAM23 Memory Rule Register 3 (ram23_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "RAM3 Slave Rule Register (ram3_slave_rule)", + "description": "TrustZone register - RAM3 Slave Rule Register (ram3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 0 (ram30_mem_rule0)", + "description": "TrustZone register - RAM30 Memory Rule Register 0 (ram30_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 1 (ram30_mem_rule1)", + "description": "TrustZone register - RAM30 Memory Rule Register 1 (ram30_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 2 (ram30_mem_rule2)", + "description": "TrustZone register - RAM30 Memory Rule Register 2 (ram30_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "RAM30 Memory Rule Register 3 (ram30_mem_rule3)", + "description": "TrustZone register - RAM30 Memory Rule Register 3 (ram30_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 0 (ram31_mem_rule0)", + "description": "TrustZone register - RAM31 Memory Rule Register 0 (ram31_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 1 (ram31_mem_rule1)", + "description": "TrustZone register - RAM31 Memory Rule Register 1 (ram31_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 2 (ram31_mem_rule2)", + "description": "TrustZone register - RAM31 Memory Rule Register 2 (ram31_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "RAM31 Memory Rule Register 3 (ram31_mem_rule3)", + "description": "TrustZone register - RAM31 Memory Rule Register 3 (ram31_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 0 (ram32_mem_rule0)", + "description": "TrustZone register - RAM32 Memory Rule Register 0 (ram32_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 1 (ram32_mem_rule1)", + "description": "TrustZone register - RAM32 Memory Rule Register 1 (ram32_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 2 (ram32_mem_rule2)", + "description": "TrustZone register - RAM32 Memory Rule Register 2 (ram32_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "RAM32 Memory Rule Register 3 (ram32_mem_rule3)", + "description": "TrustZone register - RAM32 Memory Rule Register 3 (ram32_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 0 (ram33_mem_rule0)", + "description": "TrustZone register - RAM33 Memory Rule Register 0 (ram33_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 1 (ram33_mem_rule1)", + "description": "TrustZone register - RAM33 Memory Rule Register 1 (ram33_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 2 (ram33_mem_rule2)", + "description": "TrustZone register - RAM33 Memory Rule Register 2 (ram33_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "RAM33 Memory Rule Register 3 (ram33_mem_rule3)", + "description": "TrustZone register - RAM33 Memory Rule Register 3 (ram33_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "RAM4 Slave Rule Register (ram4_slave_rule)", + "description": "TrustZone register - RAM4 Slave Rule Register (ram4_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 0 (ram40_mem_rule0)", + "description": "TrustZone register - RAM40 Memory Rule Register 0 (ram40_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 1 (ram40_mem_rule1)", + "description": "TrustZone register - RAM40 Memory Rule Register 1 (ram40_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 2 (ram40_mem_rule2)", + "description": "TrustZone register - RAM40 Memory Rule Register 2 (ram40_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "RAM40 Memory Rule Register 3 (ram40_mem_rule3)", + "description": "TrustZone register - RAM40 Memory Rule Register 3 (ram40_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 0 (ram41_mem_rule0)", + "description": "TrustZone register - RAM41 Memory Rule Register 0 (ram41_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 1 (ram41_mem_rule1)", + "description": "TrustZone register - RAM41 Memory Rule Register 1 (ram41_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 2 (ram41_mem_rule2)", + "description": "TrustZone register - RAM41 Memory Rule Register 2 (ram41_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "RAM41 Memory Rule Register 3 (ram41_mem_rule3)", + "description": "TrustZone register - RAM41 Memory Rule Register 3 (ram41_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 0 (ram42_mem_rule0)", + "description": "TrustZone register - RAM42 Memory Rule Register 0 (ram42_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 1 (ram42_mem_rule1)", + "description": "TrustZone register - RAM42 Memory Rule Register 1 (ram42_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 2 (ram42_mem_rule2)", + "description": "TrustZone register - RAM42 Memory Rule Register 2 (ram42_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "RAM42 Memory Rule Register 3 (ram42_mem_rule3)", + "description": "TrustZone register - RAM42 Memory Rule Register 3 (ram42_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 0 (ram43_mem_rule0)", + "description": "TrustZone register - RAM43 Memory Rule Register 0 (ram43_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 1 (ram43_mem_rule1)", + "description": "TrustZone register - RAM43 Memory Rule Register 1 (ram43_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 2 (ram43_mem_rule2)", + "description": "TrustZone register - RAM43 Memory Rule Register 2 (ram43_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "RAM43 Memory Rule Register 3 (ram43_mem_rule3)", + "description": "TrustZone register - RAM43 Memory Rule Register 3 (ram43_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "RAM5 Slave Rule Register (ram5_slave_rule)", + "description": "TrustZone register - RAM5 Slave Rule Register (ram5_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 0 (ram50_mem_rule0)", + "description": "TrustZone register - RAM50 Memory Rule Register 0 (ram50_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 1 (ram50_mem_rule1)", + "description": "TrustZone register - RAM50 Memory Rule Register 1 (ram50_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 2 (ram50_mem_rule2)", + "description": "TrustZone register - RAM50 Memory Rule Register 2 (ram50_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "RAM50 Memory Rule Register 3 (ram50_mem_rule3)", + "description": "TrustZone register - RAM50 Memory Rule Register 3 (ram50_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 0 (ram51_mem_rule0)", + "description": "TrustZone register - RAM51 Memory Rule Register 0 (ram51_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 1 (ram51_mem_rule1)", + "description": "TrustZone register - RAM51 Memory Rule Register 1 (ram51_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 2 (ram51_mem_rule2)", + "description": "TrustZone register - RAM51 Memory Rule Register 2 (ram51_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "RAM51 Memory Rule Register 3 (ram51_mem_rule3)", + "description": "TrustZone register - RAM51 Memory Rule Register 3 (ram51_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 0 (ram52_mem_rule0)", + "description": "TrustZone register - RAM52 Memory Rule Register 0 (ram52_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 1 (ram52_mem_rule1)", + "description": "TrustZone register - RAM52 Memory Rule Register 1 (ram52_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 2 (ram52_mem_rule2)", + "description": "TrustZone register - RAM52 Memory Rule Register 2 (ram52_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "RAM52 Memory Rule Register 3 (ram52_mem_rule3)", + "description": "TrustZone register - RAM52 Memory Rule Register 3 (ram52_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 0 (ram53_mem_rule0)", + "description": "TrustZone register - RAM53 Memory Rule Register 0 (ram53_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 1 (ram53_mem_rule1)", + "description": "TrustZone register - RAM53 Memory Rule Register 1 (ram53_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 2 (ram53_mem_rule2)", + "description": "TrustZone register - RAM53 Memory Rule Register 2 (ram53_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "RAM53 Memory Rule Register 3 (ram53_mem_rule3)", + "description": "TrustZone register - RAM53 Memory Rule Register 3 (ram53_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "RAM6 Slave Rule Register (ram6_slave_rule)", + "description": "TrustZone register - RAM6 Slave Rule Register (ram6_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 0 (ram60_mem_rule0)", + "description": "TrustZone register - RAM60 Memory Rule Register 0 (ram60_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 1 (ram60_mem_rule1)", + "description": "TrustZone register - RAM60 Memory Rule Register 1 (ram60_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 2 (ram60_mem_rule2)", + "description": "TrustZone register - RAM60 Memory Rule Register 2 (ram60_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "RAM60 Memory Rule Register 3 (ram60_mem_rule3)", + "description": "TrustZone register - RAM60 Memory Rule Register 3 (ram60_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 0 (ram61_mem_rule0)", + "description": "TrustZone register - RAM61 Memory Rule Register 0 (ram61_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 1 (ram61_mem_rule1)", + "description": "TrustZone register - RAM61 Memory Rule Register 1 (ram61_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 2 (ram61_mem_rule2)", + "description": "TrustZone register - RAM61 Memory Rule Register 2 (ram61_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "RAM61 Memory Rule Register 3 (ram61_mem_rule3)", + "description": "TrustZone register - RAM61 Memory Rule Register 3 (ram61_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 0 (ram62_mem_rule0)", + "description": "TrustZone register - RAM62 Memory Rule Register 0 (ram62_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 1 (ram62_mem_rule1)", + "description": "TrustZone register - RAM62 Memory Rule Register 1 (ram62_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 2 (ram62_mem_rule2)", + "description": "TrustZone register - RAM62 Memory Rule Register 2 (ram62_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "RAM62 Memory Rule Register 3 (ram62_mem_rule3)", + "description": "TrustZone register - RAM62 Memory Rule Register 3 (ram62_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 0 (ram63_mem_rule0)", + "description": "TrustZone register - RAM63 Memory Rule Register 0 (ram63_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 1 (ram63_mem_rule1)", + "description": "TrustZone register - RAM63 Memory Rule Register 1 (ram63_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 2 (ram63_mem_rule2)", + "description": "TrustZone register - RAM63 Memory Rule Register 2 (ram63_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "RAM63 Memory Rule Register 3 (ram63_mem_rule3)", + "description": "TrustZone register - RAM63 Memory Rule Register 3 (ram63_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "RAM7 Slave Rule Register (ram7_slave_rule)", + "description": "TrustZone register - RAM7 Slave Rule Register (ram7_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 0 (ram70_mem_rule0)", + "description": "TrustZone register - RAM70 Memory Rule Register 0 (ram70_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 1 (ram70_mem_rule1)", + "description": "TrustZone register - RAM70 Memory Rule Register 1 (ram70_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 2 (ram70_mem_rule2)", + "description": "TrustZone register - RAM70 Memory Rule Register 2 (ram70_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field300", + "offset_int": "0x300", + "reg_width": 32, + "name": "RAM70 Memory Rule Register 3 (ram70_mem_rule3)", + "description": "TrustZone register - RAM70 Memory Rule Register 3 (ram70_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field304", + "offset_int": "0x304", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 0 (ram71_mem_rule0)", + "description": "TrustZone register - RAM71 Memory Rule Register 0 (ram71_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field308", + "offset_int": "0x308", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 1 (ram71_mem_rule1)", + "description": "TrustZone register - RAM71 Memory Rule Register 1 (ram71_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field30C", + "offset_int": "0x30c", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 2 (ram71_mem_rule2)", + "description": "TrustZone register - RAM71 Memory Rule Register 2 (ram71_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field310", + "offset_int": "0x310", + "reg_width": 32, + "name": "RAM71 Memory Rule Register 3 (ram71_mem_rule3)", + "description": "TrustZone register - RAM71 Memory Rule Register 3 (ram71_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field314", + "offset_int": "0x314", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 0 (ram72_mem_rule0)", + "description": "TrustZone register - RAM72 Memory Rule Register 0 (ram72_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field318", + "offset_int": "0x318", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 1 (ram72_mem_rule1)", + "description": "TrustZone register - RAM72 Memory Rule Register 1 (ram72_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field31C", + "offset_int": "0x31c", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 2 (ram72_mem_rule2)", + "description": "TrustZone register - RAM72 Memory Rule Register 2 (ram72_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field320", + "offset_int": "0x320", + "reg_width": 32, + "name": "RAM72 Memory Rule Register 3 (ram72_mem_rule3)", + "description": "TrustZone register - RAM72 Memory Rule Register 3 (ram72_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field324", + "offset_int": "0x324", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 0 (ram73_mem_rule0)", + "description": "TrustZone register - RAM73 Memory Rule Register 0 (ram73_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field328", + "offset_int": "0x328", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 1 (ram73_mem_rule1)", + "description": "TrustZone register - RAM73 Memory Rule Register 1 (ram73_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field32C", + "offset_int": "0x32c", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 2 (ram73_mem_rule2)", + "description": "TrustZone register - RAM73 Memory Rule Register 2 (ram73_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field330", + "offset_int": "0x330", + "reg_width": 32, + "name": "RAM73 Memory Rule Register 3 (ram73_mem_rule3)", + "description": "TrustZone register - RAM73 Memory Rule Register 3 (ram73_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field334", + "offset_int": "0x334", + "reg_width": 32, + "name": "RAM8 Slave Rule Register (ram8_slave_rule)", + "description": "TrustZone register - RAM8 Slave Rule Register (ram8_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field338", + "offset_int": "0x338", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 0 (ram80_mem_rule0)", + "description": "TrustZone register - RAM80 Memory Rule Register 0 (ram80_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field33C", + "offset_int": "0x33c", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 1 (ram80_mem_rule1)", + "description": "TrustZone register - RAM80 Memory Rule Register 1 (ram80_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field340", + "offset_int": "0x340", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 2 (ram80_mem_rule2)", + "description": "TrustZone register - RAM80 Memory Rule Register 2 (ram80_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field344", + "offset_int": "0x344", + "reg_width": 32, + "name": "RAM80 Memory Rule Register 3 (ram80_mem_rule3)", + "description": "TrustZone register - RAM80 Memory Rule Register 3 (ram80_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field348", + "offset_int": "0x348", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 0 (ram81_mem_rule0)", + "description": "TrustZone register - RAM81 Memory Rule Register 0 (ram81_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field34C", + "offset_int": "0x34c", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 1 (ram81_mem_rule1)", + "description": "TrustZone register - RAM81 Memory Rule Register 1 (ram81_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field350", + "offset_int": "0x350", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 2 (ram81_mem_rule2)", + "description": "TrustZone register - RAM81 Memory Rule Register 2 (ram81_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field354", + "offset_int": "0x354", + "reg_width": 32, + "name": "RAM81 Memory Rule Register 3 (ram81_mem_rule3)", + "description": "TrustZone register - RAM81 Memory Rule Register 3 (ram81_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field358", + "offset_int": "0x358", + "reg_width": 32, + "name": "RAM82 Memory Rule Register 0 (ram82_mem_rule0)", + "description": "TrustZone register - RAM82 Memory Rule Register 0 (ram82_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field35C", + "offset_int": "0x35c", + "reg_width": 32, + "name": "RAM82 Memory Rule Register 1 (ram82_mem_rule1)", + "description": "TrustZone register - RAM82 Memory Rule Register 1 (ram82_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field360", + "offset_int": "0x360", + "reg_width": 32, + "name": "RAM82 Memory Rule Register 2 (ram82_mem_rule2)", + "description": "TrustZone register - RAM82 Memory Rule Register 2 (ram82_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field364", + "offset_int": "0x364", + "reg_width": 32, + "name": "RAM82 Memory Rule Register 3 (ram82_mem_rule3)", + "description": "TrustZone register - RAM82 Memory Rule Register 3 (ram82_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field368", + "offset_int": "0x368", + "reg_width": 32, + "name": "RAM83 Memory Rule Register 0 (ram83_mem_rule0)", + "description": "TrustZone register - RAM83 Memory Rule Register 0 (ram83_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field36C", + "offset_int": "0x36c", + "reg_width": 32, + "name": "RAM83 Memory Rule Register 1 (ram83_mem_rule1)", + "description": "TrustZone register - RAM83 Memory Rule Register 1 (ram83_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field370", + "offset_int": "0x370", + "reg_width": 32, + "name": "RAM83 Memory Rule Register 2 (ram83_mem_rule2)", + "description": "TrustZone register - RAM83 Memory Rule Register 2 (ram83_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field374", + "offset_int": "0x374", + "reg_width": 32, + "name": "RAM83 Memory Rule Register 3 (ram83_mem_rule3)", + "description": "TrustZone register - RAM83 Memory Rule Register 3 (ram83_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field378", + "offset_int": "0x378", + "reg_width": 32, + "name": "HiFi4 DSP Slave Rule Register (pif_hifi4_x_slave_rule0)", + "description": "TrustZone register - HiFi4 DSP Slave Rule Register (pif_hifi4_x_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field37C", + "offset_int": "0x37c", + "reg_width": 32, + "name": "HiFi4 DSP Memory Rule Register 0 (pif_hifi4_x_mem_rule0)", + "description": "TrustZone register - HiFi4 DSP Memory Rule Register 0 (pif_hifi4_x_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field380", + "offset_int": "0x380", + "reg_width": 32, + "name": "HiFi4 DSP Memory Rule Register 1 (pif_hifi4_x_mem_rule1)", + "description": "TrustZone register - HiFi4 DSP Memory Rule Register 1 (pif_hifi4_x_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field384", + "offset_int": "0x384", + "reg_width": 32, + "name": "HiFi4 DSP Memory Rule Register 2 (pif_hifi4_x_mem_rule2)", + "description": "TrustZone register - HiFi4 DSP Memory Rule Register 2 (pif_hifi4_x_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field388", + "offset_int": "0x388", + "reg_width": 32, + "name": "HiFi4 DSP Memory Rule Register 3 (pif_hifi4_x_mem_rule3)", + "description": "TrustZone register - HiFi4 DSP Memory Rule Register 3 (pif_hifi4_x_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field38C", + "offset_int": "0x38c", + "reg_width": 32, + "name": "APB Bridge Slave Rule Register (apb_bridge_slave_rule)", + "description": "TrustZone register - APB Bridge Slave Rule Register (apb_bridge_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field390", + "offset_int": "0x390", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field394", + "offset_int": "0x394", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field398", + "offset_int": "0x398", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field39C", + "offset_int": "0x39c", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3A0", + "offset_int": "0x3a0", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3A4", + "offset_int": "0x3a4", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3A8", + "offset_int": "0x3a8", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3AC", + "offset_int": "0x3ac", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3B0", + "offset_int": "0x3b0", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register (ahb_periph0_slave_rule)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register (ahb_periph0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field3B4", + "offset_int": "0x3b4", + "reg_width": 32, + "name": "AIPS bridge 0 Memory Rule Register (aips_bridge0_slave_rule)", + "description": "TrustZone register - AIPS bridge 0 Memory Rule Register (aips_bridge0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field3B8", + "offset_int": "0x3b8", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field3BC", + "offset_int": "0x3bc", + "reg_width": 32, + "name": "AIPS bridge 1 Slave Rule Register (aips_bridge1_slave_rule)", + "description": "TrustZone register - AIPS bridge 1 Slave Rule Register (aips_bridge1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field3C0", + "offset_int": "0x3c0", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 0 (aips_bridge1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3C4", + "offset_int": "0x3c4", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 1 (aips_bridge1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field3C8", + "offset_int": "0x3c8", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 2 (aips_bridge1_mem_rule2)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 2 (aips_bridge1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field3CC", + "offset_int": "0x3cc", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 3 (aips_bridge1_mem_rule3)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 3 (aips_bridge1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field3D0", + "offset_int": "0x3d0", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register (ahb_periph2_slave_rule)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register (ahb_periph2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field3D4", + "offset_int": "0x3d4", + "reg_width": 32, + "name": "AHB Peripherals 2 Security Memory Rule Register (ahb_periph2_security_mem_rule)", + "description": "TrustZone register - AHB Peripherals 2 Security Memory Rule Register (ahb_periph2_security_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field3D8", + "offset_int": "0x3d8", + "reg_width": 32, + "name": "AHB Peripherals 3 Slave Rule Register (ahb_periph3_slave_rule)", + "description": "TrustZone register - AHB Peripherals 3 Slave Rule Register (ahb_periph3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field3DC", + "offset_int": "0x3dc", + "reg_width": 32, + "name": "Secure GPIO Mask Register 0 (sec_gpio_mask0)", + "description": "TrustZone register - Secure GPIO Mask Register 0 (sec_gpio_mask0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3E0", + "offset_int": "0x3e0", + "reg_width": 32, + "name": "Secure GPIO Mask Register 1 (sec_gpio_mask1)", + "description": "TrustZone register - Secure GPIO Mask Register 1 (sec_gpio_mask1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3E4", + "offset_int": "0x3e4", + "reg_width": 32, + "name": "Secure GPIO Mask Register 2 (sec_gpio_mask2)", + "description": "TrustZone register - Secure GPIO Mask Register 2 (sec_gpio_mask2)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3E8", + "offset_int": "0x3e8", + "reg_width": 32, + "name": "Secure GPIO Mask Register 3 (sec_gpio_mask3)", + "description": "TrustZone register - Secure GPIO Mask Register 3 (sec_gpio_mask3)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3EC", + "offset_int": "0x3ec", + "reg_width": 32, + "name": "Secure GPIO Mask Register 4 (sec_gpio_mask4)", + "description": "TrustZone register - Secure GPIO Mask Register 4 (sec_gpio_mask4)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3F0", + "offset_int": "0x3f0", + "reg_width": 32, + "name": "Secure GPIO Mask Register 5 (sec_gpio_mask5)", + "description": "TrustZone register - Secure GPIO Mask Register 5 (sec_gpio_mask5)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3F4", + "offset_int": "0x3f4", + "reg_width": 32, + "name": "Secure GPIO Mask Register 6 (sec_gpio_mask6)", + "description": "TrustZone register - Secure GPIO Mask Register 6 (sec_gpio_mask6)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3F8", + "offset_int": "0x3f8", + "reg_width": 32, + "name": "Secure GPIO Mask Register 7 (sec_gpio_mask7)", + "description": "TrustZone register - Secure GPIO Mask Register 7 (sec_gpio_mask7)", + "default_value_int": "0xffffffff" + }, + { + "id": "field3FC", + "offset_int": "0x3fc", + "reg_width": 32, + "name": "Secure DSP Interrupt Mask Register (sec_hifi4_int_mask)", + "description": "TrustZone register - Secure DSP Interrupt Mask Register (sec_hifi4_int_mask)", + "default_value_int": "0xffffffff" + }, + { + "id": "field400", + "offset_int": "0x400", + "reg_width": 32, + "name": "Secure GPIO Mask Lock Register (sec_gpio_mask_lock)", + "description": "TrustZone register - Secure GPIO Mask Lock Register (sec_gpio_mask_lock)", + "default_value_int": "0xaaaa" + }, + { + "id": "field404", + "offset_int": "0x404", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field408", + "offset_int": "0x408", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field40C", + "offset_int": "0x40c", + "reg_width": 32, + "name": "M33 Lock Control Register (m33_lock_reg)", + "description": "TrustZone register - M33 Lock Control Register (m33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field410", + "offset_int": "0x410", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field414", + "offset_int": "0x414", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field418", + "offset_int": "0x418", + "reg_width": 32, + "name": "Miscellaneous TZM settings (misc_tzm_settings)", + "description": "TrustZone register - Miscellaneous TZM settings (misc_tzm_settings)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt735s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt735s/database.yaml new file mode 100644 index 0000000..3e9aa50 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt735s/database.yaml @@ -0,0 +1,22 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt798s + +info: + memory_map: + # Memory map basic info + xspi1: + start_int: 0x08000000 + size_int: 0x08000000 + external: true + xspi0: + start_int: 0x28000000 + size_int: 0x08000000 + external: true + sram: + start_int: 0x2000_0000 + size_int: 0x0050_0000 + external: false + non_xip_type: int_ram diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt758s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt758s/database.yaml new file mode 100644 index 0000000..99201eb --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt758s/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mimxrt798s diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/database.yaml new file mode 100644 index 0000000..61bba9a --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/database.yaml @@ -0,0 +1,496 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: + features: + fuses: + reg_spec: fuses_a0.json + + a1: + features: + mbi: + mbi_classes: + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestDigest + - Mbi_MixinImageSubType + - Mbi_MixinImageVersion + - Mbi_MixinFwVersion + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + signed_ram: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestDigest + - Mbi_MixinImageSubType + - Mbi_MixinImageVersion + - Mbi_MixinFwVersion + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + fuses: + reg_spec: fuses_a0.json + b0: + features: + mbi: + images: + xip: + plain: plain_xip + crc: crc_ram + signed: signed_xip + load_to_ram: + plain: plain_ram + crc: crc_ram + signed: signed_ram + fcb: + mem_types: + xspi_nor: + reg_spec: fcb_xspi_nor_b0.json + # To be removed with next major release + deprecated_reg_names: + lookupTable_seq0_instr0: [lookupTable_0] + lookupTable_seq0_instr1: [lookupTable_1] + lookupTable_seq0_instr2: [lookupTable_2] + lookupTable_seq0_instr3: [lookupTable_3] + lookupTable_seq0_instr4: [lookupTable_4] + lookupTable_seq1_instr0: [lookupTable_5] + lookupTable_seq1_instr1: [lookupTable_6] + lookupTable_seq1_instr2: [lookupTable_7] + lookupTable_seq1_instr3: [lookupTable_8] + lookupTable_seq1_instr4: [lookupTable_9] + lookupTable_seq2_instr0: [lookupTable_10] + lookupTable_seq2_instr1: [lookupTable_11] + lookupTable_seq2_instr2: [lookupTable_12] + lookupTable_seq2_instr3: [lookupTable_13] + lookupTable_seq2_instr4: [lookupTable_14] + lookupTable_seq3_instr0: [lookupTable_15] + lookupTable_seq3_instr1: [lookupTable_16] + lookupTable_seq3_instr2: [lookupTable_17] + lookupTable_seq3_instr3: [lookupTable_18] + lookupTable_seq3_instr4: [lookupTable_19] + lookupTable_seq4_instr0: [lookupTable_20] + lookupTable_seq4_instr1: [lookupTable_21] + lookupTable_seq4_instr2: [lookupTable_22] + lookupTable_seq4_instr3: [lookupTable_23] + lookupTable_seq4_instr4: [lookupTable_24] + lookupTable_seq5_instr0: [lookupTable_25] + lookupTable_seq5_instr1: [lookupTable_26] + lookupTable_seq5_instr2: [lookupTable_27] + lookupTable_seq5_instr3: [lookupTable_28] + lookupTable_seq5_instr4: [lookupTable_29] + lookupTable_seq6_instr0: [lookupTable_30] + lookupTable_seq6_instr1: [lookupTable_31] + lookupTable_seq6_instr2: [lookupTable_32] + lookupTable_seq6_instr3: [lookupTable_33] + lookupTable_seq6_instr4: [lookupTable_34] + lookupTable_seq7_instr0: [lookupTable_35] + lookupTable_seq7_instr1: [lookupTable_36] + lookupTable_seq7_instr2: [lookupTable_37] + lookupTable_seq7_instr3: [lookupTable_38] + lookupTable_seq7_instr4: [lookupTable_39] + lookupTable_seq8_instr0: [lookupTable_40] + lookupTable_seq8_instr1: [lookupTable_41] + lookupTable_seq8_instr2: [lookupTable_42] + lookupTable_seq8_instr3: [lookupTable_43] + lookupTable_seq8_instr4: [lookupTable_44] + lookupTable_seq9_instr0: [lookupTable_45] + lookupTable_seq9_instr1: [lookupTable_46] + lookupTable_seq9_instr2: [lookupTable_47] + lookupTable_seq9_instr3: [lookupTable_48] + lookupTable_seq9_instr4: [lookupTable_49] + lookupTable_seq10_instr0: [lookupTable_50] + lookupTable_seq10_instr1: [lookupTable_51] + lookupTable_seq10_instr2: [lookupTable_52] + lookupTable_seq10_instr3: [lookupTable_53] + lookupTable_seq10_instr4: [lookupTable_54] + lookupTable_seq11_instr0: [lookupTable_55] + lookupTable_seq11_instr1: [lookupTable_56] + lookupTable_seq11_instr2: [lookupTable_57] + lookupTable_seq11_instr3: [lookupTable_58] + lookupTable_seq11_instr4: [lookupTable_59] + lookupTable_seq12_instr0: [lookupTable_60] + lookupTable_seq12_instr1: [lookupTable_61] + lookupTable_seq12_instr2: [lookupTable_62] + lookupTable_seq12_instr3: [lookupTable_63] + lookupTable_seq12_instr4: [lookupTable_64] + lookupTable_seq13_instr0: [lookupTable_65] + lookupTable_seq13_instr1: [lookupTable_66] + lookupTable_seq13_instr2: [lookupTable_67] + lookupTable_seq13_instr3: [lookupTable_68] + lookupTable_seq13_instr4: [lookupTable_69] + lookupTable_seq14_instr0: [lookupTable_70] + lookupTable_seq14_instr1: [lookupTable_71] + lookupTable_seq14_instr2: [lookupTable_72] + lookupTable_seq14_instr3: [lookupTable_73] + lookupTable_seq14_instr4: [lookupTable_74] + lookupTable_seq15_instr0: [lookupTable_75] + lookupTable_seq15_instr1: [lookupTable_76] + lookupTable_seq15_instr2: [lookupTable_77] + lookupTable_seq15_instr3: [lookupTable_78] + lookupTable_seq15_instr4: [lookupTable_79] + lookupTable_seq16_instr0: [lookupTable_80] + lookupTable_seq16_instr1: [lookupTable_81] + lookupTable_seq16_instr2: [lookupTable_82] + lookupTable_seq16_instr3: [lookupTable_83] + lookupTable_seq16_instr4: [lookupTable_84] + lookupTable_seq17_instr0: [lookupTable_85] + lookupTable_seq17_instr1: [lookupTable_86] + lookupTable_seq17_instr2: [lookupTable_87] + lookupTable_seq17_instr3: [lookupTable_88] + lookupTable_seq17_instr4: [lookupTable_89] + fuses: + reg_spec: fuses_b0.json +latest: b0 + +# General MCU information +info: + purpose: i.MX RT Crossover MCUs + spsdk_predecessor_name: rt7xx + # Web page of MCU representative + web: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt700-crossover-mcu-with-arm-cortex-m33-npu-dsp-and-gpu-cores:i.MX-RT700 + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0026 + memory_map: + # Memory map basic info + xspi1: + start_int: 0x08000000 + size_int: 0x08000000 + external: true + xspi0: + start_int: 0x28000000 + size_int: 0x08000000 + external: true + sram: + start_int: 0x2000_0000 + size_int: 0x0078_0000 + external: false + non_xip_type: int_ram + +features: + # ======== Blhost section ======== + blhost: + sub_features: [overridden_properties] + overridden_properties: + 17: "life-cycle" + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x20070000 + size: 0x1000 + + # ======== Fuses description section ======== + fuses: + grouped_registers: + - uid: rkth + name: RKTH + width: 384 + config_as_hexstring: true + reversed: true + alternative_widths: [256] + description: + ROTKH field is compounded by 12 32-bit fields and contains Root key + table hash. For ECC P-256 keys RKTH is a 32-byte SHA-256 digest of four + SHA-256 digests computed over four OEM public keys (OEM has four + private-public key pairs in case one of its private keys becomes + compromised) or in case that ECC P-384 keys are used, RKTH is 48-byte + SHA-384 digest. + sub_regs: + - fuse88 + - fuse89 + - fuse90 + - fuse91 + - fuse92 + - fuse93 + - fuse94 + - fuse95 + - fuse96 + - fuse97 + - fuse98 + - fuse99 + - uid: cust_mk_sk + name: CUST_MK_SK + width: 384 + config_as_hexstring: true + #reversed: true + alternative_widths: [256] + description: CUST_MK_SK + sub_regs: + - fuse100 + - fuse101 + - fuse102 + - fuse103 + - fuse104 + - fuse105 + - fuse106 + - fuse107 + - fuse108 + - fuse109 + - fuse110 + - fuse111 + + # ======== DAT section ======== + dat: + socc: 0x8 # SOCC identification + dmbox_ap_ix: 2 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert21] + rot_type: "cert_block_21" + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + plain_ram: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinRelocTable + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestCrc + - Mbi_MixinImageSubType + - Mbi_MixinImageVersion + - Mbi_MixinFwVersion + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + signed_ram: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifestCrc + - Mbi_MixinImageSubType + - Mbi_MixinImageVersion + - Mbi_MixinFwVersion + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + plain: plain_ram + crc: crc_ram + signed: signed_ram + + # ======== Secure binary v3.1 section ======== + sb31: + supported_commands: + - erase + - load + - execute + - programFuses + - copy + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + key_wraps_version: 2 + + # ======== FCB section ======== + fcb: + mem_types: + xspi_nor: + reg_spec: fcb_xspi_nor_a0.json + # To be removed with next major release + deprecated_reg_names: + lookupTable_seq0_instr0: [lookupTable_0] + lookupTable_seq0_instr1: [lookupTable_1] + lookupTable_seq0_instr2: [lookupTable_2] + lookupTable_seq0_instr3: [lookupTable_3] + lookupTable_seq0_instr4: [lookupTable_4] + lookupTable_seq1_instr0: [lookupTable_5] + lookupTable_seq1_instr1: [lookupTable_6] + lookupTable_seq1_instr2: [lookupTable_7] + lookupTable_seq1_instr3: [lookupTable_8] + lookupTable_seq1_instr4: [lookupTable_9] + lookupTable_seq2_instr0: [lookupTable_10] + lookupTable_seq2_instr1: [lookupTable_11] + lookupTable_seq2_instr2: [lookupTable_12] + lookupTable_seq2_instr3: [lookupTable_13] + lookupTable_seq2_instr4: [lookupTable_14] + lookupTable_seq3_instr0: [lookupTable_15] + lookupTable_seq3_instr1: [lookupTable_16] + lookupTable_seq3_instr2: [lookupTable_17] + lookupTable_seq3_instr3: [lookupTable_18] + lookupTable_seq3_instr4: [lookupTable_19] + lookupTable_seq4_instr0: [lookupTable_20] + lookupTable_seq4_instr1: [lookupTable_21] + lookupTable_seq4_instr2: [lookupTable_22] + lookupTable_seq4_instr3: [lookupTable_23] + lookupTable_seq4_instr4: [lookupTable_24] + lookupTable_seq5_instr0: [lookupTable_25] + lookupTable_seq5_instr1: [lookupTable_26] + lookupTable_seq5_instr2: [lookupTable_27] + lookupTable_seq5_instr3: [lookupTable_28] + lookupTable_seq5_instr4: [lookupTable_29] + lookupTable_seq6_instr0: [lookupTable_30] + lookupTable_seq6_instr1: [lookupTable_31] + lookupTable_seq6_instr2: [lookupTable_32] + lookupTable_seq6_instr3: [lookupTable_33] + lookupTable_seq6_instr4: [lookupTable_34] + lookupTable_seq7_instr0: [lookupTable_35] + lookupTable_seq7_instr1: [lookupTable_36] + lookupTable_seq7_instr2: [lookupTable_37] + lookupTable_seq7_instr3: [lookupTable_38] + lookupTable_seq7_instr4: [lookupTable_39] + lookupTable_seq8_instr0: [lookupTable_40] + lookupTable_seq8_instr1: [lookupTable_41] + lookupTable_seq8_instr2: [lookupTable_42] + lookupTable_seq8_instr3: [lookupTable_43] + lookupTable_seq8_instr4: [lookupTable_44] + lookupTable_seq9_instr0: [lookupTable_45] + lookupTable_seq9_instr1: [lookupTable_46] + lookupTable_seq9_instr2: [lookupTable_47] + lookupTable_seq9_instr3: [lookupTable_48] + lookupTable_seq9_instr4: [lookupTable_49] + lookupTable_seq10_instr0: [lookupTable_50] + lookupTable_seq10_instr1: [lookupTable_51] + lookupTable_seq10_instr2: [lookupTable_52] + lookupTable_seq10_instr3: [lookupTable_53] + lookupTable_seq10_instr4: [lookupTable_54] + lookupTable_seq11_instr0: [lookupTable_55] + lookupTable_seq11_instr1: [lookupTable_56] + lookupTable_seq11_instr2: [lookupTable_57] + lookupTable_seq11_instr3: [lookupTable_58] + lookupTable_seq11_instr4: [lookupTable_59] + lookupTable_seq12_instr0: [lookupTable_60] + lookupTable_seq12_instr1: [lookupTable_61] + lookupTable_seq12_instr2: [lookupTable_62] + lookupTable_seq12_instr3: [lookupTable_63] + lookupTable_seq12_instr4: [lookupTable_64] + lookupTable_seq13_instr0: [lookupTable_65] + lookupTable_seq13_instr1: [lookupTable_66] + lookupTable_seq13_instr2: [lookupTable_67] + lookupTable_seq13_instr3: [lookupTable_68] + lookupTable_seq13_instr4: [lookupTable_69] + lookupTable_seq14_instr0: [lookupTable_70] + lookupTable_seq14_instr1: [lookupTable_71] + lookupTable_seq14_instr2: [lookupTable_72] + lookupTable_seq14_instr3: [lookupTable_73] + lookupTable_seq14_instr4: [lookupTable_74] + lookupTable_seq15_instr0: [lookupTable_75] + lookupTable_seq15_instr1: [lookupTable_76] + lookupTable_seq15_instr2: [lookupTable_77] + lookupTable_seq15_instr3: [lookupTable_78] + lookupTable_seq15_instr4: [lookupTable_79] + + # ======== XMCD section ======== + xmcd: + header: + reg_spec: ../../common/xmcd/xspi_ram_header.json + mem_types: + xspi_ram: + simplified: + reg_spec: ../../common/xmcd/xspi_ram_simplified.json + # ======== Bootable image section ======== + bootable_image: + mem_types: + xspi_nor: + segments: + fcb: 0x0000 + xmcd: 0x0300 + mbi: 0x4000 + remap_align: 0x40000 # 256 KB + sd: + segments: + mbi: 0x1000 + emmc: + segments: + mbi: 0x1000 + + # ======== Shadow registers section ======== + shadow_regs: {} + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsmSB31] + key_blob_offset: 0 + key_blob_command_position: -1 + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - copy + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + + # ======== Trust Zone section ======== + tz: + data_file: tz.json + + # ======== Memory configuration ======== + memcfg: + peripherals: + xspi_nor: + instances: [0, 1] + sd: + instances: [0, 1] + interfaces: [instance_0, instance_1] + emmc: + instances: [0, 1] + interfaces: [instance_0, instance_1] + spi_nor: + reg_spec: ../../common/memcfg/opt_word_spi_nor_legacy.json + instances: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fcb_xspi_nor_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fcb_xspi_nor_a0.json new file mode 100644 index 0000000..b61f164 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fcb_xspi_nor_a0.json @@ -0,0 +1,2101 @@ +{ + "cpu": "MIMXRT798s", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL ", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix ", + "default_value_int": "0x0" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0: internal sampling 2: DQS pad loopback 3: External DQS signal ", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, others to 0. ", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type. 0: No mode change 1: Quad enable (switch from SPI to Quad mode) 2: Spi2Xpi (switch from SPI to DPI, QPI, or OPI mode) 3: Xpi2Spi (switch from DPI, QPI, or OPI to SPI mode) ", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for Device mode configuration command, unit: 100us ", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info [ 7:0] - Number of required sequences [15:8] - Sequence index ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration ", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": "Controller Miscellaneous Configuration Options", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: 1 for Serial NOR flash memory ", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal ", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency 1: 30 MHz 2: 50 MHz 3: 60 MHz 4: 80 MHz 5: 100 MHz 6: 120 MHz 7: 133 MHz 8: 166 MHz 9: 200 MHz ", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH ", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1 ", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2 ", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1 ", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2 ", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command ", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands ", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field078-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps " + }, + { + "id": "field078-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells " + } + ] + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field07A-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps " + }, + { + "id": "field07A-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells " + } + ] + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31 ", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy ", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "lookupTable_seq0_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "lookupTable_seq0_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "lookupTable_seq0_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "lookupTable_seq0_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "lookupTable_seq0_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "lookupTable_seq1_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "lookupTable_seq1_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "lookupTable_seq1_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "lookupTable_seq1_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "lookupTable_seq1_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "lookupTable_seq2_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "lookupTable_seq2_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "lookupTable_seq2_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "lookupTable_seq2_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "lookupTable_seq2_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "lookupTable_seq3_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "lookupTable_seq3_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "lookupTable_seq3_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "lookupTable_seq3_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "lookupTable_seq3_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "lookupTable_seq4_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "lookupTable_seq4_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "lookupTable_seq4_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "lookupTable_seq4_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "lookupTable_seq4_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "lookupTable_seq5_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "lookupTable_seq5_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "lookupTable_seq5_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "lookupTable_seq5_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "lookupTable_seq5_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "lookupTable_seq6_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "lookupTable_seq6_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "lookupTable_seq6_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "lookupTable_seq6_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "lookupTable_seq6_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "lookupTable_seq7_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "lookupTable_seq7_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "lookupTable_seq7_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "lookupTable_seq7_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "lookupTable_seq7_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "lookupTable_seq8_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "lookupTable_seq8_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "lookupTable_seq8_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "lookupTable_seq8_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "lookupTable_seq8_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "lookupTable_seq9_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "lookupTable_seq9_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "lookupTable_seq9_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "lookupTable_seq9_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "lookupTable_seq9_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "lookupTable_seq10_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "lookupTable_seq10_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "lookupTable_seq10_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "lookupTable_seq10_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "lookupTable_seq10_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "lookupTable_seq11_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "lookupTable_seq11_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "lookupTable_seq11_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "lookupTable_seq11_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "lookupTable_seq11_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "lookupTable_seq12_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "lookupTable_seq12_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "lookupTable_seq12_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "lookupTable_seq12_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lookupTable_seq12_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lookupTable_seq13_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lookupTable_seq13_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lookupTable_seq13_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lookupTable_seq13_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lookupTable_seq13_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lookupTable_seq14_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lookupTable_seq14_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lookupTable_seq14_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lookupTable_seq14_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lookupTable_seq14_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lookupTable_seq15_instr0", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "lookupTable_seq15_instr1", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "lookupTable_seq15_instr2", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "lookupTable_seq15_instr3", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "lookupTable_seq15_instr4", + "description": " [0x080-0x1bf] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1C0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1C0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1C4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1C4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1C8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1C8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1CC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1CC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1D0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1D0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1D4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1D4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1D8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1D8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1DC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1DC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1E0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1E0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1E4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1E4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1E8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1E8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x1c0-0x1ef] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1EC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1EC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "dllCraSdrVal", + "description": " [0x1f0-0x1f3] Customizable DLLCRA for SDR setting ", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "smprSdrVal", + "description": " [0x1f4-0x1f7] Customizable SMPR SDR setting ", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "dllCraDdrVal", + "description": " [0x1f8-0x1fb] Customizable DLLCRA for DDR setting ", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "smprDdrVal", + "description": " [0x1fc-0x1ff] Customizable SMPR DDR setting ", + "default_value_int": "0x0" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "pageSize", + "description": " [0x200-0x203] Page size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "sectorSize", + "description": " [0x204-0x207] Sector size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " [0x208-0x208] Clock frequency for IP command ", + "default_value_int": "0x0" + }, + { + "id": "field209", + "offset_int": "0x209", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " [0x209-0x209] Sector/Block size is the same ", + "default_value_int": "0x0" + }, + { + "id": "field20A", + "offset_int": "0x20a", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " [0x20a-0x20a] Data order (D0, D1, D2, D3) is swapped (D1,D0, D3, D2) ", + "default_value_int": "0x0" + }, + { + "id": "Reserved20B", + "offset_int": "0x20b", + "reg_width": 8, + "name": "reserved4", + "description": " [0x20b-0x20b] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 8, + "name": "serialNorType", + "description": " [0x20c-0x20c] Serial NOR Flash type: 0/1/2/3 ", + "default_value_int": "0x0" + }, + { + "id": "field20D", + "offset_int": "0x20d", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " [0x20d-0x20d] Need to exit NoCmd mode before other IP command ", + "default_value_int": "0x0" + }, + { + "id": "field20E", + "offset_int": "0x20e", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " [0x20e-0x20e] Half the Serial Clock for non-read command: true/false ", + "default_value_int": "0x0" + }, + { + "id": "field20F", + "offset_int": "0x20f", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " [0x20f-0x20f] Need to Restore NoCmd mode after IP command execution ", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "blockSize", + "description": " [0x210-0x213] Block size ", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "flashStateCtx", + "description": " [0x214-0x217] Flash State Context ", + "default_value_int": "0x0" + }, + { + "id": "Reserved218", + "offset_int": "0x218", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x218-0x21b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x21c-0x21f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved220", + "offset_int": "0x220", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x220-0x223] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved224", + "offset_int": "0x224", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x224-0x227] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved228", + "offset_int": "0x228", + "reg_width": 32, + "name": "reserved4_4", + "description": " [0x228-0x22b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "reserved4_5", + "description": " [0x22c-0x22f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved230", + "offset_int": "0x230", + "reg_width": 32, + "name": "reserved4_6", + "description": " [0x230-0x233] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved234", + "offset_int": "0x234", + "reg_width": 32, + "name": "reserved4_7", + "description": " [0x234-0x237] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved238", + "offset_int": "0x238", + "reg_width": 32, + "name": "reserved4_8", + "description": " [0x238-0x23b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "reserved4_9", + "description": " [0x23c-0x23f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved240", + "offset_int": "0x240", + "reg_width": 32, + "name": "reserved4_10", + "description": " [0x240-0x243] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved244", + "offset_int": "0x244", + "reg_width": 32, + "name": "reserved4_11", + "description": " [0x244-0x247] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved248", + "offset_int": "0x248", + "reg_width": 32, + "name": "reserved4_12", + "description": " [0x248-0x24b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "reserved4_13", + "description": " [0x24c-0x24f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved250", + "offset_int": "0x250", + "reg_width": 32, + "name": "reserved4_14", + "description": " [0x250-0x253] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved254", + "offset_int": "0x254", + "reg_width": 32, + "name": "reserved4_15", + "description": " [0x254-0x257] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved258", + "offset_int": "0x258", + "reg_width": 32, + "name": "reserved4_16", + "description": " [0x258-0x25b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "reserved4_17", + "description": " [0x25c-0x25f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved260", + "offset_int": "0x260", + "reg_width": 32, + "name": "reserved4_18", + "description": " [0x260-0x263] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved264", + "offset_int": "0x264", + "reg_width": 32, + "name": "reserved4_19", + "description": " [0x264-0x267] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved268", + "offset_int": "0x268", + "reg_width": 32, + "name": "reserved4_20", + "description": " [0x268-0x26b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "reserved4_21", + "description": " [0x26c-0x26f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved270", + "offset_int": "0x270", + "reg_width": 32, + "name": "reserved4_22", + "description": " [0x270-0x273] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved274", + "offset_int": "0x274", + "reg_width": 32, + "name": "reserved4_23", + "description": " [0x274-0x277] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved278", + "offset_int": "0x278", + "reg_width": 32, + "name": "reserved4_24", + "description": " [0x278-0x27b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "reserved4_25", + "description": " [0x27c-0x27f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved280", + "offset_int": "0x280", + "reg_width": 32, + "name": "reserved4_26", + "description": " [0x280-0x283] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved284", + "offset_int": "0x284", + "reg_width": 32, + "name": "reserved4_27", + "description": " [0x284-0x287] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved288", + "offset_int": "0x288", + "reg_width": 32, + "name": "reserved4_28", + "description": " [0x288-0x28b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "reserved4_29", + "description": " [0x28c-0x28f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved290", + "offset_int": "0x290", + "reg_width": 32, + "name": "reserved4_30", + "description": " [0x290-0x293] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved294", + "offset_int": "0x294", + "reg_width": 32, + "name": "reserved4_31", + "description": " [0x294-0x297] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved298", + "offset_int": "0x298", + "reg_width": 32, + "name": "reserved4_32", + "description": " [0x298-0x29b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "reserved4_33", + "description": " [0x29c-0x29f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "reserved4_34", + "description": " [0x2a0-0x2a3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "reserved4_35", + "description": " [0x2a4-0x2a7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "reserved4_36", + "description": " [0x2a8-0x2ab] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "reserved4_37", + "description": " [0x2ac-0x2af] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "reserved4_38", + "description": " [0x2b0-0x2b3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "reserved4_39", + "description": " [0x2b4-0x2b7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "reserved4_40", + "description": " [0x2b8-0x2bb] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "reserved4_41", + "description": " [0x2bc-0x2bf] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "reserved4_42", + "description": " [0x2c0-0x2c3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "reserved4_43", + "description": " [0x2c4-0x2c7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "reserved4_44", + "description": " [0x2c8-0x2cb] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "reserved4_45", + "description": " [0x2cc-0x2cf] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "reserved4_46", + "description": " [0x2d0-0x2d3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "reserved4_47", + "description": " [0x2d4-0x2d7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "reserved4_48", + "description": " [0x2d8-0x2db] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "reserved4_49", + "description": " [0x2dc-0x2df] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "reserved4_50", + "description": " [0x2e0-0x2e3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "reserved4_51", + "description": " [0x2e4-0x2e7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "reserved4_52", + "description": " [0x2e8-0x2eb] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "reserved4_53", + "description": " [0x2ec-0x2ef] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "reserved4_54", + "description": " [0x2f0-0x2f3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "reserved4_55", + "description": " [0x2f4-0x2f7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "reserved4_56", + "description": " [0x2f8-0x2fb] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "reserved4_57", + "description": " [0x2fc-0x2ff] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fcb_xspi_nor_b0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fcb_xspi_nor_b0.json new file mode 100644 index 0000000..ca3eb13 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fcb_xspi_nor_b0.json @@ -0,0 +1,2091 @@ +{ + "cpu": "MIMXRT798s", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL ", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix ", + "default_value_int": "0x0" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0: internal sampling 2: DQS pad loopback 3: External DQS signal ", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, others to 0. ", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type. 0: No mode change 1: Quad enable (switch from SPI to Quad mode) 2: Spi2Xpi (switch from SPI to DPI, QPI, or OPI mode) 3: Xpi2Spi (switch from DPI, QPI, or OPI to SPI mode) ", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for Device mode configuration command, unit: 100us ", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info [ 7:0] - Number of required sequences [15:8] - Sequence index ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration ", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": "Control Miscellaneous Options for Flash Configuration Block", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: 1 for Serial NOR flash memory ", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal ", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency 1: 30 MHz 2: 50 MHz 3: 60 MHz 4: 80 MHz 5: 100 MHz 6: 120 MHz 7: 133 MHz 8: 166 MHz 9: 200 MHz ", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH ", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1 ", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2 ", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1 ", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2 ", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command ", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands ", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field078-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps " + }, + { + "id": "field078-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells " + } + ] + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field07A-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps " + }, + { + "id": "field07A-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells " + } + ] + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31 ", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy ", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "lookupTable_seq0_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "lookupTable_seq0_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "lookupTable_seq0_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "lookupTable_seq0_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "lookupTable_seq0_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "lookupTable_seq1_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "lookupTable_seq1_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "lookupTable_seq1_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "lookupTable_seq1_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "lookupTable_seq1_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "lookupTable_seq2_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "lookupTable_seq2_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "lookupTable_seq2_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "lookupTable_seq2_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "lookupTable_seq2_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "lookupTable_seq3_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "lookupTable_seq3_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "lookupTable_seq3_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "lookupTable_seq3_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "lookupTable_seq3_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "lookupTable_seq4_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "lookupTable_seq4_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "lookupTable_seq4_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "lookupTable_seq4_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "lookupTable_seq4_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "lookupTable_seq5_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "lookupTable_seq5_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "lookupTable_seq5_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "lookupTable_seq5_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "lookupTable_seq5_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "lookupTable_seq6_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "lookupTable_seq6_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "lookupTable_seq6_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "lookupTable_seq6_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "lookupTable_seq6_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "lookupTable_seq7_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "lookupTable_seq7_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "lookupTable_seq7_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "lookupTable_seq7_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "lookupTable_seq7_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "lookupTable_seq8_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "lookupTable_seq8_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "lookupTable_seq8_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "lookupTable_seq8_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "lookupTable_seq8_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "lookupTable_seq9_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "lookupTable_seq9_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "lookupTable_seq9_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "lookupTable_seq9_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "lookupTable_seq9_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "lookupTable_seq10_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "lookupTable_seq10_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "lookupTable_seq10_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "lookupTable_seq10_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "lookupTable_seq10_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "lookupTable_seq11_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "lookupTable_seq11_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "lookupTable_seq11_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "lookupTable_seq11_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "lookupTable_seq11_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "lookupTable_seq12_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "lookupTable_seq12_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "lookupTable_seq12_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "lookupTable_seq12_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lookupTable_seq12_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lookupTable_seq13_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lookupTable_seq13_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lookupTable_seq13_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lookupTable_seq13_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lookupTable_seq13_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lookupTable_seq14_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lookupTable_seq14_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lookupTable_seq14_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lookupTable_seq14_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lookupTable_seq14_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lookupTable_seq15_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "lookupTable_seq15_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "lookupTable_seq15_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "lookupTable_seq15_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "lookupTable_seq15_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "lookupTable_seq16_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "lookupTable_seq16_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "lookupTable_seq16_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "lookupTable_seq16_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "lookupTable_seq16_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "lookupTable_seq17_instr0", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "lookupTable_seq17_instr1", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "lookupTable_seq17_instr2", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "lookupTable_seq17_instr3", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "lookupTable_seq17_instr4", + "description": " [0x080-0x1e7] Lookup table holds Flash command sequences ", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1E8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1E8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1EC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1EC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1F0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1F0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1F4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1F4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1F8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1F8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1FC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1FC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field200-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field200-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field204-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field204-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field208-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field208-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field20C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field20C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field210-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field210-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x1e8-0x217] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field214-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field214-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "dllCraSdrVal", + "description": " [0x218-0x21b] Customizable DLLCRA for SDR setting ", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "smprSdrVal", + "description": " [0x21c-0x21f] Customizable SMPR SDR setting ", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "dllCraDdrVal", + "description": " [0x220-0x223] Customizable DLLCRA for DDR setting ", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "smprDdrVal", + "description": " [0x224-0x227] Customizable SMPR DDR setting ", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "pageSize", + "description": " [0x228-0x22b] Page size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "sectorSize", + "description": " [0x22c-0x22f] Sector size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " [0x230-0x230] Clock frequency for IP command ", + "default_value_int": "0x0" + }, + { + "id": "field231", + "offset_int": "0x231", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " [0x231-0x231] Sector/Block size is the same ", + "default_value_int": "0x0" + }, + { + "id": "field232", + "offset_int": "0x232", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " [0x232-0x232] Data order (D0, D1, D2, D3) is swapped (D1,D0, D3, D2) ", + "default_value_int": "0x0" + }, + { + "id": "Reserved233", + "offset_int": "0x233", + "reg_width": 8, + "name": "reserved4", + "description": " [0x233-0x233] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 8, + "name": "serialNorType", + "description": " [0x234-0x234] Serial NOR Flash type: 0/1/2/3 ", + "default_value_int": "0x0" + }, + { + "id": "field235", + "offset_int": "0x235", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " [0x235-0x235] Need to exit NoCmd mode before other IP command ", + "default_value_int": "0x0" + }, + { + "id": "field236", + "offset_int": "0x236", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " [0x236-0x236] Half the Serial Clock for non-read command: true/false ", + "default_value_int": "0x0" + }, + { + "id": "field237", + "offset_int": "0x237", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " [0x237-0x237] Need to Restore NoCmd mode after IP command execution ", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "blockSize", + "description": " [0x238-0x23b] Block size ", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "flashStateCtx", + "description": " [0x23c-0x23f] Flash State Context ", + "default_value_int": "0x0" + }, + { + "id": "Reserved240", + "offset_int": "0x240", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x240-0x243] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved244", + "offset_int": "0x244", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x244-0x247] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved248", + "offset_int": "0x248", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x248-0x24b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x24c-0x24f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved250", + "offset_int": "0x250", + "reg_width": 32, + "name": "reserved4_4", + "description": " [0x250-0x253] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved254", + "offset_int": "0x254", + "reg_width": 32, + "name": "reserved4_5", + "description": " [0x254-0x257] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved258", + "offset_int": "0x258", + "reg_width": 32, + "name": "reserved4_6", + "description": " [0x258-0x25b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "reserved4_7", + "description": " [0x25c-0x25f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved260", + "offset_int": "0x260", + "reg_width": 32, + "name": "reserved4_8", + "description": " [0x260-0x263] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved264", + "offset_int": "0x264", + "reg_width": 32, + "name": "reserved4_9", + "description": " [0x264-0x267] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved268", + "offset_int": "0x268", + "reg_width": 32, + "name": "reserved4_10", + "description": " [0x268-0x26b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "reserved4_11", + "description": " [0x26c-0x26f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved270", + "offset_int": "0x270", + "reg_width": 32, + "name": "reserved4_12", + "description": " [0x270-0x273] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved274", + "offset_int": "0x274", + "reg_width": 32, + "name": "reserved4_13", + "description": " [0x274-0x277] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved278", + "offset_int": "0x278", + "reg_width": 32, + "name": "reserved4_14", + "description": " [0x278-0x27b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "reserved4_15", + "description": " [0x27c-0x27f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved280", + "offset_int": "0x280", + "reg_width": 32, + "name": "reserved4_16", + "description": " [0x280-0x283] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved284", + "offset_int": "0x284", + "reg_width": 32, + "name": "reserved4_17", + "description": " [0x284-0x287] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved288", + "offset_int": "0x288", + "reg_width": 32, + "name": "reserved4_18", + "description": " [0x288-0x28b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "reserved4_19", + "description": " [0x28c-0x28f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved290", + "offset_int": "0x290", + "reg_width": 32, + "name": "reserved4_20", + "description": " [0x290-0x293] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved294", + "offset_int": "0x294", + "reg_width": 32, + "name": "reserved4_21", + "description": " [0x294-0x297] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved298", + "offset_int": "0x298", + "reg_width": 32, + "name": "reserved4_22", + "description": " [0x298-0x29b] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "reserved4_23", + "description": " [0x29c-0x29f] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "reserved4_24", + "description": " [0x2a0-0x2a3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "reserved4_25", + "description": " [0x2a4-0x2a7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "reserved4_26", + "description": " [0x2a8-0x2ab] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "reserved4_27", + "description": " [0x2ac-0x2af] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "reserved4_28", + "description": " [0x2b0-0x2b3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "reserved4_29", + "description": " [0x2b4-0x2b7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "reserved4_30", + "description": " [0x2b8-0x2bb] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "reserved4_31", + "description": " [0x2bc-0x2bf] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "reserved4_32", + "description": " [0x2c0-0x2c3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "reserved4_33", + "description": " [0x2c4-0x2c7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "reserved4_34", + "description": " [0x2c8-0x2cb] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "reserved4_35", + "description": " [0x2cc-0x2cf] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "reserved4_36", + "description": " [0x2d0-0x2d3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "reserved4_37", + "description": " [0x2d4-0x2d7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "reserved4_38", + "description": " [0x2d8-0x2db] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "reserved4_39", + "description": " [0x2dc-0x2df] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "reserved4_40", + "description": " [0x2e0-0x2e3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "reserved4_41", + "description": " [0x2e4-0x2e7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "reserved4_42", + "description": " [0x2e8-0x2eb] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "reserved4_43", + "description": " [0x2ec-0x2ef] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "reserved4_44", + "description": " [0x2f0-0x2f3] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "reserved4_45", + "description": " [0x2f4-0x2f7] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "reserved4_46", + "description": " [0x2f8-0x2fb] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "reserved4_47", + "description": " [0x2fc-0x2ff] Flash State Context ", + "default_value_int": "0x0", + "is_reserved": true + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fuses_a0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fuses_a0.json new file mode 100644 index 0000000..9160880 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fuses_a0.json @@ -0,0 +1,4741 @@ +{ + "cpu": "MIMXRT798S", + "shadow_reg_base_addr_int": "0x40018000", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Lock bits allowing to lock access to specified fuses" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCK_CFG0", + "description": "LOCK_CFG0", + "index_int": "0", + "shadow_reg_offset_int": "0", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse0-bits-0-2", + "name": "BOOT_CFG0_LOCK[2:0]", + "description": "Boot Configuration Lock", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "LOCK_CFG_LOCK[2:0]", + "description": "Lock for Fuse Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse1", + "name": "LOCK_CFG1", + "description": "LOCK_CFG1", + "index_int": "0x0001", + "shadow_reg_offset_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse1-bits-3-5", + "name": "XSPI0_IPED_CFG_LOCK[2:0]", + "description": "XSPI0 IPED configuration Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse1-bits-6-8", + "name": "XSPI1_IPED_CFG_LOCK[2:0]", + "description": "XSPI1 IPED configuration Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse2", + "name": "LOCK_CFG2", + "description": "LOCK_CFG2", + "index_int": "0x0002", + "shadow_reg_offset_int": "0x0008", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse2-bits-3-5", + "name": "ROTKH_LOCK[2:0]", + "description": "ROTKH Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse2-bits-9-11", + "name": "REVOKE_LOCK[2:0]", + "description": "Revoke Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse2-bits-12-14", + "name": "CUST_MK_SK_LOCK[2:0]", + "description": "CUST_MK_SK Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse3", + "name": "LOCK_CFG3", + "description": "LOCK_CFG3", + "index_int": "0x0003", + "shadow_reg_offset_int": "0x000C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse3-bits-0-2", + "name": "LIFE_CYCLE_LOCK[2:0]", + "description": "Life Cycle Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse3-bits-6-8", + "name": "NS_FW_VER_LOCK[2:0]", + "description": "Non-Secure Firmware version Lock Bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse3-bits-9-11", + "name": "SEC_FW_VER_LOCK[2:0]", + "description": "Secure Firmware version Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse5", + "name": "LOCK_CFG5", + "description": "LOCK_CFG5", + "index_int": "0x0005", + "shadow_reg_offset_int": "0x0014", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse5-bits-6-8", + "name": "BOOT_CFG1_LOCK[2:0]", + "description": "BOOT_CFG Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse5-bits-9-11", + "name": "CUST_GP_BANK0_LOCK[2:0]", + "description": "Customer BOOTCFG0 Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "OEM configuration", + "description": "OEM device and Debug Credential (DC) constraints" + }, + "registers": [ + { + "id": "fuse37", + "name": "LIFECYCLE", + "description": "Device lifecycle and CC_SOCU debug access restrictions per debug domain.", + "index_int": "0x0025", + "shadow_reg_offset_int": "0x0094", + "default_value_int": "0x00030003", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse37-bits-0-7", + "name": "LC_STATE_RED", + "description": "Redundant Life Cycle state", + "values": [ + { + "name": "DEVELOP", + "value": 3, + "description": "Initial customer development state after leaving NXP manufacturing." + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Optional customer development state. Used for development of NS world code." + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field application state for end-customer use." + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "Alternative in-field application state that prevents use of field return/failure analysis states. The rest of the behavior of the device is the same as the In-field state." + }, + { + "name": "FIELD_RETURN_OEM", + "value": 31, + "description": "Field return state." + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "NXP field return state (CQC = Customer Quality Complaint)." + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked state to prevent device use." + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-8", + "name": "CPU0_NIDEN_DIS", + "description": "CPU0 Non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-9", + "name": "CPU0_DBGEN_DIS", + "description": "CPU0 Invasive Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-10", + "name": "CPU0_SPNIDEN_DIS", + "description": "CPU0 Secure non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-11", + "name": "CPU0_SPIDEN_DIS", + "description": "CPU0 Secure invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-12", + "name": "CPU1_NIDEN_DIS", + "description": "CPU0 Non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-13", + "name": "CPU1_DBGEN_DIS", + "description": "CPU0 Invasive Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-14", + "name": "CPU1_SPNIDEN_DIS", + "description": "CPU0 Secure non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-15", + "name": "CPU1_SPIDEN_DIS", + "description": "CPU0 Secure invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 8, + "id": "fuse37-bits-16-23", + "name": "BP_LC_STATE_RED", + "description": "Bit-protection: Redundant Life Cycle state", + "values": [ + { + "name": "DEVELOP", + "value": 3, + "description": "Initial customer development state after leaving NXP manufacturing." + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Optional customer development state. Used for development of NS world code." + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field application state for end-customer use." + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "Alternative in-field application state that prevents use of field return/failure analysis states. The rest of the behavior of the device is the same as the In-field state." + }, + { + "name": "FIELD_RETURN_OEM", + "value": 31, + "description": "Field return state." + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "NXP field return state (CQC = Customer Quality Complaint)." + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked state to prevent device use." + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-24", + "name": "BP_CPU0_NIDEN_DIS", + "description": "Bit-protection: CPU1 Non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-25", + "name": "BP_CPU0_DBGEN_DIS", + "description": "Bit-protection: CPU1 Invasive Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-26", + "name": "BP_CPU0_SPNIDEN_DIS", + "description": "Bit-protection: CPU1 Secure non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-27", + "name": "BP_CPU0_SPIDEN_DIS", + "description": "Bit-protection: CPU1 Secure invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-28", + "name": "BP_CPU1_NIDEN_DIS", + "description": "Bit-protection: CPU1 Non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-29", + "name": "BP_CPU1_DBGEN_DIS", + "description": "Bit-protection: CPU1 Invasive Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-30", + "name": "BP_CPU1_SPNIDEN_DIS", + "description": "Bit-protection: CPU1 Secure non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-31", + "name": "BP_CPU1_SPIDEN_DIS", + "description": "Bit-protection: CPU1 Secure invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + } + ] + }, + { + "id": "fuse132", + "name": "IMAGE_KEY_REVOKE[15:0]", + "description": "Image Key Revoke", + "index_int": "0x0084", + "shadow_reg_offset_int": "0x0210", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16 + }, + { + "id": "fuse133", + "name": "DCFG_CC_VU[15:0]", + "description": "Device Configuration for Credential Constraints Vendor-Usage", + "index_int": "0x0085", + "shadow_reg_offset_int": "0x0214", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16 + }, + { + "id": "fuse134", + "name": "ROTK_REVOKE", + "description": "ROTK_USAGE", + "index_int": "0x0086", + "shadow_reg_offset_int": "0x0218", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 1, + "id": "fuse134-bit-0", + "name": "ROTK0_EX_IMG_AUTH", + "description": "When set exclude RoTK0 from being used as root of trust key for boot image authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK0 from being used as root of trust key for boot image authentication" + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK0 from being used as root of trust key for boot image authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-1", + "name": "ROTK0_EX_SB3_AUTH", + "description": "When set exclude RoTK0 from being used as root of trust key for FW update image (SB3) authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK0 from being used as root of trust key for FW update image (SB3) authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK0 from being used as root of trust key for FW update image (SB3) authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-2", + "name": "ROTK0_EX_DBG_AUTH", + "description": "When set exclude RoTK0 from being used as root of trust key for debug authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK0 from being used as root of trust key for debug authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK0 from being used as root of trust key for debug authentication." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse134-bit-4", + "name": "ROTK1_EX_IMG_AUTH", + "description": "When set exclude RoTK1 from being used as root of trust key for boot image authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK1 from being used as root of trust key for boot image authentication" + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK1 from being used as root of trust key for boot image authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-5", + "name": "ROTK1_EX_SB3_AUTH", + "description": "When set exclude RoTK1 from being used as root of trust key for FW update image (SB3) authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK1 from being used as root of trust key for FW update image (SB3) authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK1 from being used as root of trust key for FW update image (SB3) authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-6", + "name": "ROTK1_EX_DBG_AUTH", + "description": "When set exclude RoTK1 from being used as root of trust key for debug authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK1 from being used as root of trust key for debug authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK1 from being used as root of trust key for debug authentication." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse134-bit-8", + "name": "ROTK2_EX_IMG_AUTH", + "description": "When set exclude RoTK2 from being used as root of trust key for boot image authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK2 from being used as root of trust key for boot image authentication" + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK2 from being used as root of trust key for boot image authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-9", + "name": "ROTK2_EX_SB3_AUTH", + "description": "When set exclude RoTK2 from being used as root of trust key for FW update image (SB3) authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK2 from being used as root of trust key for FW update image (SB3) authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK2 from being used as root of trust key for FW update image (SB3) authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-10", + "name": "ROTK2_EX_DBG_AUTH", + "description": "When set exclude RoTK2 from being used as root of trust key for debug authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK2 from being used as root of trust key for debug authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK2 from being used as root of trust key for debug authentication." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse134-bit-12", + "name": "ROTK3_EX_IMG_AUTH", + "description": "When set exclude RoTK3 from being used as root of trust key for boot image authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK3 from being used as root of trust key for boot image authentication" + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK3 from being used as root of trust key for boot image authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-13", + "name": "ROTK3_EX_SB3_AUTH", + "description": "When set exclude RoTK3 from being used as root of trust key for FW update image (SB3) authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK3 from being used as root of trust key for FW update image (SB3) authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK3 from being used as root of trust key for FW update image (SB3) authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-14", + "name": "ROTK3_EX_DBG_AUTH", + "description": "When set exclude RoTK3 from being used as root of trust key for debug authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK3 from being used as root of trust key for debug authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK3 from being used as root of trust key for debug authentication." + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse143", + "name": "LIFECYCLE_DP", + "description": "Device lifecycle and CC_SOCU debug access restrictions per debug domain.", + "index_int": "0x008F", + "shadow_reg_offset_int": "0x023C", + "default_value_int": "0x00030003", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse143-bits-0-7", + "name": "LC_STATE", + "description": "Life Cycle state", + "values": [ + { + "name": "DEVELOP", + "value": 3, + "description": "Initial customer development state after leaving NXP manufacturing." + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Optional customer development state. Used for development of NS world code." + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field application state for end-customer use." + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "Alternative in-field application state that prevents use of field return/failure analysis states. The rest of the behavior of the device is the same as the In-field state." + }, + { + "name": "FIELD_RETURN_OEM", + "value": 31, + "description": "Field return state." + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "NXP field return state (CQC = Customer Quality Complaint)." + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked state to prevent device use." + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-8", + "name": "HIFI4_NIDEN_DIS", + "description": "HiFi4 Non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-9", + "name": "HIFI4_DBGEN_DIS", + "description": "HiFi4 Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-10", + "name": "HIFI1_NIDEN_DIS", + "description": "HiFi1 Non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-11", + "name": "HIFI1_DBGEN_DIS", + "description": "HiFi1 Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-12", + "name": "AHBAP_DBGEN_DIS", + "description": "AHBAP Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-13", + "name": "AHBAP_SPIDEN_DIS", + "description": "AHBAP Secure non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-14", + "name": "EZHV_DBGEN_DIS", + "description": "EZHV Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-15", + "name": "SOC_CORESIGHT_DIS", + "description": "CoreSight Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 8, + "id": "fuse143-bits-16-23", + "name": "BP_LC_STATE", + "description": "Bit-protection: Life Cycle state", + "values": [ + { + "name": "DEVELOP", + "value": 3, + "description": "Initial customer development state after leaving NXP manufacturing." + }, + { + "name": "DEVELOP2", + "value": 7, + "description": "Optional customer development state. Used for development of NS world code." + }, + { + "name": "IN_FIELD", + "value": 15, + "description": "In-field application state for end-customer use." + }, + { + "name": "IN_FIELD_LOCKED", + "value": 207, + "description": "Alternative in-field application state that prevents use of field return/failure analysis states. The rest of the behavior of the device is the same as the In-field state." + }, + { + "name": "FIELD_RETURN_OEM", + "value": 31, + "description": "Field return state." + }, + { + "name": "FAILURE_ANALYSIS", + "value": 127, + "description": "NXP field return state (CQC = Customer Quality Complaint)." + }, + { + "name": "BRICKED", + "value": 255, + "description": "Bricked state to prevent device use." + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-24", + "name": "BP_HIFI4_NIDEN_DIS", + "description": "Bit-protection: HiFi4 Non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-25", + "name": "BP_HIFI4_DBGEN_DIS", + "description": "Bit-protection: HiFi4 Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-26", + "name": "BP_HIFI1_NIDEN_DIS", + "description": "Bit-protection: HiFi1 Non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-27", + "name": "BP_HIFI1_DBGEN_DIS", + "description": "Bit-protection: HiFi1 Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-28", + "name": "BP_AHBAP_DBGEN_DIS", + "description": "Bit-protection: AHBAP Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-29", + "name": "BP_AHBAP_SPIDEN_DIS", + "description": "Bit-protection: AHBAP Secure non-invasive debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-30", + "name": "BP_EZHV_DBGEN_DIS", + "description": "Bit-protection: EZHV Debug Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-31", + "name": "BP_SOC_CORESIGHT_DIS", + "description": "Bit-protection: CoreSight Disable", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "RKTH", + "description": "OEM Root Key Table Hash" + }, + "registers": [ + { + "id": "fuse88", + "name": "RKTH0", + "description": "Root of Trust Keys Table hash", + "index_int": "0x0058", + "shadow_reg_offset_int": "0x0160", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse88-bits-0-31", + "name": "ROTKH[31:0]", + "description": "ROTKH[31:0] field" + } + ] + }, + { + "id": "fuse89", + "name": "RKTH1", + "description": "Root of Trust Keys Table hash", + "index_int": "0x0059", + "shadow_reg_offset_int": "0x0164", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse89-bits-0-31", + "name": "ROTKH[63:32]", + "description": "ROTKH[63:32] field" + } + ] + }, + { + "id": "fuse90", + "name": "RKTH2", + "description": "Root of Trust Keys Table hash", + "index_int": "0x005A", + "shadow_reg_offset_int": "0x0168", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse90-bits-0-31", + "name": "ROTKH[95:64]", + "description": "ROTKH[95:64] field" + } + ] + }, + { + "id": "fuse91", + "name": "RKTH3", + "description": "Root of Trust Keys Table hash", + "index_int": "0x005B", + "shadow_reg_offset_int": "0x016C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse91-bits-0-31", + "name": "ROTKH[127:96]", + "description": "ROTKH[127:96] field" + } + ] + }, + { + "id": "fuse92", + "name": "RKTH4", + "description": "Root of Trust Keys Table hash", + "index_int": "0x005C", + "shadow_reg_offset_int": "0x0170", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse92-bits-0-31", + "name": "ROTKH[159:128]", + "description": "ROTKH[159:128] field" + } + ] + }, + { + "id": "fuse93", + "name": "RKTH5", + "description": "Root of Trust Keys Table hash", + "index_int": "0x005D", + "shadow_reg_offset_int": "0x0174", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse93-bits-0-31", + "name": "ROTKH[191:160]", + "description": "ROTKH[191:160] field" + } + ] + }, + { + "id": "fuse94", + "name": "RKTH6", + "description": "Root of Trust Keys Table hash", + "index_int": "0x005E", + "shadow_reg_offset_int": "0x0178", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse94-bits-0-31", + "name": "ROTKH[223:192]", + "description": "ROTKH[223:192] field" + } + ] + }, + { + "id": "fuse95", + "name": "RKTH7", + "description": "Root of Trust Keys Table hash", + "index_int": "0x005F", + "shadow_reg_offset_int": "0x017C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse95-bits-0-31", + "name": "ROTKH[255:224]", + "description": "ROTKH[255:224] field" + } + ] + }, + { + "id": "fuse96", + "name": "RKTH8", + "description": "Root of Trust Keys Table hash", + "index_int": "0x0060", + "shadow_reg_offset_int": "0x0180", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse96-bits-0-31", + "name": "ROTKH[287:256]", + "description": "ROTKH[287:256] field" + } + ] + }, + { + "id": "fuse97", + "name": "RKTH9", + "description": "Root of Trust Keys Table hash", + "index_int": "0x0061", + "shadow_reg_offset_int": "0x0184", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse97-bits-0-31", + "name": "ROTKH[319:288]", + "description": "ROTKH[319:288] field" + } + ] + }, + { + "id": "fuse98", + "name": "RKTH10", + "description": "Root of Trust Keys Table hash", + "index_int": "0x0062", + "shadow_reg_offset_int": "0x0188", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse98-bits-0-31", + "name": "ROTKH[351:320]", + "description": "ROTKH[351:320] field" + } + ] + }, + { + "id": "fuse99", + "name": "RKTH11", + "description": "Root of Trust Keys Table hash", + "index_int": "0x0063", + "shadow_reg_offset_int": "0x018C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse99-bits-0-31", + "name": "ROTKH[383:352]", + "description": "ROTKH[383:352] field" + } + ] + } + ] + }, + { + "group": { + "name": "CUST_MK_SK", + "description": "Customer Master Key Symmetric Key" + }, + "registers": [ + { + "id": "fuse100", + "name": "CUST_MK_SK0", + "description": "Customer MK_SK", + "index_int": "0x0064", + "shadow_reg_offset_int": "0x0190", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse100-bits-0-31", + "name": "CUST_MK_SK_BLOB[31:0]", + "description": "CUST_MK_SK_BLOB[31:0] field" + } + ] + }, + { + "id": "fuse101", + "name": "CUST_MK_SK1", + "description": "Customer MK_SK", + "index_int": "0x0065", + "shadow_reg_offset_int": "0x0194", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse101-bits-0-31", + "name": "CUST_MK_SK_BLOB[63:32]", + "description": "CUST_MK_SK_BLOB[63:32] field" + } + ] + }, + { + "id": "fuse102", + "name": "CUST_MK_SK2", + "description": "Customer MK_SK", + "index_int": "0x0066", + "shadow_reg_offset_int": "0x0198", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse102-bits-0-31", + "name": "CUST_MK_SK_BLOB[95:64]", + "description": "CUST_MK_SK_BLOB[95:64] field" + } + ] + }, + { + "id": "fuse103", + "name": "CUST_MK_SK3", + "description": "Customer MK_SK", + "index_int": "0x0067", + "shadow_reg_offset_int": "0x019C", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse103-bits-0-31", + "name": "CUST_MK_SK_BLOB[127:96]", + "description": "CUST_MK_SK_BLOB[127:96] field" + } + ] + }, + { + "id": "fuse104", + "name": "CUST_MK_SK4", + "description": "Customer MK_SK", + "index_int": "0x0068", + "shadow_reg_offset_int": "0x01A0", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse104-bits-0-31", + "name": "CUST_MK_SK_BLOB[159:128]", + "description": "CUST_MK_SK_BLOB[159:128] field" + } + ] + }, + { + "id": "fuse105", + "name": "CUST_MK_SK5", + "description": "Customer MK_SK", + "index_int": "0x0069", + "shadow_reg_offset_int": "0x01A4", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse105-bits-0-31", + "name": "CUST_MK_SK_BLOB[191:160]", + "description": "CUST_MK_SK_BLOB[191:160] field" + } + ] + }, + { + "id": "fuse106", + "name": "CUST_MK_SK6", + "description": "Customer MK_SK", + "index_int": "0x006A", + "shadow_reg_offset_int": "0x01A8", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse106-bits-0-31", + "name": "CUST_MK_SK_BLOB[223:192]", + "description": "CUST_MK_SK_BLOB[223:192] field" + } + ] + }, + { + "id": "fuse107", + "name": "CUST_MK_SK7", + "description": "Customer MK_SK", + "index_int": "0x006B", + "shadow_reg_offset_int": "0x01AC", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse107-bits-0-31", + "name": "CUST_MK_SK_BLOB[255:224]", + "description": "CUST_MK_SK_BLOB[255:224] field" + } + ] + }, + { + "id": "fuse108", + "name": "CUST_MK_SK8", + "description": "Customer MK_SK", + "index_int": "0x006C", + "shadow_reg_offset_int": "0x01B0", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse108-bits-0-31", + "name": "CUST_MK_SK_BLOB[287:256]", + "description": "CUST_MK_SK_BLOB[287:256] field" + } + ] + }, + { + "id": "fuse109", + "name": "CUST_MK_SK9", + "description": "Customer MK_SK", + "index_int": "0x006D", + "shadow_reg_offset_int": "0x01B4", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse109-bits-0-31", + "name": "CUST_MK_SK_BLOB[319:288]", + "description": "CUST_MK_SK_BLOB[319:288] field" + } + ] + }, + { + "id": "fuse110", + "name": "CUST_MK_SK10", + "description": "Customer MK_SK", + "index_int": "0x006E", + "shadow_reg_offset_int": "0x01B8", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse110-bits-0-31", + "name": "CUST_MK_SK_BLOB[351:320]", + "description": "CUST_MK_SK_BLOB[351:320] field" + } + ] + }, + { + "id": "fuse111", + "name": "CUST_MK_SK11", + "description": "Customer MK_SK", + "index_int": "0x006F", + "shadow_reg_offset_int": "0x01BC", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse111-bits-0-31", + "name": "CUST_MK_SK_BLOB[383:352]", + "description": "CUST_MK_SK_BLOB[383:352] field" + } + ] + } + ] + }, + { + "group": { + "name": "NS_FW_VER", + "description": "Non-Secure Firmware Version" + }, + "registers": [ + { + "id": "fuse112", + "name": "NS_FW_VER[15:0]", + "description": "Non-Secure Firmware Version", + "index_int": "0x0070", + "shadow_reg_offset_int": "0x01C0", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse113", + "name": "NS_FW_VER[31:16]", + "description": "Non-Secure Firmware Version", + "index_int": "0x0071", + "shadow_reg_offset_int": "0x01C4", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse114", + "name": "NS_FW_VER[47:32]", + "description": "Non-Secure Firmware Version", + "index_int": "0x0072", + "shadow_reg_offset_int": "0x01C8", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse115", + "name": "NS_FW_VER[63:48]", + "description": "Non-Secure Firmware Version", + "index_int": "0x0073", + "shadow_reg_offset_int": "0x01CC", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse116", + "name": "NS_FW_VER[79:64]", + "description": "Non-Secure Firmware Version", + "index_int": "0x0074", + "shadow_reg_offset_int": "0x01D0", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse117", + "name": "NS_FW_VER[95:80]", + "description": "Non-Secure Firmware Version", + "index_int": "0x0075", + "shadow_reg_offset_int": "0x01D4", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse118", + "name": "NS_FW_VER[111:96]", + "description": "Non-Secure Firmware Version", + "index_int": "0x0076", + "shadow_reg_offset_int": "0x01D8", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse119", + "name": "NS_FW_VER[127:112]", + "description": "Non-Secure Firmware Version", + "index_int": "0x0077", + "shadow_reg_offset_int": "0x01DC", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse120", + "name": "NS_FW_VER[143:128]", + "description": "Non-Secure Firmware Version", + "index_int": "0x0078", + "shadow_reg_offset_int": "0x01E0", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse121", + "name": "NS_FW_VER[159:144]", + "description": "Non-Secure Firmware Version", + "index_int": "0x0079", + "shadow_reg_offset_int": "0x01E4", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse122", + "name": "NS_FW_VER[175:160]", + "description": "Non-Secure Firmware Version", + "index_int": "0x007A", + "shadow_reg_offset_int": "0x01E8", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse123", + "name": "NS_FW_VER[191:176]", + "description": "Non-Secure Firmware Version", + "index_int": "0x007B", + "shadow_reg_offset_int": "0x01EC", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse124", + "name": "NS_FW_VER[207:192]", + "description": "Non-Secure Firmware Version", + "index_int": "0x007C", + "shadow_reg_offset_int": "0x01F0", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse125", + "name": "NS_FW_VER[223:208]", + "description": "Non-Secure Firmware Version", + "index_int": "0x007D", + "shadow_reg_offset_int": "0x01F4", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse126", + "name": "NS_FW_VER[239:224]", + "description": "Non-Secure Firmware Version", + "index_int": "0x007E", + "shadow_reg_offset_int": "0x01F8", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + }, + { + "id": "fuse127", + "name": "NS_FW_VER[255:240]", + "description": "Non-Secure Firmware Version", + "index_int": "0x007F", + "shadow_reg_offset_int": "0x01FC", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "SEC_FW_VER", + "description": "Secure Firmware Version" + }, + "registers": [ + { + "id": "fuse128", + "name": "SEC_FW_VER[15:0]", + "description": "Secure Firmware Version", + "index_int": "0x0080", + "shadow_reg_offset_int": "0x0200", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16 + }, + { + "id": "fuse129", + "name": "SEC_FW_VER[31:16]", + "description": "Secure Firmware Version", + "index_int": "0x0081", + "shadow_reg_offset_int": "0x0204", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16 + }, + { + "id": "fuse130", + "name": "SEC_FW_VER[47:32]", + "description": "Secure Firmware Version", + "index_int": "0x0082", + "shadow_reg_offset_int": "0x0208", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16 + }, + { + "id": "fuse131", + "name": "SEC_FW_VER[63:48]", + "description": "Secure Firmware Version", + "index_int": "0x0083", + "shadow_reg_offset_int": "0x020C", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "Boot configuration", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse136", + "name": "BOOT_CFG0", + "description": "BOOT_CFG0 register", + "index_int": "0x0088", + "shadow_reg_offset_int": "0x0220", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 2, + "id": "fuse136-bits-0-1", + "name": "BOOT_SRC[1:0]", + "description": "Specify the boot source selection.", + "values": [ + { + "name": "00", + "value": 0, + "description": "ISP pins determine the source" + }, + { + "name": "01", + "value": 1, + "description": "XSPI NOR flash" + }, + { + "name": "10", + "value": 2, + "description": "uSDHC flash" + }, + { + "name": "11", + "value": 3, + "description": "Serial boot (ISP)" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-2", + "name": "BOOT_IF_INST", + "description": "Specify boot interface instance when XSPI or uSDHC boot modes are selected.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Instance 0 (XSPI0 or uSDHC0)" + }, + { + "name": "1", + "value": 1, + "description": "Instance 1 (XSPI1 or uSDHC1)" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-3", + "name": "ISP_UART_DIS", + "description": "Disable LPUART interface during ISP/serial boot mode.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-4", + "name": "ISP_SPI_DIS", + "description": "Disable LPSPI interface during ISP/serial boot mode.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-5", + "name": "ISP_I2C_DIS", + "description": "Disable LPI2C interface during ISP/serial boot mode.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-6", + "name": "ISP_USB_DIS", + "description": "Disable USB0 interface during ISP/serial boot mode.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-7", + "name": "ISP_eUSB_DIS", + "description": "Disable USB1 interface during ISP/serial boot mode.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-8", + "name": "ISP_MODE_PIN_DIS", + "description": "Disable boot mode selection using ISP mode pins.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-9", + "name": "ISP_DM_DIS", + "description": "Disable ISP mode entry through debug mailbox command.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-10", + "name": "ISP_FT_DIS", + "description": "Disable ISP mode entry as a fall through if valid image is not found in boot media.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-11", + "name": "ISP_API_DIS", + "description": "Disable ISP mode entry using ROM API.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 2, + "id": "fuse136-bits-12-13", + "name": "BOOT_SPEED", + "description": "System clock speed during boot.", + "values": [ + { + "name": "Normal", + "value": 0, + "description": "Normal boot (192 MHz) - VDD1 = 1.0 V" + }, + { + "name": "Low", + "value": 2, + "description": "Low speed boot (32 MHz) -VDD1 = 1.0 V" + }, + { + "name": "Middle", + "value": 3, + "description": "Middle speed boot (192 MHz) - VDD1 = 1.0 V" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-14", + "name": "FA_CMD_DIS", + "description": "Controls whether DM-AP set FA mode command can be issued after authentication.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-15", + "name": "NXP_FW_DIS", + "description": "Disable loading NXP signed SB3 files.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + } + ] + }, + { + "id": "fuse137", + "name": "BOOT_CFG1", + "description": "SECURE_BOOT_CFG", + "index_int": "0x0089", + "shadow_reg_offset_int": "0x0224", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 1, + "id": "fuse137-bit-0", + "name": "ENF_SEC_BOOT", + "description": "Enforce secure boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Image header define boot" + }, + { + "name": "1", + "value": 1, + "description": "Enforce secure boot" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-1", + "name": "ENF_CNSA", + "description": "Enforce CNSA suite defined crypto algorithms for secure boot, update and debug features.", + "values": [ + { + "name": "0", + "value": 0, + "description": "ECDSA P-256, SHA256, AES128" + }, + { + "name": "1", + "value": 1, + "description": "ECDSA P-384, SHA384, AES256" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-2", + "name": "ENF_TZM_PRESET", + "description": "Enforce TZM preset data. If absent image is deemed corrupted.", + "values": [ + { + "name": "0", + "value": 0, + "description": "TZM data is optional;" + }, + { + "name": "1", + "value": 1, + "description": "Image should contain TZM data" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-3", + "name": "REC_BOOT_EN", + "description": "Recovery boot through LP_FLEXCOMM is enabled.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse137-bit-5", + "name": "DIS_XSPI_XIP", + "description": "Disable XIP image execution through XIP flash interfaces.", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-6", + "name": "DICE_SKIP", + "description": "Skip DICE CDI calculation during boot to reduce boot time.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "DICE enabled" + }, + { + "name": "Disable", + "value": 1, + "description": "DICE disabled" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-7", + "name": "DICE_INC_NXP", + "description": "When set include NXP configuration fuse data in CDI calculations.", + "values": [ + { + "name": "Not include", + "value": 0, + "description": "Not include NXP configuration" + }, + { + "name": "Include", + "value": 1, + "description": "Include NXP configuration" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-8", + "name": "DICE_INC_CUST", + "description": "When set include customer boot configuration fuse data in CDI calculations.", + "values": [ + { + "name": "Not include", + "value": 0, + "description": "Not include customer boot configuration" + }, + { + "name": "Include", + "value": 1, + "description": "Include customer boot configuration" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-9", + "name": "FIPS_PUF_EN", + "description": "Enable self-test of PUF IP before usage during boot.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-10", + "name": "FIPS_KDF_EN", + "description": "Enable FIPS self-test of CKDF algorithm before usage during boot.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-11", + "name": "FIPS_CMAC_EN", + "description": "Enable FIPS self-test of CMAC algorithm before usage during boot.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-12", + "name": "FIPS_DRBG_EN", + "description": "Enable FIPS self-test of DRBG algorithm before usage during boot.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-13", + "name": "FIPS_ECDSA_EN", + "description": "Enable FIPS self-test of ECDSA algorithm before usage during boot.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-14", + "name": "FIPS_AES_EN", + "description": "Enable FIPS self-test of AES algorithm before usage during boot.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-15", + "name": "FIPS_SHA2_EN", + "description": "Enable FIPS self-test of SHA2 algorithm before usage during boot.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + } + ] + }, + { + "id": "fuse138", + "name": "BOOT_CFG2", + "description": "BOOT_CFG2 register", + "index_int": "0x008A", + "shadow_reg_offset_int": "0x0228", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 4 + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse138-bit-5", + "name": "DCFG_UUID", + "description": "Enable UUID matching check during Debug Credential (DC) validation.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse138-bit-7", + "name": "IPED1_XEX_EN", + "description": "Enforce XEX mode for all IPED1 regions.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 4, + "id": "fuse138-bits-8-11", + "name": "IPED0_LOCK_CTX[3:0]", + "description": "Lock the corresponding IPED context.\n0b - Disable\n1b - Enable" + }, + { + "width": 4, + "id": "fuse138-bits-12-15", + "name": "IPED1_LOCK_CTX[3:0]", + "description": "Lock the corresponding IPED context.\n0b - Disable\n1b - Enable" + } + ] + }, + { + "id": "fuse139", + "name": "BOOT_CFG3", + "description": "BOOT_CFG3 register", + "index_int": "0x008B", + "shadow_reg_offset_int": "0x022C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 4, + "id": "fuse139-bits-0-3", + "name": "IPED0_GCM_CTX[3:0]", + "description": "Enable GCM mode for corresponding IPED context.\n0b - Disable\n1b - Enable" + }, + { + "width": 4, + "id": "fuse139-bits-4-7", + "name": "IPED0_GCM_AHBERR_CTX[3:0]", + "description": "Enable AHB error on GCM tag failure for corresponding IPED context.\n0b - Disable\n1b - Enable" + }, + { + "width": 4, + "id": "fuse139-bits-8-11", + "name": "IPED1_GCM_CTX[3:0]", + "description": "Enable GCM mode for corresponding IPED context.\n0b - Disable\n1b - Enable" + }, + { + "width": 4, + "id": "fuse139-bits-12-15", + "name": "IPED1_GCM_AHBERR_CTX[3:0]", + "description": "Enable AHB error on GCM tag failure for corresponding IPED context.\n0b - Disable\n1b - Enable" + } + ] + }, + { + "id": "fuse140", + "name": "BOOT_CFG4", + "description": "BOOT_STATUS_LEDS", + "index_int": "0x008C", + "shadow_reg_offset_int": "0x0230", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse140-bit-0", + "name": "BOOT_RETRY_FAIL_LED_PIN_EN", + "description": "Boot Retry fail LED enable bit. ROM sets this GPIO after exhausting boot retry count.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse140-bit-1", + "name": "BOOT_RETRY_FAIL_LED_PIN_POL", + "description": "Output polarity. This field is valid only if BOOT_RETRY_FAIL_LED_PIN_EN is set.", + "values": [ + { + "name": "High", + "value": 0, + "description": "Output high" + }, + { + "name": "Low", + "value": 1, + "description": "Output low" + } + ] + }, + { + "width": 3, + "id": "fuse140-bits-2-4", + "name": "BOOT_RETRY_FAIL_LED_PIN_PORT", + "description": "GPIO port. This field is valid only if BOOT_RETRY_FAIL_LED_PIN_EN is set.\nxd - GPIO port x" + }, + { + "width": 5, + "id": "fuse140-bits-5-9", + "name": "BOOT_RETRY_FAIL_LED_PIN_GPIO", + "description": "GPIO pin number. This field is valid only if BOOT_RETRY_FAIL_LED_PIN_EN is set.\nxd - GPIO port x" + }, + { + "width": 1, + "id": "fuse140-bit-10", + "name": "SENSOR_RESET_LED_PIN_EN", + "description": "Sensor Reset LED enable bit. ROM sets this GPIO when last warm reset cause is detected as ITRC reset.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse140-bit-11", + "name": "SENSOR_RESET_LED_PIN_POL", + "description": "Output polarity. This field is valid only if SENSOR_RESET_LED_PIN_EN is set.", + "values": [ + { + "name": "High", + "value": 0, + "description": "Output high" + }, + { + "name": "Low", + "value": 1, + "description": "Output low" + } + ] + }, + { + "width": 3, + "id": "fuse140-bits-12-14", + "name": "SENSOR_RESET_LED_PIN_PORT", + "description": "GPIO port. Output polarity. This field is valid only if SENSOR_RESET_LED_PIN_EN is set.\nxd - GPIO port x" + }, + { + "width": 5, + "id": "fuse140-bits-15-19", + "name": "SENSOR_RESET_LED_PIN_GPIO", + "description": "GPIO pin number. Output polarity. This field is valid only if SENSOR_RESET_LED_PIN_EN is set.\nxd - GPIO port x" + }, + { + "width": 1, + "id": "fuse140-bit-20", + "name": "ISP_REC_LED_PIN_EN", + "description": "LED enable bit. ROM sets this GPIO whenever boot image is not found in boot media and before entering ISP or recovery boot mode. Output polarity.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse140-bit-21", + "name": "ISP_REC_LED_PIN_POL", + "description": "Output polarity. Output polarity. This field is valid only if ISP_REC_LED_PIN_EN is set.", + "values": [ + { + "name": "High", + "value": 0, + "description": "Output high" + }, + { + "name": "Low", + "value": 1, + "description": "Output low" + } + ] + }, + { + "width": 3, + "id": "fuse140-bits-22-24", + "name": "ISP_REC_LED_PIN_PORT", + "description": "GPIO port. This field is valid only if ISP_REC_LED_PIN_EN is set.\nxd - GPIO port x" + }, + { + "width": 5, + "id": "fuse140-bits-25-29", + "name": "ISP_REC_LED_PIN_GPIO", + "description": "GPIO pin number. This field is valid only if ISP_REC_LED_PIN_EN is set.\nxd - GPIO port x" + }, + { + "width": 2 + } + ] + }, + { + "id": "fuse141", + "name": "BOOT_CFG5", + "description": "BOOT_TIMERS", + "index_int": "0x008D", + "shadow_reg_offset_int": "0x0234", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse141-bits-0-7", + "name": "WDOG_TIMEOUT_10MS", + "description": "A 10 ms timer started before jumping to user application.\nnd - n x 10 ms" + }, + { + "width": 8, + "id": "fuse141-bits-8-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Device enters deep-power down state if it idles beyond this time during ISP command handling loop.\nnd - n x 1s" + }, + { + "width": 4, + "id": "fuse141-bits-16-19", + "name": "REC_BOOT_FC", + "description": "Specifies the LP_FLEXCOMM connected to 1-bit SPI flash used for recovery boot. This field is valid only if REC_BOOT_EN is set.\nxd - LP_FLEXCOMMx is selected, x = 0-13" + }, + { + "width": 2, + "id": "fuse141-bits-20-21", + "name": "REC_BOOT_FC_PCS", + "description": "Specifies LP_FLEXCOMM PCS connected to 1-bit SPI flash used for recovery boot. This field is valid only if REC_BOOT_EN is set.", + "values": [ + { + "name": "PCS0", + "value": 0, + "description": "PCS0" + }, + { + "name": "PCS1", + "value": 1, + "description": "PCS1" + }, + { + "name": "PCS2", + "value": 2, + "description": "PCS2" + }, + { + "name": "PCS3", + "value": 3, + "description": "PCS3" + } + ] + }, + { + "width": 2, + "id": "fuse141-bits-22-23", + "name": "REC_BOOT_FC_BAUDRATE", + "description": "Specifies LP_FLEXCOMM baudrate with 1-bit SPI flash used for recovery boot. This field is valid only if REC_BOOT_EN is set.", + "values": [ + { + "name": "20MHz", + "value": 0, + "description": "20MHz" + }, + { + "name": "10MHz", + "value": 1, + "description": "10MHz" + }, + { + "name": "5MHz", + "value": 2, + "description": "5MHz" + }, + { + "name": "2MHz", + "value": 3, + "description": "2MHz" + } + ] + }, + { + "width": 8 + } + ] + }, + { + "id": "fuse142", + "name": "BOOT_CFG6", + "description": "BOOT_CFG6 register", + "index_int": "0x008E", + "shadow_reg_offset_int": "0x0238", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse142-bits-0-15", + "name": "USB_VID[15:0]", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "fuse142-bits-16-31", + "name": "USB1_PID[15:0]", + "description": "USB1 Product ID" + } + ] + } + ] + }, + { + "group": { + "name": "PRINCE", + "description": "PRINCE IPED configuration" + }, + "registers": [ + { + "id": "fuse144", + "name": "XSPI0_IPED_CTX0", + "description": "XSPI0_IPED_CTX0 register", + "index_int": "0x0090", + "shadow_reg_offset_int": "0x0240", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse144-bits-0-15", + "name": "XSPI0_START_OFFSET_0", + "description": "START_OFFSET (4KB aligned)" + }, + { + "width": 16, + "id": "fuse144-bits-16-31", + "name": "XSPI0_LENGTH_0", + "description": "LENGTH (4KB block counts)" + } + ] + }, + { + "id": "fuse145", + "name": "XSPI0_IPED_CTX1", + "description": "XSPI0_IPED_CTX1 register", + "index_int": "0x0091", + "shadow_reg_offset_int": "0x0244", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse145-bits-0-15", + "name": "XSPI0_START_OFFSET_1", + "description": "START_OFFSET (4KB aligned)" + }, + { + "width": 16, + "id": "fuse145-bits-16-31", + "name": "XSPI0_LENGTH_1", + "description": "LENGTH (4KB block counts)" + } + ] + }, + { + "id": "fuse146", + "name": "XSPI0_IPED_CTX2", + "description": "XSPI0_IPED_CTX2 register", + "index_int": "0x0092", + "shadow_reg_offset_int": "0x0248", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse146-bits-0-15", + "name": "XSPI0_START_OFFSET_2", + "description": "START_OFFSET (4KB aligned)" + }, + { + "width": 16, + "id": "fuse146-bits-16-31", + "name": "XSPI0_LENGTH_2", + "description": "LENGTH (4KB block counts)" + } + ] + }, + { + "id": "fuse147", + "name": "XSPI0_IPED_CTX3", + "description": "XSPI0_IPED_CTX3 register", + "index_int": "0x0093", + "shadow_reg_offset_int": "0x024C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse147-bits-0-15", + "name": "XSPI0_START_OFFSET_3", + "description": "START_OFFSET (4KB aligned)" + }, + { + "width": 16, + "id": "fuse147-bits-16-31", + "name": "XSPI0_LENGTH_3", + "description": "LENGTH (4KB block counts)" + } + ] + }, + { + "id": "fuse148", + "name": "XSPI1_IPED_CTX0", + "description": "XSPI1_IPED_CTX0 register", + "index_int": "0x0094", + "shadow_reg_offset_int": "0x0250", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse148-bits-0-15", + "name": "XSPI1_START_OFFSET_0", + "description": "START_OFFSET (4KB aligned)" + }, + { + "width": 16, + "id": "fuse148-bits-16-31", + "name": "XSPI1_LENGTH_0", + "description": "LENGTH (4KB block counts)" + } + ] + }, + { + "id": "fuse149", + "name": "XSPI1_IPED_CTX1", + "description": "XSPI1_IPED_CTX1 register", + "index_int": "0x0095", + "shadow_reg_offset_int": "0x0254", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse149-bits-0-15", + "name": "XSPI1_START_OFFSET_1", + "description": "START_OFFSET (4KB aligned)" + }, + { + "width": 16, + "id": "fuse149-bits-16-31", + "name": "XSPI1_LENGTH_1", + "description": "LENGTH (4KB block counts)" + } + ] + }, + { + "id": "fuse150", + "name": "XSPI1_IPED_CTX2", + "description": "XSPI1_IPED_CTX2 register", + "index_int": "0x0096", + "shadow_reg_offset_int": "0x0258", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse150-bits-0-15", + "name": "XSPI1_START_OFFSET_2", + "description": "START_OFFSET (4KB aligned)" + }, + { + "width": 16, + "id": "fuse150-bits-16-31", + "name": "XSPI1_LENGTH_2", + "description": "LENGTH (4KB block counts)" + } + ] + }, + { + "id": "fuse151", + "name": "XSPI1_IPED_CTX3", + "description": "XSPI1_IPED_CTX3 register", + "index_int": "0x0097", + "shadow_reg_offset_int": "0x025C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse151-bits-0-15", + "name": "XSPI1_START_OFFSET_3", + "description": "START_OFFSET (4KB aligned)" + }, + { + "width": 16, + "id": "fuse151-bits-16-31", + "name": "XSPI1_LENGTH_3", + "description": "LENGTH (4KB block counts)" + } + ] + } + ] + }, + { + "group": { + "name": "XSPI", + "description": "XSPI configuration" + }, + "registers": [ + { + "id": "fuse152", + "name": "XSPI_CFG0", + "description": "XSPI_CFG0 register", + "index_int": "0x0098", + "shadow_reg_offset_int": "0x0260", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse152-bit-0", + "name": "XSPI_FLASH_AUTO_PROBE_EN", + "description": "Quad SPI or Octal SPI flash memory auto-probe feature enable", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3, + "id": "fuse152-bits-1-3", + "name": "XSPI_FLASH_PROBE_TYPE", + "description": "Quad SPI or Octal SPI flash memory probe type", + "values": [ + { + "name": "000", + "value": 0, + "description": "Quad SPI NOR flash memory" + }, + { + "name": "001", + "value": 1, + "description": "Macronix Octal flash memory" + }, + { + "name": "010", + "value": 2, + "description": "Micron Octal flash memory" + }, + { + "name": "011", + "value": 3, + "description": "Adesto Octal flash memory" + }, + { + "name": "100", + "value": 4, + "description": "Octal SDR" + }, + { + "name": "101", + "value": 5, + "description": "Octal DDR" + } + ] + }, + { + "width": 3, + "id": "fuse152-bits-4-6", + "name": "XSPI_FLASH_TYPE", + "description": "Typical serial NOR flash memory types", + "values": [ + { + "name": "000", + "value": 0, + "description": "Quad SPI flash memory address (by default, the chip supports 3B read)" + }, + { + "name": "010", + "value": 2, + "description": "HyperFlash 1.8 V" + }, + { + "name": "011", + "value": 3, + "description": "HyperFlash 3.3 V" + }, + { + "name": "100", + "value": 4, + "description": "MXIC Octal DDR" + }, + { + "name": "101", + "value": 5, + "description": "Micron Octal DDR" + } + ] + }, + { + "width": 4, + "id": "fuse152-bits-7-10", + "name": "XSPI_FLASH_DUMMY_CYCLES", + "description": "Quad SPI or Octal SPI dummy cycles for read command\n0000b - Dummy cycles probed automatically\nOther value - Number of dummy cycles" + }, + { + "width": 3, + "id": "fuse152-bits-11-13", + "name": "XSPI_FLASH_BOOT_FREQ", + "description": "Quad SPI or Octal SPI flash interface frequency", + "values": [ + { + "name": "80 MHz", + "value": 0, + "description": "80 MHz" + }, + { + "name": "60 MHz", + "value": 1, + "description": "60 MHz" + }, + { + "name": "50 MHz", + "value": 2, + "description": "50 MHz" + }, + { + "name": "100 MHz", + "value": 3, + "description": "100 MHz" + }, + { + "name": "120 MHz", + "value": 4, + "description": "120 MHz" + }, + { + "name": "133 MHz", + "value": 5, + "description": "133 MHz" + }, + { + "name": "166 MHz", + "value": 6, + "description": "166 MHz" + }, + { + "name": "200 MHz", + "value": 7, + "description": "200 MHz" + } + ] + }, + { + "width": 1, + "id": "fuse152-bit-14", + "name": "XSPI_RESET_PIN_EN", + "description": "Enable to reset flash memory by reset pin or JEDEC", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse152-bit-15", + "name": "XSPI_NOR_RESET_TYPE", + "description": "HW reset or JEDEC reset. This field is valid only if XSPI_RESET_PIN_EN is set.", + "values": [ + { + "name": "Pin reset", + "value": 0, + "description": "Pin reset" + }, + { + "name": "JEDEC reset", + "value": 1, + "description": "JEDEC reset" + } + ] + }, + { + "width": 3, + "id": "fuse152-bits-16-18", + "name": "XSPI_RESET_PIN_PORT", + "description": "GPIO port. This field is valid only if XSPI_RESET_PIN_EN is set." + }, + { + "width": 5, + "id": "fuse152-bits-19-23", + "name": "XSPI_RESET_PIN_GPIO", + "description": "GPIO pin number. This field is valid only if XSPI_RESET_PIN_EN is set." + }, + { + "width": 2, + "id": "fuse152-bits-24-25", + "name": "XSPI_HOLD_TIME", + "description": "Wait time before accessing serial flash memory", + "values": [ + { + "name": "500 us", + "value": 0, + "description": "500 us" + }, + { + "name": "1 ms", + "value": 1, + "description": "1 ms" + }, + { + "name": "3 ms", + "value": 2, + "description": "3 ms" + }, + { + "name": "10 ms", + "value": 3, + "description": "10 ms" + } + ] + }, + { + "width": 4, + "id": "fuse152-bits-26-29", + "name": "XSPI_PWR_HOLD_TIME", + "description": "Delay (wait time) after POR before accessing Quad SPI or Octal SPI flash memory devices, in addition to the delay that the QSPI_HOLD TIME field specifies", + "values": [ + { + "name": "0000", + "value": 0, + "description": "No delay" + }, + { + "name": "0001", + "value": 1, + "description": "Additional 100 us" + }, + { + "name": "0010", + "value": 2, + "description": "Additional 500 us" + }, + { + "name": "0011", + "value": 3, + "description": "Additional 1 ms" + }, + { + "name": "0100", + "value": 4, + "description": "Additional 10 ms" + }, + { + "name": "0101", + "value": 5, + "description": "Additional 20 ms" + }, + { + "name": "0110", + "value": 6, + "description": "Additional 40 ms" + }, + { + "name": "0111", + "value": 7, + "description": "Additional 60 ms" + }, + { + "name": "1000", + "value": 8, + "description": "Additional 80 ms" + }, + { + "name": "1001", + "value": 9, + "description": "Additional 100 ms" + }, + { + "name": "1010", + "value": 10, + "description": "Additional 120 ms" + }, + { + "name": "1011", + "value": 11, + "description": "Additional 140 ms" + }, + { + "name": "1100", + "value": 12, + "description": "Additional 160 ms" + }, + { + "name": "1101", + "value": 13, + "description": "Additional 180 ms" + }, + { + "name": "1110", + "value": 14, + "description": "Additional 200 ms" + }, + { + "name": "1111", + "value": 15, + "description": "Additional 220 ms" + } + ] + }, + { + "width": 2, + "id": "fuse152-bits-30-31", + "name": "XSPI_FLASH_DUMMY_CYCLES_UPPER", + "description": "Quad/Octal-SPI dummy cycles upper 2 bit for read command." + } + ] + }, + { + "id": "fuse153", + "name": "XSPI_CFG1", + "description": "XSPI_CFG1 register", + "index_int": "0x0099", + "shadow_reg_offset_int": "0x0264", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 7, + "id": "fuse153-bits-0-6", + "name": "XSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for Flash read sampling via external DQS\n0b - Use the delay cell value calculated by ROM\nOthers - Use the delay cell value in terms of 100 ps" + }, + { + "width": 10, + "id": "fuse153-bits-7-16", + "name": "XSPI_FLASH_SEC_IMAGE_OFFSET", + "description": "Offset of the second image\nxd - x multiplied by 128 KB" + }, + { + "width": 7, + "id": "fuse153-bits-17-23", + "name": "XSPI_FLASH_IMAGE_SIZE", + "description": "Size of the second image\n0d - Same size as the image offset (XSPI_IMAGE_OFFSET)\n1d - 128 KB\n2d - 256 KB\nmd - m x 128 KB (m = 3-7)\n8d - 1 MB\nnd - (n-7) \u00d7 1 MB (n = 8-71)" + }, + { + "width": 3, + "id": "fuse153-bits-24-26", + "name": "XSPI_FLASH_ENHANCE_MODE", + "description": "XSPI enhance mode", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable" + }, + { + "name": "FORCE_LOOPBACK_DQS", + "value": 5, + "description": "Force using internal loopback DQS" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "fuse154", + "name": "XSPI_CFG2", + "description": "XSPI_CFG2 register", + "index_int": "0x009A", + "shadow_reg_offset_int": "0x0268", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse154-bits-0-31", + "name": "XSPI_FLASH_SDR_DLLCRA", + "description": "Configure DLL and the subordinate delay chain for flash memory with SDR interface, see XSPI_DLLCRA register for more details." + } + ] + }, + { + "id": "fuse155", + "name": "XSPI_CFG3", + "description": "XSPI_CFG3 register", + "index_int": "0x009B", + "shadow_reg_offset_int": "0x026C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse155-bits-0-31", + "name": "XSPI_FLASH_SDR_SMPR", + "description": "Configure how XSPI samples the incoming data from external serial flash memory with SDR interface. See XSPI_SMPR register for more details." + } + ] + }, + { + "id": "fuse156", + "name": "XSPI_CFG4", + "description": "XSPI_CFG4 register", + "index_int": "0x009C", + "shadow_reg_offset_int": "0x0270", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse156-bits-0-31", + "name": "XSPI_FLASH_DDR_DLLCRA", + "description": "Configure DLL and the subordinate delay chain for flash memory with DDR interface, see XSPI_DLLCRA register for more details." + } + ] + }, + { + "id": "fuse157", + "name": "XSPI_CFG5", + "description": "XSPI_CFG5 register", + "index_int": "0x009D", + "shadow_reg_offset_int": "0x0274", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse157-bits-0-31", + "name": "XSPI_FLASH_DDR_SMPR", + "description": "Configure how XSPI samples the incoming data from external serial flash memory with DDR interface. See XSPI_SMPR register for more details." + } + ] + } + ] + }, + { + "group": { + "name": "SDHC", + "description": "SDHC configuration" + }, + "registers": [ + { + "id": "fuse158", + "name": "SDHC_CFGF0", + "description": "SDHC_CFGF0 register (for uSDHC0)", + "index_int": "0x009E", + "shadow_reg_offset_int": "0x0278", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse158-bits-0-1", + "name": "SDHC_BUS_WIDTH", + "description": "eMMC bus width selection", + "values": [ + { + "name": "4 bits", + "value": 0, + "description": "4 bits" + }, + { + "name": "8 bits", + "value": 1, + "description": "8 bits" + }, + { + "name": "4 bits DDR", + "value": 2, + "description": "4 bits DDR" + }, + { + "name": "8 bits DDR", + "value": 3, + "description": "8 bits DDR" + } + ] + }, + { + "width": 1, + "id": "fuse158-bit-2", + "name": "SDHC_PWR_CYCLE_EN", + "description": "Power cycle enable", + "values": [ + { + "name": "No", + "value": 0, + "description": "No power cycle" + }, + { + "name": "Yes", + "value": 1, + "description": "Power cycle enabled via RST pad" + } + ] + }, + { + "width": 2, + "id": "fuse158-bits-3-4", + "name": "SDHC_PWR_CYCLE_WAIT", + "description": "Power down wait selection", + "values": [ + { + "name": "20 ms", + "value": 0, + "description": "20 ms" + }, + { + "name": "10 ms", + "value": 1, + "description": "10 ms" + }, + { + "name": "5 ms", + "value": 2, + "description": "5 ms" + }, + { + "name": "2.5 ms", + "value": 3, + "description": "2.5 ms" + } + ] + }, + { + "width": 2, + "id": "fuse158-bits-5-6", + "name": "SDHC_PWR_STABLE_WAIT", + "description": "Power up wait selection", + "values": [ + { + "name": "5 ms", + "value": 0, + "description": "5 ms" + }, + { + "name": "2.5 ms", + "value": 1, + "description": "2.5 ms" + } + ] + }, + { + "width": 1, + "id": "fuse158-bit-7", + "name": "SDHC_PWR_POL", + "description": "uSDHC reset polarity selection", + "values": [ + { + "name": "Low", + "value": 0, + "description": "Reset active low" + }, + { + "name": "High", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse158-bit-9", + "name": "SDHC_RESET_PRE_IDLE", + "description": "eMMC disable pre-idle selection", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse158-bit-10", + "name": "SDHC_MMC_SPEED", + "description": "eMMC speed selection", + "values": [ + { + "name": "Normal", + "value": 0, + "description": "Normal speed" + }, + { + "name": "High", + "value": 1, + "description": "High speed" + } + ] + }, + { + "width": 21 + } + ] + }, + { + "id": "fuse159", + "name": "SDHC_CFGF1", + "description": "SDHC_CFGF1 register (for uSDHC1)", + "index_int": "0x009F", + "shadow_reg_offset_int": "0x027C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse159-bits-0-1", + "name": "SDHC_CFGF1_SDHC_BUS_WIDTH0", + "description": "eMMC bus width selection", + "values": [ + { + "name": "4 bits", + "value": 0, + "description": "4 bits" + }, + { + "name": "8 bits", + "value": 1, + "description": "8 bits" + }, + { + "name": "4 bits DDR", + "value": 2, + "description": "4 bits DDR" + }, + { + "name": "8 bits DDR", + "value": 3, + "description": "8 bits DDR" + } + ] + }, + { + "width": 1, + "id": "fuse159-bit-2", + "name": "SDHC_CFGF1_SDHC_PWR_CYCLE_EN1", + "description": "Power cycle enable", + "values": [ + { + "name": "No", + "value": 0, + "description": "No power cycle" + }, + { + "name": "Yes", + "value": 1, + "description": "Power cycle enabled via RST pad" + } + ] + }, + { + "width": 2, + "id": "fuse159-bits-3-4", + "name": "SDHC_CFGF1_SDHC_PWR_CYCLE_WAIT2", + "description": "Power down wait selection", + "values": [ + { + "name": "20 ms", + "value": 0, + "description": "20 ms" + }, + { + "name": "10 ms", + "value": 1, + "description": "10 ms" + }, + { + "name": "5 ms", + "value": 2, + "description": "5 ms" + }, + { + "name": "2.5 ms", + "value": 3, + "description": "2.5 ms" + } + ] + }, + { + "width": 2, + "id": "fuse159-bits-5-6", + "name": "SDHC_CFGF1_SDHC_PWR_STABLE_WAIT3", + "description": "Power up wait selection", + "values": [ + { + "name": "5 ms", + "value": 0, + "description": "5 ms" + }, + { + "name": "2.5 ms", + "value": 1, + "description": "2.5 ms" + } + ] + }, + { + "width": 1, + "id": "fuse159-bit-7", + "name": "SDHC_CFGF1_SDHC_PWR_POL4", + "description": "uSDHC reset polarity selection", + "values": [ + { + "name": "Low", + "value": 0, + "description": "Reset active low" + }, + { + "name": "High", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse159-bit-9", + "name": "SDHC_CFGF1_SDHC_RESET_PRE_IDLE6", + "description": "eMMC disable pre-idle selection", + "values": [ + { + "name": "Enabled", + "value": 0, + "description": "Enabled" + }, + { + "name": "Disabled", + "value": 1, + "description": "Disabled" + } + ] + }, + { + "width": 1, + "id": "fuse159-bit-10", + "name": "SDHC_CFGF1_SDHC_MMC_SPEED7", + "description": "eMMC speed selection", + "values": [ + { + "name": "Normal", + "value": 0, + "description": "Normal speed" + }, + { + "name": "High", + "value": 1, + "description": "High speed" + } + ] + }, + { + "width": 21 + } + ] + } + ] + }, + { + "group": { + "name": "Miscellaneous", + "description": "Miscellaneous configuration" + }, + "registers": [ + { + "id": "fuse160", + "name": "BOOT_CFG8", + "description": "BOOT_CFG8 register", + "index_int": "0x00A0", + "shadow_reg_offset_int": "0x0280", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 1 + }, + { + "width": 3 + }, + { + "width": 5 + }, + { + "width": 1, + "id": "fuse160-bit-9", + "name": "DBG_OVER_USB_LOCK", + "description": "Enable debug over USB register write lock. ", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3, + "id": "fuse160-bits-10-12", + "name": "DBG_OVER_USB_SEL_PORT", + "description": "Defines which GPIO port is selected to enable debug over USB0 pins feature.\nxd - GPIO port x" + }, + { + "width": 5, + "id": "fuse160-bits-13-17", + "name": "DBG_OVER_USB_SEL_GPIO", + "description": "Defines which GPIO pin is selected to enable debug over USB0 pins feature.\nxd - GPIO pin x" + }, + { + "width": 7, + "id": "fuse160-bits-18-24", + "name": "LPI2C_ADDRESS", + "description": "If 0x00, defaults to 0x10 for LPI2C slave address.\nIf not 0x00, use this value as the 7-bit LPI2C slave address" + }, + { + "width": 7 + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fuses_b0.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fuses_b0.json new file mode 100644 index 0000000..e1d5010 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/fuses_b0.json @@ -0,0 +1,5978 @@ +{ + "cpu": "MIMXRT798S", + "shadow_reg_base_addr_int": "0x40018000", + "groups": [ + { + "group": { + "name": "Locks", + "description": "Lock bits allowing to lock access to specified fuses" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCK_CFG0", + "description": "LOCK_CFG0 fuse word", + "index_int": "0", + "shadow_reg_offset_int": "0", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse0-bits-0-2", + "name": "BOOT_CFG0_LOCK", + "description": "Boot Configuration Lock", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 9 + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "LOCK_CFG_LOCK", + "description": "Lock for Fuse Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse1", + "name": "LOCK_CFG1", + "description": "LOCK_CFG1 fuse word", + "index_int": "0x0001", + "shadow_reg_offset_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse1-bits-3-5", + "name": "XSPI0_IPED_CFG_LOCK", + "description": "XSPI0 IPED configuration Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse1-bits-6-8", + "name": "XSPI1_IPED_CFG_LOCK", + "description": "XSPI1 IPED configuration Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 7 + } + ] + }, + { + "id": "fuse2", + "name": "LOCK_CFG2", + "description": "LOCK_CFG2 fuse word", + "index_int": "0x0002", + "shadow_reg_offset_int": "0x0008", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3, + "id": "fuse2-bits-3-5", + "name": "ROTKH_LOCK", + "description": "ROTKH Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse2-bits-6-8", + "name": "GPR1_LOCK", + "description": "Unique ID Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse2-bits-9-11", + "name": "REVOKE_LOCK", + "description": "Revoke Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse2-bits-12-14", + "name": "CUST_MK_SK_LOCK", + "description": "CUST_MK_SK Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse3", + "name": "LOCK_CFG3", + "description": "LOCK_CFG3 fuse word", + "index_int": "0x0003", + "shadow_reg_offset_int": "0x000C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse3-bits-0-2", + "name": "LIFE_CYCLE_LOCK", + "description": "Life Cycle Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse3-bits-6-8", + "name": "NS_FW_VER_LOCK", + "description": "Non-Secure Firmware version Lock Bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse3-bits-9-11", + "name": "SEC_FW_VER_LOCK", + "description": "Secure Firmware version Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse3-bits-12-14", + "name": "GPR0_LOCK", + "description": "GPR0 Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1, + "id": "fuse3-bit-15", + "name": "CUST_GP_BANK2_LOCK[0]", + "description": "Customer BOOTCFG2 Lock bits(Write Protection bit[0])", + "values": [ + { + "name": "NO WP", + "value": 0, + "description": "NO WP" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + } + ] + } + ] + }, + { + "id": "fuse4", + "name": "LOCK_CFG4", + "description": "LOCK_CFG4 fuse word", + "index_int": "0x0004", + "shadow_reg_offset_int": "0x0010", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 15 + }, + { + "width": 1, + "id": "fuse4-bit-15", + "name": "CUST_GP_BANK2_LOCK[1]", + "description": "Customer BOOTCFG2 Lock bits(Over-write Protection bit[1])", + "values": [ + { + "name": "No OP", + "value": 0, + "description": "No OP" + }, + { + "name": "OP", + "value": 1, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + } + ] + } + ] + }, + { + "id": "fuse5", + "name": "LOCK_CFG5", + "description": "LOCK_CFG5 fuse word", + "index_int": "0x0005", + "shadow_reg_offset_int": "0x0014", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 6 + }, + { + "width": 3, + "id": "fuse5-bits-6-8", + "name": "BOOT_CFG1_LOCK", + "description": "BOOT_CFG Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse5-bits-9-11", + "name": "CUST_GP_BANK0_LOCK", + "description": "Customer BOOTCFG0 Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 3, + "id": "fuse5-bits-12-14", + "name": "CUST_GP_BANK1_LOCK", + "description": "Customer BOOTCFG1 Lock bits", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked (fuses can be read, sensed, burned or over-ridden in the corresponding OTP shadow register)" + }, + { + "name": "WP", + "value": 1, + "description": "WP (Write Protect, the controlled field can not be burned)" + }, + { + "name": "OP", + "value": 2, + "description": "OP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + }, + { + "name": "OP+WP", + "value": 3, + "description": "OP + WP (Over-ride + Write Protect, the controlled field can not be overridden nor burned)" + }, + { + "name": "RP", + "value": 4, + "description": "RP (Read Protect, the controlled field can be sensed only, but can't be read from shadow registers)" + }, + { + "name": "RP+WP", + "value": 5, + "description": "RP+WP (Read + Write Protect, the controlled field can be sensed, overridden, but can't be read nor burned)" + }, + { + "name": "RP+OP", + "value": 6, + "description": "RP+OP (Read + Over-ride Protect, the controlled field can be sensed, burned, but can't be read nor over-written)" + }, + { + "name": "All Locks", + "value": 7, + "description": "All Locks (The controlled field can't be read, sensed, burned or overridden in corresponding OTP shadow register)" + } + ] + }, + { + "width": 1, + "id": "fuse5-bit-15", + "name": "CUST_GP_BANK2_LOCK[2]", + "description": "Customer BOOTCFG2 Lock bits(Read Protection bit[2])", + "values": [ + { + "name": "No RP", + "value": 0, + "description": "No RP" + }, + { + "name": "RP", + "value": 1, + "description": "RP (Over-ride Protect, the controlled field shadow registers can not be over-written)" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "OEM configuration", + "description": "OEM device and Debug Credential (DC) constraints" + }, + "registers": [ + { + "id": "fuse37", + "name": "DCFG_CC_SOCU", + "description": "DCFG_CC_SOCU fuse word", + "index_int": "0x0025", + "shadow_reg_offset_int": "0x0094", + "default_value_int": "0x0003", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse37-bits-0-7", + "name": "LC_STATE_RED", + "description": "Redundant Life Cycle" + }, + { + "width": 1, + "id": "fuse37-bit-8", + "name": "CPU0_NIDEN_DIS", + "description": "CPU0 Non-invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-9", + "name": "CPU0_DBGEN_DIS", + "description": "CPU0 Invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-10", + "name": "CPU0_SPNIDEN_DIS", + "description": "CPU0 Secure non-invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-11", + "name": "CPU0_SPIDEN_DIS", + "description": "CPU0 Secure invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-12", + "name": "CPU1_NIDEN_DIS", + "description": "CPU1 Non-invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-13", + "name": "CPU1_DBGEN_DIS", + "description": "CPU1 Invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-14", + "name": "CPU1_SPNIDEN_DIS", + "description": "CPU1 Secure non-invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse37-bit-15", + "name": "CPU1_SPIDEN_DIS", + "description": "CPU1 Secure invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 16 + } + ] + }, + { + "id": "fuse132", + "name": "IMAGE_KEY_REVOKE", + "description": "Image key revoke", + "index_int": "0x0084", + "shadow_reg_offset_int": "0x0210", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16 + }, + { + "id": "fuse133", + "name": "DCFG_CC_VU", + "description": "General purpose MC counter", + "index_int": "0x0085", + "shadow_reg_offset_int": "0x0214", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16 + }, + { + "id": "fuse134", + "name": "ROTK_USAGE", + "description": "ROTK_USAGE fuse word", + "index_int": "0x0086", + "shadow_reg_offset_int": "0x0218", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 1, + "id": "fuse134-bit-0", + "name": "ROTK0_EX_IMG_AUTH", + "description": "When set exclude RoTK0 from being used as root of trust key for boot image authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK0 as being used as root of trust key for boot image authentication" + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK0 from being used as root of trust key for boot image authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-1", + "name": "ROTK0_EX_SB3_AUTH", + "description": "When set exclude RoTK0 from being used as root of trust key for FW update image (SB3) authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK0 as being used as root of trust key for FW update image (SB3) authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK0 from being used as root of trust key for FW update image (SB3) authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-2", + "name": "ROTK0_EX_DBG_AUTH", + "description": "When set exclude RoTK0 from being used as root of trust key for debug authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK0 as being used as root of trust key for debug authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK0 from being used as root of trust key for debug authentication." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse134-bit-4", + "name": "ROTK1_EX_IMG_AUTH", + "description": "When set exclude RoTK1 from being used as root of trust key for boot image authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK1 as being used as root of trust key for boot image authentication" + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK1 from being used as root of trust key for boot image authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-5", + "name": "ROTK1_EX_SB3_AUTH", + "description": "When set exclude RoTK1 from being used as root of trust key for FW update image (SB3) authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK1 as being used as root of trust key for FW update image (SB3) authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK1 from being used as root of trust key for FW update image (SB3) authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-6", + "name": "ROTK1_EX_DBG_AUTH", + "description": "When set exclude RoTK1 from being used as root of trust key for debug authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK1 as being used as root of trust key for debug authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK1 from being used as root of trust key for debug authentication." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse134-bit-8", + "name": "ROTK2_EX_IMG_AUTH", + "description": "When set exclude RoTK2 from being used as root of trust key for boot image authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK2 as being used as root of trust key for boot image authentication" + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK2 from being used as root of trust key for boot image authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-9", + "name": "ROTK2_EX_SB3_AUTH", + "description": "When set exclude RoTK2 from being used as root of trust key for FW update image (SB3) authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK2 as being used as root of trust key for FW update image (SB3) authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK2 from being used as root of trust key for FW update image (SB3) authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-10", + "name": "ROTK2_EX_DBG_AUTH", + "description": "When set exclude RoTK2 from being used as root of trust key for debug authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK2 as being used as root of trust key for debug authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK2 from being used as root of trust key for debug authentication." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse134-bit-12", + "name": "ROTK3_EX_IMG_AUTH", + "description": "When set exclude RoTK3 from being used as root of trust key for boot image authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK3 as being used as root of trust key for boot image authentication" + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK3 from being used as root of trust key for boot image authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-13", + "name": "ROTK3_EX_SB3_AUTH", + "description": "When set exclude RoTK3 from being used as root of trust key for FW update image (SB3) authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK3 as being used as root of trust key for FW update image (SB3) authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK3 from being used as root of trust key for FW update image (SB3) authentication." + } + ] + }, + { + "width": 1, + "id": "fuse134-bit-14", + "name": "ROTK3_EX_DBG_AUTH", + "description": "When set exclude RoTK3 from being used as root of trust key for debug authentication.", + "values": [ + { + "name": "Include", + "value": 0, + "description": "Include RoTK3 as being used as root of trust key for debug authentication." + }, + { + "name": "Exclude", + "value": 1, + "description": "Exclude RoTK3 from being used as root of trust key for debug authentication." + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse135", + "name": "CUST_CTR0", + "description": "For customer use", + "index_int": "0x0087", + "shadow_reg_offset_int": "0x021C", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16 + }, + { + "id": "fuse143", + "name": "DCFG_CC_SOCU_AHB", + "description": "DCFG_CC_SOCU_AHB fuse word", + "index_int": "0x008F", + "shadow_reg_offset_int": "0x023C", + "default_value_int": "0x0003", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse143-bits-0-7", + "name": "LC_STATE", + "description": "Life Cycle" + }, + { + "width": 1, + "id": "fuse143-bit-8", + "name": "HIFI4_NIDEN_DIS", + "description": "HiFi4 Non-invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-9", + "name": "HIFI4_DBGEN_DIS", + "description": "HiFi4 debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-10", + "name": "HIFI1_NIDEN_DIS", + "description": "HiFi1 Non-invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-11", + "name": "HIFI1_DBGEN_DIS", + "description": "HiFi1 debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-12", + "name": "AHBAP_DBGEN_DIS", + "description": "AHBAP Debug Disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-13", + "name": "AHBAP_SPIDEN_DIS", + "description": "AHBAP Secure non-invasive debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-14", + "name": "EZHV_DBGEN_DIS", + "description": "EZHV debug disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse143-bit-15", + "name": "SOC_CORESIGHT_DIS", + "description": "CoreSight Disable", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 16 + } + ] + } + ] + }, + { + "group": { + "name": "RKTH", + "description": "OEM Root Key Table Hash" + }, + "registers": [ + { + "id": "fuse88", + "name": "ROTKH0", + "description": "Root of trust keys table hash", + "index_int": "0x0058", + "shadow_reg_offset_int": "0x0160", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse88-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse89", + "name": "ROTKH1", + "description": "Root of trust keys table hash", + "index_int": "0x0059", + "shadow_reg_offset_int": "0x0164", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse89-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse90", + "name": "ROTKH2", + "description": "Root of trust keys table hash", + "index_int": "0x005A", + "shadow_reg_offset_int": "0x0168", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse90-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse91", + "name": "ROTKH3", + "description": "Root of trust keys table hash", + "index_int": "0x005B", + "shadow_reg_offset_int": "0x016C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse91-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse92", + "name": "ROTKH4", + "description": "Root of trust keys table hash", + "index_int": "0x005C", + "shadow_reg_offset_int": "0x0170", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse92-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse93", + "name": "ROTKH5", + "description": "Root of trust keys table hash", + "index_int": "0x005D", + "shadow_reg_offset_int": "0x0174", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse93-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse94", + "name": "ROTKH6", + "description": "Root of trust keys table hash", + "index_int": "0x005E", + "shadow_reg_offset_int": "0x0178", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse94-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse95", + "name": "ROTKH7", + "description": "Root of trust keys table hash", + "index_int": "0x005F", + "shadow_reg_offset_int": "0x017C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse95-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse96", + "name": "ROTKH8", + "description": "Root of trust keys table hash", + "index_int": "0x0060", + "shadow_reg_offset_int": "0x0180", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse96-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse97", + "name": "ROTKH9", + "description": "Root of trust keys table hash", + "index_int": "0x0061", + "shadow_reg_offset_int": "0x0184", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse97-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse98", + "name": "ROTKH10", + "description": "Root of trust keys table hash", + "index_int": "0x0062", + "shadow_reg_offset_int": "0x0188", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse98-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + }, + { + "id": "fuse99", + "name": "ROTKH11", + "description": "Root of trust keys table hash", + "index_int": "0x0063", + "shadow_reg_offset_int": "0x018C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse99-bits-0-31", + "name": "ROTKH", + "description": "Root of trust keys table hash" + } + ] + } + ] + }, + { + "group": { + "name": "CUST_MK_SK", + "description": "Customer Master Key Symmetric Key" + }, + "registers": [ + { + "id": "fuse100", + "name": "CUST_MK_SK0", + "description": "Customer MK_SK", + "index_int": "0x0064", + "shadow_reg_offset_int": "0x0190", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse100-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse101", + "name": "CUST_MK_SK1", + "description": "Customer MK_SK", + "index_int": "0x0065", + "shadow_reg_offset_int": "0x0194", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse101-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse102", + "name": "CUST_MK_SK2", + "description": "Customer MK_SK", + "index_int": "0x0066", + "shadow_reg_offset_int": "0x0198", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse102-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse103", + "name": "CUST_MK_SK3", + "description": "Customer MK_SK", + "index_int": "0x0067", + "shadow_reg_offset_int": "0x019C", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse103-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse104", + "name": "CUST_MK_SK4", + "description": "Customer MK_SK", + "index_int": "0x0068", + "shadow_reg_offset_int": "0x01A0", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse104-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse105", + "name": "CUST_MK_SK5", + "description": "Customer MK_SK", + "index_int": "0x0069", + "shadow_reg_offset_int": "0x01A4", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse105-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse106", + "name": "CUST_MK_SK6", + "description": "Customer MK_SK", + "index_int": "0x006A", + "shadow_reg_offset_int": "0x01A8", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse106-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse107", + "name": "CUST_MK_SK7", + "description": "Customer MK_SK", + "index_int": "0x006B", + "shadow_reg_offset_int": "0x01AC", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse107-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse108", + "name": "CUST_MK_SK8", + "description": "Customer MK_SK", + "index_int": "0x006C", + "shadow_reg_offset_int": "0x01B0", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse108-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse109", + "name": "CUST_MK_SK9", + "description": "Customer MK_SK", + "index_int": "0x006D", + "shadow_reg_offset_int": "0x01B4", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse109-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse110", + "name": "CUST_MK_SK10", + "description": "Customer MK_SK", + "index_int": "0x006E", + "shadow_reg_offset_int": "0x01B8", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse110-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + }, + { + "id": "fuse111", + "name": "CUST_MK_SK11", + "description": "Customer MK_SK", + "index_int": "0x006F", + "shadow_reg_offset_int": "0x01BC", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse111-bits-0-31", + "name": "CUST_MK_SK_BLOB", + "description": "Customer MK_SK" + } + ] + } + ] + }, + { + "group": { + "name": "NS_FW_VER", + "description": "Non-Secure Firmware Version" + }, + "registers": [ + { + "id": "fuse112", + "name": "NS_FW_VER0-CUST_CTR9", + "description": "NS_FW_VER0-CUST_CTR9 fuse word", + "deprecated_names": [ + "NS_FW_VER0" + ], + "index_int": "0x0070", + "shadow_reg_offset_int": "0x01C0", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse112-bits-0-15", + "name": "NS_FW_VER[15:0]-CUST_CTR9", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse113", + "name": "NS_FW_VER1-CUST_CTR10", + "description": "NS_FW_VER1-CUST_CTR10 fuse word", + "deprecated_names": [ + "NS_FW_VER1" + ], + "index_int": "0x0071", + "shadow_reg_offset_int": "0x01C4", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse113-bits-0-15", + "name": "NS_FW_VER[31:16]-CUST_CTR10", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse114", + "name": "NS_FW_VER2-CUST_CTR11", + "description": "NS_FW_VER2-CUST_CTR11 fuse word", + "deprecated_names": [ + "NS_FW_VER2" + ], + "index_int": "0x0072", + "shadow_reg_offset_int": "0x01C8", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse114-bits-0-15", + "name": "NS_FW_VER[47:32]-CUST_CTR11", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse115", + "name": "NS_FW_VER3-CUST_CTR12", + "description": "NS_FW_VER3-CUST_CTR12 fuse word", + "deprecated_names": [ + "NS_FW_VER3" + ], + "index_int": "0x0073", + "shadow_reg_offset_int": "0x01CC", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse115-bits-0-15", + "name": "NS_FW_VER[63:48]-CUST_CTR12", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse116", + "name": "NS_FW_VER4-CUST_CTR13", + "description": "NS_FW_VER4-CUST_CTR13 fuse word", + "deprecated_names": [ + "NS_FW_VER4" + ], + "index_int": "0x0074", + "shadow_reg_offset_int": "0x01D0", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse116-bits-0-15", + "name": "NS_FW_VER[79:64]-CUST_CTR13", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse117", + "name": "NS_FW_VER5-CUST_CTR14", + "description": "NS_FW_VER5-CUST_CTR14 fuse word", + "deprecated_names": [ + "NS_FW_VER5" + ], + "index_int": "0x0075", + "shadow_reg_offset_int": "0x01D4", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse117-bits-0-15", + "name": "NS_FW_VER[95:80]-CUST_CTR14", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse118", + "name": "NS_FW_VER6-CUST_CTR15", + "description": "NS_FW_VER6-CUST_CTR15 fuse word", + "deprecated_names": [ + "NS_FW_VER6" + ], + "index_int": "0x0076", + "shadow_reg_offset_int": "0x01D8", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse118-bits-0-15", + "name": "NS_FW_VER[111:96]-CUST_CTR15", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse119", + "name": "NS_FW_VER7-CUST_CTR16", + "description": "NS_FW_VER7-CUST_CTR16 fuse word", + "deprecated_names": [ + "NS_FW_VER7" + ], + "index_int": "0x0077", + "shadow_reg_offset_int": "0x01DC", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse119-bits-0-15", + "name": "NS_FW_VER[127:112]-CUST_CTR16", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse120", + "name": "NS_FW_VER8-CUST_CTR17", + "description": "NS_FW_VER8-CUST_CTR17 fuse word", + "deprecated_names": [ + "NS_FW_VER8" + ], + "index_int": "0x0078", + "shadow_reg_offset_int": "0x01E0", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse120-bits-0-15", + "name": "NS_FW_VER[143:128]-CUST_CTR17", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse121", + "name": "NS_FW_VER9-CUST_CTR18", + "description": "NS_FW_VER9-CUST_CTR18 fuse word", + "deprecated_names": [ + "NS_FW_VER9" + ], + "index_int": "0x0079", + "shadow_reg_offset_int": "0x01E4", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse121-bits-0-15", + "name": "NS_FW_VER[159:144]-CUST_CTR18", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse122", + "name": "NS_FW_VER10-CUST_CTR19", + "description": "NS_FW_VER10-CUST_CTR19 fuse word", + "deprecated_names": [ + "NS_FW_VER10" + ], + "index_int": "0x007A", + "shadow_reg_offset_int": "0x01E8", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse122-bits-0-15", + "name": "NS_FW_VER[175:160]-CUST_CTR19", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse123", + "name": "NS_FW_VER11-CUST_CTR20", + "description": "NS_FW_VER11-CUST_CTR20 fuse word", + "deprecated_names": [ + "NS_FW_VER11" + ], + "index_int": "0x007B", + "shadow_reg_offset_int": "0x01EC", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse123-bits-0-15", + "name": "NS_FW_VER[191:176]-CUST_CTR20", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse124", + "name": "NS_FW_VER12-CUST_CTR21", + "description": "NS_FW_VER12-CUST_CTR21 fuse word", + "deprecated_names": [ + "NS_FW_VER12" + ], + "index_int": "0x007C", + "shadow_reg_offset_int": "0x01F0", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse124-bits-0-15", + "name": "NS_FW_VER[207:192]-CUST_CTR21", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse125", + "name": "NS_FW_VER13-CUST_CTR22", + "description": "NS_FW_VER13-CUST_CTR22 fuse word", + "deprecated_names": [ + "NS_FW_VER13" + ], + "index_int": "0x007D", + "shadow_reg_offset_int": "0x01F4", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse125-bits-0-15", + "name": "NS_FW_VER[223:208]-CUST_CTR22", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse126", + "name": "NS_FW_VER14-CUST_CTR23", + "description": "NS_FW_VER14-CUST_CTR23 fuse word", + "deprecated_names": [ + "NS_FW_VER14" + ], + "index_int": "0x007E", + "shadow_reg_offset_int": "0x01F8", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse126-bits-0-15", + "name": "NS_FW_VER[239:224]-CUST_CTR23", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version/For customer use" + } + ] + }, + { + "id": "fuse127", + "name": "NS_FW_VER15-CUST_CTR24", + "description": "NS_FW_VER15-CUST_CTR24 fuse word", + "deprecated_names": [ + "NS_FW_VER15" + ], + "index_int": "0x007F", + "shadow_reg_offset_int": "0x01FC", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse127-bits-0-15", + "name": "NS_FW_VER[255:240]-CUST_CTR24", + "deprecated_names": [ + "NS_FW_VER" + ], + "description": "Non-Secure firmware version-For customer use" + } + ] + } + ] + }, + { + "group": { + "name": "SEC_FW_VER", + "description": "Secure Firmware Version" + }, + "registers": [ + { + "id": "fuse128", + "name": "SEC_FW_VER0", + "description": "SEC_FW_VER0 fuse word", + "index_int": "0x0080", + "shadow_reg_offset_int": "0x0200", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse128-bits-0-15", + "name": "SEC_FW_VER", + "description": "Secure firmware version" + } + ] + }, + { + "id": "fuse129", + "name": "SEC_FW_VER1", + "description": "SEC_FW_VER1 fuse word", + "index_int": "0x0081", + "shadow_reg_offset_int": "0x0204", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse129-bits-0-15", + "name": "SEC_FW_VER", + "description": "Secure firmware version" + } + ] + }, + { + "id": "fuse130", + "name": "SEC_FW_VER2", + "description": "SEC_FW_VER2 fuse word", + "index_int": "0x0082", + "shadow_reg_offset_int": "0x0208", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse130-bits-0-15", + "name": "SEC_FW_VER", + "description": "Secure firmware version" + } + ] + }, + { + "id": "fuse131", + "name": "SEC_FW_VER3", + "description": "SEC_FW_VER3 fuse word", + "index_int": "0x0083", + "shadow_reg_offset_int": "0x020C", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse131-bits-0-15", + "name": "SEC_FW_VER", + "description": "Secure firmware version" + } + ] + } + ] + }, + { + "group": { + "name": "Boot configuration", + "description": "Boot configuration" + }, + "registers": [ + { + "id": "fuse136", + "name": "BOOT_CFG0", + "description": "BOOT_CFG0 fuse word", + "index_int": "0x0088", + "shadow_reg_offset_int": "0x0220", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 2, + "id": "fuse136-bits-0-1", + "name": "BOOT_SRC", + "description": "Specify the boot source", + "values": [ + { + "name": "ISP pins", + "value": 0, + "description": "ISP pins determine the source" + }, + { + "name": "XSPI NOR flash", + "value": 1, + "description": "XSPI NOR flash" + }, + { + "name": "uSDHC flash", + "value": 2, + "description": "uSDHC flash" + }, + { + "name": "XSPI NAND flash", + "value": 3, + "description": "XSPI NAND flash" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-2", + "name": "BOOT_IF_INST", + "description": "Specify boot interface instance when XSPI or uSDHC is selected as boot source.", + "values": [ + { + "name": "Instance 0", + "value": 0, + "description": "Instance 0 (XSPI0 or uSDHC0)" + }, + { + "name": "Instance 1", + "value": 1, + "description": "Instance 1 (XSPI1 or uSDHC1)" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-3", + "name": "ISP_UART_DIS", + "description": "Disable LPUART interface during ISP/serial boot mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-4", + "name": "ISP_SPI_DIS", + "description": "Disable LPSPI interface during ISP/serial boot mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-5", + "name": "ISP_I2C_DIS", + "description": "Disable LPI2C interface during ISP/serial boot mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-6", + "name": "ISP_USB_DIS", + "description": "Disable HS USB (USB0) interface during ISP/serial boot mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-7", + "name": "ISP_eUSB_DIS", + "description": "Disable eUSB (USB1) interface during ISP/serial boot mode.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-8", + "name": "ISP_MODE_PIN_DIS", + "description": "Disable boot mode selection using ISP mode pins.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-9", + "name": "ISP_DM_DIS", + "description": "Disable ISP mode entry through debug mailbox command.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-10", + "name": "ISP_FT_DIS", + "description": "Disable ISP mode entry as a fall through if valid image is not found in boot media.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-11", + "name": "ISP_API_DIS", + "description": "Disable ISP mode entry using ROM API.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 2, + "id": "fuse136-bits-12-13", + "name": "BOOT_SPEED", + "description": "System clock speed during boot.", + "values": [ + { + "name": "Normal", + "value": 0, + "description": "Normal boot (192 MHz) - VDD2 = 1.0 V" + }, + { + "name": "High", + "value": 1, + "description": "High speed boot (300 MHz) - VDD2 = 1.1 V" + }, + { + "name": "Low", + "value": 2, + "description": "Low speed boot (32 MHz) -VDD2 = 1.0 V" + }, + { + "name": "Middle", + "value": 3, + "description": "Middle speed boot (192 MHz) - VDD2 = 1.0 V" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-14", + "name": "FA_CMD_DIS", + "description": "Controls whether DM-AP set FA mode command can be issued after authentication.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse136-bit-15", + "name": "NXP_FW_DIS", + "description": "Disable loading NXP signed SB3 files.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + } + ] + }, + { + "id": "fuse137", + "name": "BOOT_CFG1", + "description": "BOOT_CFG1 fuse word", + "index_int": "0x0089", + "shadow_reg_offset_int": "0x0224", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 1, + "id": "fuse137-bit-0", + "name": "ENF_SEC_BOOT", + "description": "Enforce secure boot.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Image header define boot" + }, + { + "name": "1", + "value": 1, + "description": "Enforce secure boot" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-1", + "name": "ENF_CNSA", + "description": "Enforce CNSA suite defined crypto algorithms for secure boot, update and debug features.", + "values": [ + { + "name": "0", + "value": 0, + "description": "ECDSA P-256, SHA256, AES128" + }, + { + "name": "1", + "value": 1, + "description": "ECDSA P-384, SHA384, AES256" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-2", + "name": "ENF_TZM_PRESET", + "description": "Enforce TZM preset data. If absent image is deemed corrupted.", + "values": [ + { + "name": "0", + "value": 0, + "description": "TZM data is optional;" + }, + { + "name": "1", + "value": 1, + "description": "Image should contain TZM data" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-3", + "name": "REC_BOOT_EN", + "description": "Enable recovery boot through LP_FLEXCOM.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse137-bit-5", + "name": "DIS_XSPI_XIP", + "description": "Disable XIP image execution through XIP flash interfaces.", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-6", + "name": "DICE_SKIP", + "description": "Skip DICE CDI calculation during boot to reduce boot time.", + "values": [ + { + "name": "DICE enabled", + "value": 0, + "description": "DICE enabled" + }, + { + "name": "DICE disabled", + "value": 1, + "description": "DICE disabled" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-7", + "name": "DICE_INC_NXP", + "description": "When set include NXP configuration fuse data in CDI calculations.", + "values": [ + { + "name": "Not include", + "value": 0, + "description": "Not include NXP configuration" + }, + { + "name": "Include", + "value": 1, + "description": "Include NXP configuration" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-8", + "name": "DICE_INC_CUST", + "description": "When set include customer boot configuration fuse data in CDI calculations.", + "values": [ + { + "name": "Not include", + "value": 0, + "description": "Not include customer boot configuration" + }, + { + "name": "Include", + "value": 1, + "description": "Include customer boot configuration" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-9", + "name": "FIPS_PUF_EN", + "description": "Enable self-test of PUF IP before usage during boot.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-10", + "name": "FIPS_KDF_EN", + "description": "Enable FIPS self-test of CKDF and CMAC algorithm before usage during boot.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-11", + "name": "FIPS_HMAC_EN", + "description": "Enable FIPS self-test of HMAC algorithm before usage during boot.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-12", + "name": "FIPS_DRBG_EN", + "description": "Enable FIPS self-test of DRBG algorithm before usage during boot.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-13", + "name": "FIPS_ECDSA_EN", + "description": "Enable FIPS self-test of ECDSA algorithm before usage during boot.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-14", + "name": "FIPS_AES_EN", + "description": "Enable FIPS self-test of AES algorithm before usage during boot.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse137-bit-15", + "name": "FIPS_SHA2_EN", + "description": "Enable FIPS self-test of SHA2 algorithm before usage during boot.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + } + ] + }, + { + "id": "fuse138", + "name": "BOOT_CFG2", + "description": "BOOT_CFG2 fuse word", + "index_int": "0x008A", + "shadow_reg_offset_int": "0x0228", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 1, + "id": "fuse138-bit-0", + "name": "XSPI_NOR_RESET_TYPE_SOFT_EN", + "description": "Enable to send 6699 reset sequence before XSPI boot", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse138-bit-1", + "name": "IPED_CTX_EN", + "description": "Default IPED configuration are generated from fuse word 144 to 151", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse138-bit-2", + "name": "XSPI_NOR_RDP_EN", + "description": "Enable to release the NOR flash from Deep Power-down mode. It will send ABh before XSPI NOR boot", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse138-bit-3", + "name": "XSPI_CACHE64_EN", + "description": "Enable the pSRAM cache", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse138-bit-5", + "name": "DCFG_UUID", + "description": "Enable UUID matching check during Debug Credential (DC) validation.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse138-bit-6", + "name": "XSPI_DQS_INTERNAL_LOOPBACK_EN", + "description": "Enable to use internal loopback DQS as XSPI read clock ", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse138-bit-7", + "name": "IPED1_XEX_EN", + "description": "Enable XEX mode for all IPED1 regions.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 4, + "id": "fuse138-bits-8-11", + "name": "IPED0_LOCK_CTX", + "description": "Lock the corresponding IPED0 context.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock" + } + ] + }, + { + "width": 4, + "id": "fuse138-bits-12-15", + "name": "IPED1_LOCK_CTX", + "description": "Lock the corresponding IPED1 context.", + "values": [ + { + "name": "Unlock", + "value": 0, + "description": "Unlock" + }, + { + "name": "Lock", + "value": 1, + "description": "Lock" + } + ] + } + ] + }, + { + "id": "fuse139", + "name": "BOOT_CFG3", + "description": "BOOT_CFG3 (IPED CTX mode) fuse word", + "index_int": "0x008B", + "shadow_reg_offset_int": "0x022C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 4, + "id": "fuse139-bits-0-3", + "name": "IPED0_GCM_CTX", + "description": "Enable GCM mode for corresponding IPED0 context.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 4, + "id": "fuse139-bits-4-7", + "name": "IPED0_GCM_AHBERR_CTX", + "description": "Enable AHB error on GCM tag failure for corresponding IPED0 context.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 4, + "id": "fuse139-bits-8-11", + "name": "IPED1_GCM_CTX", + "description": "Enable GCM mode for corresponding IPED1 context.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 4, + "id": "fuse139-bits-12-15", + "name": "IPED1_GCM_AHBERR_CTX", + "description": "Enable AHB error on GCM tag failure for corresponding IPED1 context.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + } + ] + }, + { + "id": "fuse140", + "name": "BOOT_CFG4", + "description": "BOOT_CFG4 fuse word", + "index_int": "0x008C", + "shadow_reg_offset_int": "0x0230", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse140-bit-0", + "name": "BOOT_RETRY_FAIL_LED_PIN_EN", + "description": "Boot Retry fail LED enable bit. ROM sets this GPIO after exhausting boot retry count.", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse140-bit-1", + "name": "BOOT_RETRY_FAIL_LED_PIN_POL", + "description": "Output polarity. This field is valid only if BOOT_RETRY_FAIL_LED_PIN_EN is set.", + "values": [ + { + "name": "High", + "value": 0, + "description": "Output high" + }, + { + "name": "Low", + "value": 1, + "description": "Output low" + } + ] + }, + { + "width": 3, + "id": "fuse140-bits-2-4", + "name": "BOOT_RETRY_FAIL_LED_PIN_PORT", + "description": "GPIO port. This field is valid only if BOOT_RETRY_FAIL_LED_PIN_EN is set.\nxd - GPIO port x" + }, + { + "width": 5, + "id": "fuse140-bits-5-9", + "name": "BOOT_RETRY_FAIL_LED_PIN_GPIO", + "description": "GPIO pin number. This field is valid only if BOOT_RETRY_FAIL_LED_PIN_EN is set.\nxd - GPIO pin x." + }, + { + "width": 1, + "id": "fuse140-bit-10", + "name": "SENSOR_RESET_LED_PIN_EN", + "description": "Sensor Reset LED enable bit. ROM sets this GPIO when last warm reset cause is detected as ITRC reset.", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse140-bit-11", + "name": "SENSOR_RESET_LED_PIN_POL", + "description": "Output polarity. This field is valid only if SENSOR_RESET_LED_PIN_EN is set.", + "values": [ + { + "name": "High", + "value": 0, + "description": "Output high" + }, + { + "name": "Low", + "value": 1, + "description": "Output low" + } + ] + }, + { + "width": 3, + "id": "fuse140-bits-12-14", + "name": "SENSOR_RESET_LED_PIN_PORT", + "description": "GPIO port. This field is valid only if SENSOR_RESET_LED_PIN_EN is set.\nxd - GPIO port x" + }, + { + "width": 5, + "id": "fuse140-bits-15-19", + "name": "SENSOR_RESET_LED_PIN_GPIO", + "description": "GPIO pin number. This field is valid only if SENSOR_RESET_LED_PIN_EN is set.\nxd - GPIO pin x." + }, + { + "width": 1, + "id": "fuse140-bit-20", + "name": "ISP_REC_LED_PIN_EN", + "description": "LED enable bit. ROM sets this GPIO whenever boot image is not found in boot media and before entering ISP or recovery boot mode. Output polarity. ", + "values": [ + { + "name": "Disabled", + "value": 0, + "description": "Disabled" + }, + { + "name": "Enabled", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse140-bit-21", + "name": "ISP_REC_LED_PIN_POL", + "description": "Output polarity. Output polarity. This field is valid only if ISP_REC_LED_PIN_EN is set.", + "values": [ + { + "name": "High", + "value": 0, + "description": "Output high" + }, + { + "name": "Low", + "value": 1, + "description": "Output low" + } + ] + }, + { + "width": 3, + "id": "fuse140-bits-22-24", + "name": "ISP_REC_LED_PIN_PORT", + "description": "GPIO port. This field is valid only if ISP_REC_LED_PIN_EN is set.\nxd - GPIO port x" + }, + { + "width": 5, + "id": "fuse140-bits-25-29", + "name": "ISP_REC_LED_PIN_GPIO", + "description": "GPIO pin number. This field is valid only if ISP_REC_LED_PIN_EN is set.\nxd - GPIO pin x." + }, + { + "width": 2 + } + ] + }, + { + "id": "fuse141", + "name": "BOOT_CFG5", + "description": "BOOT_CFG5 fuse word", + "index_int": "0x008D", + "shadow_reg_offset_int": "0x0234", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse141-bits-0-7", + "name": "WDOG_TIMEOUT_10MS", + "description": "A 10 ms timer started before jumping to user application.\nnd - n x 10 ms" + }, + { + "width": 8, + "id": "fuse141-bits-8-15", + "name": "POWERDOWN_TIMEOUT_SECS", + "description": "Device enters deep-power down state if it idles beyond this time during ISP command handling loop.\nnd - n x 1 s" + }, + { + "width": 4, + "id": "fuse141-bits-16-19", + "name": "REC_BOOT_FC", + "description": "Specifies the LP_FLEXCOMM connected to 1-bit SPI flash used for recovery boot. This field is valid only if REC_BOOT_EN is set.\nxd - LP_FLEXCOMMx is selected, x = 0-13" + }, + { + "width": 2, + "id": "fuse141-bits-20-21", + "name": "REC_BOOT_FC_PCS", + "description": "Specifies LP_FLEXCOMM PCS connected to 1-bit SPI flash used for recovery boot. This field is valid only if REC_BOOT_EN is set.", + "values": [ + { + "name": "PCS0", + "value": 0, + "description": "PCS0" + }, + { + "name": "PCS1", + "value": 1, + "description": "PCS1" + }, + { + "name": "PCS2", + "value": 2, + "description": "PCS2" + }, + { + "name": "PCS3", + "value": 3, + "description": "PCS3" + } + ] + }, + { + "width": 2, + "id": "fuse141-bits-22-23", + "name": "REC_BOOT_FC_BAUDRATE", + "description": "Specifies LP_FLEXCOMM baudrate with 1-bit SPI flash used for recovery boot. This field is valid only if REC_BOOT_EN is set.", + "values": [ + { + "name": "20 MHz", + "value": 0, + "description": "20 MHz" + }, + { + "name": "10 MHz", + "value": 1, + "description": "10 MHz" + }, + { + "name": "5 MHz", + "value": 2, + "description": "5 MHz" + }, + { + "name": "2 MHz", + "value": 3, + "description": "2 MHz" + } + ] + }, + { + "width": 2, + "id": "fuse141-bits-24-25", + "name": "XTAL_FREQ", + "description": "Specifies external XTAL frequency", + "values": [ + { + "name": "24 MHz", + "value": 0, + "description": "24 MHz" + }, + { + "name": "30 MHz", + "value": 1, + "description": "30 MHz" + }, + { + "name": "32 MHz", + "value": 2, + "description": "32 MHz" + }, + { + "name": "19.2 MHz", + "value": 3, + "description": "19.2 MHz" + } + ] + }, + { + "width": 1, + "id": "fuse141-bit-26", + "name": "OSC_HIGH_GAIN_MODE", + "description": "Specifies power mode of external XTAL", + "values": [ + { + "name": "Low power mode", + "value": 0, + "description": "Low power mode." + }, + { + "name": "High gain mode", + "value": 1, + "description": "High gain mode" + } + ] + }, + { + "width": 5, + "id": "fuse141-bits-27-31", + "name": "OSC_SETTLING_TIME", + "description": "Specifies the settling time of OSC\n0d - 390 \u03bcs (default)\nnd - n \u00d7 100 \u03bcs \u00d7 1.3" + } + ] + }, + { + "id": "fuse142", + "name": "BOOT_CFG6", + "description": "BOOT_CFG6 fuse word", + "index_int": "0x008E", + "shadow_reg_offset_int": "0x0238", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse142-bits-0-15", + "name": "USB_VID", + "description": "USB Vendor ID" + }, + { + "width": 16, + "id": "fuse142-bits-16-31", + "name": "USB_PID", + "description": "USB Product ID" + } + ] + }, + { + "id": "fuse160", + "name": "BOOT_CFG8", + "description": "BOOT_CFG8 fuse word", + "index_int": "0x00A0", + "shadow_reg_offset_int": "0x0280", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 8 + }, + { + "width": 1, + "id": "fuse160-bit-8", + "name": "DBG_OVER_USB_DIS", + "description": "Disable debug over USB0 pins. ", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse160-bit-9", + "name": "DBG_OVER_USB_LOCK", + "description": "Enable debug over USB register write lock. ", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 3, + "id": "fuse160-bits-10-12", + "name": "DBG_OVER_USB_SEL_PORT", + "description": "Defines which GPIO port is selected to enable debug over USB0 pins feature.\nxd - GPIO port x" + }, + { + "width": 5, + "id": "fuse160-bits-13-17", + "name": "DBG_OVER_USB_SEL_GPIO", + "description": "Defines which GPIO pin is selected to enable debug over USB0 pins feature.\nxd - GPIO pin x" + }, + { + "width": 7, + "id": "fuse160-bits-18-24", + "name": "LPI2C_ADDRESS", + "description": "If 00h, defaults to 10h for LPI2C target address.\nIf not 00h, use this value as the 7-bit LPI2C target address" + }, + { + "width": 7, + "id": "fuse160-bits-25-31", + "name": "USBPLL_LOCK_TIME", + "description": "Specifies the lock time of USB PLL\n0d - 30 \u00b5s (default)\nnd - n \u00d7 10 \u00b5s" + } + ] + }, + { + "id": "fuse161", + "name": "OTP_XSPI_NAND_CFG9", + "description": "OTP_XSPI_NAND_CFG9 fuse word", + "index_int": "0x00A1", + "shadow_reg_offset_int": "0x0284", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse161-bit-0", + "name": "XSPI_NAND_SEARCH_CNT", + "description": "0b - Search at most 1 block (for BCB)", + "values": [ + { + "name": "0", + "value": 0, + "description": "Search at most 1 block (for BCB)" + }, + { + "name": "1", + "value": 1, + "description": "Search at most 2 blocks" + } + ] + }, + { + "width": 1, + "id": "fuse161-bit-1", + "name": "XSPI_NAND_COL_ADDR_WIDTH", + "description": "0b - 11 bits (for 2 KB-page devices)", + "values": [ + { + "name": "11 bits", + "value": 0, + "description": "11 bits (for 2 KB-page devices)" + }, + { + "name": "12 bits", + "value": 1, + "description": "12 bits (for 4 KB-page devices)" + } + ] + }, + { + "width": 2, + "id": "fuse161-bits-2-3", + "name": "XSPI_NAND_CS_INTERVAL", + "description": "CS de-asserted interval between two commands", + "values": [ + { + "name": "100 ns", + "value": 0, + "description": "100 ns" + }, + { + "name": "200 ns", + "value": 1, + "description": "200 ns" + }, + { + "name": "400 ns", + "value": 2, + "description": "400 ns" + }, + { + "name": "50 ns", + "value": 3, + "description": "50 ns" + } + ] + }, + { + "width": 2, + "id": "fuse161-bits-4-5", + "name": "XSPI_NAND_SEARCH_STRIDE", + "description": "BCB search step/stride, aligned with block size", + "values": [ + { + "name": "64 pages", + "value": 0, + "description": "64 pages" + }, + { + "name": "128 pages", + "value": 1, + "description": "128 pages" + }, + { + "name": "256 pages", + "value": 2, + "description": "256 pages" + }, + { + "name": "32 pages", + "value": 3, + "description": "32 pages" + } + ] + }, + { + "width": 2, + "id": "fuse161-bits-6-7", + "name": "XSPI_NAND_HOLD_TIME", + "description": "Hold time before interaction with NAND", + "values": [ + { + "name": "00", + "value": 0, + "description": "Wait until NAND is idle (by polling NAND's status register)" + }, + { + "name": "500 us", + "value": 1, + "description": "500 us" + }, + { + "name": "1 ms", + "value": 2, + "description": "1 ms" + }, + { + "name": "3 ms", + "value": 3, + "description": "3 ms" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "fuse161-bits-10-11", + "name": "XSPI_NAND_RESET_TYPE", + "description": "00b - No reset before interaction with NAND", + "values": [ + { + "name": "00", + "value": 0, + "description": "No reset before interaction with NAND" + }, + { + "name": "01", + "value": 1, + "description": "Reset the NAND with FFh" + }, + { + "name": "10", + "value": 2, + "description": "Reset the NAND with 66h, 99h" + }, + { + "name": "11", + "value": 3, + "description": "Reset the NAND with dedicated reset pin" + } + ] + }, + { + "width": 4 + }, + { + "width": 3, + "id": "fuse161-bits-16-18", + "name": "XSPI_NAND_FREQ", + "description": "000b - 80 MHz ", + "values": [ + { + "name": "80 MHz", + "value": 0, + "description": "80 MHz" + }, + { + "name": "100 MHz", + "value": 1, + "description": "100 MHz" + }, + { + "name": "120 MHz", + "value": 2, + "description": "120 MHz" + }, + { + "name": "133 MHz", + "value": 3, + "description": "133 MHz" + }, + { + "name": "166 MHz", + "value": 4, + "description": "166 MHz" + }, + { + "name": "200 MHz", + "value": 5, + "description": "200 MHz" + }, + { + "name": "60 MHz", + "value": 6, + "description": "60 MHz" + }, + { + "name": "30 MHz", + "value": 7, + "description": "30 MHz" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "fuse161-bits-21-22", + "name": "XSPI_PAGES_PER_BLOCK", + "description": "00b - 64 Pages", + "values": [ + { + "name": "64 Pages", + "value": 0, + "description": "64 Pages" + }, + { + "name": "128 Pages", + "value": 1, + "description": "128 Pages" + }, + { + "name": "256 Pages", + "value": 2, + "description": "256 Pages" + }, + { + "name": "32 Pages", + "value": 3, + "description": "32 Pages" + } + ] + }, + { + "width": 1 + }, + { + "width": 8, + "id": "fuse161-bits-24-31", + "name": "XSPI_FEATURE_CONFIG", + "description": "Used for loading the arguments/parameters for device configuration commands\nbit 0 - For Micron memory, it must be configured as 0b to disable continue read mode; for Macronix or Winbond memory, it must be configured as 1b to enable quad mode.\nbit 3 - For Winbond memory, it must be configured as 1b to enable buffer mode.\nbit 4 - Must be configured as 1b to enable error code correction\nOthers - Reserved" + } + ] + }, + { + "id": "fuse162", + "name": "BOOT_CFG10", + "description": "BOOT_CFG10 fuse word", + "index_int": "0x00A2", + "shadow_reg_offset_int": "0x0288", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse162-bits-0-3", + "name": "XSPI_CFG_ERASE_SZ", + "description": "Erase size for configuration pages. \nnd - Erase size 2(n+8) bytes" + }, + { + "width": 15, + "id": "fuse162-bits-4-18", + "name": "XSPI_STATIC_CFG_OFFSET", + "description": "Offset expressed as multiple of 4 KB from where configuration pages/sectors start. Maximum memory mapped XSPI space is 128 MB hence 10 bit field.\nXSPI_STATIC_CFG_ADDR = 0800_0000h + (XSPI_STATIC_CFG_OFFSET x 4096)" + }, + { + "width": 9, + "id": "fuse162-bits-19-27", + "name": "IMAGE0_OFFSET", + "description": "Offset expressed as multiple of 4 KB from where configuration pages/sectors start." + }, + { + "width": 1, + "id": "fuse162-bit-28", + "name": "XSPI_ARB_NS_FW_VER", + "description": "Field determines which firmware version counter should be used for anti-rollback checking of dynamic configuration pages.", + "values": [ + { + "name": "0", + "value": 0, + "description": "Use OTP_SEC_FW_VERSION (up to 63)" + }, + { + "name": "1", + "value": 1, + "description": "Use OTP_NS_FW_VERSION (up to 255)" + } + ] + }, + { + "width": 3 + } + ] + } + ] + }, + { + "group": { + "name": "PRINCE", + "description": "PRINCE IPED configuration" + }, + "registers": [ + { + "id": "fuse144", + "name": "XSPI0_IPED_CTX0", + "description": "XSPI0_IPED_CTX0 fuse word", + "index_int": "0x0090", + "shadow_reg_offset_int": "0x0240", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse144-bits-0-15", + "name": "XSPI0_START_OFFSET_0", + "description": "START_OFFSET (4 KB aligned)" + }, + { + "width": 16, + "id": "fuse144-bits-16-31", + "name": "XSPI0_LENGTH_0", + "description": "LENGTH (4 KB block counts)" + } + ] + }, + { + "id": "fuse145", + "name": "XSPI0_IPED_CTX1", + "description": "XSPI0_IPED_CTX1 fuse word", + "index_int": "0x0091", + "shadow_reg_offset_int": "0x0244", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse145-bits-0-15", + "name": "XSPI0_START_OFFSET_1", + "description": "START_OFFSET (4 KB aligned)" + }, + { + "width": 16, + "id": "fuse145-bits-16-31", + "name": "XSPI0_LENGTH_1", + "description": "LENGTH (4 KB block counts)" + } + ] + }, + { + "id": "fuse146", + "name": "XSPI0_IPED_CTX2", + "description": "XSPI0_IPED_CTX2 fuse word", + "index_int": "0x0092", + "shadow_reg_offset_int": "0x0248", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse146-bits-0-15", + "name": "XSPI0_START_OFFSET_2", + "description": "START_OFFSET (4 KB aligned)" + }, + { + "width": 16, + "id": "fuse146-bits-16-31", + "name": "XSPI0_LENGTH_2", + "description": "LENGTH (4 KB block counts)" + } + ] + }, + { + "id": "fuse147", + "name": "XSPI0_IPED_CTX3", + "description": "XSPI0_IPED_CTX3 fuse word", + "index_int": "0x0093", + "shadow_reg_offset_int": "0x024C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse147-bits-0-15", + "name": "XSPI0_START_OFFSET_3", + "description": "START_OFFSET (4 KB aligned)" + }, + { + "width": 16, + "id": "fuse147-bits-16-31", + "name": "XSPI0_LENGTH_3", + "description": "LENGTH (4 KB block counts)" + } + ] + }, + { + "id": "fuse148", + "name": "XSPI1_IPED_CTX0", + "description": "XSPI1_IPED_CTX0 fuse word", + "index_int": "0x0094", + "shadow_reg_offset_int": "0x0250", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse148-bits-0-15", + "name": "XSPI1_START_OFFSET_0", + "description": "START_OFFSET (4 KB aligned)" + }, + { + "width": 16, + "id": "fuse148-bits-16-31", + "name": "XSPI1_LENGTH_0", + "description": "LENGTH (4 KB block counts)" + } + ] + }, + { + "id": "fuse149", + "name": "XSPI1_IPED_CTX1", + "description": "XSPI1_IPED_CTX1 fuse word", + "index_int": "0x0095", + "shadow_reg_offset_int": "0x0254", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse149-bits-0-15", + "name": "XSPI1_START_OFFSET_1", + "description": "START_OFFSET (4 KB aligned)" + }, + { + "width": 16, + "id": "fuse149-bits-16-31", + "name": "XSPI1_LENGTH_1", + "description": "LENGTH (4 KB block counts)" + } + ] + }, + { + "id": "fuse150", + "name": "XSPI1_IPED_CTX2", + "description": "XSPI1_IPED_CTX2 fuse word", + "index_int": "0x0096", + "shadow_reg_offset_int": "0x0258", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse150-bits-0-15", + "name": "XSPI1_START_OFFSET_2", + "description": "START_OFFSET (4 KB aligned)" + }, + { + "width": 16, + "id": "fuse150-bits-16-31", + "name": "XSPI1_LENGTH_2", + "description": "LENGTH (4 KB block counts)" + } + ] + }, + { + "id": "fuse151", + "name": "XSPI1_IPED_CTX3", + "description": "XSPI1_IPED_CTX3 fuse word", + "index_int": "0x0097", + "shadow_reg_offset_int": "0x025C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse151-bits-0-15", + "name": "XSPI1_START_OFFSET_3", + "description": "START_OFFSET (4 KB aligned)" + }, + { + "width": 16, + "id": "fuse151-bits-16-31", + "name": "XSPI1_LENGTH_3", + "description": "LENGTH (4 KB block counts)" + } + ] + } + ] + }, + { + "group": { + "name": "XSPI", + "description": "XSPI configuration" + }, + "registers": [ + { + "id": "fuse152", + "name": "XSPI_CFG0", + "description": "XSPI_CFG0 fuse word", + "index_int": "0x0098", + "shadow_reg_offset_int": "0x0260", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse152-bit-0", + "name": "XSPI_FLASH_AUTO_PROBE_EN", + "description": "Quad SPI or Octal SPI flash memory auto-probe feature enable", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 3, + "id": "fuse152-bits-1-3", + "name": "XSPI_FLASH_PROBE_TYPE", + "description": "Quad SPI or Octal SPI flash memory probe type", + "values": [ + { + "name": "000", + "value": 0, + "description": "Quad SPI NOR flash memory" + }, + { + "name": "001", + "value": 1, + "description": "Macronix Octal flash memory" + }, + { + "name": "010", + "value": 2, + "description": "Micron Octal flash memory" + }, + { + "name": "011", + "value": 3, + "description": "Adesto Octal flash memory" + }, + { + "name": "Octal SDR", + "value": 4, + "description": "Octal SDR" + }, + { + "name": "Octal DDR", + "value": 5, + "description": "Octal DDR" + } + ] + }, + { + "width": 3, + "id": "fuse152-bits-4-6", + "name": "XSPI_FLASH_TYPE", + "description": "Typical serial NOR flash memory types", + "values": [ + { + "name": "000", + "value": 0, + "description": "Quad SPI flash memory address (by default, the chip supports 3B read)" + }, + { + "name": "010", + "value": 2, + "description": "HyperFlash 1.8 V" + }, + { + "name": "011", + "value": 3, + "description": "HyperFlash 3.3 V" + }, + { + "name": "MXIC Octal DDR", + "value": 4, + "description": "MXIC Octal DDR" + }, + { + "name": "101", + "value": 5, + "description": "Micron Octal DDR" + } + ] + }, + { + "width": 4, + "id": "fuse152-bits-7-10", + "name": "XSPI_FLASH_DUMMY_CYCLES", + "description": "Together with XSPI_FLASH_DUMMY_CYCLES_UPPER, the 6-bit field configures Quad SPI or Octal SPI dummy cycles for read command", + "values": [ + { + "name": "000000", + "value": 0, + "description": "Dummy cycles probed automatically" + }, + { + "name": "0001", + "value": 1, + "description": "Number of dummy cycles" + }, + { + "name": "0010", + "value": 2, + "description": "Number of dummy cycles" + }, + { + "name": "0011", + "value": 3, + "description": "Number of dummy cycles" + }, + { + "name": "0100", + "value": 4, + "description": "Number of dummy cycles" + }, + { + "name": "0101", + "value": 5, + "description": "Number of dummy cycles" + }, + { + "name": "0110", + "value": 6, + "description": "Number of dummy cycles" + }, + { + "name": "0111", + "value": 7, + "description": "Number of dummy cycles" + }, + { + "name": "1000", + "value": 8, + "description": "Number of dummy cycles" + }, + { + "name": "1001", + "value": 9, + "description": "Number of dummy cycles" + }, + { + "name": "1010", + "value": 10, + "description": "Number of dummy cycles" + }, + { + "name": "1011", + "value": 11, + "description": "Number of dummy cycles" + }, + { + "name": "1100", + "value": 12, + "description": "Number of dummy cycles" + }, + { + "name": "1101", + "value": 13, + "description": "Number of dummy cycles" + }, + { + "name": "1110", + "value": 14, + "description": "Number of dummy cycles" + }, + { + "name": "1111", + "value": 15, + "description": "Number of dummy cycles" + } + ] + }, + { + "width": 3, + "id": "fuse152-bits-11-13", + "name": "XSPI_FLASH_BOOT_FREQ", + "description": "Quad SPI or Octal SPI flash interface frequency", + "values": [ + { + "name": "80 MHz", + "value": 0, + "description": "80 MHz" + }, + { + "name": "60 MHz", + "value": 1, + "description": "60 MHz" + }, + { + "name": "50 MHz", + "value": 2, + "description": "50 MHz" + }, + { + "name": "100 MHz", + "value": 3, + "description": "100 MHz" + }, + { + "name": "120 MHz", + "value": 4, + "description": "120 MHz" + }, + { + "name": "133 MHz", + "value": 5, + "description": "133 MHz" + }, + { + "name": "166 MHz", + "value": 6, + "description": "166 MHz" + }, + { + "name": "200 MHz", + "value": 7, + "description": "200 MHz" + } + ] + }, + { + "width": 1, + "id": "fuse152-bit-14", + "name": "XSPI_RESET_PIN_EN", + "description": "Enable to reset flash memory by reset pin or JEDEC", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "Enable", + "value": 1, + "description": "Enable" + } + ] + }, + { + "width": 1, + "id": "fuse152-bit-15", + "name": "XSPI_NOR_RESET_TYPE", + "description": "This field is valid only if XSPI_RESET_PIN_EN is set.", + "values": [ + { + "name": "Pin reset", + "value": 0, + "description": "Pin reset" + }, + { + "name": "JEDEC reset", + "value": 1, + "description": "JEDEC reset" + } + ] + }, + { + "width": 3, + "id": "fuse152-bits-16-18", + "name": "XSPI_RESET_PIN_PORT", + "description": "GPIO port number. This field is valid only if XSPI_RESET_PIN_EN is set." + }, + { + "width": 5, + "id": "fuse152-bits-19-23", + "name": "XSPI_RESET_PIN_GPIO", + "description": "GPIO pin number. This field is valid only if XSPI_RESET_PIN_EN is set." + }, + { + "width": 2, + "id": "fuse152-bits-24-25", + "name": "XSPI_HOLD_TIME", + "description": "Wait time before accessing serial flash memory", + "values": [ + { + "name": "500 us", + "value": 0, + "description": "500 us" + }, + { + "name": "1 ms", + "value": 1, + "description": "1 ms" + }, + { + "name": "3 ms", + "value": 2, + "description": "3 ms" + }, + { + "name": "10 ms", + "value": 3, + "description": "10 ms" + } + ] + }, + { + "width": 4, + "id": "fuse152-bits-26-29", + "name": "XSPI_PWR_HOLD_TIME", + "description": "Delay (wait time) after POR before accessing Quad SPI or Octal SPI flash memory devices, in addition to the delay that the XSPI_HOLD_TIME field specifies", + "values": [ + { + "name": "No delay", + "value": 0, + "description": "No delay" + }, + { + "name": "0001", + "value": 1, + "description": "Additional 100 us" + }, + { + "name": "0010", + "value": 2, + "description": "Additional 500 us" + }, + { + "name": "Additional 1 ms", + "value": 3, + "description": "Additional 1 ms" + }, + { + "name": "0100", + "value": 4, + "description": "Additional 10 ms" + }, + { + "name": "0101", + "value": 5, + "description": "Additional 20 ms" + }, + { + "name": "0110", + "value": 6, + "description": "Additional 40 ms" + }, + { + "name": "0111", + "value": 7, + "description": "Additional 60 ms" + }, + { + "name": "1000", + "value": 8, + "description": "Additional 80 ms" + }, + { + "name": "1001", + "value": 9, + "description": "Additional 100 ms" + }, + { + "name": "1010", + "value": 10, + "description": "Additional 120 ms" + }, + { + "name": "1011", + "value": 11, + "description": "Additional 140 ms" + }, + { + "name": "1100", + "value": 12, + "description": "Additional 160 ms" + }, + { + "name": "1101", + "value": 13, + "description": "Additional 180 ms" + }, + { + "name": "1110", + "value": 14, + "description": "Additional 200 ms" + }, + { + "name": "1111", + "value": 15, + "description": "Additional 220 ms" + } + ] + }, + { + "width": 2, + "id": "fuse152-bits-30-31", + "name": "XSPI_FLASH_DUMMY_CYCLES_UPPER", + "description": "Quad/Octal-SPI dummy cycles upper 2 bits for read command. See XSPI_FLASH_DUMMY_CYCLES" + } + ] + }, + { + "id": "fuse153", + "name": "XSPI_CFG1", + "description": "XSPI_CFG1 fuse word", + "index_int": "0x0099", + "shadow_reg_offset_int": "0x0264", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 7, + "id": "fuse153-bits-0-6", + "name": "XSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for flash read sampling via external DQS\n0 - Use the delay cell value calculated by ROM\nOthers - Use the delay cell value in terms of 100 ps" + }, + { + "width": 10, + "id": "fuse153-bits-7-16", + "name": "XSPI_FLASH_SEC_IMAGE_OFFSET", + "description": "Offset of the second image\nxd - x multiplied by 128 KB" + }, + { + "width": 7, + "id": "fuse153-bits-17-23", + "name": "XSPI_FLASH_IMAGE_SIZE", + "description": "Size of the second image\n0d - Same size as the image offset (XSPI_IMAGE_OFFSET)\n1d - 128 KB\n2d - 256 KB\nmd - m \u00d7 128 KB (m = 3-7)\n8d - 1 MB\nnd - (n-7) \u00d7 1 MB (n = 8-71)" + }, + { + "width": 3, + "id": "fuse153-bits-24-26", + "name": "XSPI_FLASH_ENHANCE_MODE", + "description": "XSPI enhance mode", + "values": [ + { + "name": "Disable", + "value": 0, + "description": "Disable" + }, + { + "name": "101", + "value": 5, + "description": "Force using internal loopback DQS" + } + ] + }, + { + "width": 5 + } + ] + }, + { + "id": "fuse154", + "name": "XSPI_CFG2", + "description": "Configure DLL and the subordinate delay chain for flash memory with SDR interface, see XSPI_DLLCRA register for more details.", + "index_int": "0x009A", + "shadow_reg_offset_int": "0x0268", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse154-bits-0-31", + "name": "XSPI_FLASH_SDR_DLLCRA", + "description": "Configure DLL and the subordinate delay chain for flash memory with SDR interface, see XSPI_DLLCRA register for more details." + } + ] + }, + { + "id": "fuse155", + "name": "XSPI_CFG3", + "description": "Configure how XSPI samples the incoming data from external serial flash memory with SDR interface. See XSPI_SMPR register for more details.", + "index_int": "0x009B", + "shadow_reg_offset_int": "0x026C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse155-bits-0-31", + "name": "XSPI_FLASH_SDR_SMPR", + "description": "Configure how XSPI samples the incoming data from external serial flash memory with SDR interface. See XSPI_SMPR register for more details." + } + ] + }, + { + "id": "fuse156", + "name": "XSPI_CFG4", + "description": "Configure DLL and the subordinate delay chain for flash memory with DDR interface, see XSPI_DLLCRA register for more details.", + "index_int": "0x009C", + "shadow_reg_offset_int": "0x0270", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse156-bits-0-31", + "name": "XSPI_FLASH_DDR_DLLCRA", + "description": "Configure DLL and the subordinate delay chain for flash memory with DDR interface, see XSPI_DLLCRA register for more details." + } + ] + }, + { + "id": "fuse157", + "name": "XSPI_CFG5", + "description": "Configure how XSPI samples the incoming data from external serial flash memory with DDR interface. See XSPI_SMPR register for more details.", + "index_int": "0x009D", + "shadow_reg_offset_int": "0x0274", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse157-bits-0-31", + "name": "XSPI_FLASH_DDR_SMPR", + "description": "Configure how XSPI samples the incoming data from external serial flash memory with DDR interface. See XSPI_SMPR register for more details." + } + ] + } + ] + }, + { + "group": { + "name": "SDHC", + "description": "SDHC configuration" + }, + "registers": [ + { + "id": "fuse158", + "name": "SDHC_CFGF0", + "description": "SDHC_CFGF0 (for uSDHC0) fuse word", + "index_int": "0x009E", + "shadow_reg_offset_int": "0x0278", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse158-bits-0-1", + "name": "SDHC_BUS_WIDTH", + "description": "eMMC bus width selection", + "values": [ + { + "name": "4 bits", + "value": 0, + "description": "4 bits" + }, + { + "name": "8 bits", + "value": 1, + "description": "8 bits" + }, + { + "name": "4 bits DDR", + "value": 2, + "description": "4 bits DDR" + }, + { + "name": "8 bits DDR", + "value": 3, + "description": "8 bits DDR" + } + ] + }, + { + "width": 1, + "id": "fuse158-bit-2", + "name": "SDHC_PWR_CYCLE_EN", + "description": "Power cycle enable", + "values": [ + { + "name": "No power cycle", + "value": 0, + "description": "No power cycle" + }, + { + "name": "Enabled", + "value": 1, + "description": "Power cycle enabled via RST pad" + } + ] + }, + { + "width": 2, + "id": "fuse158-bits-3-4", + "name": "SDHC_PWR_CYCLE_WAIT", + "description": "Power down wait selection", + "values": [ + { + "name": "20 ms", + "value": 0, + "description": "20 ms" + }, + { + "name": "10 ms", + "value": 1, + "description": "10 ms" + }, + { + "name": "5 ms", + "value": 2, + "description": "5 ms" + }, + { + "name": "2.5 ms", + "value": 3, + "description": "2.5 ms" + } + ] + }, + { + "width": 2, + "id": "fuse158-bits-5-6", + "name": "SDHC_PWR_STABLE_WAIT", + "description": "Power up wait selection", + "values": [ + { + "name": "5 ms", + "value": 0, + "description": "5 ms" + }, + { + "name": "2.5 ms", + "value": 1, + "description": "2.5 ms" + } + ] + }, + { + "width": 1, + "id": "fuse158-bit-7", + "name": "SDHC_PWR_POL", + "description": "uSDHC reset polarity selection", + "values": [ + { + "name": "Low", + "value": 0, + "description": "Reset active low" + }, + { + "name": "High", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse158-bit-9", + "name": "SDHC_RESET_PRE_IDLE", + "description": "eMMC disable pre-idle selection", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse158-bit-10", + "name": "SDHC_MMC_SPEED", + "description": "eMMC speed selection", + "values": [ + { + "name": "Normal", + "value": 0, + "description": "Normal speed" + }, + { + "name": "High", + "value": 1, + "description": "High speed" + } + ] + }, + { + "width": 21 + } + ] + }, + { + "id": "fuse159", + "name": "SDHC_CFGF1", + "description": "SDHC_CFGF1 (for uSDHC1) fuse word", + "index_int": "0x009F", + "shadow_reg_offset_int": "0x027C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 2, + "id": "fuse159-bits-0-1", + "name": "SDHC_BUS_WIDTH", + "description": "eMMC bus width selection", + "values": [ + { + "name": "4 bits", + "value": 0, + "description": "4 bits" + }, + { + "name": "8 bits", + "value": 1, + "description": "8 bits" + }, + { + "name": "4 bits DDR", + "value": 2, + "description": "4 bits DDR" + }, + { + "name": "8 bits DDR", + "value": 3, + "description": "8 bits DDR" + } + ] + }, + { + "width": 1, + "id": "fuse159-bit-2", + "name": "SDHC_PWR_CYCLE_EN", + "description": "Power cycle enable", + "values": [ + { + "name": "No power cycle", + "value": 0, + "description": "No power cycle" + }, + { + "name": "Enabled", + "value": 1, + "description": "Power cycle enabled via RST pad" + } + ] + }, + { + "width": 2, + "id": "fuse159-bits-3-4", + "name": "SDHC_PWR_CYCLE_WAIT", + "description": "Power down wait selection", + "values": [ + { + "name": "20 ms", + "value": 0, + "description": "20 ms" + }, + { + "name": "10 ms", + "value": 1, + "description": "10 ms" + }, + { + "name": "5 ms", + "value": 2, + "description": "5 ms" + }, + { + "name": "2.5 ms", + "value": 3, + "description": "2.5 ms" + } + ] + }, + { + "width": 2, + "id": "fuse159-bits-5-6", + "name": "SDHC_PWR_STABLE_WAIT", + "description": "Power up wait selection", + "values": [ + { + "name": "5 ms", + "value": 0, + "description": "5 ms" + }, + { + "name": "2.5 ms", + "value": 1, + "description": "2.5 ms" + } + ] + }, + { + "width": 1, + "id": "fuse159-bit-7", + "name": "SDHC_PWR_POL", + "description": "uSDHC reset polarity selection", + "values": [ + { + "name": "Low", + "value": 0, + "description": "Reset active low" + }, + { + "name": "High", + "value": 1, + "description": "Reset active high" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse159-bit-9", + "name": "SDHC_RESET_PRE_IDLE", + "description": "eMMC disable pre-idle selection", + "values": [ + { + "name": "Enable", + "value": 0, + "description": "Enable" + }, + { + "name": "Disable", + "value": 1, + "description": "Disable" + } + ] + }, + { + "width": 1, + "id": "fuse159-bit-10", + "name": "SDHC_MMC_SPEED", + "description": "eMMC speed selection", + "values": [ + { + "name": "Normal", + "value": 0, + "description": "Normal speed" + }, + { + "name": "High", + "value": 1, + "description": "High speed" + } + ] + }, + { + "width": 21 + } + ] + } + ] + }, + { + "group": { + "name": "Customer", + "description": "General purpose for customer use" + }, + "registers": [ + { + "id": "fuse163", + "name": "BOOT_CFG11", + "description": "For customer use", + "index_int": "0x00A3", + "shadow_reg_offset_int": "0x028C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse164", + "name": "BOOT_CFG12", + "description": "For customer use", + "index_int": "0x00A4", + "shadow_reg_offset_int": "0x0290", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse165", + "name": "BOOT_CFG13", + "description": "For customer use", + "index_int": "0x00A5", + "shadow_reg_offset_int": "0x0294", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse166", + "name": "BOOT_CFG14", + "description": "For customer use", + "index_int": "0x00A6", + "shadow_reg_offset_int": "0x0298", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse167", + "name": "BOOT_CFG15", + "description": "For customer use", + "index_int": "0x00A7", + "shadow_reg_offset_int": "0x029C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + } + }, + { + "id": "fuse168", + "name": "BOOT_CFG16-CUST_CTR1", + "description": "For customer use", + "deprecated_names": [ + "BOOT_CFG16" + ], + "index_int": "0x00A8", + "shadow_reg_offset_int": "0x02A0", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse169", + "name": "BOOT_CFG17-CUST_CTR2", + "description": "For customer use", + "deprecated_names": [ + "BOOT_CFG17" + ], + "index_int": "0x00A9", + "shadow_reg_offset_int": "0x02A4", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse170", + "name": "BOOT_CFG18-CUST_CTR3", + "description": "For customer use", + "deprecated_names": [ + "BOOT_CFG18" + ], + "index_int": "0x00AA", + "shadow_reg_offset_int": "0x02A8", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse171", + "name": "BOOT_CFG19-CUST_CTR4", + "description": "For customer use", + "deprecated_names": [ + "BOOT_CFG19" + ], + "index_int": "0x00AB", + "shadow_reg_offset_int": "0x02AC", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse172", + "name": "BOOT_CFG20-CUST_CTR5", + "description": "For customer use", + "deprecated_names": [ + "BOOT_CFG20" + ], + "index_int": "0x00AC", + "shadow_reg_offset_int": "0x02B0", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse173", + "name": "BOOT_CFG21-CUST_CTR6", + "description": "For customer use", + "deprecated_names": [ + "BOOT_CFG21" + ], + "index_int": "0x00AD", + "shadow_reg_offset_int": "0x02B4", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse174", + "name": "BOOT_CFG22-CUST_CTR7", + "description": "For customer use", + "deprecated_names": [ + "BOOT_CFG22" + ], + "index_int": "0x00AE", + "shadow_reg_offset_int": "0x02B8", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse175", + "name": "BOOT_CFG23-CUST_CTR8", + "description": "For customer use", + "deprecated_names": [ + "BOOT_CFG23" + ], + "index_int": "0x00AF", + "shadow_reg_offset_int": "0x02BC", + "lock": { + "register_id": "fuse5", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse176", + "name": "BOOT_CFG24", + "description": "For customer use", + "index_int": "0x00B0", + "shadow_reg_offset_int": "0x02C0", + "individual_write_lock": "implicit" + }, + { + "id": "fuse177", + "name": "BOOT_CFG25", + "description": "For customer use", + "index_int": "0x00B1", + "shadow_reg_offset_int": "0x02C4", + "individual_write_lock": "implicit" + }, + { + "id": "fuse178", + "name": "BOOT_CFG26", + "description": "For customer use", + "index_int": "0x00B2", + "shadow_reg_offset_int": "0x02C8", + "individual_write_lock": "implicit" + }, + { + "id": "fuse179", + "name": "BOOT_CFG27", + "description": "For customer use", + "index_int": "0x00B3", + "shadow_reg_offset_int": "0x02CC", + "individual_write_lock": "implicit" + }, + { + "id": "fuse180", + "name": "BOOT_CFG28", + "description": "For customer use", + "index_int": "0x00B4", + "shadow_reg_offset_int": "0x02D0", + "individual_write_lock": "implicit" + }, + { + "id": "fuse181", + "name": "BOOT_CFG29", + "description": "For customer use", + "index_int": "0x00B5", + "shadow_reg_offset_int": "0x02D4", + "individual_write_lock": "implicit" + }, + { + "id": "fuse182", + "name": "BOOT_CFG30", + "description": "For customer use", + "index_int": "0x00B6", + "shadow_reg_offset_int": "0x02D8", + "individual_write_lock": "implicit" + }, + { + "id": "fuse183", + "name": "BOOT_CFG31", + "description": "For customer use", + "index_int": "0x00B7", + "shadow_reg_offset_int": "0x02DC", + "individual_write_lock": "implicit" + }, + { + "id": "fuse451", + "name": "NXP_GPR5_CFG3", + "description": "NXP_GPR5_CFG3 fuse word", + "index_int": "0x01C3", + "shadow_reg_offset_int": "0x070C", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 16, + "id": "fuse451-bits-0-15", + "name": "PVT_SENSE_A", + "description": "PVTS-ML Sense A value\nRead only" + }, + { + "width": 16, + "id": "fuse451-bits-16-31", + "name": "PVT_SENSE_B", + "description": "PVTS-ML Sense B value\nRead only" + } + ] + }, + { + "id": "fuse452", + "name": "NXP_GPR5_CFG4", + "description": "NXP_GPR5_CFG4 fuse word", + "index_int": "0x01C4", + "shadow_reg_offset_int": "0x0710", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 16, + "id": "fuse452-bits-0-15", + "name": "PVT_CMPT_A", + "description": "PVTS-ML Compute A value\nRead only" + }, + { + "width": 16, + "id": "fuse452-bits-16-31", + "name": "PVT_CMPT_B", + "description": "PVTS-ML Compute B value\nRead only" + } + ] + }, + { + "id": "fuse460", + "name": "GPR1_CFG0", + "description": "General purpose fuse for customer use", + "index_int": "0x01CC", + "shadow_reg_offset_int": "0x0730", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse461", + "name": "GPR1_CFG1", + "description": "General purpose fuse for customer use", + "index_int": "0x01CD", + "shadow_reg_offset_int": "0x0734", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse462", + "name": "GPR1_CFG2", + "description": "General purpose fuse for customer use", + "index_int": "0x01CE", + "shadow_reg_offset_int": "0x0738", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse463", + "name": "GPR1_CFG3", + "description": "General purpose fuse for customer use", + "index_int": "0x01CF", + "shadow_reg_offset_int": "0x073C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + }, + { + "id": "fuse472", + "name": "GPR0_CFG0", + "description": "General purpose fuse for customer use", + "index_int": "0x01D8", + "shadow_reg_offset_int": "0x0760", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse473", + "name": "GPR0_CFG1", + "description": "General purpose fuse for customer use", + "index_int": "0x01D9", + "shadow_reg_offset_int": "0x0764", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse474", + "name": "GPR0_CFG2", + "description": "General purpose fuse for customer use", + "index_int": "0x01DA", + "shadow_reg_offset_int": "0x0768", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse475", + "name": "GPR0_CFG3", + "description": "General purpose fuse for customer use", + "index_int": "0x01DB", + "shadow_reg_offset_int": "0x076C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse476", + "name": "GPR0_CFG4", + "description": "General purpose fuse for customer use", + "index_int": "0x01DC", + "shadow_reg_offset_int": "0x0770", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse477", + "name": "GPR0_CFG5", + "description": "General purpose fuse for customer use", + "index_int": "0x01DD", + "shadow_reg_offset_int": "0x0774", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse478", + "name": "GPR0_CFG6", + "description": "General purpose fuse for customer use", + "index_int": "0x01DE", + "shadow_reg_offset_int": "0x0778", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse479", + "name": "GPR0_CFG7", + "description": "General purpose fuse for customer use", + "index_int": "0x01DF", + "shadow_reg_offset_int": "0x077C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + } + }, + { + "id": "fuse480", + "name": "GPR0_CFG8", + "description": "General purpose fuse for customer use", + "index_int": "0x01E0", + "shadow_reg_offset_int": "0x0780", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse481", + "name": "GPR0_CFG9", + "description": "General purpose fuse for customer use", + "index_int": "0x01E1", + "shadow_reg_offset_int": "0x0784", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + } + ] + }, + { + "group": { + "name": "PVT", + "description": "Domain PVT setpoint" + }, + "registers": [ + { + "id": "fuse482", + "name": "SENSE_PVT_SP3", + "description": "Sense domain PVT setpoint 3 CPU1/HiFi1 \u2013 Freq/Volt\n250 MHz PVTS delay values, HiFi1[15:8], CPU1[7:0]", + "index_int": "0x01E2", + "shadow_reg_offset_int": "0x0788", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse483", + "name": "COM_PVT_SP3", + "description": "Compute domain PVT setpoint 3 CPU0/HiFi4 \u2013 Freq/Volt\n325 MHz PVTS delay values, HiFi4[15:8], CPU0[7:0]", + "index_int": "0x01E3", + "shadow_reg_offset_int": "0x078C", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse484", + "name": "SENSE_PVT_SP2", + "description": "Sense domain PVT setpoint 2 CPU1/HiFi1 \u2013 Freq/Volt\n160 MHz PVTS delay values, HiFi1[15:8], CPU1[7:0]", + "index_int": "0x01E4", + "shadow_reg_offset_int": "0x0790", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse485", + "name": "COM_PVT_SP2", + "description": "Compute domain PVT setpoint 2 CPU0/HiFi4 \u2013 Freq/Volt\n192 MHz PVTS delay values, HiFi4[15:8], CPU0[7:0]", + "index_int": "0x01E5", + "shadow_reg_offset_int": "0x0794", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse486", + "name": "SENSE_PVT_SP1", + "description": "Sense domain PVT setpoint 1 CPU1/HiFi1 \u2013 Freq/Volt\n100 MHz PVTS delay values, HiFi1[15:8], CPU1[7:0]", + "index_int": "0x01E6", + "shadow_reg_offset_int": "0x0798", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + }, + { + "id": "fuse487", + "name": "COM_PVT_SP1", + "description": "Compute domain PVT setpoint 1 CPU0/HiFi4 \u2013 Freq/Volt\n110 MHz PVTS delay values, HiFi4[15:8], CPU0[7:0]", + "index_int": "0x01E7", + "shadow_reg_offset_int": "0x079C", + "lock": { + "register_id": "fuse3", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16 + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/tz.json new file mode 100644 index 0000000..8cfb3f2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mimxrt798s/tz.json @@ -0,0 +1,5253 @@ +{ + "cpu": "mimxrt798s", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Start of block (tzm_magic)", + "description": "TrustZone register - Start of block (tzm_magic)", + "default_value_int": "0x4d2d5a54" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "CORE0 CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CORE0 CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CORE0 CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CORE0 CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CORE0 CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CORE0 CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "CORE0 CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CORE0 CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "CORE0 CM33 Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "description": "TrustZone register - CORE0 CM33 Interrupt target non-secure register 2 (cm33_nvic_itns2)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "CORE0 CM33 Interrupt target non-secure register 3 (cm33_nvic_itns3)", + "description": "TrustZone register - CORE0 CM33 Interrupt target non-secure register 3 (cm33_nvic_itns3)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "CORE0 CM33 Interrupt target non-secure register 4 (cm33_nvic_itns4)", + "description": "TrustZone register - CORE0 CM33 Interrupt target non-secure register 4 (cm33_nvic_itns4)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "CORE0 Miscellaneous CM33 settings (cm33_misc_ctrl)", + "description": "TrustZone register - CORE0 Miscellaneous CM33 settings (cm33_misc_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "CORE0 CM33 Non-secure Access Control Register (cm33_nsacr)", + "description": "TrustZone register - CORE0 CM33 Non-secure Access Control Register (cm33_nsacr)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "CORE0 CM33 Coprocessor Power Control Register (cm33_cppwr)", + "description": "TrustZone register - CORE0 CM33 Coprocessor Power Control Register (cm33_cppwr)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "CORE0 CM33 Coprocessor Access Control Register (cm33_cpacr)", + "description": "TrustZone register - CORE0 CM33 Coprocessor Access Control Register (cm33_cpacr)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "CORE0 MPU Control Register.*/(cm33_mpu_ctrl)", + "description": "TrustZone register - CORE0 MPU Control Register.*/(cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "CORE0 MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - CORE0 MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "CORE0 MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - CORE0 MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "CORE0 MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - CORE0 MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "CORE0 MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - CORE0 MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "CORE0 MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - CORE0 MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "CORE0 MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - CORE0 MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "CORE0 MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - CORE0 MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "CORE0 MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - CORE0 MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "CORE0 MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - CORE0 MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "CORE0 MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - CORE0 MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "CORE0 MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - CORE0 MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "CORE0 MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - CORE0 MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "CORE0 MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - CORE0 MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "CORE0 MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - CORE0 MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "CORE0 MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - CORE0 MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "CORE0 MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - CORE0 MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "CORE0 MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - CORE0 MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "CORE0 MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - CORE0 MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Control Register.*/(cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "CORE0 Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - CORE0 Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "CORE0 SAU Control Register.*/(cm33_sau_ctrl)", + "description": "TrustZone register - CORE0 SAU Control Register.*/(cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "CORE0 SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - CORE0 SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "CORE0 SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - CORE0 SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "CORE0 SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - CORE0 SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "CORE0 SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - CORE0 SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "CORE0 SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - CORE0 SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "CORE0 SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - CORE0 SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "CORE0 SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - CORE0 SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "CORE0 SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - CORE0 SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "CORE0 SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - CORE0 SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "CORE0 SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - CORE0 SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "CORE0 SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - CORE0 SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "CORE0 SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - CORE0 SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "CORE0 SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - CORE0 SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "CORE0 SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - CORE0 SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "CORE0 SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - CORE0 SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "CORE0 SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - CORE0 SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "COMPUTE ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - COMPUTE ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "COMPUTE ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - COMPUTE ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "COMPUTE ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - COMPUTE ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "COMPUTE ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - COMPUTE ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "COMPUTE XSPI1 Region 0 Memory Rule Register 0 (xspi1_region0_mem_rule0)", + "description": "TrustZone register - COMPUTE XSPI1 Region 0 Memory Rule Register 0 (xspi1_region0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "COMPUTE XSPI1 Region 0 Memory Rule Register 1 (xspi1_region0_mem_rule1)", + "description": "TrustZone register - COMPUTE XSPI1 Region 0 Memory Rule Register 1 (xspi1_region0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "COMPUTE XSPI1 Region 0 Memory Rule Register 2 (xspi1_region0_mem_rule2)", + "description": "TrustZone register - COMPUTE XSPI1 Region 0 Memory Rule Register 2 (xspi1_region0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "COMPUTE XSPI1 Region 0 Memory Rule Register 3 (xspi1_region0_mem_rule3)", + "description": "TrustZone register - COMPUTE XSPI1 Region 0 Memory Rule Register 3 (xspi1_region0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "COMPUTE XSPI1 Region 1 Memory Rule Register 0 (xspi1_region1_mem_rule0)", + "description": "TrustZone register - COMPUTE XSPI1 Region 1 Memory Rule Register 0 (xspi1_region1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "COMPUTE XSPI1 Region 2 Memory Rule Register 0 (xspi1_region2_mem_rule0)", + "description": "TrustZone register - COMPUTE XSPI1 Region 2 Memory Rule Register 0 (xspi1_region2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "COMPUTE XSPI1 Region 3 Memory Rule Register 0 (xspi1_region3_mem_rule0)", + "description": "TrustZone register - COMPUTE XSPI1 Region 3 Memory Rule Register 0 (xspi1_region3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "COMPUTE XSPI1 Region 4 Memory Rule Register 0 (xspi1_region4_mem_rule0)", + "description": "TrustZone register - COMPUTE XSPI1 Region 4 Memory Rule Register 0 (xspi1_region4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "COMPUTE XSPI0 Region 0 Memory Rule Register 0 (xspi0_region0_mem_rule0)", + "description": "TrustZone register - COMPUTE XSPI0 Region 0 Memory Rule Register 0 (xspi0_region0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "COMPUTE XSPI0 Region 0 Memory Rule Register 1 (xspi0_region0_mem_rule1)", + "description": "TrustZone register - COMPUTE XSPI0 Region 0 Memory Rule Register 1 (xspi0_region0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "COMPUTE XSPI0 Region 0 Memory Rule Register 2 (xspi0_region0_mem_rule2)", + "description": "TrustZone register - COMPUTE XSPI0 Region 0 Memory Rule Register 2 (xspi0_region0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "COMPUTE XSPI0 Region 0 Memory Rule Register 3 (xspi0_region0_mem_rule3)", + "description": "TrustZone register - COMPUTE XSPI0 Region 0 Memory Rule Register 3 (xspi0_region0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "COMPUTE XSPI0 Region 1 Memory Rule Register 0 (xspi0_region1_mem_rule0)", + "description": "TrustZone register - COMPUTE XSPI0 Region 1 Memory Rule Register 0 (xspi0_region1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "COMPUTE XSPI0 Region 2 Memory Rule Register 0 (xspi0_region2_mem_rule0)", + "description": "TrustZone register - COMPUTE XSPI0 Region 2 Memory Rule Register 0 (xspi0_region2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "COMPUTE XSPI0 Region 3 Memory Rule Register 0 (xspi0_region3_mem_rule0)", + "description": "TrustZone register - COMPUTE XSPI0 Region 3 Memory Rule Register 0 (xspi0_region3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "COMPUTE XSPI0 Region 4 Memory Rule Register 0 (xspi0_region4_mem_rule0)", + "description": "TrustZone register - COMPUTE XSPI0 Region 4 Memory Rule Register 0 (xspi0_region4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "COMPUTE PKC RAM Memory Rule Register 0 (pkc_ram_rule0)", + "description": "TrustZone register - COMPUTE PKC RAM Memory Rule Register 0 (pkc_ram_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "COMPUTE RAM0 Memory Rule Register 0 (sram_0_rule0)", + "description": "TrustZone register - COMPUTE RAM0 Memory Rule Register 0 (sram_0_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "COMPUTE RAM0 Memory Rule Register 1 (sram_0_rule1)", + "description": "TrustZone register - COMPUTE RAM0 Memory Rule Register 1 (sram_0_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "COMPUTE RAM0 Memory Rule Register 2 (sram_0_rule2)", + "description": "TrustZone register - COMPUTE RAM0 Memory Rule Register 2 (sram_0_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "COMPUTE RAM0 Memory Rule Register 3 (sram_0_rule3)", + "description": "TrustZone register - COMPUTE RAM0 Memory Rule Register 3 (sram_0_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "COMPUTE RAM1 Memory Rule Register 0 (sram_1_rule0)", + "description": "TrustZone register - COMPUTE RAM1 Memory Rule Register 0 (sram_1_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "COMPUTE RAM1 Memory Rule Register 1 (sram_1_rule1)", + "description": "TrustZone register - COMPUTE RAM1 Memory Rule Register 1 (sram_1_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "COMPUTE RAM1 Memory Rule Register 2 (sram_1_rule2)", + "description": "TrustZone register - COMPUTE RAM1 Memory Rule Register 2 (sram_1_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "COMPUTE RAM1 Memory Rule Register 3 (sram_1_rule3)", + "description": "TrustZone register - COMPUTE RAM1 Memory Rule Register 3 (sram_1_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "COMPUTE RAM2 Memory Rule Register 0 (sram_2_rule0)", + "description": "TrustZone register - COMPUTE RAM2 Memory Rule Register 0 (sram_2_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "COMPUTE RAM2 Memory Rule Register 1 (sram_2_rule1)", + "description": "TrustZone register - COMPUTE RAM2 Memory Rule Register 1 (sram_2_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "COMPUTE RAM2 Memory Rule Register 2 (sram_2_rule2)", + "description": "TrustZone register - COMPUTE RAM2 Memory Rule Register 2 (sram_2_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "COMPUTE RAM2 Memory Rule Register 3 (sram_2_rule3)", + "description": "TrustZone register - COMPUTE RAM2 Memory Rule Register 3 (sram_2_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "COMPUTE RAM3 Memory Rule Register 0 (sram_3_rule0)", + "description": "TrustZone register - COMPUTE RAM3 Memory Rule Register 0 (sram_3_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "COMPUTE RAM3 Memory Rule Register 1 (sram_3_rule1)", + "description": "TrustZone register - COMPUTE RAM3 Memory Rule Register 1 (sram_3_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "COMPUTE RAM3 Memory Rule Register 2 (sram_3_rule2)", + "description": "TrustZone register - COMPUTE RAM3 Memory Rule Register 2 (sram_3_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "COMPUTE RAM3 Memory Rule Register 3 (sram_3_rule3)", + "description": "TrustZone register - COMPUTE RAM3 Memory Rule Register 3 (sram_3_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "COMPUTE RAM4 Memory Rule Register 0 (sram_4_rule0)", + "description": "TrustZone register - COMPUTE RAM4 Memory Rule Register 0 (sram_4_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "COMPUTE RAM4 Memory Rule Register 1 (sram_4_rule1)", + "description": "TrustZone register - COMPUTE RAM4 Memory Rule Register 1 (sram_4_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "COMPUTE RAM4 Memory Rule Register 2 (sram_4_rule2)", + "description": "TrustZone register - COMPUTE RAM4 Memory Rule Register 2 (sram_4_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "COMPUTE RAM4 Memory Rule Register 3 (sram_4_rule3)", + "description": "TrustZone register - COMPUTE RAM4 Memory Rule Register 3 (sram_4_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "COMPUTE RAM5 Memory Rule Register 0 (sram_5_rule0)", + "description": "TrustZone register - COMPUTE RAM5 Memory Rule Register 0 (sram_5_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "COMPUTE RAM5 Memory Rule Register 1 (sram_5_rule1)", + "description": "TrustZone register - COMPUTE RAM5 Memory Rule Register 1 (sram_5_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "COMPUTE RAM5 Memory Rule Register 2 (sram_5_rule2)", + "description": "TrustZone register - COMPUTE RAM5 Memory Rule Register 2 (sram_5_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "COMPUTE RAM5 Memory Rule Register 3 (sram_5_rule3)", + "description": "TrustZone register - COMPUTE RAM5 Memory Rule Register 3 (sram_5_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "COMPUTE RAM6 Memory Rule Register 0 (sram_6_rule0)", + "description": "TrustZone register - COMPUTE RAM6 Memory Rule Register 0 (sram_6_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "COMPUTE RAM6 Memory Rule Register 1 (sram_6_rule1)", + "description": "TrustZone register - COMPUTE RAM6 Memory Rule Register 1 (sram_6_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "COMPUTE RAM6 Memory Rule Register 2 (sram_6_rule2)", + "description": "TrustZone register - COMPUTE RAM6 Memory Rule Register 2 (sram_6_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "COMPUTE RAM6 Memory Rule Register 3 (sram_6_rule3)", + "description": "TrustZone register - COMPUTE RAM6 Memory Rule Register 3 (sram_6_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "COMPUTE RAM7 Memory Rule Register 0 (sram_7_rule0)", + "description": "TrustZone register - COMPUTE RAM7 Memory Rule Register 0 (sram_7_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "COMPUTE RAM7 Memory Rule Register 1 (sram_7_rule1)", + "description": "TrustZone register - COMPUTE RAM7 Memory Rule Register 1 (sram_7_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "COMPUTE RAM7 Memory Rule Register 2 (sram_7_rule2)", + "description": "TrustZone register - COMPUTE RAM7 Memory Rule Register 2 (sram_7_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "COMPUTE RAM7 Memory Rule Register 3 (sram_7_rule3)", + "description": "TrustZone register - COMPUTE RAM7 Memory Rule Register 3 (sram_7_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "COMPUTE RAM8 Memory Rule Register 0 (sram_8_rule0)", + "description": "TrustZone register - COMPUTE RAM8 Memory Rule Register 0 (sram_8_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "COMPUTE RAM8 Memory Rule Register 1 (sram_8_rule1)", + "description": "TrustZone register - COMPUTE RAM8 Memory Rule Register 1 (sram_8_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "COMPUTE RAM8 Memory Rule Register 2 (sram_8_rule2)", + "description": "TrustZone register - COMPUTE RAM8 Memory Rule Register 2 (sram_8_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "COMPUTE RAM8 Memory Rule Register 3 (sram_8_rule3)", + "description": "TrustZone register - COMPUTE RAM8 Memory Rule Register 3 (sram_8_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "COMPUTE RAM9 Memory Rule Register 0 (sram_9_rule0)", + "description": "TrustZone register - COMPUTE RAM9 Memory Rule Register 0 (sram_9_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "COMPUTE RAM9 Memory Rule Register 1 (sram_9_rule1)", + "description": "TrustZone register - COMPUTE RAM9 Memory Rule Register 1 (sram_9_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "COMPUTE RAM9 Memory Rule Register 2 (sram_9_rule2)", + "description": "TrustZone register - COMPUTE RAM9 Memory Rule Register 2 (sram_9_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "COMPUTE RAM9 Memory Rule Register 3 (sram_9_rule3)", + "description": "TrustZone register - COMPUTE RAM9 Memory Rule Register 3 (sram_9_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "COMPUTE RAM10 Memory Rule Register 0 (sram_10_rule0)", + "description": "TrustZone register - COMPUTE RAM10 Memory Rule Register 0 (sram_10_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "COMPUTE RAM10 Memory Rule Register 1 (sram_10_rule1)", + "description": "TrustZone register - COMPUTE RAM10 Memory Rule Register 1 (sram_10_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "COMPUTE RAM10 Memory Rule Register 2 (sram_10_rule2)", + "description": "TrustZone register - COMPUTE RAM10 Memory Rule Register 2 (sram_10_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "COMPUTE RAM10 Memory Rule Register 3 (sram_10_rule3)", + "description": "TrustZone register - COMPUTE RAM10 Memory Rule Register 3 (sram_10_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "COMPUTE RAM11 Memory Rule Register 0 (sram_11_rule0)", + "description": "TrustZone register - COMPUTE RAM11 Memory Rule Register 0 (sram_11_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "COMPUTE RAM11 Memory Rule Register 1 (sram_11_rule1)", + "description": "TrustZone register - COMPUTE RAM11 Memory Rule Register 1 (sram_11_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "COMPUTE RAM11 Memory Rule Register 2 (sram_11_rule2)", + "description": "TrustZone register - COMPUTE RAM11 Memory Rule Register 2 (sram_11_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "COMPUTE RAM11 Memory Rule Register 3 (sram_11_rule3)", + "description": "TrustZone register - COMPUTE RAM11 Memory Rule Register 3 (sram_11_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "COMPUTE RAM12 Memory Rule Register 0 (sram_12_rule0)", + "description": "TrustZone register - COMPUTE RAM12 Memory Rule Register 0 (sram_12_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "COMPUTE RAM12 Memory Rule Register 1 (sram_12_rule1)", + "description": "TrustZone register - COMPUTE RAM12 Memory Rule Register 1 (sram_12_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "COMPUTE RAM12 Memory Rule Register 2 (sram_12_rule2)", + "description": "TrustZone register - COMPUTE RAM12 Memory Rule Register 2 (sram_12_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "COMPUTE RAM12 Memory Rule Register 3 (sram_12_rule3)", + "description": "TrustZone register - COMPUTE RAM12 Memory Rule Register 3 (sram_12_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "COMPUTE RAM13 Memory Rule Register 0 (sram_13_rule0)", + "description": "TrustZone register - COMPUTE RAM13 Memory Rule Register 0 (sram_13_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "COMPUTE RAM13 Memory Rule Register 1 (sram_13_rule1)", + "description": "TrustZone register - COMPUTE RAM13 Memory Rule Register 1 (sram_13_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "COMPUTE RAM13 Memory Rule Register 2 (sram_13_rule2)", + "description": "TrustZone register - COMPUTE RAM13 Memory Rule Register 2 (sram_13_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "COMPUTE RAM13 Memory Rule Register 3 (sram_13_rule3)", + "description": "TrustZone register - COMPUTE RAM13 Memory Rule Register 3 (sram_13_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "COMPUTE RAM14 Memory Rule Register 0 (sram_14_rule0)", + "description": "TrustZone register - COMPUTE RAM14 Memory Rule Register 0 (sram_14_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "COMPUTE RAM14 Memory Rule Register 1 (sram_14_rule1)", + "description": "TrustZone register - COMPUTE RAM14 Memory Rule Register 1 (sram_14_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "COMPUTE RAM14 Memory Rule Register 2 (sram_14_rule2)", + "description": "TrustZone register - COMPUTE RAM14 Memory Rule Register 2 (sram_14_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "COMPUTE RAM14 Memory Rule Register 3 (sram_14_rule3)", + "description": "TrustZone register - COMPUTE RAM14 Memory Rule Register 3 (sram_14_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "COMPUTE RAM15 Memory Rule Register 0 (sram_15_rule0)", + "description": "TrustZone register - COMPUTE RAM15 Memory Rule Register 0 (sram_15_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "COMPUTE RAM15 Memory Rule Register 1 (sram_15_rule1)", + "description": "TrustZone register - COMPUTE RAM15 Memory Rule Register 1 (sram_15_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "COMPUTE RAM15 Memory Rule Register 2 (sram_15_rule2)", + "description": "TrustZone register - COMPUTE RAM15 Memory Rule Register 2 (sram_15_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "COMPUTE RAM15 Memory Rule Register 3 (sram_15_rule3)", + "description": "TrustZone register - COMPUTE RAM15 Memory Rule Register 3 (sram_15_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "COMPUTE RAM16 Memory Rule Register 0 (sram_16_rule0)", + "description": "TrustZone register - COMPUTE RAM16 Memory Rule Register 0 (sram_16_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "COMPUTE RAM16 Memory Rule Register 1 (sram_16_rule1)", + "description": "TrustZone register - COMPUTE RAM16 Memory Rule Register 1 (sram_16_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "COMPUTE RAM16 Memory Rule Register 2 (sram_16_rule2)", + "description": "TrustZone register - COMPUTE RAM16 Memory Rule Register 2 (sram_16_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "COMPUTE RAM16 Memory Rule Register 3 (sram_16_rule3)", + "description": "TrustZone register - COMPUTE RAM16 Memory Rule Register 3 (sram_16_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "COMPUTE RAM17 Memory Rule Register 0 (sram_17_rule0)", + "description": "TrustZone register - COMPUTE RAM17 Memory Rule Register 0 (sram_17_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "COMPUTE RAM17 Memory Rule Register 1 (sram_17_rule1)", + "description": "TrustZone register - COMPUTE RAM17 Memory Rule Register 1 (sram_17_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "COMPUTE RAM17 Memory Rule Register 2 (sram_17_rule2)", + "description": "TrustZone register - COMPUTE RAM17 Memory Rule Register 2 (sram_17_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "COMPUTE RAM17 Memory Rule Register 3 (sram_17_rule3)", + "description": "TrustZone register - COMPUTE RAM17 Memory Rule Register 3 (sram_17_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "COMPUTE RAM18 Memory Rule Register 0 (sram_18_rule0)", + "description": "TrustZone register - COMPUTE RAM18 Memory Rule Register 0 (sram_18_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "COMPUTE RAM18 Memory Rule Register 1 (sram_18_rule1)", + "description": "TrustZone register - COMPUTE RAM18 Memory Rule Register 1 (sram_18_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "COMPUTE RAM18 Memory Rule Register 2 (sram_18_rule2)", + "description": "TrustZone register - COMPUTE RAM18 Memory Rule Register 2 (sram_18_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "COMPUTE RAM18 Memory Rule Register 3 (sram_18_rule3)", + "description": "TrustZone register - COMPUTE RAM18 Memory Rule Register 3 (sram_18_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "COMPUTE RAM19 Memory Rule Register 0 (sram_19_rule0)", + "description": "TrustZone register - COMPUTE RAM19 Memory Rule Register 0 (sram_19_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "COMPUTE RAM19 Memory Rule Register 1 (sram_19_rule1)", + "description": "TrustZone register - COMPUTE RAM19 Memory Rule Register 1 (sram_19_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "COMPUTE RAM19 Memory Rule Register 2 (sram_19_rule2)", + "description": "TrustZone register - COMPUTE RAM19 Memory Rule Register 2 (sram_19_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "COMPUTE RAM19 Memory Rule Register 3 (sram_19_rule3)", + "description": "TrustZone register - COMPUTE RAM19 Memory Rule Register 3 (sram_19_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "COMPUTE RAM20 Memory Rule Register 0 (sram_20_rule0)", + "description": "TrustZone register - COMPUTE RAM20 Memory Rule Register 0 (sram_20_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "COMPUTE RAM20 Memory Rule Register 1 (sram_20_rule1)", + "description": "TrustZone register - COMPUTE RAM20 Memory Rule Register 1 (sram_20_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "COMPUTE RAM20 Memory Rule Register 2 (sram_20_rule2)", + "description": "TrustZone register - COMPUTE RAM20 Memory Rule Register 2 (sram_20_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "COMPUTE RAM20 Memory Rule Register 3 (sram_20_rule3)", + "description": "TrustZone register - COMPUTE RAM20 Memory Rule Register 3 (sram_20_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "COMPUTE RAM21 Memory Rule Register 0 (sram_21_rule0)", + "description": "TrustZone register - COMPUTE RAM21 Memory Rule Register 0 (sram_21_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "COMPUTE RAM21 Memory Rule Register 1 (sram_21_rule1)", + "description": "TrustZone register - COMPUTE RAM21 Memory Rule Register 1 (sram_21_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "COMPUTE RAM21 Memory Rule Register 2 (sram_21_rule2)", + "description": "TrustZone register - COMPUTE RAM21 Memory Rule Register 2 (sram_21_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "COMPUTE RAM21 Memory Rule Register 3 (sram_21_rule3)", + "description": "TrustZone register - COMPUTE RAM21 Memory Rule Register 3 (sram_21_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "COMPUTE RAM22 Memory Rule Register 0 (sram_22_rule0)", + "description": "TrustZone register - COMPUTE RAM22 Memory Rule Register 0 (sram_22_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "COMPUTE RAM22 Memory Rule Register 1 (sram_22_rule1)", + "description": "TrustZone register - COMPUTE RAM22 Memory Rule Register 1 (sram_22_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "COMPUTE RAM22 Memory Rule Register 2 (sram_22_rule2)", + "description": "TrustZone register - COMPUTE RAM22 Memory Rule Register 2 (sram_22_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "COMPUTE RAM22 Memory Rule Register 3 (sram_22_rule3)", + "description": "TrustZone register - COMPUTE RAM22 Memory Rule Register 3 (sram_22_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "COMPUTE RAM23 Memory Rule Register 0 (sram_23_rule0)", + "description": "TrustZone register - COMPUTE RAM23 Memory Rule Register 0 (sram_23_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "COMPUTE RAM23 Memory Rule Register 1 (sram_23_rule1)", + "description": "TrustZone register - COMPUTE RAM23 Memory Rule Register 1 (sram_23_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "COMPUTE RAM23 Memory Rule Register 2 (sram_23_rule2)", + "description": "TrustZone register - COMPUTE RAM23 Memory Rule Register 2 (sram_23_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "COMPUTE RAM23 Memory Rule Register 3 (sram_23_rule3)", + "description": "TrustZone register - COMPUTE RAM23 Memory Rule Register 3 (sram_23_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "COMPUTE RAM24 Memory Rule Register 0 (sram_24_rule0)", + "description": "TrustZone register - COMPUTE RAM24 Memory Rule Register 0 (sram_24_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "COMPUTE RAM24 Memory Rule Register 1 (sram_24_rule1)", + "description": "TrustZone register - COMPUTE RAM24 Memory Rule Register 1 (sram_24_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "COMPUTE RAM24 Memory Rule Register 2 (sram_24_rule2)", + "description": "TrustZone register - COMPUTE RAM24 Memory Rule Register 2 (sram_24_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "COMPUTE RAM24 Memory Rule Register 3 (sram_24_rule3)", + "description": "TrustZone register - COMPUTE RAM24 Memory Rule Register 3 (sram_24_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "COMPUTE RAM25 Memory Rule Register 0 (sram_25_rule0)", + "description": "TrustZone register - COMPUTE RAM25 Memory Rule Register 0 (sram_25_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "COMPUTE RAM25 Memory Rule Register 1 (sram_25_rule1)", + "description": "TrustZone register - COMPUTE RAM25 Memory Rule Register 1 (sram_25_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "COMPUTE RAM25 Memory Rule Register 2 (sram_25_rule2)", + "description": "TrustZone register - COMPUTE RAM25 Memory Rule Register 2 (sram_25_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "COMPUTE RAM25 Memory Rule Register 3 (sram_25_rule3)", + "description": "TrustZone register - COMPUTE RAM25 Memory Rule Register 3 (sram_25_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field300", + "offset_int": "0x300", + "reg_width": 32, + "name": "COMPUTE RAM26 Memory Rule Register 0 (sram_26_rule0)", + "description": "TrustZone register - COMPUTE RAM26 Memory Rule Register 0 (sram_26_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field304", + "offset_int": "0x304", + "reg_width": 32, + "name": "COMPUTE RAM26 Memory Rule Register 1 (sram_26_rule1)", + "description": "TrustZone register - COMPUTE RAM26 Memory Rule Register 1 (sram_26_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field308", + "offset_int": "0x308", + "reg_width": 32, + "name": "COMPUTE RAM26 Memory Rule Register 2 (sram_26_rule2)", + "description": "TrustZone register - COMPUTE RAM26 Memory Rule Register 2 (sram_26_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field30C", + "offset_int": "0x30c", + "reg_width": 32, + "name": "COMPUTE RAM26 Memory Rule Register 3 (sram_26_rule3)", + "description": "TrustZone register - COMPUTE RAM26 Memory Rule Register 3 (sram_26_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field310", + "offset_int": "0x310", + "reg_width": 32, + "name": "COMPUTE RAM27 Memory Rule Register 0 (sram_27_rule0)", + "description": "TrustZone register - COMPUTE RAM27 Memory Rule Register 0 (sram_27_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field314", + "offset_int": "0x314", + "reg_width": 32, + "name": "COMPUTE RAM27 Memory Rule Register 1 (sram_27_rule1)", + "description": "TrustZone register - COMPUTE RAM27 Memory Rule Register 1 (sram_27_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field318", + "offset_int": "0x318", + "reg_width": 32, + "name": "COMPUTE RAM27 Memory Rule Register 2 (sram_27_rule2)", + "description": "TrustZone register - COMPUTE RAM27 Memory Rule Register 2 (sram_27_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field31C", + "offset_int": "0x31c", + "reg_width": 32, + "name": "COMPUTE RAM27 Memory Rule Register 3 (sram_27_rule3)", + "description": "TrustZone register - COMPUTE RAM27 Memory Rule Register 3 (sram_27_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field320", + "offset_int": "0x320", + "reg_width": 32, + "name": "COMPUTE RAM28 Memory Rule Register 0 (sram_28_rule0)", + "description": "TrustZone register - COMPUTE RAM28 Memory Rule Register 0 (sram_28_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field324", + "offset_int": "0x324", + "reg_width": 32, + "name": "COMPUTE RAM28 Memory Rule Register 1 (sram_28_rule1)", + "description": "TrustZone register - COMPUTE RAM28 Memory Rule Register 1 (sram_28_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field328", + "offset_int": "0x328", + "reg_width": 32, + "name": "COMPUTE RAM28 Memory Rule Register 2 (sram_28_rule2)", + "description": "TrustZone register - COMPUTE RAM28 Memory Rule Register 2 (sram_28_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field32C", + "offset_int": "0x32c", + "reg_width": 32, + "name": "COMPUTE RAM28 Memory Rule Register 3 (sram_28_rule3)", + "description": "TrustZone register - COMPUTE RAM28 Memory Rule Register 3 (sram_28_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field330", + "offset_int": "0x330", + "reg_width": 32, + "name": "COMPUTE RAM29 Memory Rule Register 0 (sram_29_rule0)", + "description": "TrustZone register - COMPUTE RAM29 Memory Rule Register 0 (sram_29_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field334", + "offset_int": "0x334", + "reg_width": 32, + "name": "COMPUTE RAM29 Memory Rule Register 1 (sram_29_rule1)", + "description": "TrustZone register - COMPUTE RAM29 Memory Rule Register 1 (sram_29_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field338", + "offset_int": "0x338", + "reg_width": 32, + "name": "COMPUTE RAM29 Memory Rule Register 2 (sram_29_rule2)", + "description": "TrustZone register - COMPUTE RAM29 Memory Rule Register 2 (sram_29_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field33C", + "offset_int": "0x33c", + "reg_width": 32, + "name": "COMPUTE RAM29 Memory Rule Register 3 (sram_29_rule3)", + "description": "TrustZone register - COMPUTE RAM29 Memory Rule Register 3 (sram_29_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field340", + "offset_int": "0x340", + "reg_width": 32, + "name": "COMPUTE HIFI4 TCM Memory Rule Register 0 (hifi4_tcm_rule0)", + "description": "TrustZone register - COMPUTE HIFI4 TCM Memory Rule Register 0 (hifi4_tcm_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field344", + "offset_int": "0x344", + "reg_width": 32, + "name": "COMPUTE HIFI4 TCM Memory Rule Register 1 (hifi4_tcm_rule1)", + "description": "TrustZone register - COMPUTE HIFI4 TCM Memory Rule Register 1 (hifi4_tcm_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field348", + "offset_int": "0x348", + "reg_width": 32, + "name": "COMPUTE HIFI4 TCM Memory Rule Register 2 (hifi4_tcm_rule2)", + "description": "TrustZone register - COMPUTE HIFI4 TCM Memory Rule Register 2 (hifi4_tcm_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field34C", + "offset_int": "0x34c", + "reg_width": 32, + "name": "COMPUTE HIFI4 TCM Memory Rule Register 3 (hifi4_tcm_rule3)", + "description": "TrustZone register - COMPUTE HIFI4 TCM Memory Rule Register 3 (hifi4_tcm_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field350", + "offset_int": "0x350", + "reg_width": 32, + "name": "COMPUTE COMPUTE domain to MEDIA domain Access Rule Register (compute2media_rule)", + "description": "TrustZone register - COMPUTE COMPUTE domain to MEDIA domain Access Rule Register (compute2media_rule)", + "default_value_int": "0x0" + }, + { + "id": "field354", + "offset_int": "0x354", + "reg_width": 32, + "name": "COMPUTE COMPUTE Pbus domain Rule Register (mbus2pbus_rule)", + "description": "TrustZone register - COMPUTE COMPUTE Pbus domain Rule Register (mbus2pbus_rule)", + "default_value_int": "0x0" + }, + { + "id": "field358", + "offset_int": "0x358", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 0 Slaves Rule Register 0 (ahb_peripheral0_slave_rule0)", + "description": "TrustZone register - COMPUTE AHB Peripheral 0 Slaves Rule Register 0 (ahb_peripheral0_slave_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field35C", + "offset_int": "0x35c", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 0 (ahb_peripheral0_slave_hsgpio_rule0)", + "description": "TrustZone register - COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 0 (ahb_peripheral0_slave_hsgpio_rule0)", + "default_value_int": "0x33" + }, + { + "id": "field360", + "offset_int": "0x360", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 1 (ahb_peripheral0_slave_hsgpio_rule1)", + "description": "TrustZone register - COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 1 (ahb_peripheral0_slave_hsgpio_rule1)", + "default_value_int": "0x33" + }, + { + "id": "field364", + "offset_int": "0x364", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 2 (ahb_peripheral0_slave_hsgpio_rule2)", + "description": "TrustZone register - COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 2 (ahb_peripheral0_slave_hsgpio_rule2)", + "default_value_int": "0x33" + }, + { + "id": "field368", + "offset_int": "0x368", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 3 (ahb_peripheral0_slave_hsgpio_rule3)", + "description": "TrustZone register - COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 3 (ahb_peripheral0_slave_hsgpio_rule3)", + "default_value_int": "0x33" + }, + { + "id": "field36C", + "offset_int": "0x36c", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 4 (ahb_peripheral0_slave_hsgpio_rule4)", + "description": "TrustZone register - COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 4 (ahb_peripheral0_slave_hsgpio_rule4)", + "default_value_int": "0x33" + }, + { + "id": "field370", + "offset_int": "0x370", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 5 (ahb_peripheral0_slave_hsgpio_rule5)", + "description": "TrustZone register - COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 5 (ahb_peripheral0_slave_hsgpio_rule5)", + "default_value_int": "0x33" + }, + { + "id": "field374", + "offset_int": "0x374", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 6 (ahb_peripheral0_slave_hsgpio_rule6)", + "description": "TrustZone register - COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 6 (ahb_peripheral0_slave_hsgpio_rule6)", + "default_value_int": "0x33" + }, + { + "id": "field378", + "offset_int": "0x378", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 7 (ahb_peripheral0_slave_hsgpio_rule7)", + "description": "TrustZone register - COMPUTE AHB Peripheral 0 Slaves HSGPIO Rule Register 7 (ahb_peripheral0_slave_hsgpio_rule7)", + "default_value_int": "0x33" + }, + { + "id": "field37C", + "offset_int": "0x37c", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 1 Slaves Rule Register (ahb_peripheral1_slave_rule)", + "description": "TrustZone register - COMPUTE AHB Peripheral 1 Slaves Rule Register (ahb_peripheral1_slave_rule)", + "default_value_int": "0x33333333" + }, + { + "id": "field380", + "offset_int": "0x380", + "reg_width": 32, + "name": "COMPUTE AIPS1 Bridge Group 0 Memory Rule Register 0 (aips1_bridge_group0_mem_rule0)", + "description": "TrustZone register - COMPUTE AIPS1 Bridge Group 0 Memory Rule Register 0 (aips1_bridge_group0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field384", + "offset_int": "0x384", + "reg_width": 32, + "name": "COMPUTE AIPS1 Bridge Group 0 Memory Rule Register 1 (aips1_bridge_group0_mem_rule1)", + "description": "TrustZone register - COMPUTE AIPS1 Bridge Group 0 Memory Rule Register 1 (aips1_bridge_group0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field388", + "offset_int": "0x388", + "reg_width": 32, + "name": "COMPUTE AIPS1 Bridge Group 0 Memory Rule Register 2 (aips1_bridge_group0_mem_rule2)", + "description": "TrustZone register - COMPUTE AIPS1 Bridge Group 0 Memory Rule Register 2 (aips1_bridge_group0_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field38C", + "offset_int": "0x38c", + "reg_width": 32, + "name": "COMPUTE AIPS1 Bridge Group 1 Memory Rule Register 0 (aips1_bridge_group1_mem_rule0)", + "description": "TrustZone register - COMPUTE AIPS1 Bridge Group 1 Memory Rule Register 0 (aips1_bridge_group1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field390", + "offset_int": "0x390", + "reg_width": 32, + "name": "COMPUTE AIPS1 Bridge Group 1 Memory Rule Register 1 (aips1_bridge_group1_mem_rule1)", + "description": "TrustZone register - COMPUTE AIPS1 Bridge Group 1 Memory Rule Register 1 (aips1_bridge_group1_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field394", + "offset_int": "0x394", + "reg_width": 32, + "name": "COMPUTE AHB Secure Control Peripheral Rule 0 (ahb_secure_ctrl_peripheral_rule0)", + "description": "TrustZone register - COMPUTE AHB Secure Control Peripheral Rule 0 (ahb_secure_ctrl_peripheral_rule0)", + "default_value_int": "0x3333" + }, + { + "id": "field398", + "offset_int": "0x398", + "reg_width": 32, + "name": "COMPUTE AHB Peripheral 2 Slaves Rule Register 0 (ahb_peripheral2_slave_rule0)", + "description": "TrustZone register - COMPUTE AHB Peripheral 2 Slaves Rule Register 0 (ahb_peripheral2_slave_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field39C", + "offset_int": "0x39c", + "reg_width": 32, + "name": "COMPUTE AIPS0 Bridge Group 0 Memory Rule Register 0 (aips0_bridge_group0_mem_rule0)", + "description": "TrustZone register - COMPUTE AIPS0 Bridge Group 0 Memory Rule Register 0 (aips0_bridge_group0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field3A0", + "offset_int": "0x3a0", + "reg_width": 32, + "name": "COMPUTE AIPS0 Bridge Group 0 Memory Rule Register 1 (aips0_bridge_group0_mem_rule1)", + "description": "TrustZone register - COMPUTE AIPS0 Bridge Group 0 Memory Rule Register 1 (aips0_bridge_group0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field3A4", + "offset_int": "0x3a4", + "reg_width": 32, + "name": "COMPUTE AIPS0 Bridge Group 1 Memory Rule Register 0 (aips0_bridge_group1_mem_rule0)", + "description": "TrustZone register - COMPUTE AIPS0 Bridge Group 1 Memory Rule Register 0 (aips0_bridge_group1_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field3A8", + "offset_int": "0x3a8", + "reg_width": 32, + "name": "COMPUTE APB Bridge Peripheral 0 Rule 0 (apb_slave_group0_rule0)", + "description": "TrustZone register - COMPUTE APB Bridge Peripheral 0 Rule 0 (apb_slave_group0_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field3AC", + "offset_int": "0x3ac", + "reg_width": 32, + "name": "COMPUTE APB Bridge Peripheral 0 Rule 1 (apb_slave_group0_rule1)", + "description": "TrustZone register - COMPUTE APB Bridge Peripheral 0 Rule 1 (apb_slave_group0_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field3B0", + "offset_int": "0x3b0", + "reg_width": 32, + "name": "COMPUTE APB Bridge Peripheral 0 Rule 2 (apb_slave_group0_rule2)", + "description": "TrustZone register - COMPUTE APB Bridge Peripheral 0 Rule 2 (apb_slave_group0_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field3B4", + "offset_int": "0x3b4", + "reg_width": 32, + "name": "COMPUTE APB Bridge Peripheral 0 Rule 3 (apb_slave_group0_rule3)", + "description": "TrustZone register - COMPUTE APB Bridge Peripheral 0 Rule 3 (apb_slave_group0_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field3B8", + "offset_int": "0x3b8", + "reg_width": 32, + "name": "COMPUTE APB Bridge Peripheral 1 Rule 0 (apb_slave_group1_rule0)", + "description": "TrustZone register - COMPUTE APB Bridge Peripheral 1 Rule 0 (apb_slave_group1_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field3BC", + "offset_int": "0x3bc", + "reg_width": 32, + "name": "COMPUTE APB Bridge Peripheral 1 Rule 1 (apb_slave_group1_rule1)", + "description": "TrustZone register - COMPUTE APB Bridge Peripheral 1 Rule 1 (apb_slave_group1_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field3C0", + "offset_int": "0x3c0", + "reg_width": 32, + "name": "COMPUTE APB Bridge Peripheral 1 Rule 2 (apb_slave_group1_rule2)", + "description": "TrustZone register - COMPUTE APB Bridge Peripheral 1 Rule 2 (apb_slave_group1_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field3C4", + "offset_int": "0x3c4", + "reg_width": 32, + "name": "COMPUTE APB Bridge Peripheral 1 Rule 3 (apb_slave_group1_rule3)", + "description": "TrustZone register - COMPUTE APB Bridge Peripheral 1 Rule 3 (apb_slave_group1_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field3C8", + "offset_int": "0x3c8", + "reg_width": 32, + "name": "COMPUTE Shared APB Bridge Peripheral 0 Rule 0 (shared_apb_slave_group0_rule0)", + "description": "TrustZone register - COMPUTE Shared APB Bridge Peripheral 0 Rule 0 (shared_apb_slave_group0_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field3CC", + "offset_int": "0x3cc", + "reg_width": 32, + "name": "COMPUTE Shared APB Bridge Peripheral 0 Rule 1 (shared_apb_slave_group0_rule1)", + "description": "TrustZone register - COMPUTE Shared APB Bridge Peripheral 0 Rule 1 (shared_apb_slave_group0_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field3D0", + "offset_int": "0x3d0", + "reg_width": 32, + "name": "COMPUTE AIPS2 Bridge Group 0 Memory Rule Register 0 (aips2_bridge_group0_mem_rule0)", + "description": "TrustZone register - COMPUTE AIPS2 Bridge Group 0 Memory Rule Register 0 (aips2_bridge_group0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field3D4", + "offset_int": "0x3d4", + "reg_width": 32, + "name": "COMPUTE AIPS2 Bridge Group 0 Memory Rule Register 1 (aips2_bridge_group0_mem_rule1)", + "description": "TrustZone register - COMPUTE AIPS2 Bridge Group 0 Memory Rule Register 1 (aips2_bridge_group0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field3D8", + "offset_int": "0x3d8", + "reg_width": 32, + "name": "COMPUTE AIPS2 Bridge Group 1 Memory Rule Register 0 (aips2_bridge_group1_mem_rule0)", + "description": "TrustZone register - COMPUTE AIPS2 Bridge Group 1 Memory Rule Register 0 (aips2_bridge_group1_mem_rule0)", + "default_value_int": "0x3333" + }, + { + "id": "field3DC", + "offset_int": "0x3dc", + "reg_width": 32, + "name": "COMPUTE Sense Domain AHB Secure Control Peripheral Rule 0 (ahb_secure_ctrl_sense_rule0)", + "description": "TrustZone register - COMPUTE Sense Domain AHB Secure Control Peripheral Rule 0 (ahb_secure_ctrl_sense_rule0)", + "default_value_int": "0x3333" + }, + { + "id": "field3E0", + "offset_int": "0x3e0", + "reg_width": 32, + "name": "COMPUTE APB Debug Peripheral Rule Register 0 (apb_debug_mem_rule0)", + "description": "TrustZone register - COMPUTE APB Debug Peripheral Rule Register 0 (apb_debug_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field3E4", + "offset_int": "0x3e4", + "reg_width": 32, + "name": "COMPUTE APB Debug Peripheral Rule Register 1 (apb_debug_mem_rule1)", + "description": "TrustZone register - COMPUTE APB Debug Peripheral Rule Register 1 (apb_debug_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field3E8", + "offset_int": "0x3e8", + "reg_width": 32, + "name": "COMPUTE APB Debug Peripheral Rule Register 2 (apb_debug_mem_rule2)", + "description": "TrustZone register - COMPUTE APB Debug Peripheral Rule Register 2 (apb_debug_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field3EC", + "offset_int": "0x3ec", + "reg_width": 32, + "name": "COMPUTE MEDIA domain AHB peripheral slave Rule Register (media_ahb_peripheral_slave_rule0)", + "description": "TrustZone register - COMPUTE MEDIA domain AHB peripheral slave Rule Register (media_ahb_peripheral_slave_rule0)", + "default_value_int": "0x3" + }, + { + "id": "field3F0", + "offset_int": "0x3f0", + "reg_width": 32, + "name": "COMPUTE MEDIA domain APB peripheral slave Rule Register (media_apb_peripheral_slave_rule0)", + "description": "TrustZone register - COMPUTE MEDIA domain APB peripheral slave Rule Register (media_apb_peripheral_slave_rule0)", + "default_value_int": "0x3" + }, + { + "id": "field3F4", + "offset_int": "0x3f4", + "reg_width": 32, + "name": "COMPUTE EZHV SRAM Memory Rule Register (ezhv_sram_rule0)", + "description": "TrustZone register - COMPUTE EZHV SRAM Memory Rule Register (ezhv_sram_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field3F8", + "offset_int": "0x3f8", + "reg_width": 32, + "name": "COMPUTE Access enable for COMPUTE domain masters to ARB0RAM partitions Register (compute_arb0ram_access_enable)", + "description": "TrustZone register - COMPUTE Access enable for COMPUTE domain masters to ARB0RAM partitions Register (compute_arb0ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field3FC", + "offset_int": "0x3fc", + "reg_width": 32, + "name": "COMPUTE Access enable for SENSE domain masters to ARB0RAM partitions Register (sense_arb0ram_access_enable)", + "description": "TrustZone register - COMPUTE Access enable for SENSE domain masters to ARB0RAM partitions Register (sense_arb0ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field400", + "offset_int": "0x400", + "reg_width": 32, + "name": "COMPUTE Access enable for MEDIA domain masters to ARB0RAM partitions Register (media_arb0ram_access_enable)", + "description": "TrustZone register - COMPUTE Access enable for MEDIA domain masters to ARB0RAM partitions Register (media_arb0ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field404", + "offset_int": "0x404", + "reg_width": 32, + "name": "COMPUTE Access enable for NEUTRON domain masters to ARB0RAM partitions Register (neutron_arb0ram_access_enable)", + "description": "TrustZone register - COMPUTE Access enable for NEUTRON domain masters to ARB0RAM partitions Register (neutron_arb0ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field408", + "offset_int": "0x408", + "reg_width": 32, + "name": "COMPUTE Access enable for HIFI4 domain masters to ARB0RAM partitions Register (hifi4_arb0ram_access_enable)", + "description": "TrustZone register - COMPUTE Access enable for HIFI4 domain masters to ARB0RAM partitions Register (hifi4_arb0ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field40C", + "offset_int": "0x40c", + "reg_width": 32, + "name": "COMPUTE Master Secure Level Register (master_sec_level)", + "description": "TrustZone register - COMPUTE Master Secure Level Register (master_sec_level)", + "default_value_int": "0x0" + }, + { + "id": "field410", + "offset_int": "0x410", + "reg_width": 32, + "name": "COMPUTE Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - COMPUTE Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xffffffff" + }, + { + "id": "field414", + "offset_int": "0x414", + "reg_width": 32, + "name": "COMPUTE CM33 Lock Control Register 0 (cpu0_lock_reg0)", + "description": "TrustZone register - COMPUTE CM33 Lock Control Register 0 (cpu0_lock_reg0)", + "default_value_int": "0x2aa" + }, + { + "id": "field418", + "offset_int": "0x418", + "reg_width": 32, + "name": "COMPUTE Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - COMPUTE Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0x865a" + }, + { + "id": "field41C", + "offset_int": "0x41c", + "reg_width": 32, + "name": "COMPUTE Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - COMPUTE Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0x865a" + }, + { + "id": "field420", + "offset_int": "0x420", + "reg_width": 32, + "name": "SENSE RAM0 Memory Rule Register 0 (sram_0_rule0)", + "description": "TrustZone register - SENSE RAM0 Memory Rule Register 0 (sram_0_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field424", + "offset_int": "0x424", + "reg_width": 32, + "name": "SENSE RAM0 Memory Rule Register 1 (sram_0_rule1)", + "description": "TrustZone register - SENSE RAM0 Memory Rule Register 1 (sram_0_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field428", + "offset_int": "0x428", + "reg_width": 32, + "name": "SENSE RAM0 Memory Rule Register 2 (sram_0_rule2)", + "description": "TrustZone register - SENSE RAM0 Memory Rule Register 2 (sram_0_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field42C", + "offset_int": "0x42c", + "reg_width": 32, + "name": "SENSE RAM0 Memory Rule Register 3 (sram_0_rule3)", + "description": "TrustZone register - SENSE RAM0 Memory Rule Register 3 (sram_0_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field430", + "offset_int": "0x430", + "reg_width": 32, + "name": "SENSE RAM1 Memory Rule Register 0 (sram_1_rule0)", + "description": "TrustZone register - SENSE RAM1 Memory Rule Register 0 (sram_1_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field434", + "offset_int": "0x434", + "reg_width": 32, + "name": "SENSE RAM1 Memory Rule Register 1 (sram_1_rule1)", + "description": "TrustZone register - SENSE RAM1 Memory Rule Register 1 (sram_1_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field438", + "offset_int": "0x438", + "reg_width": 32, + "name": "SENSE RAM1 Memory Rule Register 2 (sram_1_rule2)", + "description": "TrustZone register - SENSE RAM1 Memory Rule Register 2 (sram_1_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field43C", + "offset_int": "0x43c", + "reg_width": 32, + "name": "SENSE RAM1 Memory Rule Register 3 (sram_1_rule3)", + "description": "TrustZone register - SENSE RAM1 Memory Rule Register 3 (sram_1_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field440", + "offset_int": "0x440", + "reg_width": 32, + "name": "SENSE RAM2 Memory Rule Register 0 (sram_2_rule0)", + "description": "TrustZone register - SENSE RAM2 Memory Rule Register 0 (sram_2_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field444", + "offset_int": "0x444", + "reg_width": 32, + "name": "SENSE RAM2 Memory Rule Register 1 (sram_2_rule1)", + "description": "TrustZone register - SENSE RAM2 Memory Rule Register 1 (sram_2_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field448", + "offset_int": "0x448", + "reg_width": 32, + "name": "SENSE RAM2 Memory Rule Register 2 (sram_2_rule2)", + "description": "TrustZone register - SENSE RAM2 Memory Rule Register 2 (sram_2_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field44C", + "offset_int": "0x44c", + "reg_width": 32, + "name": "SENSE RAM2 Memory Rule Register 3 (sram_2_rule3)", + "description": "TrustZone register - SENSE RAM2 Memory Rule Register 3 (sram_2_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field450", + "offset_int": "0x450", + "reg_width": 32, + "name": "SENSE RAM3 Memory Rule Register 0 (sram_3_rule0)", + "description": "TrustZone register - SENSE RAM3 Memory Rule Register 0 (sram_3_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field454", + "offset_int": "0x454", + "reg_width": 32, + "name": "SENSE RAM3 Memory Rule Register 1 (sram_3_rule1)", + "description": "TrustZone register - SENSE RAM3 Memory Rule Register 1 (sram_3_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field458", + "offset_int": "0x458", + "reg_width": 32, + "name": "SENSE RAM3 Memory Rule Register 2 (sram_3_rule2)", + "description": "TrustZone register - SENSE RAM3 Memory Rule Register 2 (sram_3_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field45C", + "offset_int": "0x45c", + "reg_width": 32, + "name": "SENSE RAM3 Memory Rule Register 3 (sram_3_rule3)", + "description": "TrustZone register - SENSE RAM3 Memory Rule Register 3 (sram_3_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field460", + "offset_int": "0x460", + "reg_width": 32, + "name": "SENSE RAM4 Memory Rule Register 0 (sram_4_rule0)", + "description": "TrustZone register - SENSE RAM4 Memory Rule Register 0 (sram_4_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field464", + "offset_int": "0x464", + "reg_width": 32, + "name": "SENSE RAM4 Memory Rule Register 1 (sram_4_rule1)", + "description": "TrustZone register - SENSE RAM4 Memory Rule Register 1 (sram_4_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field468", + "offset_int": "0x468", + "reg_width": 32, + "name": "SENSE RAM4 Memory Rule Register 2 (sram_4_rule2)", + "description": "TrustZone register - SENSE RAM4 Memory Rule Register 2 (sram_4_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field46C", + "offset_int": "0x46c", + "reg_width": 32, + "name": "SENSE RAM4 Memory Rule Register 3 (sram_4_rule3)", + "description": "TrustZone register - SENSE RAM4 Memory Rule Register 3 (sram_4_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field470", + "offset_int": "0x470", + "reg_width": 32, + "name": "SENSE RAM5 Memory Rule Register 0 (sram_5_rule0)", + "description": "TrustZone register - SENSE RAM5 Memory Rule Register 0 (sram_5_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field474", + "offset_int": "0x474", + "reg_width": 32, + "name": "SENSE RAM5 Memory Rule Register 1 (sram_5_rule1)", + "description": "TrustZone register - SENSE RAM5 Memory Rule Register 1 (sram_5_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field478", + "offset_int": "0x478", + "reg_width": 32, + "name": "SENSE RAM5 Memory Rule Register 2 (sram_5_rule2)", + "description": "TrustZone register - SENSE RAM5 Memory Rule Register 2 (sram_5_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field47C", + "offset_int": "0x47c", + "reg_width": 32, + "name": "SENSE RAM5 Memory Rule Register 3 (sram_5_rule3)", + "description": "TrustZone register - SENSE RAM5 Memory Rule Register 3 (sram_5_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field480", + "offset_int": "0x480", + "reg_width": 32, + "name": "SENSE RAM6 Memory Rule Register 0 (sram_6_rule0)", + "description": "TrustZone register - SENSE RAM6 Memory Rule Register 0 (sram_6_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field484", + "offset_int": "0x484", + "reg_width": 32, + "name": "SENSE RAM6 Memory Rule Register 1 (sram_6_rule1)", + "description": "TrustZone register - SENSE RAM6 Memory Rule Register 1 (sram_6_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field488", + "offset_int": "0x488", + "reg_width": 32, + "name": "SENSE RAM6 Memory Rule Register 2 (sram_6_rule2)", + "description": "TrustZone register - SENSE RAM6 Memory Rule Register 2 (sram_6_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field48C", + "offset_int": "0x48c", + "reg_width": 32, + "name": "SENSE RAM6 Memory Rule Register 3 (sram_6_rule3)", + "description": "TrustZone register - SENSE RAM6 Memory Rule Register 3 (sram_6_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field490", + "offset_int": "0x490", + "reg_width": 32, + "name": "SENSE RAM7 Memory Rule Register 0 (sram_7_rule0)", + "description": "TrustZone register - SENSE RAM7 Memory Rule Register 0 (sram_7_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field494", + "offset_int": "0x494", + "reg_width": 32, + "name": "SENSE RAM7 Memory Rule Register 1 (sram_7_rule1)", + "description": "TrustZone register - SENSE RAM7 Memory Rule Register 1 (sram_7_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field498", + "offset_int": "0x498", + "reg_width": 32, + "name": "SENSE RAM7 Memory Rule Register 2 (sram_7_rule2)", + "description": "TrustZone register - SENSE RAM7 Memory Rule Register 2 (sram_7_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field49C", + "offset_int": "0x49c", + "reg_width": 32, + "name": "SENSE RAM7 Memory Rule Register 3 (sram_7_rule3)", + "description": "TrustZone register - SENSE RAM7 Memory Rule Register 3 (sram_7_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field4A0", + "offset_int": "0x4a0", + "reg_width": 32, + "name": "SENSE RAM8 Memory Rule Register 0 (sram_8_rule0)", + "description": "TrustZone register - SENSE RAM8 Memory Rule Register 0 (sram_8_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field4A4", + "offset_int": "0x4a4", + "reg_width": 32, + "name": "SENSE RAM8 Memory Rule Register 1 (sram_8_rule1)", + "description": "TrustZone register - SENSE RAM8 Memory Rule Register 1 (sram_8_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field4A8", + "offset_int": "0x4a8", + "reg_width": 32, + "name": "SENSE RAM8 Memory Rule Register 2 (sram_8_rule2)", + "description": "TrustZone register - SENSE RAM8 Memory Rule Register 2 (sram_8_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field4AC", + "offset_int": "0x4ac", + "reg_width": 32, + "name": "SENSE RAM8 Memory Rule Register 3 (sram_8_rule3)", + "description": "TrustZone register - SENSE RAM8 Memory Rule Register 3 (sram_8_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field4B0", + "offset_int": "0x4b0", + "reg_width": 32, + "name": "SENSE RAM9 Memory Rule Register 0 (sram_9_rule0)", + "description": "TrustZone register - SENSE RAM9 Memory Rule Register 0 (sram_9_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field4B4", + "offset_int": "0x4b4", + "reg_width": 32, + "name": "SENSE RAM9 Memory Rule Register 1 (sram_9_rule1)", + "description": "TrustZone register - SENSE RAM9 Memory Rule Register 1 (sram_9_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field4B8", + "offset_int": "0x4b8", + "reg_width": 32, + "name": "SENSE RAM9 Memory Rule Register 2 (sram_9_rule2)", + "description": "TrustZone register - SENSE RAM9 Memory Rule Register 2 (sram_9_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field4BC", + "offset_int": "0x4bc", + "reg_width": 32, + "name": "SENSE RAM9 Memory Rule Register 3 (sram_9_rule3)", + "description": "TrustZone register - SENSE RAM9 Memory Rule Register 3 (sram_9_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field4C0", + "offset_int": "0x4c0", + "reg_width": 32, + "name": "SENSE RAM10 Memory Rule Register 0 (sram_10_rule0)", + "description": "TrustZone register - SENSE RAM10 Memory Rule Register 0 (sram_10_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field4C4", + "offset_int": "0x4c4", + "reg_width": 32, + "name": "SENSE RAM10 Memory Rule Register 1 (sram_10_rule1)", + "description": "TrustZone register - SENSE RAM10 Memory Rule Register 1 (sram_10_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field4C8", + "offset_int": "0x4c8", + "reg_width": 32, + "name": "SENSE RAM10 Memory Rule Register 2 (sram_10_rule2)", + "description": "TrustZone register - SENSE RAM10 Memory Rule Register 2 (sram_10_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field4CC", + "offset_int": "0x4cc", + "reg_width": 32, + "name": "SENSE RAM10 Memory Rule Register 3 (sram_10_rule3)", + "description": "TrustZone register - SENSE RAM10 Memory Rule Register 3 (sram_10_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field4D0", + "offset_int": "0x4d0", + "reg_width": 32, + "name": "SENSE RAM11 Memory Rule Register 0 (sram_11_rule0)", + "description": "TrustZone register - SENSE RAM11 Memory Rule Register 0 (sram_11_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field4D4", + "offset_int": "0x4d4", + "reg_width": 32, + "name": "SENSE RAM11 Memory Rule Register 1 (sram_11_rule1)", + "description": "TrustZone register - SENSE RAM11 Memory Rule Register 1 (sram_11_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field4D8", + "offset_int": "0x4d8", + "reg_width": 32, + "name": "SENSE RAM11 Memory Rule Register 2 (sram_11_rule2)", + "description": "TrustZone register - SENSE RAM11 Memory Rule Register 2 (sram_11_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field4DC", + "offset_int": "0x4dc", + "reg_width": 32, + "name": "SENSE RAM11 Memory Rule Register 3 (sram_11_rule3)", + "description": "TrustZone register - SENSE RAM11 Memory Rule Register 3 (sram_11_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field4E0", + "offset_int": "0x4e0", + "reg_width": 32, + "name": "SENSE RAM12 Memory Rule Register 0 (sram_12_rule0)", + "description": "TrustZone register - SENSE RAM12 Memory Rule Register 0 (sram_12_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field4E4", + "offset_int": "0x4e4", + "reg_width": 32, + "name": "SENSE RAM12 Memory Rule Register 1 (sram_12_rule1)", + "description": "TrustZone register - SENSE RAM12 Memory Rule Register 1 (sram_12_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field4E8", + "offset_int": "0x4e8", + "reg_width": 32, + "name": "SENSE RAM12 Memory Rule Register 2 (sram_12_rule2)", + "description": "TrustZone register - SENSE RAM12 Memory Rule Register 2 (sram_12_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field4EC", + "offset_int": "0x4ec", + "reg_width": 32, + "name": "SENSE RAM12 Memory Rule Register 3 (sram_12_rule3)", + "description": "TrustZone register - SENSE RAM12 Memory Rule Register 3 (sram_12_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field4F0", + "offset_int": "0x4f0", + "reg_width": 32, + "name": "SENSE RAM13 Memory Rule Register 0 (sram_13_rule0)", + "description": "TrustZone register - SENSE RAM13 Memory Rule Register 0 (sram_13_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field4F4", + "offset_int": "0x4f4", + "reg_width": 32, + "name": "SENSE RAM13 Memory Rule Register 1 (sram_13_rule1)", + "description": "TrustZone register - SENSE RAM13 Memory Rule Register 1 (sram_13_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field4F8", + "offset_int": "0x4f8", + "reg_width": 32, + "name": "SENSE RAM13 Memory Rule Register 2 (sram_13_rule2)", + "description": "TrustZone register - SENSE RAM13 Memory Rule Register 2 (sram_13_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field4FC", + "offset_int": "0x4fc", + "reg_width": 32, + "name": "SENSE RAM13 Memory Rule Register 3 (sram_13_rule3)", + "description": "TrustZone register - SENSE RAM13 Memory Rule Register 3 (sram_13_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field500", + "offset_int": "0x500", + "reg_width": 32, + "name": "SENSE RAM14 Memory Rule Register 0 (sram_14_rule0)", + "description": "TrustZone register - SENSE RAM14 Memory Rule Register 0 (sram_14_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field504", + "offset_int": "0x504", + "reg_width": 32, + "name": "SENSE RAM14 Memory Rule Register 1 (sram_14_rule1)", + "description": "TrustZone register - SENSE RAM14 Memory Rule Register 1 (sram_14_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field508", + "offset_int": "0x508", + "reg_width": 32, + "name": "SENSE RAM14 Memory Rule Register 2 (sram_14_rule2)", + "description": "TrustZone register - SENSE RAM14 Memory Rule Register 2 (sram_14_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field50C", + "offset_int": "0x50c", + "reg_width": 32, + "name": "SENSE RAM14 Memory Rule Register 3 (sram_14_rule3)", + "description": "TrustZone register - SENSE RAM14 Memory Rule Register 3 (sram_14_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field510", + "offset_int": "0x510", + "reg_width": 32, + "name": "SENSE RAM15 Memory Rule Register 0 (sram_15_rule0)", + "description": "TrustZone register - SENSE RAM15 Memory Rule Register 0 (sram_15_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field514", + "offset_int": "0x514", + "reg_width": 32, + "name": "SENSE RAM15 Memory Rule Register 1 (sram_15_rule1)", + "description": "TrustZone register - SENSE RAM15 Memory Rule Register 1 (sram_15_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field518", + "offset_int": "0x518", + "reg_width": 32, + "name": "SENSE RAM15 Memory Rule Register 2 (sram_15_rule2)", + "description": "TrustZone register - SENSE RAM15 Memory Rule Register 2 (sram_15_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field51C", + "offset_int": "0x51c", + "reg_width": 32, + "name": "SENSE RAM15 Memory Rule Register 3 (sram_15_rule3)", + "description": "TrustZone register - SENSE RAM15 Memory Rule Register 3 (sram_15_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field520", + "offset_int": "0x520", + "reg_width": 32, + "name": "SENSE RAM16 Memory Rule Register 0 (sram_16_rule0)", + "description": "TrustZone register - SENSE RAM16 Memory Rule Register 0 (sram_16_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field524", + "offset_int": "0x524", + "reg_width": 32, + "name": "SENSE RAM16 Memory Rule Register 1 (sram_16_rule1)", + "description": "TrustZone register - SENSE RAM16 Memory Rule Register 1 (sram_16_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field528", + "offset_int": "0x528", + "reg_width": 32, + "name": "SENSE RAM16 Memory Rule Register 2 (sram_16_rule2)", + "description": "TrustZone register - SENSE RAM16 Memory Rule Register 2 (sram_16_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field52C", + "offset_int": "0x52c", + "reg_width": 32, + "name": "SENSE RAM16 Memory Rule Register 3 (sram_16_rule3)", + "description": "TrustZone register - SENSE RAM16 Memory Rule Register 3 (sram_16_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field530", + "offset_int": "0x530", + "reg_width": 32, + "name": "SENSE RAM17 Memory Rule Register 0 (sram_17_rule0)", + "description": "TrustZone register - SENSE RAM17 Memory Rule Register 0 (sram_17_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field534", + "offset_int": "0x534", + "reg_width": 32, + "name": "SENSE RAM17 Memory Rule Register 1 (sram_17_rule1)", + "description": "TrustZone register - SENSE RAM17 Memory Rule Register 1 (sram_17_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field538", + "offset_int": "0x538", + "reg_width": 32, + "name": "SENSE RAM17 Memory Rule Register 2 (sram_17_rule2)", + "description": "TrustZone register - SENSE RAM17 Memory Rule Register 2 (sram_17_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field53C", + "offset_int": "0x53c", + "reg_width": 32, + "name": "SENSE RAM17 Memory Rule Register 3 (sram_17_rule3)", + "description": "TrustZone register - SENSE RAM17 Memory Rule Register 3 (sram_17_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field540", + "offset_int": "0x540", + "reg_width": 32, + "name": "SENSE RAM18 Memory Rule Register 0 (sram_18_rule0)", + "description": "TrustZone register - SENSE RAM18 Memory Rule Register 0 (sram_18_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field544", + "offset_int": "0x544", + "reg_width": 32, + "name": "SENSE RAM18 Memory Rule Register 1 (sram_18_rule1)", + "description": "TrustZone register - SENSE RAM18 Memory Rule Register 1 (sram_18_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field548", + "offset_int": "0x548", + "reg_width": 32, + "name": "SENSE RAM18 Memory Rule Register 2 (sram_18_rule2)", + "description": "TrustZone register - SENSE RAM18 Memory Rule Register 2 (sram_18_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field54C", + "offset_int": "0x54c", + "reg_width": 32, + "name": "SENSE RAM18 Memory Rule Register 3 (sram_18_rule3)", + "description": "TrustZone register - SENSE RAM18 Memory Rule Register 3 (sram_18_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field550", + "offset_int": "0x550", + "reg_width": 32, + "name": "SENSE RAM19 Memory Rule Register 0 (sram_19_rule0)", + "description": "TrustZone register - SENSE RAM19 Memory Rule Register 0 (sram_19_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field554", + "offset_int": "0x554", + "reg_width": 32, + "name": "SENSE RAM19 Memory Rule Register 1 (sram_19_rule1)", + "description": "TrustZone register - SENSE RAM19 Memory Rule Register 1 (sram_19_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field558", + "offset_int": "0x558", + "reg_width": 32, + "name": "SENSE RAM19 Memory Rule Register 2 (sram_19_rule2)", + "description": "TrustZone register - SENSE RAM19 Memory Rule Register 2 (sram_19_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field55C", + "offset_int": "0x55c", + "reg_width": 32, + "name": "SENSE RAM19 Memory Rule Register 3 (sram_19_rule3)", + "description": "TrustZone register - SENSE RAM19 Memory Rule Register 3 (sram_19_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field560", + "offset_int": "0x560", + "reg_width": 32, + "name": "SENSE RAM20 Memory Rule Register 0 (sram_20_rule0)", + "description": "TrustZone register - SENSE RAM20 Memory Rule Register 0 (sram_20_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field564", + "offset_int": "0x564", + "reg_width": 32, + "name": "SENSE RAM20 Memory Rule Register 1 (sram_20_rule1)", + "description": "TrustZone register - SENSE RAM20 Memory Rule Register 1 (sram_20_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field568", + "offset_int": "0x568", + "reg_width": 32, + "name": "SENSE RAM20 Memory Rule Register 2 (sram_20_rule2)", + "description": "TrustZone register - SENSE RAM20 Memory Rule Register 2 (sram_20_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field56C", + "offset_int": "0x56c", + "reg_width": 32, + "name": "SENSE RAM20 Memory Rule Register 3 (sram_20_rule3)", + "description": "TrustZone register - SENSE RAM20 Memory Rule Register 3 (sram_20_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field570", + "offset_int": "0x570", + "reg_width": 32, + "name": "SENSE RAM21 Memory Rule Register 0 (sram_21_rule0)", + "description": "TrustZone register - SENSE RAM21 Memory Rule Register 0 (sram_21_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field574", + "offset_int": "0x574", + "reg_width": 32, + "name": "SENSE RAM21 Memory Rule Register 1 (sram_21_rule1)", + "description": "TrustZone register - SENSE RAM21 Memory Rule Register 1 (sram_21_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field578", + "offset_int": "0x578", + "reg_width": 32, + "name": "SENSE RAM21 Memory Rule Register 2 (sram_21_rule2)", + "description": "TrustZone register - SENSE RAM21 Memory Rule Register 2 (sram_21_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field57C", + "offset_int": "0x57c", + "reg_width": 32, + "name": "SENSE RAM21 Memory Rule Register 3 (sram_21_rule3)", + "description": "TrustZone register - SENSE RAM21 Memory Rule Register 3 (sram_21_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field580", + "offset_int": "0x580", + "reg_width": 32, + "name": "SENSE RAM22 Memory Rule Register 0 (sram_22_rule0)", + "description": "TrustZone register - SENSE RAM22 Memory Rule Register 0 (sram_22_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field584", + "offset_int": "0x584", + "reg_width": 32, + "name": "SENSE RAM22 Memory Rule Register 1 (sram_22_rule1)", + "description": "TrustZone register - SENSE RAM22 Memory Rule Register 1 (sram_22_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field588", + "offset_int": "0x588", + "reg_width": 32, + "name": "SENSE RAM22 Memory Rule Register 2 (sram_22_rule2)", + "description": "TrustZone register - SENSE RAM22 Memory Rule Register 2 (sram_22_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field58C", + "offset_int": "0x58c", + "reg_width": 32, + "name": "SENSE RAM22 Memory Rule Register 3 (sram_22_rule3)", + "description": "TrustZone register - SENSE RAM22 Memory Rule Register 3 (sram_22_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field590", + "offset_int": "0x590", + "reg_width": 32, + "name": "SENSE RAM23 Memory Rule Register 0 (sram_23_rule0)", + "description": "TrustZone register - SENSE RAM23 Memory Rule Register 0 (sram_23_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field594", + "offset_int": "0x594", + "reg_width": 32, + "name": "SENSE RAM23 Memory Rule Register 1 (sram_23_rule1)", + "description": "TrustZone register - SENSE RAM23 Memory Rule Register 1 (sram_23_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field598", + "offset_int": "0x598", + "reg_width": 32, + "name": "SENSE RAM23 Memory Rule Register 2 (sram_23_rule2)", + "description": "TrustZone register - SENSE RAM23 Memory Rule Register 2 (sram_23_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field59C", + "offset_int": "0x59c", + "reg_width": 32, + "name": "SENSE RAM23 Memory Rule Register 3 (sram_23_rule3)", + "description": "TrustZone register - SENSE RAM23 Memory Rule Register 3 (sram_23_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field5A0", + "offset_int": "0x5a0", + "reg_width": 32, + "name": "SENSE RAM24 Memory Rule Register 0 (sram_24_rule0)", + "description": "TrustZone register - SENSE RAM24 Memory Rule Register 0 (sram_24_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field5A4", + "offset_int": "0x5a4", + "reg_width": 32, + "name": "SENSE RAM24 Memory Rule Register 1 (sram_24_rule1)", + "description": "TrustZone register - SENSE RAM24 Memory Rule Register 1 (sram_24_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field5A8", + "offset_int": "0x5a8", + "reg_width": 32, + "name": "SENSE RAM24 Memory Rule Register 2 (sram_24_rule2)", + "description": "TrustZone register - SENSE RAM24 Memory Rule Register 2 (sram_24_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field5AC", + "offset_int": "0x5ac", + "reg_width": 32, + "name": "SENSE RAM24 Memory Rule Register 3 (sram_24_rule3)", + "description": "TrustZone register - SENSE RAM24 Memory Rule Register 3 (sram_24_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field5B0", + "offset_int": "0x5b0", + "reg_width": 32, + "name": "SENSE RAM25 Memory Rule Register 0 (sram_25_rule0)", + "description": "TrustZone register - SENSE RAM25 Memory Rule Register 0 (sram_25_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field5B4", + "offset_int": "0x5b4", + "reg_width": 32, + "name": "SENSE RAM25 Memory Rule Register 1 (sram_25_rule1)", + "description": "TrustZone register - SENSE RAM25 Memory Rule Register 1 (sram_25_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field5B8", + "offset_int": "0x5b8", + "reg_width": 32, + "name": "SENSE RAM25 Memory Rule Register 2 (sram_25_rule2)", + "description": "TrustZone register - SENSE RAM25 Memory Rule Register 2 (sram_25_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field5BC", + "offset_int": "0x5bc", + "reg_width": 32, + "name": "SENSE RAM25 Memory Rule Register 3 (sram_25_rule3)", + "description": "TrustZone register - SENSE RAM25 Memory Rule Register 3 (sram_25_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field5C0", + "offset_int": "0x5c0", + "reg_width": 32, + "name": "SENSE RAM26 Memory Rule Register 0 (sram_26_rule0)", + "description": "TrustZone register - SENSE RAM26 Memory Rule Register 0 (sram_26_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field5C4", + "offset_int": "0x5c4", + "reg_width": 32, + "name": "SENSE RAM26 Memory Rule Register 1 (sram_26_rule1)", + "description": "TrustZone register - SENSE RAM26 Memory Rule Register 1 (sram_26_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field5C8", + "offset_int": "0x5c8", + "reg_width": 32, + "name": "SENSE RAM26 Memory Rule Register 2 (sram_26_rule2)", + "description": "TrustZone register - SENSE RAM26 Memory Rule Register 2 (sram_26_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field5CC", + "offset_int": "0x5cc", + "reg_width": 32, + "name": "SENSE RAM26 Memory Rule Register 3 (sram_26_rule3)", + "description": "TrustZone register - SENSE RAM26 Memory Rule Register 3 (sram_26_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field5D0", + "offset_int": "0x5d0", + "reg_width": 32, + "name": "SENSE RAM27 Memory Rule Register 0 (sram_27_rule0)", + "description": "TrustZone register - SENSE RAM27 Memory Rule Register 0 (sram_27_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field5D4", + "offset_int": "0x5d4", + "reg_width": 32, + "name": "SENSE RAM27 Memory Rule Register 1 (sram_27_rule1)", + "description": "TrustZone register - SENSE RAM27 Memory Rule Register 1 (sram_27_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field5D8", + "offset_int": "0x5d8", + "reg_width": 32, + "name": "SENSE RAM27 Memory Rule Register 2 (sram_27_rule2)", + "description": "TrustZone register - SENSE RAM27 Memory Rule Register 2 (sram_27_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field5DC", + "offset_int": "0x5dc", + "reg_width": 32, + "name": "SENSE RAM27 Memory Rule Register 3 (sram_27_rule3)", + "description": "TrustZone register - SENSE RAM27 Memory Rule Register 3 (sram_27_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field5E0", + "offset_int": "0x5e0", + "reg_width": 32, + "name": "SENSE RAM28 Memory Rule Register 0 (sram_28_rule0)", + "description": "TrustZone register - SENSE RAM28 Memory Rule Register 0 (sram_28_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field5E4", + "offset_int": "0x5e4", + "reg_width": 32, + "name": "SENSE RAM28 Memory Rule Register 1 (sram_28_rule1)", + "description": "TrustZone register - SENSE RAM28 Memory Rule Register 1 (sram_28_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field5E8", + "offset_int": "0x5e8", + "reg_width": 32, + "name": "SENSE RAM28 Memory Rule Register 2 (sram_28_rule2)", + "description": "TrustZone register - SENSE RAM28 Memory Rule Register 2 (sram_28_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field5EC", + "offset_int": "0x5ec", + "reg_width": 32, + "name": "SENSE RAM28 Memory Rule Register 3 (sram_28_rule3)", + "description": "TrustZone register - SENSE RAM28 Memory Rule Register 3 (sram_28_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field5F0", + "offset_int": "0x5f0", + "reg_width": 32, + "name": "SENSE RAM29 Memory Rule Register 0 (sram_29_rule0)", + "description": "TrustZone register - SENSE RAM29 Memory Rule Register 0 (sram_29_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field5F4", + "offset_int": "0x5f4", + "reg_width": 32, + "name": "SENSE RAM29 Memory Rule Register 1 (sram_29_rule1)", + "description": "TrustZone register - SENSE RAM29 Memory Rule Register 1 (sram_29_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field5F8", + "offset_int": "0x5f8", + "reg_width": 32, + "name": "SENSE RAM29 Memory Rule Register 2 (sram_29_rule2)", + "description": "TrustZone register - SENSE RAM29 Memory Rule Register 2 (sram_29_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field5FC", + "offset_int": "0x5fc", + "reg_width": 32, + "name": "SENSE RAM29 Memory Rule Register 3 (sram_29_rule3)", + "description": "TrustZone register - SENSE RAM29 Memory Rule Register 3 (sram_29_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field600", + "offset_int": "0x600", + "reg_width": 32, + "name": "SENSE AHB Peripheral 10 Slaves Rule Register 0 (ahb_peripheral10_slave_rule0)", + "description": "TrustZone register - SENSE AHB Peripheral 10 Slaves Rule Register 0 (ahb_peripheral10_slave_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field604", + "offset_int": "0x604", + "reg_width": 32, + "name": "SENSE AIPS5 Bridge Group 0 Memory Rule Register 0 (aips5_bridge_group0_mem_rule0)", + "description": "TrustZone register - SENSE AIPS5 Bridge Group 0 Memory Rule Register 0 (aips5_bridge_group0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field608", + "offset_int": "0x608", + "reg_width": 32, + "name": "SENSE AIPS5 Bridge Group 0 Memory Rule Register 1 (aips5_bridge_group0_mem_rule1)", + "description": "TrustZone register - SENSE AIPS5 Bridge Group 0 Memory Rule Register 1 (aips5_bridge_group0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field60C", + "offset_int": "0x60c", + "reg_width": 32, + "name": "SENSE AIPS5 Bridge Group 0 Memory Rule Register 2 (aips5_bridge_group0_mem_rule2)", + "description": "TrustZone register - SENSE AIPS5 Bridge Group 0 Memory Rule Register 2 (aips5_bridge_group0_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field610", + "offset_int": "0x610", + "reg_width": 32, + "name": "SENSE AIPS5 Bridge Group 0 Memory Rule Register 3 (aips5_bridge_group0_mem_rule3)", + "description": "TrustZone register - SENSE AIPS5 Bridge Group 0 Memory Rule Register 3 (aips5_bridge_group0_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field614", + "offset_int": "0x614", + "reg_width": 32, + "name": "SENSE AHB Peripheral 10 Slaves HSGPIO Rule Register 0 (ahb_peripheral10_slave_hsgpio_rule0)", + "description": "TrustZone register - SENSE AHB Peripheral 10 Slaves HSGPIO Rule Register 0 (ahb_peripheral10_slave_hsgpio_rule0)", + "default_value_int": "0x33" + }, + { + "id": "field618", + "offset_int": "0x618", + "reg_width": 32, + "name": "SENSE AHB Peripheral 10 Slaves HSGPIO Rule Register 1 (ahb_peripheral10_slave_hsgpio_rule1)", + "description": "TrustZone register - SENSE AHB Peripheral 10 Slaves HSGPIO Rule Register 1 (ahb_peripheral10_slave_hsgpio_rule1)", + "default_value_int": "0x33" + }, + { + "id": "field61C", + "offset_int": "0x61c", + "reg_width": 32, + "name": "SENSE AHB Peripheral 10 Slaves HSGPIO Rule Register 2 (ahb_peripheral10_slave_hsgpio_rule2)", + "description": "TrustZone register - SENSE AHB Peripheral 10 Slaves HSGPIO Rule Register 2 (ahb_peripheral10_slave_hsgpio_rule2)", + "default_value_int": "0x33" + }, + { + "id": "field620", + "offset_int": "0x620", + "reg_width": 32, + "name": "SENSE AIPS2 Bridge Group 0 Memory Rule Register 0 (aips2_bridge_group0_mem_rule0)", + "description": "TrustZone register - SENSE AIPS2 Bridge Group 0 Memory Rule Register 0 (aips2_bridge_group0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field624", + "offset_int": "0x624", + "reg_width": 32, + "name": "SENSE AIPS2 Bridge Group 0 Memory Rule Register 1 (aips2_bridge_group0_mem_rule1)", + "description": "TrustZone register - SENSE AIPS2 Bridge Group 0 Memory Rule Register 1 (aips2_bridge_group0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field628", + "offset_int": "0x628", + "reg_width": 32, + "name": "SENSE AIPS2 Bridge Group 1 Memory Rule Register 0 (aips2_bridge_group1_mem_rule0)", + "description": "TrustZone register - SENSE AIPS2 Bridge Group 1 Memory Rule Register 0 (aips2_bridge_group1_mem_rule0)", + "default_value_int": "0x3333" + }, + { + "id": "field62C", + "offset_int": "0x62c", + "reg_width": 32, + "name": "SENSE AHB Secure Control Peripheral Rule 0 (ahb_secure_ctrl_peripheral_rule0)", + "description": "TrustZone register - SENSE AHB Secure Control Peripheral Rule 0 (ahb_secure_ctrl_peripheral_rule0)", + "default_value_int": "0x3333" + }, + { + "id": "field630", + "offset_int": "0x630", + "reg_width": 32, + "name": "SENSE APB Debug Peripheral Rule Register 0 (apb_debug_mem_rule0)", + "description": "TrustZone register - SENSE APB Debug Peripheral Rule Register 0 (apb_debug_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field634", + "offset_int": "0x634", + "reg_width": 32, + "name": "SENSE APB Debug Peripheral Rule Register 1 (apb_debug_mem_rule1)", + "description": "TrustZone register - SENSE APB Debug Peripheral Rule Register 1 (apb_debug_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field638", + "offset_int": "0x638", + "reg_width": 32, + "name": "SENSE APB Debug Peripheral Rule Register 2 (apb_debug_mem_rule2)", + "description": "TrustZone register - SENSE APB Debug Peripheral Rule Register 2 (apb_debug_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field63C", + "offset_int": "0x63c", + "reg_width": 32, + "name": "SENSE APB Bridge Peripheral 0 Rule 0 (sense_apb_slave_group0_rule0)", + "description": "TrustZone register - SENSE APB Bridge Peripheral 0 Rule 0 (sense_apb_slave_group0_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field640", + "offset_int": "0x640", + "reg_width": 32, + "name": "SENSE APB Bridge Peripheral 0 Rule 1 (sense_apb_slave_group0_rule1)", + "description": "TrustZone register - SENSE APB Bridge Peripheral 0 Rule 1 (sense_apb_slave_group0_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field644", + "offset_int": "0x644", + "reg_width": 32, + "name": "SENSE APB Bridge Peripheral 0 Rule 2 (sense_apb_slave_group0_rule2)", + "description": "TrustZone register - SENSE APB Bridge Peripheral 0 Rule 2 (sense_apb_slave_group0_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field648", + "offset_int": "0x648", + "reg_width": 32, + "name": "SENSE Shared APB Bridge Peripheral 0 Rule 0 (shared_apb_slave_group0_rule0)", + "description": "TrustZone register - SENSE Shared APB Bridge Peripheral 0 Rule 0 (shared_apb_slave_group0_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field64C", + "offset_int": "0x64c", + "reg_width": 32, + "name": "SENSE Shared APB Bridge Peripheral 0 Rule 1 (shared_apb_slave_group0_rule1)", + "description": "TrustZone register - SENSE Shared APB Bridge Peripheral 0 Rule 1 (shared_apb_slave_group0_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field650", + "offset_int": "0x650", + "reg_width": 32, + "name": "SENSE SENSE domain to MEDIA domain Access Rule Register (sense2media_rule)", + "description": "TrustZone register - SENSE SENSE domain to MEDIA domain Access Rule Register (sense2media_rule)", + "default_value_int": "0x3" + }, + { + "id": "field654", + "offset_int": "0x654", + "reg_width": 32, + "name": "SENSE MEDIA domain AHB peripheral slave Rule Register (media_ahb_peripheral_slave_rule0)", + "description": "TrustZone register - SENSE MEDIA domain AHB peripheral slave Rule Register (media_ahb_peripheral_slave_rule0)", + "default_value_int": "0x3" + }, + { + "id": "field658", + "offset_int": "0x658", + "reg_width": 32, + "name": "SENSE MEDIA domain APB peripheral slave Rule Register (media_apb_peripheral_slave_rule0)", + "description": "TrustZone register - SENSE MEDIA domain APB peripheral slave Rule Register (media_apb_peripheral_slave_rule0)", + "default_value_int": "0x3" + }, + { + "id": "field65C", + "offset_int": "0x65c", + "reg_width": 32, + "name": "SENSE EZHV SRAM Memory Rule Register (ezhv_sram_rule0)", + "description": "TrustZone register - SENSE EZHV SRAM Memory Rule Register (ezhv_sram_rule0)", + "default_value_int": "0x3" + }, + { + "id": "field660", + "offset_int": "0x660", + "reg_width": 32, + "name": "SENSE Access enable for COMPUTE domain masters to ARB1RAM partitions Register (compute_arb1ram_access_enable)", + "description": "TrustZone register - SENSE Access enable for COMPUTE domain masters to ARB1RAM partitions Register (compute_arb1ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field664", + "offset_int": "0x664", + "reg_width": 32, + "name": "SENSE Access enable for SENSE domain masters to ARB1RAM partitions Register (sense_arb1ram_access_enable)", + "description": "TrustZone register - SENSE Access enable for SENSE domain masters to ARB1RAM partitions Register (sense_arb1ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field668", + "offset_int": "0x668", + "reg_width": 32, + "name": "SENSE Access enable for MEDIA domain masters to ARB1RAM partitions Register (media_arb1ram_access_enable)", + "description": "TrustZone register - SENSE Access enable for MEDIA domain masters to ARB1RAM partitions Register (media_arb1ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field66C", + "offset_int": "0x66c", + "reg_width": 32, + "name": "SENSE Access enable for NEUTRON domain masters to ARB1RAM partitions Register (neutron_arb1ram_access_enable)", + "description": "TrustZone register - SENSE Access enable for NEUTRON domain masters to ARB1RAM partitions Register (neutron_arb1ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field670", + "offset_int": "0x670", + "reg_width": 32, + "name": "SENSE Access enable for HIFI4 domain masters to ARB1RAM partitions Register (hifi4_arb1ram_access_enable)", + "description": "TrustZone register - SENSE Access enable for HIFI4 domain masters to ARB1RAM partitions Register (hifi4_arb1ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field674", + "offset_int": "0x674", + "reg_width": 32, + "name": "SENSE Access enable for HIFI1 domain masters to ARB1RAM partitions Register (hifi1_arb1ram_access_enable)", + "description": "TrustZone register - SENSE Access enable for HIFI1 domain masters to ARB1RAM partitions Register (hifi1_arb1ram_access_enable)", + "default_value_int": "0x3fffffff" + }, + { + "id": "field678", + "offset_int": "0x678", + "reg_width": 32, + "name": "SENSE Access enable for COMPUTE domain masters to common APB peripherals (compute_apb_peripheral_access_enable)", + "description": "TrustZone register - SENSE Access enable for COMPUTE domain masters to common APB peripherals (compute_apb_peripheral_access_enable)", + "default_value_int": "0xfff" + }, + { + "id": "field67C", + "offset_int": "0x67c", + "reg_width": 32, + "name": "SENSE Access enable for SENSE domain masters to common APB peripherals (sense_apb_peripheral_access_enable)", + "description": "TrustZone register - SENSE Access enable for SENSE domain masters to common APB peripherals (sense_apb_peripheral_access_enable)", + "default_value_int": "0xfff" + }, + { + "id": "field680", + "offset_int": "0x680", + "reg_width": 32, + "name": "SENSE Access enable for COMPUTE domain masters to common AIPS peripherals (compute_aips_peripheral_access_enable)", + "description": "TrustZone register - SENSE Access enable for COMPUTE domain masters to common AIPS peripherals (compute_aips_peripheral_access_enable)", + "default_value_int": "0xfffff" + }, + { + "id": "field684", + "offset_int": "0x684", + "reg_width": 32, + "name": "SENSE Access enable for SENSE domain masters to common AIPS peripherals (sense_aips_peripheral_access_enable)", + "description": "TrustZone register - SENSE Access enable for SENSE domain masters to common AIPS peripherals (sense_aips_peripheral_access_enable)", + "default_value_int": "0xfffff" + }, + { + "id": "field688", + "offset_int": "0x688", + "reg_width": 32, + "name": "SENSE Master Secure Level Register (master_sec_level)", + "description": "TrustZone register - SENSE Master Secure Level Register (master_sec_level)", + "default_value_int": "0x0" + }, + { + "id": "field68C", + "offset_int": "0x68c", + "reg_width": 32, + "name": "SENSE Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - SENSE Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xffffffff" + }, + { + "id": "field690", + "offset_int": "0x690", + "reg_width": 32, + "name": "SENSE CM33 Lock Control Register 0 (cpu0_lock_reg0)", + "description": "TrustZone register - SENSE CM33 Lock Control Register 0 (cpu0_lock_reg0)", + "default_value_int": "0x2aa" + }, + { + "id": "field694", + "offset_int": "0x694", + "reg_width": 32, + "name": "SENSE Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - SENSE Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0x865a" + }, + { + "id": "field698", + "offset_int": "0x698", + "reg_width": 32, + "name": "SENSE Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - SENSE Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0x865a" + }, + { + "id": "field69C", + "offset_int": "0x69c", + "reg_width": 32, + "name": "MEDIA AHB peripheral 0 Rule Register (ahb_peripheral_slave_p0_slave_rule0)", + "description": "TrustZone register - MEDIA AHB peripheral 0 Rule Register (ahb_peripheral_slave_p0_slave_rule0)", + "default_value_int": "0x333" + }, + { + "id": "field6A0", + "offset_int": "0x6a0", + "reg_width": 32, + "name": "MEDIA AHB Secure Control Peripheral Rule 0 (ahb_secure_ctrl_peripheral_rule0)", + "description": "TrustZone register - MEDIA AHB Secure Control Peripheral Rule 0 (ahb_secure_ctrl_peripheral_rule0)", + "default_value_int": "0x3333" + }, + { + "id": "field6A4", + "offset_int": "0x6a4", + "reg_width": 32, + "name": "MEDIA AIPS4 Bridge Group 0 Memory Rule Register 0 (aips4_bridge_group0_mem_rule0)", + "description": "TrustZone register - MEDIA AIPS4 Bridge Group 0 Memory Rule Register 0 (aips4_bridge_group0_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field6A8", + "offset_int": "0x6a8", + "reg_width": 32, + "name": "MEDIA AIPS4 Bridge Group 0 Memory Rule Register 1 (aips4_bridge_group0_mem_rule1)", + "description": "TrustZone register - MEDIA AIPS4 Bridge Group 0 Memory Rule Register 1 (aips4_bridge_group0_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field6AC", + "offset_int": "0x6ac", + "reg_width": 32, + "name": "MEDIA AHB peripheral 1 Rule Register (ahb_peripheral_slave_p1_slave_rule0)", + "description": "TrustZone register - MEDIA AHB peripheral 1 Rule Register (ahb_peripheral_slave_p1_slave_rule0)", + "default_value_int": "0x33333" + }, + { + "id": "field6B0", + "offset_int": "0x6b0", + "reg_width": 32, + "name": "MEDIA APB peripheral slave Rule Register 0 (media_apb_peripheral_slave_rule0)", + "description": "TrustZone register - MEDIA APB peripheral slave Rule Register 0 (media_apb_peripheral_slave_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field6B4", + "offset_int": "0x6b4", + "reg_width": 32, + "name": "MEDIA APB peripheral slave Rule Register 0 (media_apb_peripheral_slave_rule1)", + "description": "TrustZone register - MEDIA APB peripheral slave Rule Register 0 (media_apb_peripheral_slave_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field6B8", + "offset_int": "0x6b8", + "reg_width": 32, + "name": "MEDIA EZHV SRAM Memory Rule Register 0 (ezhv_sram_rule0)", + "description": "TrustZone register - MEDIA EZHV SRAM Memory Rule Register 0 (ezhv_sram_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field6BC", + "offset_int": "0x6bc", + "reg_width": 32, + "name": "MEDIA EZHV SRAM Memory Rule Register 1 (ezhv_sram_rule1)", + "description": "TrustZone register - MEDIA EZHV SRAM Memory Rule Register 1 (ezhv_sram_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field6C0", + "offset_int": "0x6c0", + "reg_width": 32, + "name": "MEDIA EZHV SRAM Memory Rule Register 2 (ezhv_sram_rule2)", + "description": "TrustZone register - MEDIA EZHV SRAM Memory Rule Register 2 (ezhv_sram_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field6C4", + "offset_int": "0x6c4", + "reg_width": 32, + "name": "MEDIA EZHV SRAM Memory Rule Register 3 (ezhv_sram_rule3)", + "description": "TrustZone register - MEDIA EZHV SRAM Memory Rule Register 3 (ezhv_sram_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field6C8", + "offset_int": "0x6c8", + "reg_width": 32, + "name": "MEDIA RAM0 Memory Rule Register 0 (sram_0_rule0)", + "description": "TrustZone register - MEDIA RAM0 Memory Rule Register 0 (sram_0_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field6CC", + "offset_int": "0x6cc", + "reg_width": 32, + "name": "MEDIA RAM0 Memory Rule Register 1 (sram_0_rule1)", + "description": "TrustZone register - MEDIA RAM0 Memory Rule Register 1 (sram_0_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field6D0", + "offset_int": "0x6d0", + "reg_width": 32, + "name": "MEDIA RAM0 Memory Rule Register 2 (sram_0_rule2)", + "description": "TrustZone register - MEDIA RAM0 Memory Rule Register 2 (sram_0_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field6D4", + "offset_int": "0x6d4", + "reg_width": 32, + "name": "MEDIA RAM0 Memory Rule Register 3 (sram_0_rule3)", + "description": "TrustZone register - MEDIA RAM0 Memory Rule Register 3 (sram_0_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field6D8", + "offset_int": "0x6d8", + "reg_width": 32, + "name": "MEDIA RAM1 Memory Rule Register 0 (sram_1_rule0)", + "description": "TrustZone register - MEDIA RAM1 Memory Rule Register 0 (sram_1_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field6DC", + "offset_int": "0x6dc", + "reg_width": 32, + "name": "MEDIA RAM1 Memory Rule Register 1 (sram_1_rule1)", + "description": "TrustZone register - MEDIA RAM1 Memory Rule Register 1 (sram_1_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field6E0", + "offset_int": "0x6e0", + "reg_width": 32, + "name": "MEDIA RAM1 Memory Rule Register 2 (sram_1_rule2)", + "description": "TrustZone register - MEDIA RAM1 Memory Rule Register 2 (sram_1_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field6E4", + "offset_int": "0x6e4", + "reg_width": 32, + "name": "MEDIA RAM1 Memory Rule Register 3 (sram_1_rule3)", + "description": "TrustZone register - MEDIA RAM1 Memory Rule Register 3 (sram_1_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field6E8", + "offset_int": "0x6e8", + "reg_width": 32, + "name": "MEDIA RAM2 Memory Rule Register 0 (sram_2_rule0)", + "description": "TrustZone register - MEDIA RAM2 Memory Rule Register 0 (sram_2_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field6EC", + "offset_int": "0x6ec", + "reg_width": 32, + "name": "MEDIA RAM2 Memory Rule Register 1 (sram_2_rule1)", + "description": "TrustZone register - MEDIA RAM2 Memory Rule Register 1 (sram_2_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field6F0", + "offset_int": "0x6f0", + "reg_width": 32, + "name": "MEDIA RAM2 Memory Rule Register 2 (sram_2_rule2)", + "description": "TrustZone register - MEDIA RAM2 Memory Rule Register 2 (sram_2_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field6F4", + "offset_int": "0x6f4", + "reg_width": 32, + "name": "MEDIA RAM2 Memory Rule Register 3 (sram_2_rule3)", + "description": "TrustZone register - MEDIA RAM2 Memory Rule Register 3 (sram_2_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field6F8", + "offset_int": "0x6f8", + "reg_width": 32, + "name": "MEDIA RAM3 Memory Rule Register 0 (sram_3_rule0)", + "description": "TrustZone register - MEDIA RAM3 Memory Rule Register 0 (sram_3_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field6FC", + "offset_int": "0x6fc", + "reg_width": 32, + "name": "MEDIA RAM3 Memory Rule Register 1 (sram_3_rule1)", + "description": "TrustZone register - MEDIA RAM3 Memory Rule Register 1 (sram_3_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field700", + "offset_int": "0x700", + "reg_width": 32, + "name": "MEDIA RAM3 Memory Rule Register 2 (sram_3_rule2)", + "description": "TrustZone register - MEDIA RAM3 Memory Rule Register 2 (sram_3_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field704", + "offset_int": "0x704", + "reg_width": 32, + "name": "MEDIA RAM3 Memory Rule Register 3 (sram_3_rule3)", + "description": "TrustZone register - MEDIA RAM3 Memory Rule Register 3 (sram_3_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field708", + "offset_int": "0x708", + "reg_width": 32, + "name": "MEDIA RAM4 Memory Rule Register 0 (sram_4_rule0)", + "description": "TrustZone register - MEDIA RAM4 Memory Rule Register 0 (sram_4_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field70C", + "offset_int": "0x70c", + "reg_width": 32, + "name": "MEDIA RAM4 Memory Rule Register 1 (sram_4_rule1)", + "description": "TrustZone register - MEDIA RAM4 Memory Rule Register 1 (sram_4_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field710", + "offset_int": "0x710", + "reg_width": 32, + "name": "MEDIA RAM4 Memory Rule Register 2 (sram_4_rule2)", + "description": "TrustZone register - MEDIA RAM4 Memory Rule Register 2 (sram_4_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field714", + "offset_int": "0x714", + "reg_width": 32, + "name": "MEDIA RAM4 Memory Rule Register 3 (sram_4_rule3)", + "description": "TrustZone register - MEDIA RAM4 Memory Rule Register 3 (sram_4_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field718", + "offset_int": "0x718", + "reg_width": 32, + "name": "MEDIA RAM5 Memory Rule Register 0 (sram_5_rule0)", + "description": "TrustZone register - MEDIA RAM5 Memory Rule Register 0 (sram_5_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field71C", + "offset_int": "0x71c", + "reg_width": 32, + "name": "MEDIA RAM5 Memory Rule Register 1 (sram_5_rule1)", + "description": "TrustZone register - MEDIA RAM5 Memory Rule Register 1 (sram_5_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field720", + "offset_int": "0x720", + "reg_width": 32, + "name": "MEDIA RAM5 Memory Rule Register 2 (sram_5_rule2)", + "description": "TrustZone register - MEDIA RAM5 Memory Rule Register 2 (sram_5_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field724", + "offset_int": "0x724", + "reg_width": 32, + "name": "MEDIA RAM5 Memory Rule Register 3 (sram_5_rule3)", + "description": "TrustZone register - MEDIA RAM5 Memory Rule Register 3 (sram_5_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field728", + "offset_int": "0x728", + "reg_width": 32, + "name": "MEDIA RAM6 Memory Rule Register 0 (sram_6_rule0)", + "description": "TrustZone register - MEDIA RAM6 Memory Rule Register 0 (sram_6_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field72C", + "offset_int": "0x72c", + "reg_width": 32, + "name": "MEDIA RAM6 Memory Rule Register 1 (sram_6_rule1)", + "description": "TrustZone register - MEDIA RAM6 Memory Rule Register 1 (sram_6_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field730", + "offset_int": "0x730", + "reg_width": 32, + "name": "MEDIA RAM6 Memory Rule Register 2 (sram_6_rule2)", + "description": "TrustZone register - MEDIA RAM6 Memory Rule Register 2 (sram_6_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field734", + "offset_int": "0x734", + "reg_width": 32, + "name": "MEDIA RAM6 Memory Rule Register 3 (sram_6_rule3)", + "description": "TrustZone register - MEDIA RAM6 Memory Rule Register 3 (sram_6_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field738", + "offset_int": "0x738", + "reg_width": 32, + "name": "MEDIA RAM7 Memory Rule Register 0 (sram_7_rule0)", + "description": "TrustZone register - MEDIA RAM7 Memory Rule Register 0 (sram_7_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field73C", + "offset_int": "0x73c", + "reg_width": 32, + "name": "MEDIA RAM7 Memory Rule Register 1 (sram_7_rule1)", + "description": "TrustZone register - MEDIA RAM7 Memory Rule Register 1 (sram_7_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field740", + "offset_int": "0x740", + "reg_width": 32, + "name": "MEDIA RAM7 Memory Rule Register 2 (sram_7_rule2)", + "description": "TrustZone register - MEDIA RAM7 Memory Rule Register 2 (sram_7_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field744", + "offset_int": "0x744", + "reg_width": 32, + "name": "MEDIA RAM7 Memory Rule Register 3 (sram_7_rule3)", + "description": "TrustZone register - MEDIA RAM7 Memory Rule Register 3 (sram_7_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field748", + "offset_int": "0x748", + "reg_width": 32, + "name": "MEDIA RAM8 Memory Rule Register 0 (sram_8_rule0)", + "description": "TrustZone register - MEDIA RAM8 Memory Rule Register 0 (sram_8_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field74C", + "offset_int": "0x74c", + "reg_width": 32, + "name": "MEDIA RAM8 Memory Rule Register 1 (sram_8_rule1)", + "description": "TrustZone register - MEDIA RAM8 Memory Rule Register 1 (sram_8_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field750", + "offset_int": "0x750", + "reg_width": 32, + "name": "MEDIA RAM8 Memory Rule Register 2 (sram_8_rule2)", + "description": "TrustZone register - MEDIA RAM8 Memory Rule Register 2 (sram_8_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field754", + "offset_int": "0x754", + "reg_width": 32, + "name": "MEDIA RAM8 Memory Rule Register 3 (sram_8_rule3)", + "description": "TrustZone register - MEDIA RAM8 Memory Rule Register 3 (sram_8_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field758", + "offset_int": "0x758", + "reg_width": 32, + "name": "MEDIA RAM9 Memory Rule Register 0 (sram_9_rule0)", + "description": "TrustZone register - MEDIA RAM9 Memory Rule Register 0 (sram_9_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field75C", + "offset_int": "0x75c", + "reg_width": 32, + "name": "MEDIA RAM9 Memory Rule Register 1 (sram_9_rule1)", + "description": "TrustZone register - MEDIA RAM9 Memory Rule Register 1 (sram_9_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field760", + "offset_int": "0x760", + "reg_width": 32, + "name": "MEDIA RAM9 Memory Rule Register 2 (sram_9_rule2)", + "description": "TrustZone register - MEDIA RAM9 Memory Rule Register 2 (sram_9_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field764", + "offset_int": "0x764", + "reg_width": 32, + "name": "MEDIA RAM9 Memory Rule Register 3 (sram_9_rule3)", + "description": "TrustZone register - MEDIA RAM9 Memory Rule Register 3 (sram_9_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field768", + "offset_int": "0x768", + "reg_width": 32, + "name": "MEDIA RAM10 Memory Rule Register 0 (sram_10_rule0)", + "description": "TrustZone register - MEDIA RAM10 Memory Rule Register 0 (sram_10_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field76C", + "offset_int": "0x76c", + "reg_width": 32, + "name": "MEDIA RAM10 Memory Rule Register 1 (sram_10_rule1)", + "description": "TrustZone register - MEDIA RAM10 Memory Rule Register 1 (sram_10_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field770", + "offset_int": "0x770", + "reg_width": 32, + "name": "MEDIA RAM10 Memory Rule Register 2 (sram_10_rule2)", + "description": "TrustZone register - MEDIA RAM10 Memory Rule Register 2 (sram_10_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field774", + "offset_int": "0x774", + "reg_width": 32, + "name": "MEDIA RAM10 Memory Rule Register 3 (sram_10_rule3)", + "description": "TrustZone register - MEDIA RAM10 Memory Rule Register 3 (sram_10_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field778", + "offset_int": "0x778", + "reg_width": 32, + "name": "MEDIA RAM11 Memory Rule Register 0 (sram_11_rule0)", + "description": "TrustZone register - MEDIA RAM11 Memory Rule Register 0 (sram_11_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field77C", + "offset_int": "0x77c", + "reg_width": 32, + "name": "MEDIA RAM11 Memory Rule Register 1 (sram_11_rule1)", + "description": "TrustZone register - MEDIA RAM11 Memory Rule Register 1 (sram_11_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field780", + "offset_int": "0x780", + "reg_width": 32, + "name": "MEDIA RAM11 Memory Rule Register 2 (sram_11_rule2)", + "description": "TrustZone register - MEDIA RAM11 Memory Rule Register 2 (sram_11_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field784", + "offset_int": "0x784", + "reg_width": 32, + "name": "MEDIA RAM11 Memory Rule Register 3 (sram_11_rule3)", + "description": "TrustZone register - MEDIA RAM11 Memory Rule Register 3 (sram_11_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field788", + "offset_int": "0x788", + "reg_width": 32, + "name": "MEDIA RAM12 Memory Rule Register 0 (sram_12_rule0)", + "description": "TrustZone register - MEDIA RAM12 Memory Rule Register 0 (sram_12_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field78C", + "offset_int": "0x78c", + "reg_width": 32, + "name": "MEDIA RAM12 Memory Rule Register 1 (sram_12_rule1)", + "description": "TrustZone register - MEDIA RAM12 Memory Rule Register 1 (sram_12_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field790", + "offset_int": "0x790", + "reg_width": 32, + "name": "MEDIA RAM12 Memory Rule Register 2 (sram_12_rule2)", + "description": "TrustZone register - MEDIA RAM12 Memory Rule Register 2 (sram_12_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field794", + "offset_int": "0x794", + "reg_width": 32, + "name": "MEDIA RAM12 Memory Rule Register 3 (sram_12_rule3)", + "description": "TrustZone register - MEDIA RAM12 Memory Rule Register 3 (sram_12_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field798", + "offset_int": "0x798", + "reg_width": 32, + "name": "MEDIA RAM13 Memory Rule Register 0 (sram_13_rule0)", + "description": "TrustZone register - MEDIA RAM13 Memory Rule Register 0 (sram_13_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field79C", + "offset_int": "0x79c", + "reg_width": 32, + "name": "MEDIA RAM13 Memory Rule Register 1 (sram_13_rule1)", + "description": "TrustZone register - MEDIA RAM13 Memory Rule Register 1 (sram_13_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field7A0", + "offset_int": "0x7a0", + "reg_width": 32, + "name": "MEDIA RAM13 Memory Rule Register 2 (sram_13_rule2)", + "description": "TrustZone register - MEDIA RAM13 Memory Rule Register 2 (sram_13_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field7A4", + "offset_int": "0x7a4", + "reg_width": 32, + "name": "MEDIA RAM13 Memory Rule Register 3 (sram_13_rule3)", + "description": "TrustZone register - MEDIA RAM13 Memory Rule Register 3 (sram_13_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field7A8", + "offset_int": "0x7a8", + "reg_width": 32, + "name": "MEDIA RAM14 Memory Rule Register 0 (sram_14_rule0)", + "description": "TrustZone register - MEDIA RAM14 Memory Rule Register 0 (sram_14_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field7AC", + "offset_int": "0x7ac", + "reg_width": 32, + "name": "MEDIA RAM14 Memory Rule Register 1 (sram_14_rule1)", + "description": "TrustZone register - MEDIA RAM14 Memory Rule Register 1 (sram_14_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field7B0", + "offset_int": "0x7b0", + "reg_width": 32, + "name": "MEDIA RAM14 Memory Rule Register 2 (sram_14_rule2)", + "description": "TrustZone register - MEDIA RAM14 Memory Rule Register 2 (sram_14_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field7B4", + "offset_int": "0x7b4", + "reg_width": 32, + "name": "MEDIA RAM14 Memory Rule Register 3 (sram_14_rule3)", + "description": "TrustZone register - MEDIA RAM14 Memory Rule Register 3 (sram_14_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field7B8", + "offset_int": "0x7b8", + "reg_width": 32, + "name": "MEDIA RAM15 Memory Rule Register 0 (sram_15_rule0)", + "description": "TrustZone register - MEDIA RAM15 Memory Rule Register 0 (sram_15_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field7BC", + "offset_int": "0x7bc", + "reg_width": 32, + "name": "MEDIA RAM15 Memory Rule Register 1 (sram_15_rule1)", + "description": "TrustZone register - MEDIA RAM15 Memory Rule Register 1 (sram_15_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field7C0", + "offset_int": "0x7c0", + "reg_width": 32, + "name": "MEDIA RAM15 Memory Rule Register 2 (sram_15_rule2)", + "description": "TrustZone register - MEDIA RAM15 Memory Rule Register 2 (sram_15_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field7C4", + "offset_int": "0x7c4", + "reg_width": 32, + "name": "MEDIA RAM15 Memory Rule Register 3 (sram_15_rule3)", + "description": "TrustZone register - MEDIA RAM15 Memory Rule Register 3 (sram_15_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field7C8", + "offset_int": "0x7c8", + "reg_width": 32, + "name": "MEDIA RAM16 Memory Rule Register 0 (sram_16_rule0)", + "description": "TrustZone register - MEDIA RAM16 Memory Rule Register 0 (sram_16_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field7CC", + "offset_int": "0x7cc", + "reg_width": 32, + "name": "MEDIA RAM16 Memory Rule Register 1 (sram_16_rule1)", + "description": "TrustZone register - MEDIA RAM16 Memory Rule Register 1 (sram_16_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field7D0", + "offset_int": "0x7d0", + "reg_width": 32, + "name": "MEDIA RAM16 Memory Rule Register 2 (sram_16_rule2)", + "description": "TrustZone register - MEDIA RAM16 Memory Rule Register 2 (sram_16_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field7D4", + "offset_int": "0x7d4", + "reg_width": 32, + "name": "MEDIA RAM16 Memory Rule Register 3 (sram_16_rule3)", + "description": "TrustZone register - MEDIA RAM16 Memory Rule Register 3 (sram_16_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field7D8", + "offset_int": "0x7d8", + "reg_width": 32, + "name": "MEDIA RAM17 Memory Rule Register 0 (sram_17_rule0)", + "description": "TrustZone register - MEDIA RAM17 Memory Rule Register 0 (sram_17_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field7DC", + "offset_int": "0x7dc", + "reg_width": 32, + "name": "MEDIA RAM17 Memory Rule Register 1 (sram_17_rule1)", + "description": "TrustZone register - MEDIA RAM17 Memory Rule Register 1 (sram_17_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field7E0", + "offset_int": "0x7e0", + "reg_width": 32, + "name": "MEDIA RAM17 Memory Rule Register 2 (sram_17_rule2)", + "description": "TrustZone register - MEDIA RAM17 Memory Rule Register 2 (sram_17_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field7E4", + "offset_int": "0x7e4", + "reg_width": 32, + "name": "MEDIA RAM17 Memory Rule Register 3 (sram_17_rule3)", + "description": "TrustZone register - MEDIA RAM17 Memory Rule Register 3 (sram_17_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field7E8", + "offset_int": "0x7e8", + "reg_width": 32, + "name": "MEDIA RAM18 Memory Rule Register 0 (sram_18_rule0)", + "description": "TrustZone register - MEDIA RAM18 Memory Rule Register 0 (sram_18_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field7EC", + "offset_int": "0x7ec", + "reg_width": 32, + "name": "MEDIA RAM18 Memory Rule Register 1 (sram_18_rule1)", + "description": "TrustZone register - MEDIA RAM18 Memory Rule Register 1 (sram_18_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field7F0", + "offset_int": "0x7f0", + "reg_width": 32, + "name": "MEDIA RAM18 Memory Rule Register 2 (sram_18_rule2)", + "description": "TrustZone register - MEDIA RAM18 Memory Rule Register 2 (sram_18_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field7F4", + "offset_int": "0x7f4", + "reg_width": 32, + "name": "MEDIA RAM18 Memory Rule Register 3 (sram_18_rule3)", + "description": "TrustZone register - MEDIA RAM18 Memory Rule Register 3 (sram_18_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field7F8", + "offset_int": "0x7f8", + "reg_width": 32, + "name": "MEDIA RAM19 Memory Rule Register 0 (sram_19_rule0)", + "description": "TrustZone register - MEDIA RAM19 Memory Rule Register 0 (sram_19_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field7FC", + "offset_int": "0x7fc", + "reg_width": 32, + "name": "MEDIA RAM19 Memory Rule Register 1 (sram_19_rule1)", + "description": "TrustZone register - MEDIA RAM19 Memory Rule Register 1 (sram_19_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field800", + "offset_int": "0x800", + "reg_width": 32, + "name": "MEDIA RAM19 Memory Rule Register 2 (sram_19_rule2)", + "description": "TrustZone register - MEDIA RAM19 Memory Rule Register 2 (sram_19_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field804", + "offset_int": "0x804", + "reg_width": 32, + "name": "MEDIA RAM19 Memory Rule Register 3 (sram_19_rule3)", + "description": "TrustZone register - MEDIA RAM19 Memory Rule Register 3 (sram_19_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field808", + "offset_int": "0x808", + "reg_width": 32, + "name": "MEDIA RAM20 Memory Rule Register 0 (sram_20_rule0)", + "description": "TrustZone register - MEDIA RAM20 Memory Rule Register 0 (sram_20_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field80C", + "offset_int": "0x80c", + "reg_width": 32, + "name": "MEDIA RAM20 Memory Rule Register 1 (sram_20_rule1)", + "description": "TrustZone register - MEDIA RAM20 Memory Rule Register 1 (sram_20_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field810", + "offset_int": "0x810", + "reg_width": 32, + "name": "MEDIA RAM20 Memory Rule Register 2 (sram_20_rule2)", + "description": "TrustZone register - MEDIA RAM20 Memory Rule Register 2 (sram_20_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field814", + "offset_int": "0x814", + "reg_width": 32, + "name": "MEDIA RAM20 Memory Rule Register 3 (sram_20_rule3)", + "description": "TrustZone register - MEDIA RAM20 Memory Rule Register 3 (sram_20_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field818", + "offset_int": "0x818", + "reg_width": 32, + "name": "MEDIA RAM21 Memory Rule Register 0 (sram_21_rule0)", + "description": "TrustZone register - MEDIA RAM21 Memory Rule Register 0 (sram_21_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field81C", + "offset_int": "0x81c", + "reg_width": 32, + "name": "MEDIA RAM21 Memory Rule Register 1 (sram_21_rule1)", + "description": "TrustZone register - MEDIA RAM21 Memory Rule Register 1 (sram_21_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field820", + "offset_int": "0x820", + "reg_width": 32, + "name": "MEDIA RAM21 Memory Rule Register 2 (sram_21_rule2)", + "description": "TrustZone register - MEDIA RAM21 Memory Rule Register 2 (sram_21_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field824", + "offset_int": "0x824", + "reg_width": 32, + "name": "MEDIA RAM21 Memory Rule Register 3 (sram_21_rule3)", + "description": "TrustZone register - MEDIA RAM21 Memory Rule Register 3 (sram_21_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field828", + "offset_int": "0x828", + "reg_width": 32, + "name": "MEDIA RAM22 Memory Rule Register 0 (sram_22_rule0)", + "description": "TrustZone register - MEDIA RAM22 Memory Rule Register 0 (sram_22_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field82C", + "offset_int": "0x82c", + "reg_width": 32, + "name": "MEDIA RAM22 Memory Rule Register 1 (sram_22_rule1)", + "description": "TrustZone register - MEDIA RAM22 Memory Rule Register 1 (sram_22_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field830", + "offset_int": "0x830", + "reg_width": 32, + "name": "MEDIA RAM22 Memory Rule Register 2 (sram_22_rule2)", + "description": "TrustZone register - MEDIA RAM22 Memory Rule Register 2 (sram_22_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field834", + "offset_int": "0x834", + "reg_width": 32, + "name": "MEDIA RAM22 Memory Rule Register 3 (sram_22_rule3)", + "description": "TrustZone register - MEDIA RAM22 Memory Rule Register 3 (sram_22_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field838", + "offset_int": "0x838", + "reg_width": 32, + "name": "MEDIA RAM23 Memory Rule Register 0 (sram_23_rule0)", + "description": "TrustZone register - MEDIA RAM23 Memory Rule Register 0 (sram_23_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field83C", + "offset_int": "0x83c", + "reg_width": 32, + "name": "MEDIA RAM23 Memory Rule Register 1 (sram_23_rule1)", + "description": "TrustZone register - MEDIA RAM23 Memory Rule Register 1 (sram_23_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field840", + "offset_int": "0x840", + "reg_width": 32, + "name": "MEDIA RAM23 Memory Rule Register 2 (sram_23_rule2)", + "description": "TrustZone register - MEDIA RAM23 Memory Rule Register 2 (sram_23_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field844", + "offset_int": "0x844", + "reg_width": 32, + "name": "MEDIA RAM23 Memory Rule Register 3 (sram_23_rule3)", + "description": "TrustZone register - MEDIA RAM23 Memory Rule Register 3 (sram_23_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field848", + "offset_int": "0x848", + "reg_width": 32, + "name": "MEDIA RAM24 Memory Rule Register 0 (sram_24_rule0)", + "description": "TrustZone register - MEDIA RAM24 Memory Rule Register 0 (sram_24_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field84C", + "offset_int": "0x84c", + "reg_width": 32, + "name": "MEDIA RAM24 Memory Rule Register 1 (sram_24_rule1)", + "description": "TrustZone register - MEDIA RAM24 Memory Rule Register 1 (sram_24_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field850", + "offset_int": "0x850", + "reg_width": 32, + "name": "MEDIA RAM24 Memory Rule Register 2 (sram_24_rule2)", + "description": "TrustZone register - MEDIA RAM24 Memory Rule Register 2 (sram_24_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field854", + "offset_int": "0x854", + "reg_width": 32, + "name": "MEDIA RAM24 Memory Rule Register 3 (sram_24_rule3)", + "description": "TrustZone register - MEDIA RAM24 Memory Rule Register 3 (sram_24_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field858", + "offset_int": "0x858", + "reg_width": 32, + "name": "MEDIA RAM25 Memory Rule Register 0 (sram_25_rule0)", + "description": "TrustZone register - MEDIA RAM25 Memory Rule Register 0 (sram_25_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field85C", + "offset_int": "0x85c", + "reg_width": 32, + "name": "MEDIA RAM25 Memory Rule Register 1 (sram_25_rule1)", + "description": "TrustZone register - MEDIA RAM25 Memory Rule Register 1 (sram_25_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field860", + "offset_int": "0x860", + "reg_width": 32, + "name": "MEDIA RAM25 Memory Rule Register 2 (sram_25_rule2)", + "description": "TrustZone register - MEDIA RAM25 Memory Rule Register 2 (sram_25_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field864", + "offset_int": "0x864", + "reg_width": 32, + "name": "MEDIA RAM25 Memory Rule Register 3 (sram_25_rule3)", + "description": "TrustZone register - MEDIA RAM25 Memory Rule Register 3 (sram_25_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field868", + "offset_int": "0x868", + "reg_width": 32, + "name": "MEDIA RAM26 Memory Rule Register 0 (sram_26_rule0)", + "description": "TrustZone register - MEDIA RAM26 Memory Rule Register 0 (sram_26_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field86C", + "offset_int": "0x86c", + "reg_width": 32, + "name": "MEDIA RAM26 Memory Rule Register 1 (sram_26_rule1)", + "description": "TrustZone register - MEDIA RAM26 Memory Rule Register 1 (sram_26_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field870", + "offset_int": "0x870", + "reg_width": 32, + "name": "MEDIA RAM26 Memory Rule Register 2 (sram_26_rule2)", + "description": "TrustZone register - MEDIA RAM26 Memory Rule Register 2 (sram_26_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field874", + "offset_int": "0x874", + "reg_width": 32, + "name": "MEDIA RAM26 Memory Rule Register 3 (sram_26_rule3)", + "description": "TrustZone register - MEDIA RAM26 Memory Rule Register 3 (sram_26_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field878", + "offset_int": "0x878", + "reg_width": 32, + "name": "MEDIA RAM27 Memory Rule Register 0 (sram_27_rule0)", + "description": "TrustZone register - MEDIA RAM27 Memory Rule Register 0 (sram_27_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field87C", + "offset_int": "0x87c", + "reg_width": 32, + "name": "MEDIA RAM27 Memory Rule Register 1 (sram_27_rule1)", + "description": "TrustZone register - MEDIA RAM27 Memory Rule Register 1 (sram_27_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field880", + "offset_int": "0x880", + "reg_width": 32, + "name": "MEDIA RAM27 Memory Rule Register 2 (sram_27_rule2)", + "description": "TrustZone register - MEDIA RAM27 Memory Rule Register 2 (sram_27_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field884", + "offset_int": "0x884", + "reg_width": 32, + "name": "MEDIA RAM27 Memory Rule Register 3 (sram_27_rule3)", + "description": "TrustZone register - MEDIA RAM27 Memory Rule Register 3 (sram_27_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field888", + "offset_int": "0x888", + "reg_width": 32, + "name": "MEDIA RAM28 Memory Rule Register 0 (sram_28_rule0)", + "description": "TrustZone register - MEDIA RAM28 Memory Rule Register 0 (sram_28_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field88C", + "offset_int": "0x88c", + "reg_width": 32, + "name": "MEDIA RAM28 Memory Rule Register 1 (sram_28_rule1)", + "description": "TrustZone register - MEDIA RAM28 Memory Rule Register 1 (sram_28_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field890", + "offset_int": "0x890", + "reg_width": 32, + "name": "MEDIA RAM28 Memory Rule Register 2 (sram_28_rule2)", + "description": "TrustZone register - MEDIA RAM28 Memory Rule Register 2 (sram_28_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field894", + "offset_int": "0x894", + "reg_width": 32, + "name": "MEDIA RAM28 Memory Rule Register 3 (sram_28_rule3)", + "description": "TrustZone register - MEDIA RAM28 Memory Rule Register 3 (sram_28_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field898", + "offset_int": "0x898", + "reg_width": 32, + "name": "MEDIA RAM29 Memory Rule Register 0 (sram_29_rule0)", + "description": "TrustZone register - MEDIA RAM29 Memory Rule Register 0 (sram_29_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field89C", + "offset_int": "0x89c", + "reg_width": 32, + "name": "MEDIA RAM29 Memory Rule Register 1 (sram_29_rule1)", + "description": "TrustZone register - MEDIA RAM29 Memory Rule Register 1 (sram_29_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field8A0", + "offset_int": "0x8a0", + "reg_width": 32, + "name": "MEDIA RAM29 Memory Rule Register 2 (sram_29_rule2)", + "description": "TrustZone register - MEDIA RAM29 Memory Rule Register 2 (sram_29_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field8A4", + "offset_int": "0x8a4", + "reg_width": 32, + "name": "MEDIA RAM29 Memory Rule Register 3 (sram_29_rule3)", + "description": "TrustZone register - MEDIA RAM29 Memory Rule Register 3 (sram_29_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field8A8", + "offset_int": "0x8a8", + "reg_width": 32, + "name": "MEDIA XSPI2 Region 0 Memory Rule Register 0 (xspi2_region0_mem_rule0)", + "description": "TrustZone register - MEDIA XSPI2 Region 0 Memory Rule Register 0 (xspi2_region0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field8AC", + "offset_int": "0x8ac", + "reg_width": 32, + "name": "MEDIA XSPI2 Region 0 Memory Rule Register 1 (xspi2_region0_mem_rule1)", + "description": "TrustZone register - MEDIA XSPI2 Region 0 Memory Rule Register 1 (xspi2_region0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field8B0", + "offset_int": "0x8b0", + "reg_width": 32, + "name": "MEDIA XSPI2 Region 0 Memory Rule Register 2 (xspi2_region0_mem_rule2)", + "description": "TrustZone register - MEDIA XSPI2 Region 0 Memory Rule Register 2 (xspi2_region0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field8B4", + "offset_int": "0x8b4", + "reg_width": 32, + "name": "MEDIA XSPI2 Region 0 Memory Rule Register 3 (xspi2_region0_mem_rule3)", + "description": "TrustZone register - MEDIA XSPI2 Region 0 Memory Rule Register 3 (xspi2_region0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field8B8", + "offset_int": "0x8b8", + "reg_width": 32, + "name": "MEDIA XSPI2 Region 1 Memory Rule Register 0 (xspi2_region1_mem_rule0)", + "description": "TrustZone register - MEDIA XSPI2 Region 1 Memory Rule Register 0 (xspi2_region1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field8BC", + "offset_int": "0x8bc", + "reg_width": 32, + "name": "MEDIA XSPI2 Region 2 Memory Rule Register 0 (xspi2_region2_mem_rule0)", + "description": "TrustZone register - MEDIA XSPI2 Region 2 Memory Rule Register 0 (xspi2_region2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field8C0", + "offset_int": "0x8c0", + "reg_width": 32, + "name": "MEDIA XSPI2 Region 3 Memory Rule Register 0 (xspi2_region3_mem_rule0)", + "description": "TrustZone register - MEDIA XSPI2 Region 3 Memory Rule Register 0 (xspi2_region3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field8C4", + "offset_int": "0x8c4", + "reg_width": 32, + "name": "MEDIA XSPI2 Region 4 Memory Rule Register 0 (xspi2_region4_mem_rule0)", + "description": "TrustZone register - MEDIA XSPI2 Region 4 Memory Rule Register 0 (xspi2_region4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field8C8", + "offset_int": "0x8c8", + "reg_width": 32, + "name": "MEDIA XSPI2 Region 5 Memory Rule Register 0 (xspi2_region5_mem_rule0)", + "description": "TrustZone register - MEDIA XSPI2 Region 5 Memory Rule Register 0 (xspi2_region5_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field8CC", + "offset_int": "0x8cc", + "reg_width": 32, + "name": "MEDIA Master Secure Level Register (master_sec_level)", + "description": "TrustZone register - MEDIA Master Secure Level Register (master_sec_level)", + "default_value_int": "0x0" + }, + { + "id": "field8D0", + "offset_int": "0x8d0", + "reg_width": 32, + "name": "MEDIA Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - MEDIA Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xffffffff" + }, + { + "id": "field8D4", + "offset_int": "0x8d4", + "reg_width": 32, + "name": "MEDIA Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - MEDIA Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0x865a" + }, + { + "id": "field8D8", + "offset_int": "0x8d8", + "reg_width": 32, + "name": "MEDIA Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - MEDIA Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0x865a" + }, + { + "id": "field8DC", + "offset_int": "0x8dc", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field8E0", + "offset_int": "0x8e0", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field8E4", + "offset_int": "0x8e4", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field8E8", + "offset_int": "0x8e8", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field8EC", + "offset_int": "0x8ec", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field8F0", + "offset_int": "0x8f0", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field8F4", + "offset_int": "0x8f4", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field8F8", + "offset_int": "0x8f8", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field8FC", + "offset_int": "0x8fc", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field900", + "offset_int": "0x900", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field904", + "offset_int": "0x904", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field908", + "offset_int": "0x908", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field90C", + "offset_int": "0x90c", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field910", + "offset_int": "0x910", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field914", + "offset_int": "0x914", + "reg_width": 32, + "name": "ITRC EXT_KEY_RESET Trigger source selector register 0 (itrc_itr_out_out7_sel0)", + "description": "TrustZone register - ITRC EXT_KEY_RESET Trigger source selector register 0 (itrc_itr_out_out7_sel0)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field918", + "offset_int": "0x918", + "reg_width": 32, + "name": "ITRC EXT_KEY_RESET Trigger source selector register 1 (itrc_itr_out_out7_sel1)", + "description": "TrustZone register - ITRC EXT_KEY_RESET Trigger source selector register 1 (itrc_itr_out_out7_sel1)", + "default_value_int": "0xaaaaaa0a" + }, + { + "id": "field91C", + "offset_int": "0x91c", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_1)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field920", + "offset_int": "0x920", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_1)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field924", + "offset_int": "0x924", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_1)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field928", + "offset_int": "0x928", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_1)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field92C", + "offset_int": "0x92c", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field930", + "offset_int": "0x930", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_1)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field934", + "offset_int": "0x934", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field938", + "offset_int": "0x938", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_1)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field93C", + "offset_int": "0x93c", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field940", + "offset_int": "0x940", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field944", + "offset_int": "0x944", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field948", + "offset_int": "0x948", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field94C", + "offset_int": "0x94c", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field950", + "offset_int": "0x950", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_1)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field954", + "offset_int": "0x954", + "reg_width": 32, + "name": "ITRC EXT_KEY_RESET Trigger source selector register 0 (itrc_itr_out_out7_sel0_1)", + "description": "TrustZone register - ITRC EXT_KEY_RESET Trigger source selector register 0 (itrc_itr_out_out7_sel0_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field958", + "offset_int": "0x958", + "reg_width": 32, + "name": "ITRC EXT_KEY_RESET Trigger source selector register 1 (itrc_itr_out_out7_sel1_1)", + "description": "TrustZone register - ITRC EXT_KEY_RESET Trigger source selector register 1 (itrc_itr_out_out7_sel1_1)", + "default_value_int": "0xaa2aaa22" + }, + { + "id": "field95C", + "offset_int": "0x95c", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_2)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 0 (itrc_irq_out0_sel0_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field960", + "offset_int": "0x960", + "reg_width": 32, + "name": "ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_2)", + "description": "TrustZone register - ITRC IRQ Trigger source selector register 1 (itrc_irq_out0_sel1_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field964", + "offset_int": "0x964", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_2)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 0 (itrc_css_reset_out1_sel0_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field968", + "offset_int": "0x968", + "reg_width": 32, + "name": "ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_2)", + "description": "TrustZone register - ITRC CSS_RESET Trigger source selector register 1 (itrc_css_reset_out1_sel1_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field96C", + "offset_int": "0x96c", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_2)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 0 (itrc_puf_zeroize_out2_sel0_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field970", + "offset_int": "0x970", + "reg_width": 32, + "name": "ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_2)", + "description": "TrustZone register - ITRC PUF_ZEROIZE Trigger source selector register 1 (itrc_puf_zeroize_out2_sel1_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field974", + "offset_int": "0x974", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_2)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 0 (itrc_ram_zeroize_out3_sel0_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field978", + "offset_int": "0x978", + "reg_width": 32, + "name": "ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_2)", + "description": "TrustZone register - ITRC RAM_ZEROIZE Trigger source selector register 1 (itrc_ram_zeroize_out3_sel1_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field97C", + "offset_int": "0x97c", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_2)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 0 (itrc_chip_reset_out4_sel0_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field980", + "offset_int": "0x980", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_2)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger source selector register 1 (itrc_chip_reset_out4_sel1_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field984", + "offset_int": "0x984", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out5_sel0_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field988", + "offset_int": "0x988", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out5_sel1_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field98C", + "offset_int": "0x98c", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 0 (itrc_itr_out_out6_sel0_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field990", + "offset_int": "0x990", + "reg_width": 32, + "name": "ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_2)", + "description": "TrustZone register - ITRC ITR_OUT Trigger source selector register 1 (itrc_itr_out_out6_sel1_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field994", + "offset_int": "0x994", + "reg_width": 32, + "name": "ITRC EXT_KEY_RESET Trigger source selector register 0 (itrc_itr_out_out7_sel0_2)", + "description": "TrustZone register - ITRC EXT_KEY_RESET Trigger source selector register 0 (itrc_itr_out_out7_sel0_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field998", + "offset_int": "0x998", + "reg_width": 32, + "name": "ITRC EXT_KEY_RESET Trigger source selector register 1 (itrc_itr_out_out7_sel1_2)", + "description": "TrustZone register - ITRC EXT_KEY_RESET Trigger source selector register 1 (itrc_itr_out_out7_sel1_2)", + "default_value_int": "0x80002aaa" + }, + { + "id": "field99C", + "offset_int": "0x99c", + "reg_width": 32, + "name": "GPIO0 Pin Control Non-Secure (gpio0_pcns)", + "description": "TrustZone register - GPIO0 Pin Control Non-Secure (gpio0_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field9A0", + "offset_int": "0x9a0", + "reg_width": 32, + "name": "GPIO0 Pin Control Non-Privilege (gpio0_pcnp)", + "description": "TrustZone register - GPIO0 Pin Control Non-Privilege (gpio0_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field9A4", + "offset_int": "0x9a4", + "reg_width": 32, + "name": "GPIO0 Interrupt Control Non-Secure (gpio0_icns)", + "description": "TrustZone register - GPIO0 Interrupt Control Non-Secure (gpio0_icns)", + "default_value_int": "0x0" + }, + { + "id": "field9A8", + "offset_int": "0x9a8", + "reg_width": 32, + "name": "GPIO0 Interrupt Control Non-Privilege (gpio0_icnp)", + "description": "TrustZone register - GPIO0 Interrupt Control Non-Privilege (gpio0_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field9AC", + "offset_int": "0x9ac", + "reg_width": 32, + "name": "GPIO0 Lock Register (gpio0_lock)", + "description": "TrustZone register - GPIO0 Lock Register (gpio0_lock)", + "default_value_int": "0x0" + }, + { + "id": "field9B0", + "offset_int": "0x9b0", + "reg_width": 32, + "name": "GPIO1 Pin Control Non-Secure (gpio1_pcns)", + "description": "TrustZone register - GPIO1 Pin Control Non-Secure (gpio1_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field9B4", + "offset_int": "0x9b4", + "reg_width": 32, + "name": "GPIO1 Pin Control Non-Privilege (gpio1_pcnp)", + "description": "TrustZone register - GPIO1 Pin Control Non-Privilege (gpio1_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field9B8", + "offset_int": "0x9b8", + "reg_width": 32, + "name": "GPIO1 Interrupt Control Non-Secure (gpio1_icns)", + "description": "TrustZone register - GPIO1 Interrupt Control Non-Secure (gpio1_icns)", + "default_value_int": "0x0" + }, + { + "id": "field9BC", + "offset_int": "0x9bc", + "reg_width": 32, + "name": "GPIO1 Interrupt Control Non-Privilege (gpio1_icnp)", + "description": "TrustZone register - GPIO1 Interrupt Control Non-Privilege (gpio1_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field9C0", + "offset_int": "0x9c0", + "reg_width": 32, + "name": "GPIO1 Lock Register (gpio1_lock)", + "description": "TrustZone register - GPIO1 Lock Register (gpio1_lock)", + "default_value_int": "0x0" + }, + { + "id": "field9C4", + "offset_int": "0x9c4", + "reg_width": 32, + "name": "GPIO2 Pin Control Non-Secure (gpio2_pcns)", + "description": "TrustZone register - GPIO2 Pin Control Non-Secure (gpio2_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field9C8", + "offset_int": "0x9c8", + "reg_width": 32, + "name": "GPIO2 Pin Control Non-Privilege (gpio2_pcnp)", + "description": "TrustZone register - GPIO2 Pin Control Non-Privilege (gpio2_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field9CC", + "offset_int": "0x9cc", + "reg_width": 32, + "name": "GPIO2 Interrupt Control Non-Secure (gpio2_icns)", + "description": "TrustZone register - GPIO2 Interrupt Control Non-Secure (gpio2_icns)", + "default_value_int": "0x0" + }, + { + "id": "field9D0", + "offset_int": "0x9d0", + "reg_width": 32, + "name": "GPIO2 Interrupt Control Non-Privilege (gpio2_icnp)", + "description": "TrustZone register - GPIO2 Interrupt Control Non-Privilege (gpio2_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field9D4", + "offset_int": "0x9d4", + "reg_width": 32, + "name": "GPIO2 Lock Register (gpio2_lock)", + "description": "TrustZone register - GPIO2 Lock Register (gpio2_lock)", + "default_value_int": "0x0" + }, + { + "id": "field9D8", + "offset_int": "0x9d8", + "reg_width": 32, + "name": "GPIO3 Pin Control Non-Secure (gpio3_pcns)", + "description": "TrustZone register - GPIO3 Pin Control Non-Secure (gpio3_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field9DC", + "offset_int": "0x9dc", + "reg_width": 32, + "name": "GPIO3 Pin Control Non-Privilege (gpio3_pcnp)", + "description": "TrustZone register - GPIO3 Pin Control Non-Privilege (gpio3_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field9E0", + "offset_int": "0x9e0", + "reg_width": 32, + "name": "GPIO3 Interrupt Control Non-Secure (gpio3_icns)", + "description": "TrustZone register - GPIO3 Interrupt Control Non-Secure (gpio3_icns)", + "default_value_int": "0x0" + }, + { + "id": "field9E4", + "offset_int": "0x9e4", + "reg_width": 32, + "name": "GPIO3 Interrupt Control Non-Privilege (gpio3_icnp)", + "description": "TrustZone register - GPIO3 Interrupt Control Non-Privilege (gpio3_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field9E8", + "offset_int": "0x9e8", + "reg_width": 32, + "name": "GPIO3 Lock Register (gpio3_lock)", + "description": "TrustZone register - GPIO3 Lock Register (gpio3_lock)", + "default_value_int": "0x0" + }, + { + "id": "field9EC", + "offset_int": "0x9ec", + "reg_width": 32, + "name": "GPIO4 Pin Control Non-Secure (gpio4_pcns)", + "description": "TrustZone register - GPIO4 Pin Control Non-Secure (gpio4_pcns)", + "default_value_int": "0x0" + }, + { + "id": "field9F0", + "offset_int": "0x9f0", + "reg_width": 32, + "name": "GPIO4 Pin Control Non-Privilege (gpio4_pcnp)", + "description": "TrustZone register - GPIO4 Pin Control Non-Privilege (gpio4_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "field9F4", + "offset_int": "0x9f4", + "reg_width": 32, + "name": "GPIO4 Interrupt Control Non-Secure (gpio4_icns)", + "description": "TrustZone register - GPIO4 Interrupt Control Non-Secure (gpio4_icns)", + "default_value_int": "0x0" + }, + { + "id": "field9F8", + "offset_int": "0x9f8", + "reg_width": 32, + "name": "GPIO4 Interrupt Control Non-Privilege (gpio4_icnp)", + "description": "TrustZone register - GPIO4 Interrupt Control Non-Privilege (gpio4_icnp)", + "default_value_int": "0x0" + }, + { + "id": "field9FC", + "offset_int": "0x9fc", + "reg_width": 32, + "name": "GPIO4 Lock Register (gpio4_lock)", + "description": "TrustZone register - GPIO4 Lock Register (gpio4_lock)", + "default_value_int": "0x0" + }, + { + "id": "fieldA00", + "offset_int": "0xa00", + "reg_width": 32, + "name": "GPIO5 Pin Control Non-Secure (gpio5_pcns)", + "description": "TrustZone register - GPIO5 Pin Control Non-Secure (gpio5_pcns)", + "default_value_int": "0x0" + }, + { + "id": "fieldA04", + "offset_int": "0xa04", + "reg_width": 32, + "name": "GPIO5 Pin Control Non-Privilege (gpio5_pcnp)", + "description": "TrustZone register - GPIO5 Pin Control Non-Privilege (gpio5_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "fieldA08", + "offset_int": "0xa08", + "reg_width": 32, + "name": "GPIO5 Interrupt Control Non-Secure (gpio5_icns)", + "description": "TrustZone register - GPIO5 Interrupt Control Non-Secure (gpio5_icns)", + "default_value_int": "0x0" + }, + { + "id": "fieldA0C", + "offset_int": "0xa0c", + "reg_width": 32, + "name": "GPIO5 Interrupt Control Non-Privilege (gpio5_icnp)", + "description": "TrustZone register - GPIO5 Interrupt Control Non-Privilege (gpio5_icnp)", + "default_value_int": "0x0" + }, + { + "id": "fieldA10", + "offset_int": "0xa10", + "reg_width": 32, + "name": "GPIO5 Lock Register (gpio5_lock)", + "description": "TrustZone register - GPIO5 Lock Register (gpio5_lock)", + "default_value_int": "0x0" + }, + { + "id": "fieldA14", + "offset_int": "0xa14", + "reg_width": 32, + "name": "GPIO6 Pin Control Non-Secure (gpio6_pcns)", + "description": "TrustZone register - GPIO6 Pin Control Non-Secure (gpio6_pcns)", + "default_value_int": "0x0" + }, + { + "id": "fieldA18", + "offset_int": "0xa18", + "reg_width": 32, + "name": "GPIO6 Pin Control Non-Privilege (gpio6_pcnp)", + "description": "TrustZone register - GPIO6 Pin Control Non-Privilege (gpio6_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "fieldA1C", + "offset_int": "0xa1c", + "reg_width": 32, + "name": "GPIO6 Interrupt Control Non-Secure (gpio6_icns)", + "description": "TrustZone register - GPIO6 Interrupt Control Non-Secure (gpio6_icns)", + "default_value_int": "0x0" + }, + { + "id": "fieldA20", + "offset_int": "0xa20", + "reg_width": 32, + "name": "GPIO6 Interrupt Control Non-Privilege (gpio6_icnp)", + "description": "TrustZone register - GPIO6 Interrupt Control Non-Privilege (gpio6_icnp)", + "default_value_int": "0x0" + }, + { + "id": "fieldA24", + "offset_int": "0xa24", + "reg_width": 32, + "name": "GPIO6 Lock Register (gpio6_lock)", + "description": "TrustZone register - GPIO6 Lock Register (gpio6_lock)", + "default_value_int": "0x0" + }, + { + "id": "fieldA28", + "offset_int": "0xa28", + "reg_width": 32, + "name": "GPIO7 Pin Control Non-Secure (gpio7_pcns)", + "description": "TrustZone register - GPIO7 Pin Control Non-Secure (gpio7_pcns)", + "default_value_int": "0x0" + }, + { + "id": "fieldA2C", + "offset_int": "0xa2c", + "reg_width": 32, + "name": "GPIO7 Pin Control Non-Privilege (gpio7_pcnp)", + "description": "TrustZone register - GPIO7 Pin Control Non-Privilege (gpio7_pcnp)", + "default_value_int": "0x0" + }, + { + "id": "fieldA30", + "offset_int": "0xa30", + "reg_width": 32, + "name": "GPIO7 Interrupt Control Non-Secure (gpio7_icns)", + "description": "TrustZone register - GPIO7 Interrupt Control Non-Secure (gpio7_icns)", + "default_value_int": "0x0" + }, + { + "id": "fieldA34", + "offset_int": "0xa34", + "reg_width": 32, + "name": "GPIO7 Interrupt Control Non-Privilege (gpio7_icnp)", + "description": "TrustZone register - GPIO7 Interrupt Control Non-Privilege (gpio7_icnp)", + "default_value_int": "0x0" + }, + { + "id": "fieldA38", + "offset_int": "0xa38", + "reg_width": 32, + "name": "GPIO7 Lock Register (gpio7_lock)", + "description": "TrustZone register - GPIO7 Lock Register (gpio7_lock)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2012/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2012/database.yaml new file mode 100644 index 0000000..6202756 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2012/database.yaml @@ -0,0 +1,32 @@ +# Copyright 2023-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mc56f81768 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: Wireless Power + spsdk_predecessor_name: mwct2x12 + # Web page of MCU representative + web: https://www.nxp.com/products/power-management/wireless-power:WIRCHA_ICS + memory_map: # Memory map basic info + internal-flash: + start_int: 0x0 + size_int: 0x20000 + external: false + ram: + start_int: 0x60000 + size_int: 0x5000 + external: false + + +features: + wpc: + id_type: rsid + id_length: 96 + insert_puc_only: true + need_reset: true + need_address_adjust: true + check_lifecycle: 3 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2012a/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2012a/database.yaml new file mode 100644 index 0000000..6adefe5 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2012a/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mwct2012 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2014s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2014s/database.yaml new file mode 100644 index 0000000..ca5c8e7 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2014s/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mwct2d17s diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2015s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2015s/database.yaml new file mode 100644 index 0000000..ca5c8e7 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2015s/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mwct2d17s diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2016s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2016s/database.yaml new file mode 100644 index 0000000..ca5c8e7 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2016s/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mwct2d17s diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2/database.yaml new file mode 100644 index 0000000..4d23360 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2/database.yaml @@ -0,0 +1,22 @@ +# Copyright 2023-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mc56f81868 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: Wireless Power + spsdk_predecessor_name: mwct2xd2 + # Web page of MCU representative + web: https://www.nxp.com/products/power-management/wireless-power:WIRCHA_ICS + +features: + wpc: + id_type: rsid + id_length: 96 + insert_puc_only: true + need_reset: true + need_address_adjust: true + check_lifecycle: 3 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2/ifr.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2/ifr.json new file mode 100644 index 0000000..2da5d3c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2/ifr.json @@ -0,0 +1,149 @@ +{ + "cpu": "MWCT20D2", + "groups": [ + { + "group": { + "name": "Customer IFR data", + "description": "Customer IFR data" + }, + "registers": [ + { + "id": "field000", + "name": "CUSTOMER_DEFINED0", + "description": "Customer defined", + "offset_int": "0x00C0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field001", + "name": "CUSTOMER_DEFINED1", + "description": "Customer defined", + "offset_int": "0x00C4", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field002", + "name": "CUSTOMER_DEFINED2", + "description": "Customer defined", + "offset_int": "0x00C8", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field003", + "name": "CUSTOMER_DEFINED3", + "description": "Customer defined", + "offset_int": "0x00CC", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field004", + "name": "CUSTOMER_DEFINED4", + "description": "Customer defined", + "offset_int": "0x00D0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field005", + "name": "CUSTOMER_DEFINED5", + "description": "Customer defined", + "offset_int": "0x00D4", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field006", + "name": "CUSTOMER_DEFINED6", + "description": "Customer defined", + "offset_int": "0x00D8", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field007", + "name": "CUSTOMER_DEFINED7", + "description": "Customer defined", + "offset_int": "0x00DC", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field008", + "name": "CUSTOMER_DEFINED8", + "description": "Customer defined", + "offset_int": "0x00E0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field009", + "name": "CUSTOMER_DEFINED9", + "description": "Customer defined", + "offset_int": "0x00E4", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field010", + "name": "CUSTOMER_DEFINED10", + "description": "Customer defined", + "offset_int": "0x00E8", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field011", + "name": "CUSTOMER_DEFINED11", + "description": "Customer defined", + "offset_int": "0x00EC", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + } + ] + }, + { + "group": { + "name": "ISK_CERT_HASH", + "description": "ISK_CERT_HASH" + }, + "registers": [ + { + "id": "field012", + "name": "ISK_CERT_HASH[31:0]", + "description": "ISK_CERT_HASH[31:0]", + "offset_int": "0x00F0", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field013", + "name": "ISK_CERT_HASH[63:32]", + "description": "ISK_CERT_HASH[63:32]", + "offset_int": "0x00F4", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field014", + "name": "ISK_CERT_HASH[95:64]", + "description": "ISK_CERT_HASH[95:64]", + "offset_int": "0x00F8", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + }, + { + "id": "field015", + "name": "ISK_CERT_HASH[127:96]", + "description": "ISK_CERT_HASH[127:96]", + "offset_int": "0x00FC", + "default_value_int": "0xFFFFFFFF", + "individual_write_lock": "implicit" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2a/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2a/database.yaml new file mode 100644 index 0000000..d4842c3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct20d2a/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mwct20d2 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2d16s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2d16s/database.yaml new file mode 100644 index 0000000..ca5c8e7 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2d16s/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: mwct2d17s diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2d17s/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2d17s/database.yaml new file mode 100644 index 0000000..73cded7 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/mwct2d17s/database.yaml @@ -0,0 +1,37 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a0: {} + +latest: a0 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: Wireless Power + spsdk_predecessor_name: mwct2xxxs + # Web page of MCU representative + web: https://www.nxp.com/products/power-management/wireless-power/mwct2xxxs-microcontroller-for-wireless-charging-transmitter-ics:MWCT2xxxS + memory_map: {} # Memory map basic info + isp: + rom: {} + flashloader: + protocol: mboot + interfaces: ["uart", "usb"] + usb: + - vid: 0x15a2 + pid: 0x0073 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_0000 + + wpc: + id_type: computed_csr + id_length: 136 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/database.yaml new file mode 100644 index 0000000..495c23c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/database.yaml @@ -0,0 +1,184 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a4: {} +latest: a4 + +# General MCU information +info: + use_in_doc: True # Include this MCU in generated documentation + purpose: Wireless Connectivity MCUs + spsdk_predecessor_name: nhs52sxx + # Web page of MCU representative + web: https://www.nxp.com/products/wireless-connectivity/bluetooth-low-energy/nhs52s04-ultra-low-power-bluetooth-low-energy-solution-with-arm-cortex-m33-trustzone-for-medical-iot:NHS52S04 + memory_map: + # Memory map basic info + internal-flash_ns: + start_int: 0x0 + size_int: 0xFE000 + external: false + internal-flash_s: + start_int: 0x10000000 + size_int: 0xFE000 + external: false + mirror_of: internal-flash_ns + sram: + start_int: 0x20004000 + size_int: 0x1C000 + external: false + sramx: + start_int: 0x4000000 + size_int: 0x4000 + external: false + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0021 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_4000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert1] + rot_type: "cert_block_1" + + # ======== DAT section ======== + dat: + socc: 1 # SOCC identification + dmbox_ap_ix: 2 # Typical Index of debug mailbox access port is 2 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinLoadAddress + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinHwKey + - Mbi_MixinLoadAddress + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_ram: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV1 + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZone + - Mbi_MixinLoadAddress + - Mbi_MixinCertBlockV1 + - Mbi_MixinHwKey + - Mbi_ExportMixinAppTrustZoneCertBlock + - Mbi_ExportMixinRsaSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + crc: crc_ram + signed: signed_ram + + # ======== PFR section ======== + pfr: + cfpa: # CFPA description + address: 0xF_E000 + size: 512 + reg_spec: pfr_cfpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + computed_fields: + field01C: # VENDOR_USAGE + field01C-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field020: # DCFG_CC_SOCU_NS_PIN + field020-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field024: # DCFG_CC_SOCU_NS_DFLT + field024-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + cmpa: # CMPA description + address: 0x10_4000 + size: 512 + reg_spec: pfr_cmpa.json + seal_start: field1E0 # SHA256_DIGEST0 + seal_count: 8 + grouped_registers: + - uid: cmpa_rotkh + name: ROTKH + width: 256 + config_as_hexstring: true + reversed: true + description: + ROTKH field is compounded by 8 32-bit fields and contains Root key + table hash + sub_regs: + - field060 + - field064 + - field068 + - field06C + - field070 + - field074 + - field078 + - field07C + computed_fields: + field008: # DCFG_CC_SOCU_PIN + field008-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + field00C: # DCFG_CC_SOCU_DFLT + field00C-bits16-31: pfr_reg_inverse_high_half # INVERSE_VALUE + + # ======== Secure binary v2.1 section ======== + sb21: + supported_commands: [erase, load, enable, fill, jump, version_check] + keyblobs: false + + # ======== TrustZone section ======== + tz: + reg_spec: tz.json + + # ======== Bootable image section ======== + bootable_image: + mem_types: + recovery_spi: + segments: + sb21: 0x00 + internal: + segments: + mbi: 0x00 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/pfr_cfpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/pfr_cfpa.json new file mode 100644 index 0000000..1619661 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/pfr_cfpa.json @@ -0,0 +1,1523 @@ +{ + "cpu": "nhs52s04", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "HEADER", + "description": "CFPA header field", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field004", + "name": "VERSION", + "description": "CFPA version number", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field008", + "name": "S_FW_Version", + "description": "Secure firmware version (Monotonic counter)", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field00C", + "name": "NS_FW_Version", + "description": "Non-Secure firmware version (Monotonic counter)", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field010", + "name": "IMAGE_KEY_REVOKE", + "description": "Image key revocation ID (Monotonic counter)", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00014", + "name": "Reserved 0x00014", + "description": "This field is reserved for internal use", + "offset_int": "0x0014", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field018", + "name": "ROTKH_REVOKE", + "description": "Root of Trust Key Hash Revoke", + "offset_int": "0x0018", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field018-bits0-1", + "name": "RoTK0_EN", + "description": "RoT Key 0 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits2-3", + "name": "RoTK1_EN", + "description": "RoT Key 1 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits4-5", + "name": "RoTK2_EN", + "description": "RoT Key 2 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 2, + "id": "field018-bits6-7", + "name": "RoTK3_EN", + "description": "RoT Key 3 enable.", + "values": [ + { + "name": "INVALID", + "value": 0, + "description": "Invalid" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + }, + { + "name": "REVOKED_0", + "value": 2, + "description": "Key revoked" + }, + { + "name": "REVOKED_1", + "value": 3, + "description": "Key revoked" + } + ] + }, + { + "width": 24 + } + ] + }, + { + "id": "field01C", + "name": "VENDOR_USAGE", + "description": "Debug vendor usage field", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field01C-bits0-15", + "name": "DBG_VENDOR_USAGE", + "description": "DBG_VENDOR_USAGE." + }, + { + "width": 16, + "id": "field01C-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field020", + "name": "DCFG_CC_SOCU_NS_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n - PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field020-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field020-bit6", + "name": "ISPCMDEN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field020-bit7", + "name": "PMCMDEN", + "description": "Programmers Mode Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field020-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field020-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field024", + "name": "DCFG_CC_SOCU_NS_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n - PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field024-bit6", + "name": "ISPCMDEN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "PMCMDEN", + "description": "Programmers Mode Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field024-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field028", + "name": "ENABLE_FA_MODE", + "description": "Enable FA mode.", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field02C", + "name": "CMPA_PROG_IN_PROGRESS", + "description": "CMPA Page programming on going.", + "offset_int": "0x002C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Reserved 00030-0007C", + "description": "Reserved 00030-0007C" + }, + "registers": [ + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00050", + "name": "Reserved 0x00050", + "description": "This field is reserved for internal use", + "offset_int": "0x0050", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00054", + "name": "Reserved 0x00054", + "description": "This field is reserved for internal use", + "offset_int": "0x0054", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00058", + "name": "Reserved 0x00058", + "description": "This field is reserved for internal use", + "offset_int": "0x0058", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0005C", + "name": "Reserved 0x0005C", + "description": "This field is reserved for internal use", + "offset_int": "0x005C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00060", + "name": "Reserved 0x00060", + "description": "This field is reserved for internal use", + "offset_int": "0x0060", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00064", + "name": "Reserved 0x00064", + "description": "This field is reserved for internal use", + "offset_int": "0x0064", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00068", + "name": "Reserved 0x00068", + "description": "This field is reserved for internal use", + "offset_int": "0x0068", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0006C", + "name": "Reserved 0x0006C", + "description": "This field is reserved for internal use", + "offset_int": "0x006C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00070", + "name": "Reserved 0x00070", + "description": "This field is reserved for internal use", + "offset_int": "0x0070", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00074", + "name": "Reserved 0x00074", + "description": "This field is reserved for internal use", + "offset_int": "0x0074", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00078", + "name": "Reserved 0x00078", + "description": "This field is reserved for internal use", + "offset_int": "0x0078", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0007C", + "name": "Reserved 0x0007C", + "description": "This field is reserved for internal use", + "offset_int": "0x007C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field080", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0080", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0084", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0088", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x008C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field090", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0090", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field094", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0094", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field098", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0098", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field09C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x009C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A0", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A4", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A8", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0AC", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B0", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C0", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C4", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C8", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0CC", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D0", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D4", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D8", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0DC", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00DC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E0", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E4", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E8", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0EC", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00EC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F0", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F4", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F8", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0FC", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00FC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field100", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED56", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED57", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED58", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED59", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED60", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED61", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED62", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED63", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED64", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED65", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED66", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED67", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED68", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED69", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED70", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED71", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED72", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED73", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED74", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED75", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED76", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED77", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED78", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED79", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED80", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED81", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED82", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED83", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED84", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED85", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED86", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED87", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/pfr_cmpa.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/pfr_cmpa.json new file mode 100644 index 0000000..1102bc1 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/pfr_cmpa.json @@ -0,0 +1,4261 @@ +{ + "cpu": "nhs52s04", + "groups": [ + { + "group": { + "name": "Configuration", + "description": "Configuration" + }, + "registers": [ + { + "id": "field000", + "name": "BOOT_CFG", + "description": "Boot Configuration", + "offset_int": "0", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 4 + }, + { + "width": 3, + "id": "field000-bits4-6", + "name": "DEFAULT_ISP_MODE", + "description": "Default ISP mode:", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto ISP" + }, + { + "name": "UART_ISP", + "value": 2, + "description": "UART ISP" + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "SPI Slave ISP" + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "I2C Slave ISP" + }, + { + "name": "DISABLE", + "value": 7, + "description": "Disable ISP fall through" + } + ] + }, + { + "width": 2, + "id": "field000-bits7-8", + "name": "BOOT_SPEED", + "description": "Core clock:", + "values": [ + { + "name": "SYSTEM_SPEED_CODE", + "value": 0, + "description": "Defined by NMPA.SYSTEM_SPEED_CODE" + }, + { + "name": "FRO_12MHZ", + "value": 1, + "description": "12MHz FRO" + }, + { + "name": "FRO_32MHZ", + "value": 2, + "description": "32MHz FRO" + } + ] + }, + { + "width": 15 + }, + { + "width": 8, + "id": "field000-bits24-31", + "name": "BOOT_FAILURE_PIN", + "description": "GPIO port and number of the pin to use for indicating failure reason. \nThe toggle rate of the pin is used to decode the error type. [2:0] - Defines GPIO port [7:3] - Defines GPIO pin" + } + ] + }, + { + "id": "field004", + "name": "SPI_FLASH_CFG", + "description": "SPI Flash Configuration", + "offset_int": "0x0004", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 5, + "id": "field004-bits0-4", + "name": "SPI_RECOVERY_BOOT_EN", + "description": "SPI flash recovery boot is enabled, if non-zero value is written to this field." + }, + { + "width": 27 + } + ] + }, + { + "id": "field008", + "name": "DCFG_CC_SOCU_PIN", + "description": "Device Configuration Credential Constraints for SoC specific Use Pinned. \nCombinations of PIN and DFLT bits and resulting restriction level: \n - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n - PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x0008", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field008-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field008-bit1", + "name": "DBGEN", + "description": "Non Secure debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field008-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field008-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field008-bit4", + "name": "TAPEN", + "description": "JTAG TAP enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field008-bit6", + "name": "ISPCMDEN", + "description": "ISP Boot Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 1, + "id": "field008-bit7", + "name": "PMCMDEN", + "description": "Programmers Mode Command enable", + "values": [ + { + "name": "USE_DAP", + "value": 0, + "description": "Use DAP to enable" + }, + { + "name": "FIXED_STATE", + "value": 1, + "description": "Fixed state" + } + ] + }, + { + "width": 7 + }, + { + "width": 1, + "id": "field008-bit15", + "name": "UUID_CHECK", + "description": "Enforce UUID match during Debug authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 16, + "id": "field008-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field00C", + "name": "DCFG_CC_SOCU_DFLT", + "description": "Device Configuration Credential Constraints for SoC specific Use Debug Filter. \nCombinations of PIN and DFLT bits and resulting restriction level: \n - PIN=1,DFLT=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n - PIN=0,DFLT=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through debug authentication process by providing appropriate Debug Credential (DC) certificate. \n - PIN=0,DFLT=1: Illegal setting. Part may lock-up if this setting is selected. \n - PIN=1,DFLT=0: Restriction level 3. Access to the sub-domain is permanently disabled and can't be reversed. This setting offers the highest level of restriction.", + "offset_int": "0x000C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field00C-bit0", + "name": "NIDEN", + "description": "Non Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field00C-bit1", + "name": "DBGEN", + "description": "Non Secure debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field00C-bit2", + "name": "SPNIDEN", + "description": "Secure non-invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field00C-bit3", + "name": "SPIDEN", + "description": "Secure invasive debug fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field00C-bit4", + "name": "TAPEN", + "description": "JTAG TAP fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "field00C-bit6", + "name": "ISPCMDEN", + "description": "ISP Boot Command fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "field00C-bit7", + "name": "PMCMDEN", + "description": "Programmers Mode fixed state", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 8 + }, + { + "width": 16, + "id": "field00C-bits16-31", + "name": "INVERSE_VALUE", + "description": "inverse value of bits [15:0]", + "calculated": "INVERSE" + } + ] + }, + { + "id": "field010", + "name": "VENDOR_USAGE", + "description": "Field.", + "offset_int": "0x0010", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16 + }, + { + "width": 16, + "id": "field010-bits16-31", + "name": "VENDOR_USAGE", + "description": "Upper 16 bits of vendor usage field defined in DAP. Lower 16-bits come from customer field area." + } + ] + }, + { + "id": "field014", + "name": "SECURE_BOOT_CFG", + "description": "Secure Boot Configuration", + "offset_int": "0x0014", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 2, + "id": "field014-bits0-1", + "name": "RSA4K", + "description": "Select minimal key length. To enforce usage of RSA4096, setting 0b11 value is recommended to allow RSA4096 keys only.", + "values": [ + { + "name": "RSA2048", + "value": 0, + "description": "RSA2048 or higher can be used for image signing. Only RSA2048 can be used as debug keys." + }, + { + "name": "RSA4096_0", + "value": 1, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + }, + { + "name": "RSA4096_1", + "value": 2, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + }, + { + "name": "RSA4096_2", + "value": 3, + "description": "Only RSA4096 keys can be used for image signing and debug authentication." + } + ] + }, + { + "width": 2, + "id": "field014-bits2-3", + "name": "DICE_INC_NXP_CFG", + "description": "Include NXP area in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field014-bits4-5", + "name": "DICE_CUST_CFG", + "description": "Include Customer factory area (including keys) in DICE computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field014-bits6-7", + "name": "SKIP_DICE", + "description": "Skip DICE computation", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable DICE" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable DICE" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable DICE" + } + ] + }, + { + "width": 2, + "id": "field014-bits8-9", + "name": "TZM_IMAGE_TYPE", + "description": "TrustZone-M mode", + "values": [ + { + "name": "HEADER", + "value": 0, + "description": "TZ-M image mode is taken from application image header" + }, + { + "name": "DISABLED", + "value": 1, + "description": "TZ-M disabled image, boots to non-secure mode" + }, + { + "name": "ENABLED", + "value": 2, + "description": "TZ-M enabled image, boots to secure mode" + }, + { + "name": "PRESET", + "value": 3, + "description": "TZ-M enabled image with TZ-M preset, boot to secure mode TZ-M pre-configured by data from application image header" + } + ] + }, + { + "width": 2, + "id": "field014-bits10-11", + "name": "BLOCK_SET_KEY", + "description": "Block PUF key code generation", + "values": [ + { + "name": "ALLOW", + "value": 0, + "description": "Allow PUF Key Code generation" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable PUF Key Code generation" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable PUF Key Code generation" + } + ] + }, + { + "width": 2 + }, + { + "width": 2, + "id": "field014-bits14-15", + "name": "DICE_INC_SEC_EPOCH", + "description": "Include security EPOCH in DICE", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field014-bits16-17", + "name": "SKIP_BOOT_SEED", + "description": "Skip boot seed computation", + "values": [ + { + "name": "ENABLE", + "value": 0, + "description": "Enable BOOT_SEED" + }, + { + "name": "DISABLE_0", + "value": 1, + "description": "Disable BOOT_SEED" + }, + { + "name": "DISABLE_1", + "value": 2, + "description": "Disable BOOT_SEED" + }, + { + "name": "DISABLE_2", + "value": 3, + "description": "Disable BOOT_SEED" + } + ] + }, + { + "width": 2, + "id": "field014-bits18-19", + "name": "BOOT_SEED_INC_NXP_CFG", + "description": "Include NXP area in BOOT SEED computation", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field014-bits20-21", + "name": "BOOT_SEED_CUST_CFG", + "description": "Include Customer factory area (including keys) in BOOT SEED computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 2, + "id": "field014-bits22-23", + "name": "BOOT_SEED_INC_SEC_EPOCH", + "description": "Include security EPOCH in BOOT_SEED computation.", + "values": [ + { + "name": "NOT_INCLUDE", + "value": 0, + "description": "not included" + }, + { + "name": "INCLUDE_0", + "value": 1, + "description": "included" + }, + { + "name": "INCLUDE_1", + "value": 2, + "description": "included" + }, + { + "name": "INCLUDE_2", + "value": 3, + "description": "included" + } + ] + }, + { + "width": 6 + }, + { + "width": 2, + "id": "field014-bits30-31", + "name": "SEC_BOOT_EN", + "description": "Secure boot enable", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Plain image (internal flash with or without CRC)" + }, + { + "name": "ENABLE_0", + "value": 1, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_1", + "value": 2, + "description": "Boot signed images. (internal flash, RSA signed)" + }, + { + "name": "ENABLE_2", + "value": 3, + "description": "Boot signed images. (internal flash, RSA signed)" + } + ] + } + ] + }, + { + "id": "Reserved00018", + "name": "Reserved 0x00018", + "description": "This field is reserved for internal use", + "offset_int": "0x0018", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field01C", + "name": "PRINCE_CFG", + "description": "Prince Configuration", + "offset_int": "0x001C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1 + }, + { + "width": 1, + "id": "field01C-bit1", + "name": "GEE", + "description": "Global Encryption Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "field01C-bit5", + "name": "GDE", + "description": "Global Decryption Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "field01C-bit9", + "name": "SLK", + "description": "System Lock Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 3 + }, + { + "width": 1, + "id": "field01C-bit13", + "name": "GLK", + "description": "Global Lock Enable", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 18 + } + ] + }, + { + "id": "field020", + "name": "BMAPCTX0", + "description": "Bitmap Control for Memory Context 0", + "offset_int": "0x0020", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field020-bit0", + "name": "BEN0", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit1", + "name": "BEN1", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit2", + "name": "BEN2", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit3", + "name": "BEN3", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit4", + "name": "BEN4", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit5", + "name": "BEN5", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit6", + "name": "BEN6", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit7", + "name": "BEN7", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit8", + "name": "BEN8", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit9", + "name": "BEN9", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit10", + "name": "BEN10", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit11", + "name": "BEN11", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit12", + "name": "BEN12", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit13", + "name": "BEN13", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit14", + "name": "BEN14", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit15", + "name": "BEN15", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit16", + "name": "BEN16", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit17", + "name": "BEN17", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit18", + "name": "BEN18", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit19", + "name": "BEN19", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit20", + "name": "BEN20", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit21", + "name": "BEN21", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit22", + "name": "BEN22", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit23", + "name": "BEN23", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit24", + "name": "BEN24", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit25", + "name": "BEN25", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit26", + "name": "BEN26", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit27", + "name": "BEN27", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit28", + "name": "BEN28", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit29", + "name": "BEN29", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit30", + "name": "BEN30", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field020-bit31", + "name": "BEN31", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + } + ] + }, + { + "id": "field024", + "name": "BMAPCTX1", + "description": "Bitmap Control for Memory Context 1", + "offset_int": "0x0024", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field024-bit0", + "name": "BEN0", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit1", + "name": "BEN1", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit2", + "name": "BEN2", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit3", + "name": "BEN3", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit4", + "name": "BEN4", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit5", + "name": "BEN5", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit6", + "name": "BEN6", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit7", + "name": "BEN7", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit8", + "name": "BEN8", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit9", + "name": "BEN9", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit10", + "name": "BEN10", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit11", + "name": "BEN11", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit12", + "name": "BEN12", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit13", + "name": "BEN13", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit14", + "name": "BEN14", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit15", + "name": "BEN15", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit16", + "name": "BEN16", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit17", + "name": "BEN17", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit18", + "name": "BEN18", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit19", + "name": "BEN19", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit20", + "name": "BEN20", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit21", + "name": "BEN21", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit22", + "name": "BEN22", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit23", + "name": "BEN23", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit24", + "name": "BEN24", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit25", + "name": "BEN25", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit26", + "name": "BEN26", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit27", + "name": "BEN27", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit28", + "name": "BEN28", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit29", + "name": "BEN29", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit30", + "name": "BEN30", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field024-bit31", + "name": "BEN31", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + } + ] + }, + { + "id": "field028", + "name": "BMAPCTX2", + "description": "Bitmap Control for Memory Context 2", + "offset_int": "0x0028", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field028-bit0", + "name": "BEN0", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit1", + "name": "BEN1", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit2", + "name": "BEN2", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit3", + "name": "BEN3", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit4", + "name": "BEN4", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit5", + "name": "BEN5", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit6", + "name": "BEN6", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit7", + "name": "BEN7", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit8", + "name": "BEN8", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit9", + "name": "BEN9", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit10", + "name": "BEN10", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit11", + "name": "BEN11", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit12", + "name": "BEN12", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit13", + "name": "BEN13", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit14", + "name": "BEN14", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit15", + "name": "BEN15", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit16", + "name": "BEN16", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit17", + "name": "BEN17", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit18", + "name": "BEN18", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit19", + "name": "BEN19", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit20", + "name": "BEN20", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit21", + "name": "BEN21", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit22", + "name": "BEN22", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit23", + "name": "BEN23", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit24", + "name": "BEN24", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit25", + "name": "BEN25", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit26", + "name": "BEN26", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit27", + "name": "BEN27", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit28", + "name": "BEN28", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit29", + "name": "BEN29", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit30", + "name": "BEN30", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field028-bit31", + "name": "BEN31", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + } + ] + }, + { + "id": "field02C", + "name": "BMAPCTX3", + "description": "Bitmap Control for Memory Context 3", + "offset_int": "0x002C", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 1, + "id": "field02C-bit0", + "name": "BEN0", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit1", + "name": "BEN1", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit2", + "name": "BEN2", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit3", + "name": "BEN3", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit4", + "name": "BEN4", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit5", + "name": "BEN5", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit6", + "name": "BEN6", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit7", + "name": "BEN7", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit8", + "name": "BEN8", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit9", + "name": "BEN9", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit10", + "name": "BEN10", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit11", + "name": "BEN11", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit12", + "name": "BEN12", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit13", + "name": "BEN13", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit14", + "name": "BEN14", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit15", + "name": "BEN15", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit16", + "name": "BEN16", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit17", + "name": "BEN17", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit18", + "name": "BEN18", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit19", + "name": "BEN19", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit20", + "name": "BEN20", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit21", + "name": "BEN21", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit22", + "name": "BEN22", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit23", + "name": "BEN23", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit24", + "name": "BEN24", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit25", + "name": "BEN25", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit26", + "name": "BEN26", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit27", + "name": "BEN27", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit28", + "name": "BEN28", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit29", + "name": "BEN29", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit30", + "name": "BEN30", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + }, + { + "width": 1, + "id": "field02C-bit31", + "name": "BEN31", + "description": "Block enable for encryption/decryption", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable encryption/decryption" + }, + { + "name": "ENABLE", + "value": 1, + "description": "Enable encryption/decryption" + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "Reserved 00030-0004C", + "description": "Reserved 00030-0004C" + }, + "registers": [ + { + "id": "Reserved00030", + "name": "Reserved 0x00030", + "description": "This field is reserved for internal use", + "offset_int": "0x0030", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00034", + "name": "Reserved 0x00034", + "description": "This field is reserved for internal use", + "offset_int": "0x0034", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00038", + "name": "Reserved 0x00038", + "description": "This field is reserved for internal use", + "offset_int": "0x0038", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0003C", + "name": "Reserved 0x0003C", + "description": "This field is reserved for internal use", + "offset_int": "0x003C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00040", + "name": "Reserved 0x00040", + "description": "This field is reserved for internal use", + "offset_int": "0x0040", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00044", + "name": "Reserved 0x00044", + "description": "This field is reserved for internal use", + "offset_int": "0x0044", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved00048", + "name": "Reserved 0x00048", + "description": "This field is reserved for internal use", + "offset_int": "0x0048", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "Reserved0004C", + "name": "Reserved 0x0004C", + "description": "This field is reserved for internal use", + "offset_int": "0x004C", + "is_reserved": true, + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "BLE", + "description": "BLE unique addressing" + }, + "registers": [ + { + "id": "field050", + "name": "BLE_UNIQUE_ADDRESS0", + "description": "Bits 31 down to 0 of the BLE Unique Address to be used when BLE_UNIQUE_ADDRESS_VALID field is equal to 0xC3A5", + "offset_int": "0x0050", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field054", + "name": "BLE_UNIQUE_ADDRESS1", + "description": "BLE_UNIQUE_ADDRESS part 2", + "offset_int": "0x0054", + "default_value_int": "0", + "individual_write_lock": "none", + "bitfields": [ + { + "width": 16, + "id": "field054-bits0-15", + "name": "BLE_UNIQUE_ADDRESS_47_32", + "description": "Bits 47 down to 32 of the BLE Unique Address to be used when BLE_UNIQUE_ADDRESS_VALID field is equal to 0xC3A5" + }, + { + "width": 16, + "id": "field054-bits16-31", + "name": "BLE_UNIQUE_ADDRESS_VALID", + "description": "Use 48-bit value from BLE_UNIQUE_ADDRESS field as BLE address when this field is equal to 0xC3A5. If this field is different from 0xC3A5, check BLE_DEFAULT_ADDRESS_VALID field in NMPA to know which address to use." + } + ] + } + ] + }, + { + "group": { + "name": "FLASH_REMAP", + "description": "Flash image address remapping" + }, + "registers": [ + { + "id": "field058", + "name": "FLASH_REMAP_SIZE", + "description": "This 32-bit register contains the size of the image to remap, in bytes.", + "offset_int": "0x0058", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field05C", + "name": "FLASH_REMAP_OFFSET", + "description": "This 32-bit register contains the offset by which the image is to be remapped.", + "offset_int": "0x005C", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH fields" + }, + "registers": [ + { + "id": "field060", + "name": "ROTKH0", + "description": "ROTKH0 for Root of Trust Keys Table hash[255:224]", + "offset_int": "0x0060", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field064", + "name": "ROTKH1", + "description": "ROTKH1 for Root of Trust Keys Table hash[223:192]", + "offset_int": "0x0064", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field068", + "name": "ROTKH2", + "description": "ROTKH2 for Root of Trust Keys Table hash[191:160]", + "offset_int": "0x0068", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field06C", + "name": "ROTKH3", + "description": "ROTKH3 for Root of Trust Keys Table hash[159:128]", + "offset_int": "0x006C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field070", + "name": "ROTKH4", + "description": "ROTKH4 for Root of Trust Keys Table hash[127:96]", + "offset_int": "0x0070", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field074", + "name": "ROTKH5", + "description": "ROTKH5 for Root of Trust Keys Table hash[95:64]", + "offset_int": "0x0074", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field078", + "name": "ROTKH6", + "description": "ROTKH6 for Root of Trust Keys Table hash[63:32]", + "offset_int": "0x0078", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field07C", + "name": "ROTKH7", + "description": "ROTKH7 for Root of Trust Keys Table hash[31:0]", + "offset_int": "0x007C", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "Customer defined", + "description": "Customer defined" + }, + "registers": [ + { + "id": "field080", + "name": "CUSTOMER_DEFINED0", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0080", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field084", + "name": "CUSTOMER_DEFINED1", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0084", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field088", + "name": "CUSTOMER_DEFINED2", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0088", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field08C", + "name": "CUSTOMER_DEFINED3", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x008C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field090", + "name": "CUSTOMER_DEFINED4", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0090", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field094", + "name": "CUSTOMER_DEFINED5", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0094", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field098", + "name": "CUSTOMER_DEFINED6", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0098", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field09C", + "name": "CUSTOMER_DEFINED7", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x009C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A0", + "name": "CUSTOMER_DEFINED8", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A4", + "name": "CUSTOMER_DEFINED9", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0A8", + "name": "CUSTOMER_DEFINED10", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0AC", + "name": "CUSTOMER_DEFINED11", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B0", + "name": "CUSTOMER_DEFINED12", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B4", + "name": "CUSTOMER_DEFINED13", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0B8", + "name": "CUSTOMER_DEFINED14", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0BC", + "name": "CUSTOMER_DEFINED15", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C0", + "name": "CUSTOMER_DEFINED16", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C4", + "name": "CUSTOMER_DEFINED17", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0C8", + "name": "CUSTOMER_DEFINED18", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0CC", + "name": "CUSTOMER_DEFINED19", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D0", + "name": "CUSTOMER_DEFINED20", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D4", + "name": "CUSTOMER_DEFINED21", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0D8", + "name": "CUSTOMER_DEFINED22", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0DC", + "name": "CUSTOMER_DEFINED23", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00DC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E0", + "name": "CUSTOMER_DEFINED24", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E4", + "name": "CUSTOMER_DEFINED25", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0E8", + "name": "CUSTOMER_DEFINED26", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00E8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0EC", + "name": "CUSTOMER_DEFINED27", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00EC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F0", + "name": "CUSTOMER_DEFINED28", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F4", + "name": "CUSTOMER_DEFINED29", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0F8", + "name": "CUSTOMER_DEFINED30", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00F8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field0FC", + "name": "CUSTOMER_DEFINED31", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x00FC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field100", + "name": "CUSTOMER_DEFINED32", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0100", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field104", + "name": "CUSTOMER_DEFINED33", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0104", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field108", + "name": "CUSTOMER_DEFINED34", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0108", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field10C", + "name": "CUSTOMER_DEFINED35", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x010C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field110", + "name": "CUSTOMER_DEFINED36", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0110", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field114", + "name": "CUSTOMER_DEFINED37", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0114", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field118", + "name": "CUSTOMER_DEFINED38", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0118", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field11C", + "name": "CUSTOMER_DEFINED39", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x011C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field120", + "name": "CUSTOMER_DEFINED40", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0120", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field124", + "name": "CUSTOMER_DEFINED41", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0124", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field128", + "name": "CUSTOMER_DEFINED42", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0128", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field12C", + "name": "CUSTOMER_DEFINED43", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x012C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field130", + "name": "CUSTOMER_DEFINED44", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0130", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field134", + "name": "CUSTOMER_DEFINED45", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0134", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field138", + "name": "CUSTOMER_DEFINED46", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0138", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field13C", + "name": "CUSTOMER_DEFINED47", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x013C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field140", + "name": "CUSTOMER_DEFINED48", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0140", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field144", + "name": "CUSTOMER_DEFINED49", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0144", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field148", + "name": "CUSTOMER_DEFINED50", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0148", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field14C", + "name": "CUSTOMER_DEFINED51", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x014C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field150", + "name": "CUSTOMER_DEFINED52", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0150", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field154", + "name": "CUSTOMER_DEFINED53", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0154", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field158", + "name": "CUSTOMER_DEFINED54", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0158", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field15C", + "name": "CUSTOMER_DEFINED55", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x015C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field160", + "name": "CUSTOMER_DEFINED56", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0160", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field164", + "name": "CUSTOMER_DEFINED57", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0164", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field168", + "name": "CUSTOMER_DEFINED58", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0168", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field16C", + "name": "CUSTOMER_DEFINED59", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x016C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field170", + "name": "CUSTOMER_DEFINED60", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0170", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field174", + "name": "CUSTOMER_DEFINED61", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0174", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field178", + "name": "CUSTOMER_DEFINED62", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0178", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field17C", + "name": "CUSTOMER_DEFINED63", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x017C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field180", + "name": "CUSTOMER_DEFINED64", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0180", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field184", + "name": "CUSTOMER_DEFINED65", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0184", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field188", + "name": "CUSTOMER_DEFINED66", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0188", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field18C", + "name": "CUSTOMER_DEFINED67", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x018C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field190", + "name": "CUSTOMER_DEFINED68", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0190", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field194", + "name": "CUSTOMER_DEFINED69", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0194", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field198", + "name": "CUSTOMER_DEFINED70", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x0198", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field19C", + "name": "CUSTOMER_DEFINED71", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x019C", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A0", + "name": "CUSTOMER_DEFINED72", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A4", + "name": "CUSTOMER_DEFINED73", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1A8", + "name": "CUSTOMER_DEFINED74", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01A8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1AC", + "name": "CUSTOMER_DEFINED75", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01AC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B0", + "name": "CUSTOMER_DEFINED76", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B4", + "name": "CUSTOMER_DEFINED77", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1B8", + "name": "CUSTOMER_DEFINED78", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01B8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1BC", + "name": "CUSTOMER_DEFINED79", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01BC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C0", + "name": "CUSTOMER_DEFINED80", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C4", + "name": "CUSTOMER_DEFINED81", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1C8", + "name": "CUSTOMER_DEFINED82", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01C8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1CC", + "name": "CUSTOMER_DEFINED83", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01CC", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D0", + "name": "CUSTOMER_DEFINED84", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D0", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D4", + "name": "CUSTOMER_DEFINED85", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D4", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1D8", + "name": "CUSTOMER_DEFINED86", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01D8", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1DC", + "name": "CUSTOMER_DEFINED87", + "description": "Customer Defined (Programmable through ROM API)", + "offset_int": "0x01DC", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + }, + { + "group": { + "name": "SHA256_DIGEST", + "description": "SHA256_DIGEST" + }, + "registers": [ + { + "id": "field1E0", + "name": "SHA256_DIGEST0", + "description": "SHA256_DIGEST0 for DIGEST[31:0]", + "offset_int": "0x01E0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E4", + "name": "SHA256_DIGEST1", + "description": "SHA256_DIGEST1 for DIGEST[63:32]", + "offset_int": "0x01E4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1E8", + "name": "SHA256_DIGEST2", + "description": "SHA256_DIGEST2 for DIGEST[95:64]", + "offset_int": "0x01E8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1EC", + "name": "SHA256_DIGEST3", + "description": "SHA256_DIGEST3 for DIGEST[127:96]", + "offset_int": "0x01EC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F0", + "name": "SHA256_DIGEST4", + "description": "SHA256_DIGEST4 for DIGEST[159:128]", + "offset_int": "0x01F0", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F4", + "name": "SHA256_DIGEST5", + "description": "SHA256_DIGEST5 for DIGEST[191:160]", + "offset_int": "0x01F4", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1F8", + "name": "SHA256_DIGEST6", + "description": "SHA256_DIGEST6 for DIGEST[223:192]", + "offset_int": "0x01F8", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + }, + { + "id": "field1FC", + "name": "SHA256_DIGEST7", + "description": "SHA256_DIGEST7 for DIGEST[255:224]", + "offset_int": "0x01FC", + "access": "RO", + "default_value_int": "0", + "individual_write_lock": "none" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/tz.json new file mode 100644 index 0000000..efc38b9 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/nhs52s04/tz.json @@ -0,0 +1,861 @@ +{ + "cpu": "nhs52s04", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x20000" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "MPU Control Register (cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register(cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register(cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register(cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register(cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register(cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register(cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register(cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register(cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register(cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register(cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register(cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register(cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register(cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register(cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "SAU Control Register (cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register (cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0xfffffe1" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x20004000" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0xefffffe1" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x1000fe00" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x1000ffe3" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "description": "TrustZone register - FLASH/ROM Slave Rule Register 0 (flash_rom_slave_rule)", + "default_value_int": "0x30" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "FLASH Memory Rule Register 0 (flash_mem_rule0)", + "description": "TrustZone register - FLASH Memory Rule Register 0 (flash_mem_rule0)", + "default_value_int": "0x33" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "FLASH Memory Rule Register 1 (flash_mem_rule1)", + "description": "TrustZone register - FLASH Memory Rule Register 1 (flash_mem_rule1)", + "default_value_int": "0x32103210" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "FLASH Memory Rule Register 2 (flash_mem_rule2)", + "description": "TrustZone register - FLASH Memory Rule Register 2 (flash_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "RAMX Slave Rule Register (ramx_slave_rule)", + "description": "TrustZone register - RAMX Slave Rule Register (ramx_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "RAMX Memory Rule Register 0 (ramx_mem_rule)", + "description": "TrustZone register - RAMX Memory Rule Register 0 (ramx_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "RAM0 Slave Rule Register (ram0_slave_rule)", + "description": "TrustZone register - RAM0 Slave Rule Register (ram0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "RAM0 Memory Rule Register 0 (ram0_mem_rule)", + "description": "TrustZone register - RAM0 Memory Rule Register 0 (ram0_mem_rule)", + "default_value_int": "0x3333" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "RAM1 Slave Rule Register (ram1_slave_rule)", + "description": "TrustZone register - RAM1 Slave Rule Register (ram1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "RAM1 Memory Rule Register 0 (ram1_mem_rule)", + "description": "TrustZone register - RAM1 Memory Rule Register 0 (ram1_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "RAM2 Slave Rule Register (ram2_slave_rule)", + "description": "TrustZone register - RAM2 Slave Rule Register (ram2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "RAM2 Memory Rule Register 0 (ram2_mem_rule0)", + "description": "TrustZone register - RAM2 Memory Rule Register 0 (ram2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "RAM2 Memory Rule Register 1 (ram2_mem_rule1)", + "description": "TrustZone register - RAM2 Memory Rule Register 1 (ram2_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "SPIFI Slave Rule Register (spifi_slave_rule)", + "description": "TrustZone register - SPIFI Slave Rule Register (spifi_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "SPIFI Memory Rule Register 0 (spifi_mem_rule0)", + "description": "TrustZone register - SPIFI Memory Rule Register 0 (spifi_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "SPIFI Memory Rule Register 1 (spifi_mem_rule1)", + "description": "TrustZone register - SPIFI Memory Rule Register 1 (spifi_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "SPIFI Memory Rule Register 2 (spifi_mem_rule2)", + "description": "TrustZone register - SPIFI Memory Rule Register 2 (spifi_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "SPIFI Memory Rule Register 3 (spifi_mem_rule3)", + "description": "TrustZone register - SPIFI Memory Rule Register 3 (spifi_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "description": "TrustZone register - APB Bridge Group Slave Rule Register (apb_grp_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x33" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "AHB port 7 Slave Rule Register 0 (ahb_port7_slave_rule0)", + "description": "TrustZone register - AHB port 7 Slave Rule Register 0 (ahb_port7_slave_rule0)", + "default_value_int": "0x3000000" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "AHB port 7 Slave Rule Register 1 (ahb_port7_slave_rule1)", + "description": "TrustZone register - AHB port 7 Slave Rule Register 1 (ahb_port7_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "AHB port 8 Slave Rule Register 0 (ahb_port8_slave_rule0)", + "description": "TrustZone register - AHB port 8 Slave Rule Register 0 (ahb_port8_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "AHB port 8 Slave Rule Register 1 (ahb_port8_slave_rule1)", + "description": "TrustZone register - AHB port 8 Slave Rule Register 1 (ahb_port8_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "AHB port 9 Slave Rule Register 0 (ahb_port9_slave_rule0)", + "description": "TrustZone register - AHB port 9 Slave Rule Register 0 (ahb_port9_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "AHB port 9 Slave Rule Register 1 (ahb_port9_slave_rule1)", + "description": "TrustZone register - AHB port 9 Slave Rule Register 1 (ahb_port9_slave_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "AHB port 10 Slave Rule Register 0 (ahb_port10_slave_rule0)", + "description": "TrustZone register - AHB port 10 Slave Rule Register 0 (ahb_port10_slave_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "AHB Memory Rule Register 0 (ahb_mem_rule0)", + "description": "TrustZone register - AHB Memory Rule Register 0 (ahb_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "Secure GPIO Register 0 (sec_gp_reg0)", + "description": "TrustZone register - Secure GPIO Register 0 (sec_gp_reg0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "Secure GPIO Lock Register (sec_gp_reg_lock)", + "description": "TrustZone register - Secure GPIO Lock Register (sec_gp_reg_lock)", + "default_value_int": "0x2" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "CM33 Lock Control Register (cm33_lock_reg)", + "description": "TrustZone register - CM33 Lock Control Register (cm33_lock_reg)", + "default_value_int": "0x400002a9" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0xaaaa" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "Miscellaneous TZM settings (misc_tzm_settings)", + "description": "TrustZone register - Miscellaneous TZM settings (misc_tzm_settings)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw610/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw610/database.yaml new file mode 100644 index 0000000..0af961b --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw610/database.yaml @@ -0,0 +1,5 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +alias: rw612 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/database.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/database.yaml new file mode 100644 index 0000000..6d6497f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/database.yaml @@ -0,0 +1,250 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +revisions: + a1: + # ======== DAT section ======== + dat: + socc: 0x04 # SOCC identification is same as on LPC55S3x in rev 1 + a2: {} +latest: a2 + +# General MCU information +info: + purpose: Wireless Connectivity MCUs + spsdk_predecessor_name: rw61x + # Web page of MCU representative + web: https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-plus-802-15-4/wireless-mcu-with-integrated-tri-radio-1x1-wi-fi-6-plus-bluetooth-low-energy-5-4-802-15-4:RW612 + memory_map: # Memory map basic info + flexspi_ns: + start_int: 0x8000000 + size_int: 0x8000000 + external: true + flexspi_s: + start_int: 0x18000000 + size_int: 0x8000000 + external: true + mirror_of: flexspi_ns + sram: + start_int: 0x20000000 + size_int: 0x130000 + external: false + isp: + rom: + protocol: mboot + usb: + - vid: 0x1FC9 + pid: 0x0020 + +features: + # ======== Blhost section ======== + blhost: {} + + # ======== Fuses description section ======== + fuses: + grouped_registers: + - uid: rkth + name: RKTH + width: 384 + config_as_hexstring: true + reversed: true + alternative_widths: [256] + description: + ROTKH field is compounded by 12 32-bit fields and contains Root key + table hash. For ECC P-256 keys RKTH is a 32-byte SHA-256 digest of four + SHA-256 digests computed over four OEM public keys (OEM has four + private-public key pairs in case one of its private keys becomes + compromised) or in case that ECC P-384 keys are used, RKTH is 48-byte + SHA-384 digest. + sub_regs: + [ + fuse104, + fuse105, + fuse106, + fuse107, + fuse108, + fuse109, + fuse110, + fuse111, + fuse112, + fuse113, + fuse114, + fuse115, + ] + + # ======== Communication buffer section ======== + comm_buffer: + address: 0x2000_8000 + size: 0x1000 + + # ======== Certificate block section ======== + cert_block: + sub_features: [based_on_cert21] + rot_type: cert_block_21 + + # ======== DAT section ======== + dat: + socc: 0x0A # SOCC identification + dac_rot_type: not_available # The Dac packet doesn't contains the ROT hash + dmbox_ap_ix: 3 + + # ======== MBI section ======== + mbi: + mbi_classes: + plain_xip: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvtZeroTotalLength + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + plain_ram: + image_type: PLAIN_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + crc_ram: + image_type: CRC_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + crc_xip: + image_type: CRC_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinTrustZoneMandatory + - Mbi_MixinLoadAddress + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppTrustZone + - Mbi_ExportMixinCrcSign + signed_ram: + image_type: SIGNED_RAM_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifest + - Mbi_MixinLoadAddress + - Mbi_MixinFwVersion + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + signed_xip: + image_type: SIGNED_XIP_IMAGE + mixins: + - Mbi_MixinApp + - Mbi_MixinIvt + - Mbi_MixinCertBlockV21 + - Mbi_MixinManifest + - Mbi_MixinLoadAddress + - Mbi_MixinFwVersion + - Mbi_MixinImageVersion + - Mbi_ExportMixinAppCertBlockManifest + - Mbi_ExportMixinEccSign + images: + xip: + plain: plain_xip + crc: crc_xip + signed: signed_xip + load_to_ram: + plain: plain_ram + crc: crc_ram + signed: signed_ram + + # ======== Shadow registers section ======== + shadow_regs: + write_address_offset: -0x0FEE_4000 # = 0x4000_A000 - 0x3012_6000 The rw61x is using different address for shadow registers write operations + flush_func: rw61x_update_scratch_reg + reset_type: nvic_reset # possible options: [hw_reset, nvic_reset] + possible_verification: False # RW61x doesn't allow verify writing of shadow registers + inverted_regs: + fuse33: fuse34 # DCFG_CC_SOCU -> DCFG_CC_SOCU_AP + computed_fields: + fuse33: # DCFG_CC_SOCU + fuse33-bits-0-7: comalg_dcfg_cc_socu_crc8 # CRC8[7:0] + fuse31: # DCFG_CC_SOCU_NS + fuse31-bits-0-7: comalg_dcfg_cc_socu_crc8 # CRC8_NS[7:0] + + # ======== FCB section ======== + fcb: + mem_types: + flexspi_nor: + reg_spec: fcb_flexspi_nor.json + reg_spec_modification: ../../common/fcb_flexspi_nor_modification.yaml + + # ======== Bootable image section ======== + bootable_image: + mem_types: + internal: + segments: + mbi: 0x00 + flexspi_nor: + segments: + fcb: 0x0400 + image_version_ap: 0x0600 + mbi: 0x1000 + remap_align: 0x40000 # 256 KB + image_pattern: ones + + # ======== Secure binary v3.1 section ======== + sb31: + supported_commands: + - erase + - load + - execute + - programFuses + - programIFR + - copy + - loadKeyBlob + - configureMemory + - fillMemory + - checkFwVersion + + # ======== Device Hardware Security Module (HSM) section ======== + devhsm: + sub_features: [DevHsmSB31] + supported_commands: + - erase + - load + - programFuses + - copy + - loadKeyBlob + - configureMemory + - fillMemory + flag: 0x2 + key_blob_offset: 0xF05C + key_blob_command_position: -1 + + # ======== TrustZone section ======== + tz: + reg_spec: tz.json + + # ======== Memory configuration ======== + memcfg: + peripherals: + flexspi_nor: + instances: [0] + spi_nor: + instances: [0, 1, 2, 3, 4] + + # ======== EL2GO TP section ======== + el2go_tp: + el2go_name: RW6 + prov_method: dispatch_fw + dispatch_method: write_reset + fw_load_address: 0x0800_1000 + ignored_otp_ranges: [92, 103, 104, 115] + use_prov_report: true diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/fcb_flexspi_nor.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/fcb_flexspi_nor.json new file mode 100644 index 0000000..14ada34 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/fcb_flexspi_nor.json @@ -0,0 +1,25599 @@ +{ + "cpu": "RW612", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "tag", + "description": " [0x000-0x003] Tag, fixed value 0x42464346UL ", + "default_value_int": "0x42464346" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "version", + "description": " [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix ", + "default_value_int": "0x56010400" + }, + { + "id": "Reserved008", + "offset_int": "0x8", + "reg_width": 32, + "name": "reserved0", + "description": " [0x008-0x00b] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 8, + "name": "readSampleClkSrc", + "description": " [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3 ", + "default_value_int": "0x0" + }, + { + "id": "field00D", + "offset_int": "0xd", + "reg_width": 8, + "name": "csHoldTime", + "description": " [0x00d-0x00d] CS hold time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00E", + "offset_int": "0xe", + "reg_width": 8, + "name": "csSetupTime", + "description": " [0x00e-0x00e] CS setup time, default value: 3 ", + "default_value_int": "0x0" + }, + { + "id": "field00F", + "offset_int": "0xf", + "reg_width": 8, + "name": "columnAddressWidth", + "description": " [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For Serial NAND, need to refer to datasheet ", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 8, + "name": "deviceModeCfgEnable", + "description": " [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field011", + "offset_int": "0x11", + "reg_width": 8, + "name": "deviceModeType", + "description": " [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch, Generic configuration, etc. ", + "default_value_int": "0x0" + }, + { + "id": "field012", + "offset_int": "0x12", + "reg_width": 16, + "name": "waitTimeCfgCommands", + "description": " [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for DPI/QPI/OPI switch or reset command ", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "deviceModeSeq", + "description": " [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt sequence number, [31:16] Reserved ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field014-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field014-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "deviceModeArg", + "description": " [0x018-0x01b] Argument/Parameter for device configuration ", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 8, + "name": "configCmdEnable", + "description": " [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable ", + "default_value_int": "0x0" + }, + { + "id": "field01D", + "offset_int": "0x1d", + "reg_width": 8, + "name": "configModeType_0", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01E", + "offset_int": "0x1e", + "reg_width": 8, + "name": "configModeType_1", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field01F", + "offset_int": "0x1f", + "reg_width": 8, + "name": "configModeType_2", + "description": " [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe ", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "configCmdSeqs_0", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field020-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field020-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "configCmdSeqs_1", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field024-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field024-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "configCmdSeqs_2", + "description": " [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field028-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field028-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "reserved1", + "description": " [0x02c-0x02f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "configCmdArgs_0", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "configCmdArgs_1", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "configCmdArgs_2", + "description": " [0x030-0x03b] Arguments/Parameters for device Configuration commands ", + "default_value_int": "0x0" + }, + { + "id": "Reserved03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "reserved2", + "description": " [0x03c-0x03f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "controllerMiscOption", + "description": " [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more details ", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 8, + "name": "deviceType", + "description": " [0x044-0x044] Device Type: See Flash Type Definition for more details ", + "default_value_int": "0x0" + }, + { + "id": "field045", + "offset_int": "0x45", + "reg_width": 8, + "name": "sflashPadType", + "description": " [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal ", + "default_value_int": "0x0" + }, + { + "id": "field046", + "offset_int": "0x46", + "reg_width": 8, + "name": "serialClkFreq", + "description": " [0x046-0x046] Serial Flash Frequency, device specific definitions, See System Boot Chapter for more details ", + "default_value_int": "0x0" + }, + { + "id": "field047", + "offset_int": "0x47", + "reg_width": 8, + "name": "lutCustomSeqEnable", + "description": " [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot be done using 1 LUT sequence, currently, only applicable to HyperFLASH ", + "default_value_int": "0x0" + }, + { + "id": "Reserved048", + "offset_int": "0x48", + "reg_width": 32, + "name": "reserved3_0", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "reserved3_1", + "description": " [0x048-0x04f] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "sflashA1Size", + "description": " [0x050-0x053] Size of Flash connected to A1 ", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "sflashA2Size", + "description": " [0x054-0x057] Size of Flash connected to A2 ", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "sflashB1Size", + "description": " [0x058-0x05b] Size of Flash connected to B1 ", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "sflashB2Size", + "description": " [0x05c-0x05f] Size of Flash connected to B2 ", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "csPadSettingOverride", + "description": " [0x060-0x063] CS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "sclkPadSettingOverride", + "description": " [0x064-0x067] SCK pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "dataPadSettingOverride", + "description": " [0x068-0x06b] data pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "dqsPadSettingOverride", + "description": " [0x06c-0x06f] DQS pad setting override value ", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "timeoutInMs", + "description": " [0x070-0x073] Timeout threshold for read status command ", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "commandInterval", + "description": " [0x074-0x077] CS deselect interval between two commands ", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 16, + "name": "dataValidTime_0", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field078-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps " + }, + { + "id": "field078-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells " + } + ] + }, + { + "id": "field07A", + "offset_int": "0x7a", + "reg_width": 16, + "name": "dataValidTime_1", + "description": " [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field07A-bits0-7", + "width": 8, + "name": "time_100ps", + "access": "RW", + "description": " Data valid time, in terms of 100ps " + }, + { + "id": "field07A-bits8-15", + "width": 8, + "name": "delay_cells", + "access": "RW", + "description": " Data valid time, in terms of delay cells " + } + ] + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 16, + "name": "busyOffset", + "description": " [0x07c-0x07d] Busy offset, valid value: 0-31 ", + "default_value_int": "0x0" + }, + { + "id": "field07E", + "offset_int": "0x7e", + "reg_width": 16, + "name": "busyBitPolarity", + "description": " [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 - busy flag is 0 when flash device is busy ", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 16, + "name": "lookupTable_seq0_instr0", + "description": "Lookup table holds Flash command sequences 0, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field080-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field080-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field080-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field082", + "offset_int": "0x82", + "reg_width": 16, + "name": "lookupTable_seq0_instr1", + "description": "Lookup table holds Flash command sequences 0, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field082-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field082-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field082-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 16, + "name": "lookupTable_seq0_instr2", + "description": "Lookup table holds Flash command sequences 0, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field084-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field084-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field084-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field086", + "offset_int": "0x86", + "reg_width": 16, + "name": "lookupTable_seq0_instr3", + "description": "Lookup table holds Flash command sequences 0, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field086-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field086-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field086-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 16, + "name": "lookupTable_seq0_instr4", + "description": "Lookup table holds Flash command sequences 0, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field088-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field088-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field088-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08A", + "offset_int": "0x8A", + "reg_width": 16, + "name": "lookupTable_seq0_instr5", + "description": "Lookup table holds Flash command sequences 0, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08C", + "offset_int": "0x8C", + "reg_width": 16, + "name": "lookupTable_seq0_instr6", + "description": "Lookup table holds Flash command sequences 0, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field08E", + "offset_int": "0x8E", + "reg_width": 16, + "name": "lookupTable_seq0_instr7", + "description": "Lookup table holds Flash command sequences 0, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field08E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field08E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field08E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 16, + "name": "lookupTable_seq1_instr0", + "description": "Lookup table holds Flash command sequences 1, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field090-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field090-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field090-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field092", + "offset_int": "0x92", + "reg_width": 16, + "name": "lookupTable_seq1_instr1", + "description": "Lookup table holds Flash command sequences 1, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field092-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field092-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field092-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 16, + "name": "lookupTable_seq1_instr2", + "description": "Lookup table holds Flash command sequences 1, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field094-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field094-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field094-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field096", + "offset_int": "0x96", + "reg_width": 16, + "name": "lookupTable_seq1_instr3", + "description": "Lookup table holds Flash command sequences 1, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field096-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field096-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field096-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 16, + "name": "lookupTable_seq1_instr4", + "description": "Lookup table holds Flash command sequences 1, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field098-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field098-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field098-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09A", + "offset_int": "0x9A", + "reg_width": 16, + "name": "lookupTable_seq1_instr5", + "description": "Lookup table holds Flash command sequences 1, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09C", + "offset_int": "0x9C", + "reg_width": 16, + "name": "lookupTable_seq1_instr6", + "description": "Lookup table holds Flash command sequences 1, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field09E", + "offset_int": "0x9E", + "reg_width": 16, + "name": "lookupTable_seq1_instr7", + "description": "Lookup table holds Flash command sequences 1, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field09E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field09E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field09E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A0", + "offset_int": "0xA0", + "reg_width": 16, + "name": "lookupTable_seq2_instr0", + "description": "Lookup table holds Flash command sequences 2, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A2", + "offset_int": "0xA2", + "reg_width": 16, + "name": "lookupTable_seq2_instr1", + "description": "Lookup table holds Flash command sequences 2, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A4", + "offset_int": "0xA4", + "reg_width": 16, + "name": "lookupTable_seq2_instr2", + "description": "Lookup table holds Flash command sequences 2, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A6", + "offset_int": "0xA6", + "reg_width": 16, + "name": "lookupTable_seq2_instr3", + "description": "Lookup table holds Flash command sequences 2, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0A8", + "offset_int": "0xA8", + "reg_width": 16, + "name": "lookupTable_seq2_instr4", + "description": "Lookup table holds Flash command sequences 2, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0A8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0A8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0A8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AA", + "offset_int": "0xAA", + "reg_width": 16, + "name": "lookupTable_seq2_instr5", + "description": "Lookup table holds Flash command sequences 2, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AC", + "offset_int": "0xAC", + "reg_width": 16, + "name": "lookupTable_seq2_instr6", + "description": "Lookup table holds Flash command sequences 2, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0AE", + "offset_int": "0xAE", + "reg_width": 16, + "name": "lookupTable_seq2_instr7", + "description": "Lookup table holds Flash command sequences 2, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0AE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0AE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0AE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B0", + "offset_int": "0xB0", + "reg_width": 16, + "name": "lookupTable_seq3_instr0", + "description": "Lookup table holds Flash command sequences 3, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B2", + "offset_int": "0xB2", + "reg_width": 16, + "name": "lookupTable_seq3_instr1", + "description": "Lookup table holds Flash command sequences 3, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B4", + "offset_int": "0xB4", + "reg_width": 16, + "name": "lookupTable_seq3_instr2", + "description": "Lookup table holds Flash command sequences 3, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B6", + "offset_int": "0xB6", + "reg_width": 16, + "name": "lookupTable_seq3_instr3", + "description": "Lookup table holds Flash command sequences 3, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0B8", + "offset_int": "0xB8", + "reg_width": 16, + "name": "lookupTable_seq3_instr4", + "description": "Lookup table holds Flash command sequences 3, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0B8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0B8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0B8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BA", + "offset_int": "0xBA", + "reg_width": 16, + "name": "lookupTable_seq3_instr5", + "description": "Lookup table holds Flash command sequences 3, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BC", + "offset_int": "0xBC", + "reg_width": 16, + "name": "lookupTable_seq3_instr6", + "description": "Lookup table holds Flash command sequences 3, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0BE", + "offset_int": "0xBE", + "reg_width": 16, + "name": "lookupTable_seq3_instr7", + "description": "Lookup table holds Flash command sequences 3, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0BE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0BE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0BE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C0", + "offset_int": "0xC0", + "reg_width": 16, + "name": "lookupTable_seq4_instr0", + "description": "Lookup table holds Flash command sequences 4, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C2", + "offset_int": "0xC2", + "reg_width": 16, + "name": "lookupTable_seq4_instr1", + "description": "Lookup table holds Flash command sequences 4, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C4", + "offset_int": "0xC4", + "reg_width": 16, + "name": "lookupTable_seq4_instr2", + "description": "Lookup table holds Flash command sequences 4, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C6", + "offset_int": "0xC6", + "reg_width": 16, + "name": "lookupTable_seq4_instr3", + "description": "Lookup table holds Flash command sequences 4, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0C8", + "offset_int": "0xC8", + "reg_width": 16, + "name": "lookupTable_seq4_instr4", + "description": "Lookup table holds Flash command sequences 4, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0C8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0C8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0C8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CA", + "offset_int": "0xCA", + "reg_width": 16, + "name": "lookupTable_seq4_instr5", + "description": "Lookup table holds Flash command sequences 4, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CC", + "offset_int": "0xCC", + "reg_width": 16, + "name": "lookupTable_seq4_instr6", + "description": "Lookup table holds Flash command sequences 4, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0CE", + "offset_int": "0xCE", + "reg_width": 16, + "name": "lookupTable_seq4_instr7", + "description": "Lookup table holds Flash command sequences 4, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0CE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0CE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0CE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D0", + "offset_int": "0xD0", + "reg_width": 16, + "name": "lookupTable_seq5_instr0", + "description": "Lookup table holds Flash command sequences 5, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D2", + "offset_int": "0xD2", + "reg_width": 16, + "name": "lookupTable_seq5_instr1", + "description": "Lookup table holds Flash command sequences 5, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D4", + "offset_int": "0xD4", + "reg_width": 16, + "name": "lookupTable_seq5_instr2", + "description": "Lookup table holds Flash command sequences 5, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D6", + "offset_int": "0xD6", + "reg_width": 16, + "name": "lookupTable_seq5_instr3", + "description": "Lookup table holds Flash command sequences 5, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0D8", + "offset_int": "0xD8", + "reg_width": 16, + "name": "lookupTable_seq5_instr4", + "description": "Lookup table holds Flash command sequences 5, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0D8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0D8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0D8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DA", + "offset_int": "0xDA", + "reg_width": 16, + "name": "lookupTable_seq5_instr5", + "description": "Lookup table holds Flash command sequences 5, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DC", + "offset_int": "0xDC", + "reg_width": 16, + "name": "lookupTable_seq5_instr6", + "description": "Lookup table holds Flash command sequences 5, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0DE", + "offset_int": "0xDE", + "reg_width": 16, + "name": "lookupTable_seq5_instr7", + "description": "Lookup table holds Flash command sequences 5, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0DE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0DE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0DE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E0", + "offset_int": "0xE0", + "reg_width": 16, + "name": "lookupTable_seq6_instr0", + "description": "Lookup table holds Flash command sequences 6, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E2", + "offset_int": "0xE2", + "reg_width": 16, + "name": "lookupTable_seq6_instr1", + "description": "Lookup table holds Flash command sequences 6, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E4", + "offset_int": "0xE4", + "reg_width": 16, + "name": "lookupTable_seq6_instr2", + "description": "Lookup table holds Flash command sequences 6, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E6", + "offset_int": "0xE6", + "reg_width": 16, + "name": "lookupTable_seq6_instr3", + "description": "Lookup table holds Flash command sequences 6, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0E8", + "offset_int": "0xE8", + "reg_width": 16, + "name": "lookupTable_seq6_instr4", + "description": "Lookup table holds Flash command sequences 6, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0E8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0E8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0E8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EA", + "offset_int": "0xEA", + "reg_width": 16, + "name": "lookupTable_seq6_instr5", + "description": "Lookup table holds Flash command sequences 6, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EC", + "offset_int": "0xEC", + "reg_width": 16, + "name": "lookupTable_seq6_instr6", + "description": "Lookup table holds Flash command sequences 6, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0EE", + "offset_int": "0xEE", + "reg_width": 16, + "name": "lookupTable_seq6_instr7", + "description": "Lookup table holds Flash command sequences 6, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0EE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0EE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0EE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F0", + "offset_int": "0xF0", + "reg_width": 16, + "name": "lookupTable_seq7_instr0", + "description": "Lookup table holds Flash command sequences 7, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F0-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F0-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F0-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F2", + "offset_int": "0xF2", + "reg_width": 16, + "name": "lookupTable_seq7_instr1", + "description": "Lookup table holds Flash command sequences 7, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F2-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F2-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F2-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F4", + "offset_int": "0xF4", + "reg_width": 16, + "name": "lookupTable_seq7_instr2", + "description": "Lookup table holds Flash command sequences 7, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F4-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F4-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F4-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F6", + "offset_int": "0xF6", + "reg_width": 16, + "name": "lookupTable_seq7_instr3", + "description": "Lookup table holds Flash command sequences 7, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F6-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F6-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F6-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0F8", + "offset_int": "0xF8", + "reg_width": 16, + "name": "lookupTable_seq7_instr4", + "description": "Lookup table holds Flash command sequences 7, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0F8-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0F8-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0F8-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FA", + "offset_int": "0xFA", + "reg_width": 16, + "name": "lookupTable_seq7_instr5", + "description": "Lookup table holds Flash command sequences 7, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FA-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FA-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FA-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FC", + "offset_int": "0xFC", + "reg_width": 16, + "name": "lookupTable_seq7_instr6", + "description": "Lookup table holds Flash command sequences 7, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FC-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FC-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FC-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field0FE", + "offset_int": "0xFE", + "reg_width": 16, + "name": "lookupTable_seq7_instr7", + "description": "Lookup table holds Flash command sequences 7, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field0FE-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field0FE-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field0FE-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 16, + "name": "lookupTable_seq8_instr0", + "description": "Lookup table holds Flash command sequences 8, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field100-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field100-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field100-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field102", + "offset_int": "0x102", + "reg_width": 16, + "name": "lookupTable_seq8_instr1", + "description": "Lookup table holds Flash command sequences 8, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field102-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field102-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field102-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 16, + "name": "lookupTable_seq8_instr2", + "description": "Lookup table holds Flash command sequences 8, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field104-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field104-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field104-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field106", + "offset_int": "0x106", + "reg_width": 16, + "name": "lookupTable_seq8_instr3", + "description": "Lookup table holds Flash command sequences 8, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field106-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field106-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field106-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 16, + "name": "lookupTable_seq8_instr4", + "description": "Lookup table holds Flash command sequences 8, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field108-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field108-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field108-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10A", + "offset_int": "0x10A", + "reg_width": 16, + "name": "lookupTable_seq8_instr5", + "description": "Lookup table holds Flash command sequences 8, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10C", + "offset_int": "0x10C", + "reg_width": 16, + "name": "lookupTable_seq8_instr6", + "description": "Lookup table holds Flash command sequences 8, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field10E", + "offset_int": "0x10E", + "reg_width": 16, + "name": "lookupTable_seq8_instr7", + "description": "Lookup table holds Flash command sequences 8, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field10E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field10E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field10E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 16, + "name": "lookupTable_seq9_instr0", + "description": "Lookup table holds Flash command sequences 9, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field110-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field110-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field110-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field112", + "offset_int": "0x112", + "reg_width": 16, + "name": "lookupTable_seq9_instr1", + "description": "Lookup table holds Flash command sequences 9, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field112-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field112-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field112-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 16, + "name": "lookupTable_seq9_instr2", + "description": "Lookup table holds Flash command sequences 9, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field114-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field114-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field114-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field116", + "offset_int": "0x116", + "reg_width": 16, + "name": "lookupTable_seq9_instr3", + "description": "Lookup table holds Flash command sequences 9, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field116-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field116-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field116-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 16, + "name": "lookupTable_seq9_instr4", + "description": "Lookup table holds Flash command sequences 9, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field118-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field118-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field118-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11A", + "offset_int": "0x11A", + "reg_width": 16, + "name": "lookupTable_seq9_instr5", + "description": "Lookup table holds Flash command sequences 9, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11C", + "offset_int": "0x11C", + "reg_width": 16, + "name": "lookupTable_seq9_instr6", + "description": "Lookup table holds Flash command sequences 9, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field11E", + "offset_int": "0x11E", + "reg_width": 16, + "name": "lookupTable_seq9_instr7", + "description": "Lookup table holds Flash command sequences 9, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field11E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field11E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field11E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 16, + "name": "lookupTable_seq10_instr0", + "description": "Lookup table holds Flash command sequences 10, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field120-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field120-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field120-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field122", + "offset_int": "0x122", + "reg_width": 16, + "name": "lookupTable_seq10_instr1", + "description": "Lookup table holds Flash command sequences 10, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field122-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field122-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field122-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 16, + "name": "lookupTable_seq10_instr2", + "description": "Lookup table holds Flash command sequences 10, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field124-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field124-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field124-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field126", + "offset_int": "0x126", + "reg_width": 16, + "name": "lookupTable_seq10_instr3", + "description": "Lookup table holds Flash command sequences 10, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field126-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field126-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field126-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 16, + "name": "lookupTable_seq10_instr4", + "description": "Lookup table holds Flash command sequences 10, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field128-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field128-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field128-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12A", + "offset_int": "0x12A", + "reg_width": 16, + "name": "lookupTable_seq10_instr5", + "description": "Lookup table holds Flash command sequences 10, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12C", + "offset_int": "0x12C", + "reg_width": 16, + "name": "lookupTable_seq10_instr6", + "description": "Lookup table holds Flash command sequences 10, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field12E", + "offset_int": "0x12E", + "reg_width": 16, + "name": "lookupTable_seq10_instr7", + "description": "Lookup table holds Flash command sequences 10, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field12E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field12E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field12E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 16, + "name": "lookupTable_seq11_instr0", + "description": "Lookup table holds Flash command sequences 11, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field130-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field130-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field130-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field132", + "offset_int": "0x132", + "reg_width": 16, + "name": "lookupTable_seq11_instr1", + "description": "Lookup table holds Flash command sequences 11, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field132-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field132-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field132-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 16, + "name": "lookupTable_seq11_instr2", + "description": "Lookup table holds Flash command sequences 11, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field134-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field134-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field134-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field136", + "offset_int": "0x136", + "reg_width": 16, + "name": "lookupTable_seq11_instr3", + "description": "Lookup table holds Flash command sequences 11, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field136-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field136-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field136-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 16, + "name": "lookupTable_seq11_instr4", + "description": "Lookup table holds Flash command sequences 11, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field138-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field138-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field138-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13A", + "offset_int": "0x13A", + "reg_width": 16, + "name": "lookupTable_seq11_instr5", + "description": "Lookup table holds Flash command sequences 11, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13C", + "offset_int": "0x13C", + "reg_width": 16, + "name": "lookupTable_seq11_instr6", + "description": "Lookup table holds Flash command sequences 11, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field13E", + "offset_int": "0x13E", + "reg_width": 16, + "name": "lookupTable_seq11_instr7", + "description": "Lookup table holds Flash command sequences 11, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field13E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field13E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field13E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 16, + "name": "lookupTable_seq12_instr0", + "description": "Lookup table holds Flash command sequences 12, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field140-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field140-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field140-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field142", + "offset_int": "0x142", + "reg_width": 16, + "name": "lookupTable_seq12_instr1", + "description": "Lookup table holds Flash command sequences 12, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field142-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field142-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field142-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 16, + "name": "lookupTable_seq12_instr2", + "description": "Lookup table holds Flash command sequences 12, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field144-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field144-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field144-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field146", + "offset_int": "0x146", + "reg_width": 16, + "name": "lookupTable_seq12_instr3", + "description": "Lookup table holds Flash command sequences 12, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field146-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field146-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field146-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 16, + "name": "lookupTable_seq12_instr4", + "description": "Lookup table holds Flash command sequences 12, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field148-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field148-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field148-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14A", + "offset_int": "0x14A", + "reg_width": 16, + "name": "lookupTable_seq12_instr5", + "description": "Lookup table holds Flash command sequences 12, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14C", + "offset_int": "0x14C", + "reg_width": 16, + "name": "lookupTable_seq12_instr6", + "description": "Lookup table holds Flash command sequences 12, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field14E", + "offset_int": "0x14E", + "reg_width": 16, + "name": "lookupTable_seq12_instr7", + "description": "Lookup table holds Flash command sequences 12, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field14E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field14E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field14E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 16, + "name": "lookupTable_seq13_instr0", + "description": "Lookup table holds Flash command sequences 13, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field150-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field150-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field150-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field152", + "offset_int": "0x152", + "reg_width": 16, + "name": "lookupTable_seq13_instr1", + "description": "Lookup table holds Flash command sequences 13, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field152-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field152-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field152-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 16, + "name": "lookupTable_seq13_instr2", + "description": "Lookup table holds Flash command sequences 13, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field154-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field154-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field154-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field156", + "offset_int": "0x156", + "reg_width": 16, + "name": "lookupTable_seq13_instr3", + "description": "Lookup table holds Flash command sequences 13, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field156-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field156-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field156-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 16, + "name": "lookupTable_seq13_instr4", + "description": "Lookup table holds Flash command sequences 13, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field158-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field158-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field158-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15A", + "offset_int": "0x15A", + "reg_width": 16, + "name": "lookupTable_seq13_instr5", + "description": "Lookup table holds Flash command sequences 13, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15C", + "offset_int": "0x15C", + "reg_width": 16, + "name": "lookupTable_seq13_instr6", + "description": "Lookup table holds Flash command sequences 13, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field15E", + "offset_int": "0x15E", + "reg_width": 16, + "name": "lookupTable_seq13_instr7", + "description": "Lookup table holds Flash command sequences 13, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field15E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field15E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field15E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 16, + "name": "lookupTable_seq14_instr0", + "description": "Lookup table holds Flash command sequences 14, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field160-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field160-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field160-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field162", + "offset_int": "0x162", + "reg_width": 16, + "name": "lookupTable_seq14_instr1", + "description": "Lookup table holds Flash command sequences 14, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field162-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field162-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field162-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 16, + "name": "lookupTable_seq14_instr2", + "description": "Lookup table holds Flash command sequences 14, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field164-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field164-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field164-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field166", + "offset_int": "0x166", + "reg_width": 16, + "name": "lookupTable_seq14_instr3", + "description": "Lookup table holds Flash command sequences 14, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field166-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field166-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field166-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 16, + "name": "lookupTable_seq14_instr4", + "description": "Lookup table holds Flash command sequences 14, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field168-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field168-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field168-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16A", + "offset_int": "0x16A", + "reg_width": 16, + "name": "lookupTable_seq14_instr5", + "description": "Lookup table holds Flash command sequences 14, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16C", + "offset_int": "0x16C", + "reg_width": 16, + "name": "lookupTable_seq14_instr6", + "description": "Lookup table holds Flash command sequences 14, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field16E", + "offset_int": "0x16E", + "reg_width": 16, + "name": "lookupTable_seq14_instr7", + "description": "Lookup table holds Flash command sequences 14, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field16E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field16E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field16E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 16, + "name": "lookupTable_seq15_instr0", + "description": "Lookup table holds Flash command sequences 15, instruction 0", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field170-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field170-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field170-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field172", + "offset_int": "0x172", + "reg_width": 16, + "name": "lookupTable_seq15_instr1", + "description": "Lookup table holds Flash command sequences 15, instruction 1", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field172-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field172-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field172-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 16, + "name": "lookupTable_seq15_instr2", + "description": "Lookup table holds Flash command sequences 15, instruction 2", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field174-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field174-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field174-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field176", + "offset_int": "0x176", + "reg_width": 16, + "name": "lookupTable_seq15_instr3", + "description": "Lookup table holds Flash command sequences 15, instruction 3", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field176-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field176-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field176-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 16, + "name": "lookupTable_seq15_instr4", + "description": "Lookup table holds Flash command sequences 15, instruction 4", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field178-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field178-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field178-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17A", + "offset_int": "0x17A", + "reg_width": 16, + "name": "lookupTable_seq15_instr5", + "description": "Lookup table holds Flash command sequences 15, instruction 5", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17A-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17A-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17A-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17C", + "offset_int": "0x17C", + "reg_width": 16, + "name": "lookupTable_seq15_instr6", + "description": "Lookup table holds Flash command sequences 15, instruction 6", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17C-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17C-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17C-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field17E", + "offset_int": "0x17E", + "reg_width": 16, + "name": "lookupTable_seq15_instr7", + "description": "Lookup table holds Flash command sequences 15, instruction 7", + "default_value_int": "0x0", + "bitfields": [ + { + "width": 8, + "id": "field17E-bits-0-7", + "name": "OPERAND", + "description": "Instruction operand. Its values depends on used instruction" + }, + { + "width": 2, + "id": "field17E-bits-8-9", + "name": "NUM_PADS", + "description": "Number of pads used by instruction. Some instructions ignores this parameter.", + "values": [ + { + "name": "1PAD", + "value": 0, + "description": "Single mode. One pad is used." + }, + { + "name": "2PAD", + "value": 1, + "description": "Dual mode. Two pads are used." + }, + { + "name": "4PAD", + "value": 2, + "description": "Quad mode. Four pads are used." + }, + { + "name": "8PAD", + "value": 3, + "description": "Octal mode. Eight pads are used." + } + ] + }, + { + "width": 6, + "id": "field17E-bits-10-15", + "name": "OPERATION_CODE", + "description": "Instruction operation code.", + "values": [ + { + "name": "STOP", + "value": 0, + "description": "Stop execution and de-assert CS. Then, the next command sequence (to the same flash device) starts from instruction pointer 0." + }, + { + "name": "CMD_SDR", + "value": 1, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_SDR", + "value": 2, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_SDR", + "value": 3, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_SDR", + "value": 4, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_SDR", + "value": 5, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_SDR", + "value": 6, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_SDR", + "value": 7, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_SDR", + "value": 8, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_SDR", + "value": 9, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_SDR", + "value": 10, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_SDR", + "value": 11, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_SDR", + "value": 12, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_SDR", + "value": 13, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + }, + { + "name": "JMP_ON_CS", + "value": 31, + "description": "Stop execution, de-assert CS and save operand[7:0] as the instruction start pointer for next sequence.Normally this instruction is used to support Execute-In-Place enhanced mode. See XIP enhanced mode for more details.This instruction is only allowed for AHB read commands. There is interrupt status bit set (INTR[IPCMDERR] or INTR[AHBCMDERR]) when using this instruction in IP command or AHB write command." + }, + { + "name": "CMD_DDR", + "value": 33, + "description": "Transmit command code to Flash." + }, + { + "name": "RADDR_DDR", + "value": 34, + "description": "Transmit row address to Flash." + }, + { + "name": "CADDR_DDR", + "value": 35, + "description": "Transmit column address to Flash." + }, + { + "name": "MODE1_DDR", + "value": 36, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE2_DDR", + "value": 37, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE4_DDR", + "value": 38, + "description": "Transmit mode bits to Flash." + }, + { + "name": "MODE8_DDR", + "value": 39, + "description": "Transmit mode bits to Flash." + }, + { + "name": "WRITE_DDR", + "value": 40, + "description": "Transmit program data to Flash device." + }, + { + "name": "READ_DDR", + "value": 41, + "description": "Receive read data from Flash device. Read data is put into AHB_RX_BUF or IP_RX_FIFO." + }, + { + "name": "LEARN_DDR", + "value": 42, + "description": "Receive read data or Preamble bit from Flash deviceThe FlexSPI controller will compare the data line bits with DLPR register to determine a correct sampling clock phase." + }, + { + "name": "DATSZ_DDR", + "value": 43, + "description": "Transmit read or program data size (byte number) to Flash device." + }, + { + "name": "DUMMY_DDR", + "value": 44, + "description": "Leave data lines undriven by the FlexSPI controller. Turnaround cycles are provided from host driving to device driving. num_pads determines the number of pads in input mode." + }, + { + "name": "DUMMY_RWDS_DDR", + "value": 45, + "description": "This instruction is similar to DUMMY_SDR/DUMMY_DDR instruction. The difference lies in the dummy cycle number.DQS pin is called RWDS in HyperBus specification. See Dummy instruction for more details.Set operand as 'Latency count' for HyperBus devices." + } + ] + } + ] + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "lutCustomSeq_0", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field180-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field180-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "lutCustomSeq_1", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field184-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field184-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "lutCustomSeq_2", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field188-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field188-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "lutCustomSeq_3", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field18C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field18C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "lutCustomSeq_4", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field190-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field190-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "lutCustomSeq_5", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field194-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field194-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "lutCustomSeq_6", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field198-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field198-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "lutCustomSeq_7", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field19C-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field19C-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "lutCustomSeq_8", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A0-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A0-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "lutCustomSeq_9", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A4-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A4-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "lutCustomSeq_10", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1A8-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1A8-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "lutCustomSeq_11", + "description": " [0x180-0x1af] Customizable LUT Sequences ", + "default_value_int": "0x0", + "bitfields": [ + { + "id": "field1AC-bits0-7", + "width": 8, + "name": "seqNum", + "access": "RW", + "description": " Sequence Number, valid number: 1-16 " + }, + { + "id": "field1AC-bits8-15", + "width": 8, + "name": "seqId", + "access": "RW", + "description": " Sequence Index, valid number: 0-15 " + }, + { + "width": 16 + } + ] + }, + { + "id": "Reserved1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "reserved4_0", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "reserved4_1", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "reserved4_2", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "Reserved1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "reserved4_3", + "description": " [0x1b0-0x1bf] Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "pageSize", + "description": " Page size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "sectorSize", + "description": " Sector size of Serial NOR ", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 8, + "name": "ipcmdSerialClkFreq", + "description": " Clock frequency for IP command ", + "default_value_int": "0x0" + }, + { + "id": "field1C9", + "offset_int": "0x1c9", + "reg_width": 8, + "name": "isUniformBlockSize", + "description": " Sector/Block size is the same ", + "default_value_int": "0x0" + }, + { + "id": "field1CA", + "offset_int": "0x1ca", + "reg_width": 8, + "name": "isDataOrderSwapped", + "description": " Data order (D0, D1, D2, D3) is swapped (D1,D0, D3, D2) ", + "default_value_int": "0x0" + }, + { + "id": "Reserved1CB", + "offset_int": "0x1cb", + "reg_width": 8, + "name": "reserved0_0", + "description": " Reserved for future use ", + "default_value_int": "0x0", + "is_reserved": true + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 8, + "name": "serialNorType", + "description": " Serial NOR Flash type: 0/1/2/3 ", + "default_value_int": "0x0" + }, + { + "id": "field1CD", + "offset_int": "0x1cd", + "reg_width": 8, + "name": "needExitNoCmdMode", + "description": " Need to exit NoCmd mode before other IP command ", + "default_value_int": "0x0" + }, + { + "id": "field1CE", + "offset_int": "0x1ce", + "reg_width": 8, + "name": "halfClkForNonReadCmd", + "description": " Half the Serial Clock for non-read command: true/false ", + "default_value_int": "0x0" + }, + { + "id": "field1CF", + "offset_int": "0x1cf", + "reg_width": 8, + "name": "needRestoreNoCmdMode", + "description": " Need to Restore NoCmd mode after IP command execution ", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "blockSize", + "description": " Block size ", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "flashStateCtx", + "description": " Flash State Context ", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "reserve2_0", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "reserve2_1", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "reserve2_2", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "reserve2_3", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "reserve2_4", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "reserve2_5", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "reserve2_6", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "reserve2_7", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "reserve2_8", + "description": " Reserved for future use ", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "reserve2_9", + "description": " Reserved for future use ", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/fuses.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/fuses.json new file mode 100644 index 0000000..53c0ebe --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/fuses.json @@ -0,0 +1,5392 @@ +{ + "cpu": "RW612", + "shadow_reg_base_addr_int": "0x4000A000", + "groups": [ + { + "group": { + "name": "Lock Settings", + "description": "Lock settings configuration" + }, + "registers": [ + { + "id": "fuse0", + "name": "LOCK_CFG0", + "description": "Lock configuration fuse word 0.", + "index_int": "0", + "shadow_reg_offset_int": "0", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse0-bits-0-2", + "name": "BOOT_CFG_LOCK", + "description": "When set, BOOT_CFG_LOCK[2:0] bits controls read/write/override protection to BOOT_CFG 0-6 fuse words.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WR_LOCK", + "value": 1, + "description": "Write Lock" + }, + { + "name": "OP_LOCK", + "value": 2, + "description": "Operational Lock" + }, + { + "name": "OP+WP_LOCK", + "value": 3, + "description": "OP and WP_LOCK" + }, + { + "name": "RD_LOCK", + "value": 4, + "description": "Read Lock" + }, + { + "name": "RP+WP_LOCK", + "value": 5, + "description": "RP and WP_LOCK" + }, + { + "name": "RP+OP_LOCK", + "value": 6, + "description": "RP and OP_LOCK" + }, + { + "name": "All locks", + "value": 7, + "description": "All locks" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-3-5", + "name": "SEC_BOOT_CFG_LOCK", + "description": "When set, SEC_BOOT_CFG_LOCK[2:0] bits controls read/write/override protection to SEC_BOOT_CFG 0-8 fuse words.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WR_LOCK", + "value": 1, + "description": "Write Lock" + }, + { + "name": "OP_LOCK", + "value": 2, + "description": "Operational Lock" + }, + { + "name": "OP+WP_LOCK", + "value": 3, + "description": "OP and WP_LOCK" + }, + { + "name": "RD_LOCK", + "value": 4, + "description": "Read Lock" + }, + { + "name": "RP+WP_LOCK", + "value": 5, + "description": "RP and WP_LOCK" + }, + { + "name": "RP+OP_LOCK", + "value": 6, + "description": "RP and OP_LOCK" + }, + { + "name": "All locks", + "value": 7, + "description": "All locks" + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse0-bits-9-11", + "name": "DCFG_CC_SOCU_NS_LOCK", + "description": "When set, DCFG_CC_SOCU_NS_LOCK[2:0] bits controls read/write/override protection to DCFG_CC_SOCU_NS fuse word.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WR_LOCK", + "value": 1, + "description": "Write Lock" + }, + { + "name": "OP_LOCK", + "value": 2, + "description": "Operational Lock" + }, + { + "name": "OP+WP_LOCK", + "value": 3, + "description": "OP and WP_LOCK" + }, + { + "name": "RD_LOCK", + "value": 4, + "description": "Read Lock" + }, + { + "name": "RP+WP_LOCK", + "value": 5, + "description": "RP and WP_LOCK" + }, + { + "name": "RP+OP_LOCK", + "value": 6, + "description": "RP and OP_LOCK" + }, + { + "name": "All locks", + "value": 7, + "description": "All locks" + } + ] + }, + { + "width": 3, + "id": "fuse0-bits-12-14", + "name": "LOCK_CFG_LOCK", + "description": "When set, LOCK_CFG_LOCK[2:0] bits controls read/write/override protection to LOCK_CFG 0-2 fuse words.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WR_LOCK", + "value": 1, + "description": "Write Lock" + }, + { + "name": "OP_LOCK", + "value": 2, + "description": "Operational Lock" + }, + { + "name": "OP+WP_LOCK", + "value": 3, + "description": "OP and WP_LOCK" + }, + { + "name": "RD_LOCK", + "value": 4, + "description": "Read Lock" + }, + { + "name": "RP+WP_LOCK", + "value": 5, + "description": "RP and WP_LOCK" + }, + { + "name": "RP+OP_LOCK", + "value": 6, + "description": "RP and OP_LOCK" + }, + { + "name": "All locks", + "value": 7, + "description": "All locks" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse1", + "name": "LOCK_CFG1", + "description": "Lock configuration fuse word 1.", + "index_int": "0x0001", + "shadow_reg_offset_int": "0x0004", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3, + "id": "fuse1-bits-0-2", + "name": "CUST_KEY_LOCK", + "description": "When set, CUST_KEY_LOCK[2:0] bits controls read/write/override protection to CUST_SK_MK and RKTH fuse words.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WR_LOCK", + "value": 1, + "description": "Write Lock" + }, + { + "name": "OP_LOCK", + "value": 2, + "description": "Operational Lock" + }, + { + "name": "OP+WP_LOCK", + "value": 3, + "description": "OP and WP_LOCK" + }, + { + "name": "RD_LOCK", + "value": 4, + "description": "Read Lock" + }, + { + "name": "RP+WP_LOCK", + "value": 5, + "description": "RP and WP_LOCK" + }, + { + "name": "RP+OP_LOCK", + "value": 6, + "description": "RP and OP_LOCK" + }, + { + "name": "All locks", + "value": 7, + "description": "All locks" + } + ] + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse1-bits-6-8", + "name": "DCFG_CC_SOCU_LOCK", + "description": "When set, DCFG_CC_SOCU_LOCK[2:0] bits controls read/write/override protection to DCFG_CC_SOCU and DCFG_CC_SOCU_AP fuse words.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WR_LOCK", + "value": 1, + "description": "Write Lock" + }, + { + "name": "OP_LOCK", + "value": 2, + "description": "Operational Lock" + }, + { + "name": "OP+WP_LOCK", + "value": 3, + "description": "OP and WP_LOCK" + }, + { + "name": "RD_LOCK", + "value": 4, + "description": "Read Lock" + }, + { + "name": "RP+WP_LOCK", + "value": 5, + "description": "RP and WP_LOCK" + }, + { + "name": "RP+OP_LOCK", + "value": 6, + "description": "RP and OP_LOCK" + }, + { + "name": "All locks", + "value": 7, + "description": "All locks" + } + ] + }, + { + "width": 3, + "id": "fuse1-bits-9-11", + "name": "LIFECYCLE_LOCK", + "description": "When set, LIFECYCLE_LOCK[2:0] bits controls read/write/override protection to LIFE_CYCLE_STATE fuse word.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WR_LOCK", + "value": 1, + "description": "Write Lock" + }, + { + "name": "OP_LOCK", + "value": 2, + "description": "Operational Lock" + }, + { + "name": "OP+WP_LOCK", + "value": 3, + "description": "OP and WP_LOCK" + }, + { + "name": "RD_LOCK", + "value": 4, + "description": "Read Lock" + }, + { + "name": "RP+WP_LOCK", + "value": 5, + "description": "RP and WP_LOCK" + }, + { + "name": "RP+OP_LOCK", + "value": 6, + "description": "RP and OP_LOCK" + }, + { + "name": "All locks", + "value": 7, + "description": "All locks" + } + ] + }, + { + "width": 3, + "id": "fuse1-bits-12-14", + "name": "CRC_HI_LOCK", + "description": "When set, CRC_HI_LOCK[2:0] bits controls read/write/override protection to CRC 4-7 fuse words.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WR_LOCK", + "value": 1, + "description": "Write Lock" + }, + { + "name": "OP_LOCK", + "value": 2, + "description": "Operational Lock" + }, + { + "name": "OP+WP_LOCK", + "value": 3, + "description": "OP and WP_LOCK" + }, + { + "name": "RD_LOCK", + "value": 4, + "description": "Read Lock" + }, + { + "name": "RP+WP_LOCK", + "value": 5, + "description": "RP and WP_LOCK" + }, + { + "name": "RP+OP_LOCK", + "value": 6, + "description": "RP and OP_LOCK" + }, + { + "name": "All locks", + "value": 7, + "description": "All locks" + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse2", + "name": "LOCK_CFG2", + "description": "Lock configuration fuse word 2.", + "index_int": "0x0002", + "shadow_reg_offset_int": "0x0008", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3 + }, + { + "width": 3, + "id": "fuse2-bits-9-11", + "name": "CRC_LO_LOCK", + "description": "When set, CRC_LO_LOCK[2:0] bits controls read/write/override protection to CRC 0-3 fuse words.", + "values": [ + { + "name": "Unlocked", + "value": 0, + "description": "Unlocked" + }, + { + "name": "WR_LOCK", + "value": 1, + "description": "Write Lock" + }, + { + "name": "OP_LOCK", + "value": 2, + "description": "Operational Lock" + }, + { + "name": "OP+WP_LOCK", + "value": 3, + "description": "OP and WP_LOCK" + }, + { + "name": "RD_LOCK", + "value": 4, + "description": "Read Lock" + }, + { + "name": "RP+WP_LOCK", + "value": 5, + "description": "RP and WP_LOCK" + }, + { + "name": "RP+OP_LOCK", + "value": 6, + "description": "RP and OP_LOCK" + }, + { + "name": "All locks", + "value": 7, + "description": "All locks" + } + ] + }, + { + "width": 3 + }, + { + "width": 1 + } + ] + } + ] + }, + { + "group": { + "name": "OEM Configuration", + "description": "OEM configuration" + }, + "registers": [ + { + "id": "fuse15", + "name": "BOOT_CFG0", + "description": "Boot configuration fuse word 0.", + "index_int": "0x000F", + "shadow_reg_offset_int": "0x003C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse15-bits-0-3", + "name": "PRIMARY_BOOT_SOURCE", + "description": "Primary boot source. (a.k.a. Master boot source)", + "values": [ + { + "name": "ISP_PIN_BOOT", + "value": 0, + "description": "ISP pins will determine boot source." + }, + { + "name": "FLEXSPI_BOOT", + "value": 1, + "description": "Boot from FlexSPI flash device using FlexSPI interface pins." + }, + { + "name": "SDIO_BOOT", + "value": 3, + "description": "Boot from SDIO (Serial) port." + }, + { + "name": "SPI_BOOT", + "value": 4, + "description": "Boot using SPI slave interface using master boot mode." + }, + { + "name": "I2C_BOOT", + "value": 5, + "description": "I2C boot mode." + }, + { + "name": "UART_BOOT", + "value": 6, + "description": "Boot using UART interface using master boot mode." + }, + { + "name": "USBHID_BOOT", + "value": 8, + "description": "USB-HID boot mode." + }, + { + "name": "ISP_MODE", + "value": 9, + "description": "Always enter ISP mode. DEFAULT_ISP_MODE field will determine the ISP interface." + }, + { + "name": "Test_MODE", + "value": 10, + "description": "Reserved" + }, + { + "name": "QSPI_FALLBACK_SPINOR_BOOT", + "value": 12, + "description": "Boot from Octal/Quad SPI flash device using FlexSPI channel A interface pins. If image is not found check recovery boot using SPI flash device through FlexComm." + } + ] + }, + { + "width": 3, + "id": "fuse15-bits-4-6", + "name": "DEFAULT_ISP_MODE", + "description": "ISP boot mode", + "values": [ + { + "name": "AUTO_ISP", + "value": 0, + "description": "Auto detect ISP mode. The RW61x probes active peripheral from one of the below serial interfaces and download image from the probed peripherals: UART, I2C, SPI, USB-HID." + }, + { + "name": "USB_HID_ISP", + "value": 1, + "description": "The USB HID class is used to download the image of the USB0 port." + }, + { + "name": "UART_ISP", + "value": 2, + "description": "Support ISP command interface on UART port only." + }, + { + "name": "SPI_ISP", + "value": 3, + "description": "Support ISP command interface on SPI port only." + }, + { + "name": "I2C_ISP", + "value": 4, + "description": "Support ISP command interface on I2C port only." + }, + { + "name": "DISABLE_ISP", + "value": 7, + "description": "Disable ISP fall through when proper image is not found on primary boot device." + } + ] + }, + { + "width": 1 + }, + { + "width": 2 + }, + { + "width": 1, + "id": "fuse15-bit-10", + "name": "STOP_ON_FAILURE", + "description": "If set, then enables GPIO Port and PIN information upon failure." + }, + { + "width": 1 + }, + { + "width": 2, + "id": "fuse15-bits-12-13", + "name": "TZM_IMAGE_TYPE", + "description": "TrustZone-M mode", + "values": [ + { + "name": "IGNORED", + "value": 0, + "description": "Ignored" + }, + { + "name": "ENFORCE_PRESET_VALUE", + "value": 1, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_PRESET_VALUE_1", + "value": 2, + "description": "Enforce preset TZM data in image manifest." + }, + { + "name": "ENFORCE_PRESET_VALUE_2", + "value": 3, + "description": "Enforce preset TZM data in image manifest." + } + ] + }, + { + "width": 2 + }, + { + "width": 3, + "id": "fuse15-bits-16-18", + "name": "REDUNDANT_SPI_PORT", + "description": "FlexComm port to use for redundant SPI flash boot.", + "values": [ + { + "name": "FC0", + "value": 0, + "description": "Use FlexCom0 pins P0_0 (SCK), P0_1 (MISO), P0_2 (MOSI), P0_3 (SEL)." + }, + { + "name": "FC1", + "value": 1, + "description": "Use FlexCom1 pins P0_7 (SCK), P0_8 (MISO), P0_9 (MOSI), P0_10 (SEL)." + }, + { + "name": "FC2", + "value": 2, + "description": "Use FlexCom2 pins P0_14 (SCK), P0_15 (MISO), P0_16 (MOSI), P0_17 (SEL)." + }, + { + "name": "FC3", + "value": 3, + "description": "Use FlexCom3 pins P0_21 (SCK), P0_22 (MISO), P0_23 (MOSI), P0_24 (SEL)." + }, + { + "name": "FC4", + "value": 4, + "description": "Use FlexCom4 pins P0_28 (SCK), P0_29 (MISO), P0_30 (MOSI), P0_31 (SEL)." + }, + { + "name": "FC5", + "value": 5, + "description": "Use FlexCom5 pins P1_3 (SCK), P1_4 (MISO), P1_5 (MOSI), P1_6 (SEL)." + }, + { + "name": "FC6", + "value": 6, + "description": "Use FlexCom6 pins P3_25 (SCK), P3_26 (MISO), P3_27 (MOSI), P3_28 (SEL)." + }, + { + "name": "FC7", + "value": 7, + "description": "Use FlexCom7 pins P4_0 (SCK), P4_1 (MISO), P4_2 (MOSI), P4_3 (SEL)." + } + ] + }, + { + "width": 2, + "id": "fuse15-bits-19-20", + "name": "SECURE_BOOT_EN", + "description": "Secure boot enable config", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Allow non-secure images with and without CRC. Used during development." + }, + { + "name": "DISABLED_RFU", + "value": 1, + "description": "RFU" + }, + { + "name": "ENABLED", + "value": 2, + "description": "Secure boot is enabled. Do complete ECDSA checking of signed images. (ECDSA signed)" + }, + { + "name": "ENABLED_1", + "value": 3, + "description": "Secure boot is enabled. Do complete ECDSA checking of signed images. (ECDSA signed)" + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse15-bit-22", + "name": "DICE_INC_OTP", + "description": "Include OTP fuse area in DICE computation", + "values": [ + { + "name": "NOT_INCLUDED", + "value": 0, + "description": "Not included" + }, + { + "name": "INCLUDED", + "value": 1, + "description": "Included" + } + ] + }, + { + "width": 1, + "id": "fuse15-bit-23", + "name": "DICE_SKIP", + "description": "Skip DICE computation", + "values": [ + { + "name": "NO_SKIP", + "value": 0, + "description": "Enable DICE" + }, + { + "name": "SKIP", + "value": 1, + "description": "Disable DICE" + } + ] + }, + { + "width": 3, + "id": "fuse15-bits-24-26", + "name": "BOOT_FAIL_PORT", + "description": "GPIO port number to use for indicating boot failure. Defines GPIO port number." + }, + { + "width": 5, + "id": "fuse15-bits-27-31", + "name": "BOOT_FAIL_PIN", + "description": "Defines GPIO pin number.\nNote: Please note GPIO[22:27] can not be used as BOOT_FAIL pins." + } + ] + }, + { + "id": "fuse16", + "name": "BOOT_CFG1", + "description": "Boot configuration word specifying FlexSPI flash devices settings.", + "index_int": "0x0010", + "shadow_reg_offset_int": "0x0040", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 1, + "id": "fuse16-bit-0", + "name": "FLEXSPI_AUTO_PROBE_EN", + "description": "Flash auto probe feature enable. Auto probing is enabled if the bit is 1.", + "values": [ + { + "name": "FLASH_AUTO_PROBE", + "value": 0, + "description": "The Boot ROM looks for a FCB on the flash. Boot ROM reads a 512 byte FCB into on-chip SRAM and configures the FlexSPI controller accordingly." + }, + { + "name": "FCB_FROM_FLASH", + "value": 1, + "description": "The Boot ROM will perform flash auto probe sequence using parameters from OTP fuse values for FLEXSPI_PROBE_TYPE, FLEXSPI_FLASH_TYPE, FLEXSPI_DUMMY_CYCLES, FLEXSPI_FREQUENCY." + } + ] + }, + { + "width": 3, + "id": "fuse16-bits-1-3", + "name": "FLEXSPI_PROBE_TYPE", + "description": "Flash probe type", + "values": [ + { + "name": "QSPI_NOR", + "value": 0, + "description": "QuadSPI NOR" + } + ] + }, + { + "width": 3, + "id": "fuse16-bits-4-6", + "name": "FLEXSPI_FLASH_TYPE", + "description": "Flash type. This field affects the default configuration of the Boot ROM Flash driver (before any input from flash itself is available).", + "values": [ + { + "name": "FLEXSPI_SDR_3B", + "value": 0, + "description": "Device supports SDR and uses 3 byte addresses for read. In case of autoprobing, when generating an FCB from the SFDP information, commands for SRD operation are generated. In case of configuration from FCB, for reading of flash memory, command 0x03 is used." + }, + { + "name": "FLEXSPI_DDR_4B", + "value": 1, + "description": "Device supports DDR and uses 4 byte addresses for read. In case of autoprobing, when generating an FCB from the SFDP information, the command set for DDR operation is used. In case of configuration from FCB, for reading of flash memory, command 0x13 is used." + } + ] + }, + { + "width": 4, + "id": "fuse16-bits-7-10", + "name": "FLEXSPI_DUMMY_CYCLES", + "description": "Dummy cycles for read command.", + "values": [ + { + "name": "AUTO_PROB", + "value": 0, + "description": "The dummy cycles are probed automatically." + }, + { + "name": "1", + "value": 1, + "description": "The number of dummy cycles is 1." + }, + { + "name": "2", + "value": 2, + "description": "The number of dummy cycles is 2." + }, + { + "name": "3", + "value": 3, + "description": "The number of dummy cycles is 3." + }, + { + "name": "4", + "value": 4, + "description": "The number of dummy cycles is 4." + }, + { + "name": "5", + "value": 5, + "description": "The number of dummy cycles is 5." + }, + { + "name": "6", + "value": 6, + "description": "The number of dummy cycles is 6." + }, + { + "name": "7", + "value": 7, + "description": "The number of dummy cycles is 7." + }, + { + "name": "8", + "value": 8, + "description": "The number of dummy cycles is 8." + }, + { + "name": "9", + "value": 9, + "description": "The number of dummy cycles is 9." + }, + { + "name": "10", + "value": 10, + "description": "The number of dummy cycles is 10." + }, + { + "name": "11", + "value": 11, + "description": "The number of dummy cycles is 11." + }, + { + "name": "12", + "value": 12, + "description": "The number of dummy cycles is 12." + }, + { + "name": "13", + "value": 13, + "description": "The number of dummy cycles is 13." + }, + { + "name": "14", + "value": 14, + "description": "The number of dummy cycles is 14." + }, + { + "name": "15", + "value": 15, + "description": "The number of dummy cycles is 15." + } + ] + }, + { + "width": 3, + "id": "fuse16-bits-11-13", + "name": "FLEXSPI_FREQUENCY", + "description": "Flash SPI clock frequency to use for auto probing.", + "values": [ + { + "name": "FLEXSPI_100MHZ", + "value": 0, + "description": "Use a clock frequency of 100 MHz." + }, + { + "name": "FLEXSPI_120MHZ", + "value": 1, + "description": "Use a clock frequency of 120 MHz." + }, + { + "name": "FLEXSPI_133MHZ", + "value": 2, + "description": "Use a clock frequency of 133 MHz." + }, + { + "name": "FLEXSPI_166MHZ", + "value": 3, + "description": "Use a clock frequency of 166 MHz." + }, + { + "name": "FLEXSPI_200MHZ", + "value": 4, + "description": "Use a clock frequency of 200 MHz." + }, + { + "name": "FLEXSPI_80MHZ", + "value": 5, + "description": "Use a clock frequency of 80 MHz." + }, + { + "name": "FLEXSPI_60MHZ", + "value": 6, + "description": "Use a clock frequency of 60 MHz." + }, + { + "name": "FLEXSPI_50MHZ", + "value": 7, + "description": "Use a clock frequency of 50 MHz." + } + ] + }, + { + "width": 2, + "id": "fuse16-bits-14-15", + "name": "FLEXSPI_RST_SEQ", + "description": "Select the flash reset sequence to use for regular boot.", + "values": [ + { + "name": "NO_RESET_PERFORMED", + "value": 0, + "description": "Don't perform any reset." + }, + { + "name": "JEDEC_RESET", + "value": 1, + "description": "The Boot ROM performs a reset sequence according to the JEDEC specification." + }, + { + "name": "RESET_COMMAND", + "value": 2, + "description": "The Boot ROM sends commands for resetting the flash. The sequence is fixed command byte 0x66 (enable reset) followed by command byte 0x99 (reset device) using SPI (single wire)." + }, + { + "name": "WAKEUP_COMMAND", + "value": 3, + "description": "The Boot ROM sends a wakeup command to the flash. The sequence is fixed command byte 0xAB using SPI (single wire). As the wakeup command is using SPI, it has to be ensured that the flash is in a mode where it can accept SPI commands before the system is put to low-power mode." + } + ] + }, + { + "width": 4, + "id": "fuse16-bits-16-19", + "name": "FLEXSPI_RST_HOLD_TIME", + "description": "Set the time to wait after reset sequence for regular boot.", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No additional delay." + }, + { + "name": "100US_DELAY", + "value": 1, + "description": "Wait for 100 us." + }, + { + "name": "500US_DELAY", + "value": 2, + "description": "Wait for 500 us." + }, + { + "name": "1MS_DELAY", + "value": 3, + "description": "Wait for 1 ms." + }, + { + "name": "10MS_DELAY", + "value": 4, + "description": "Wait for 10 ms." + }, + { + "name": "20MS_DELAY", + "value": 5, + "description": "Wait for 20 ms." + }, + { + "name": "40MS_DELAY", + "value": 6, + "description": "Wait for 40 ms." + }, + { + "name": "60MS_DELAY", + "value": 7, + "description": "Wait for 60 ms." + }, + { + "name": "80MS_DELAY", + "value": 8, + "description": "Wait for 80 ms." + }, + { + "name": "100MS_DELAY", + "value": 9, + "description": "Wait for 100 ms." + }, + { + "name": "120MS_DELAY", + "value": 10, + "description": "Wait for 120 ms." + }, + { + "name": "140MS_DELAY", + "value": 11, + "description": "Wait for 140 ms." + }, + { + "name": "160MS_DELAY", + "value": 12, + "description": "Wait for 160 ms." + }, + { + "name": "180MS_DELAY", + "value": 13, + "description": "Wait for 180 ms." + }, + { + "name": "200MS_DELAY", + "value": 14, + "description": "Wait for 200 ms." + }, + { + "name": "220MS_DELAY", + "value": 15, + "description": "Wait for 220 ms." + } + ] + }, + { + "width": 2, + "id": "fuse16-bits-20-21", + "name": "FLEXSPI_WUP_SEQ", + "description": "Select the flash reset sequence to use for boot from low power mode.", + "values": [ + { + "name": "NO_RESET_PERFORMED", + "value": 0, + "description": "Don't perform any reset." + }, + { + "name": "JEDEC_RESET", + "value": 1, + "description": "The Boot ROM performs a reset sequence according to the JEDEC specification." + }, + { + "name": "RESET_COMMAND", + "value": 2, + "description": "The Boot ROM sends commands for resetting the flash. The sequence is fixed command byte 0x66 (enable reset) followed by command byte 0x99 (reset device) using SPI (single wire)." + }, + { + "name": "WAKEUP_COMMAND", + "value": 3, + "description": "The Boot ROM sends a wakeup command to the flash. The sequence is fixed command byte 0xAB using SPI (single wire). As the wakeup command is using SPI, it has to be ensured that the flash is in a mode where it can accept SPI commands before the system is put to low-power mode." + } + ] + }, + { + "width": 4, + "id": "fuse16-bits-22-25", + "name": "FLEXSPI_WUP_HOLD_TIME", + "description": "Set the time to wait after reset sequence for boot from low power mode.", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No additional delay." + }, + { + "name": "100US_DELAY", + "value": 1, + "description": "Wait for 100 us." + }, + { + "name": "500US_DELAY", + "value": 2, + "description": "Wait for 500 us." + }, + { + "name": "1MS_DELAY", + "value": 3, + "description": "Wait for 1 ms." + }, + { + "name": "10MS_DELAY", + "value": 4, + "description": "Wait for 10 ms." + }, + { + "name": "20MS_DELAY", + "value": 5, + "description": "Wait for 20 ms." + }, + { + "name": "40MS_DELAY", + "value": 6, + "description": "Wait for 40 ms." + }, + { + "name": "60MS_DELAY", + "value": 7, + "description": "Wait for 60 ms." + }, + { + "name": "80MS_DELAY", + "value": 8, + "description": "Wait for 80 ms." + }, + { + "name": "100MS_DELAY", + "value": 9, + "description": "Wait for 100 ms." + }, + { + "name": "120MS_DELAY", + "value": 10, + "description": "Wait for 120 ms." + }, + { + "name": "140MS_DELAY", + "value": 11, + "description": "Wait for 140 ms." + }, + { + "name": "160MS_DELAY", + "value": 12, + "description": "Wait for 160 ms." + }, + { + "name": "180MS_DELAY", + "value": 13, + "description": "Wait for 180 ms." + }, + { + "name": "200MS_DELAY", + "value": 14, + "description": "Wait for 200 ms." + }, + { + "name": "220MS_DELAY", + "value": 15, + "description": "Wait for 220 ms." + } + ] + }, + { + "width": 2, + "id": "fuse16-bits-26-27", + "name": "FLEXSPI_HOLD_TIME", + "description": "Wait time before access to Serial Flash.", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No additional delay" + }, + { + "name": "500US_DELAY", + "value": 1, + "description": "Wait for 500 us." + }, + { + "name": "3MS_DELAY", + "value": 2, + "description": "Wait for 3 ms." + }, + { + "name": "10MS_DELAY", + "value": 3, + "description": "Wait for 10 ms." + } + ] + }, + { + "width": 4, + "id": "fuse16-bits-28-31", + "name": "FLEXSPI_PWR_HOLD_TIME", + "description": "Delay after POR before accessing Quad/Octal-SPI flash devices in addition to delay defined by QSPI_HOLD TIME field.", + "values": [ + { + "name": "NO_DELAY", + "value": 0, + "description": "No additional delay." + }, + { + "name": "100US_DELAY", + "value": 1, + "description": "Wait for 100 us." + }, + { + "name": "500US_DELAY", + "value": 2, + "description": "Wait for 500 us." + }, + { + "name": "1MS_DELAY", + "value": 3, + "description": "Wait for 1 ms." + }, + { + "name": "10MS_DELAY", + "value": 4, + "description": "Wait for 10 ms." + }, + { + "name": "20MS_DELAY", + "value": 5, + "description": "Wait for 20 ms." + }, + { + "name": "40MS_DELAY", + "value": 6, + "description": "Wait for 40 ms." + }, + { + "name": "60MS_DELAY", + "value": 7, + "description": "Wait for 60 ms." + }, + { + "name": "80MS_DELAY", + "value": 8, + "description": "Wait for 80 ms." + }, + { + "name": "100MS_DELAY", + "value": 9, + "description": "Wait for 100 ms." + }, + { + "name": "120MS_DELAY", + "value": 10, + "description": "Wait for 120 ms." + }, + { + "name": "140MS_DELAY", + "value": 11, + "description": "Wait for 140 ms." + }, + { + "name": "160MS_DELAY", + "value": 12, + "description": "Wait for 160 ms." + }, + { + "name": "180MS_DELAY", + "value": 13, + "description": "Wait for 180 ms." + }, + { + "name": "200MS_DELAY", + "value": 14, + "description": "Wait for 200 ms." + }, + { + "name": "220MS_DELAY", + "value": 15, + "description": "Wait for 220 ms." + } + ] + } + ] + }, + { + "id": "fuse17", + "name": "BOOT_CFG2", + "description": "Boot configuration word specifying settings for FlexSPI image.", + "index_int": "0x0011", + "shadow_reg_offset_int": "0x0044", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse17-bits-0-3", + "name": "FLEXSPI_IMAGE_SIZE", + "description": "The size of the flash memory to use for a boot image.", + "values": [ + { + "name": "SIZE_OFFSET", + "value": 0, + "description": "The size of the boot image is considered to be equal to the offset of the second image." + }, + { + "name": "SIZE_1MB", + "value": 1, + "description": "Size of remapped area is 1MByte." + }, + { + "name": "SIZE_2MB", + "value": 2, + "description": "Size of remapped area is 2MByte." + }, + { + "name": "SIZE_3MB", + "value": 3, + "description": "Size of remapped area is 3MByte." + }, + { + "name": "SIZE_4MB", + "value": 4, + "description": "Size of remapped area is 4MByte." + }, + { + "name": "SIZE_5MB", + "value": 5, + "description": "Size of remapped area is 5MByte." + }, + { + "name": "SIZE_6MB", + "value": 6, + "description": "Size of remapped area is 6MByte." + }, + { + "name": "SIZE_7MB", + "value": 7, + "description": "Size of remapped area is 7MByte." + }, + { + "name": "SIZE_8MB", + "value": 8, + "description": "Size of remapped area is 8MByte." + }, + { + "name": "SIZE_9MB", + "value": 9, + "description": "Size of remapped area is 9MByte." + }, + { + "name": "SIZE_10MB", + "value": 10, + "description": "Size of remapped area is 10MByte." + }, + { + "name": "SIZE_11MB", + "value": 11, + "description": "Size of remapped area is 11MByte." + }, + { + "name": "SIZE_12MB", + "value": 12, + "description": "Size of remapped area is 12MByte." + }, + { + "name": "SIZE_256KB", + "value": 13, + "description": "Size of remapped area is 256KByte." + }, + { + "name": "SIZE_512KB", + "value": 14, + "description": "Size of remapped area is 512KByte." + }, + { + "name": "SIZE_768KB", + "value": 15, + "description": "Size of remapped area is 768KByte." + } + ] + }, + { + "width": 7, + "id": "fuse17-bits-4-10", + "name": "FLEXSPI_DELAY_CELL_NUM", + "description": "Delay cell numbers for flash read sampling via DQS (either internal loopback or external DQS).\n\ndelay = 1600ps, if value = 0\ndelay = value * 100ps" + }, + { + "width": 10, + "id": "fuse17-bits-11-20", + "name": "FLEXSPI_IMAGE_OFFSET", + "description": "The offset in flash memory where the second boot image starts. The offset to the second image is X * 256 KB." + }, + { + "width": 11 + } + ] + }, + { + "id": "fuse18", + "name": "BOOT_CFG3", + "description": "Boot configuration fuse word 3.", + "index_int": "0x0012", + "shadow_reg_offset_int": "0x0048", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 3, + "id": "fuse18-bits-0-2", + "name": "ROTK0_USAGE", + "description": "RoT key 0 usage properties. ", + "values": [ + { + "name": "All_usage_key", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DebugCA", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "ImageCA_FwCA", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DebugCA_ImageCA_FwCA", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "ImageKey_FwKey", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "ImageKey", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FwKey", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "Unused", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse18-bits-3-5", + "name": "ROTK1_USAGE", + "description": "RoT key 1 usage properties.", + "values": [ + { + "name": "All_usage_key", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DebugCA", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "ImageCA_FwCA", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DebugCA_ImageCA_FwCA", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "ImageKey_FwKey", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "ImageKey", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FwKey", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "Unused", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse18-bits-6-8", + "name": "ROTK2_USAGE", + "description": "RoT key 2 usage properties.", + "values": [ + { + "name": "All_usage_key", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DebugCA", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "ImageCA_FwCA", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DebugCA_ImageCA_FwCA", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "ImageKey_FwKey", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "ImageKey", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FwKey", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "Unused", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 3, + "id": "fuse18-bits-9-11", + "name": "ROTK3_USAGE", + "description": "RoT key 3 usage properties.", + "values": [ + { + "name": "All_usage_key", + "value": 0, + "description": "Usable as debug CA, image CA, FW CA, image and FW key." + }, + { + "name": "DebugCA", + "value": 1, + "description": "Usable as debug CA only." + }, + { + "name": "ImageCA_FwCA", + "value": 2, + "description": "Usable as image (boot and FW) CA only." + }, + { + "name": "DebugCA_ImageCA_FwCA", + "value": 3, + "description": "Usable as debug, boot and FW image CA." + }, + { + "name": "ImageKey_FwKey", + "value": 4, + "description": "Usable as image key and FW update key only." + }, + { + "name": "ImageKey", + "value": 5, + "description": "Usable as boot image key only." + }, + { + "name": "FwKey", + "value": 6, + "description": "Usable as FW update image key only." + }, + { + "name": "Unused", + "value": 7, + "description": "Key slot is not used." + } + ] + }, + { + "width": 2, + "id": "fuse18-bits-12-13", + "name": "ENF_CNSA", + "description": "Enforce CNSA (Commercial National Security Algorithm) suite keys.", + "values": [ + { + "name": "P-256_KEY", + "value": 0, + "description": "ECC P-256 keys." + }, + { + "name": "P-384_KEY", + "value": 1, + "description": "ECC P-384 keys." + }, + { + "name": "P-384_KEY_1", + "value": 2, + "description": "ECC P-384 keys." + }, + { + "name": "P-384_KEY_2", + "value": 3, + "description": "ECC P-384 keys." + } + ] + }, + { + "width": 2, + "id": "fuse18-bits-14-15", + "name": "ENABLE_CRC_CHECK", + "description": "Enable CRC checks over OTP words.\n\nCRC1 = CRC over OTP fuses from 15 - 21\nCRC2 = CRC over OTP fuses from 00 - 02\nCRC6 = CRC over OTP fuses from 92 - 115", + "values": [ + { + "name": "DISABLE", + "value": 0, + "description": "Disable CRC check over OTPs." + }, + { + "name": "ENABLE_NXP_OTP", + "value": 1, + "description": "Perform CRC check over NXP OTPs." + }, + { + "name": "ENABLE_ALL_OTP", + "value": 2, + "description": "Perform CRC check over NXP and OEM OTPs." + } + ] + }, + { + "width": 2, + "id": "fuse18-bits-16-17", + "name": "FIPS_KDF_STEN", + "description": "Enable self-test for CKDF block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register.", + "values": [ + { + "name": "SKIP_SELF_TEST_RUN", + "value": 0, + "description": "Self-tests run is skipped and results are not included." + }, + { + "name": "INCLUDE_SELF_TEST_RESULTS", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FALL_THROUGH_ISP_ON_FAIL", + "value": 2, + "description": "On failure fall through ISP." + }, + { + "name": "LOCK_DEVICE_ON_FAIL", + "value": 3, + "description": "Stop on execution on fail." + } + ] + }, + { + "width": 2, + "id": "fuse18-bits-18-19", + "name": "FIPS_CMAC_STEN", + "description": "Enable self-test for CMAC block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register.", + "values": [ + { + "name": "SKIP_SELF_TEST_RUN", + "value": 0, + "description": "Self-tests run is skipped and results are not included." + }, + { + "name": "INCLUDE_SELF_TEST_RESULTS", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FALL_THROUGH_ISP_ON_FAIL", + "value": 2, + "description": "On failure fall through ISP." + }, + { + "name": "LOCK_DEVICE_ON_FAIL", + "value": 3, + "description": "Stop on execution on fail." + } + ] + }, + { + "width": 2, + "id": "fuse18-bits-20-21", + "name": "FIPS_DRBG_STEN", + "description": "Enable self-test for DRBG block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register.", + "values": [ + { + "name": "SKIP_SELF_TEST_RUN", + "value": 0, + "description": "Self-tests run is skipped and results are not included." + }, + { + "name": "INCLUDE_SELF_TEST_RESULTS", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FALL_THROUGH_ISP_ON_FAIL", + "value": 2, + "description": "On failure fall through ISP." + }, + { + "name": "LOCK_DEVICE_ON_FAIL", + "value": 3, + "description": "Stop on execution on fail." + } + ] + }, + { + "width": 2, + "id": "fuse18-bits-22-23", + "name": "FIPS_ECDSA_STEN", + "description": "Enable self-test for ECDSA block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register.", + "values": [ + { + "name": "SKIP_SELF_TEST_RUN", + "value": 0, + "description": "Self-tests run is skipped and results are not included." + }, + { + "name": "INCLUDE_SELF_TEST_RESULTS", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FALL_THROUGH_ISP_ON_FAIL", + "value": 2, + "description": "On failure fall through ISP." + }, + { + "name": "LOCK_DEVICE_ON_FAIL", + "value": 3, + "description": "Stop on execution on fail." + } + ] + }, + { + "width": 2, + "id": "fuse18-bits-24-25", + "name": "FIPS_AES_STEN", + "description": "Enable self-test for AES block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register.", + "values": [ + { + "name": "SKIP_SELF_TEST_RUN", + "value": 0, + "description": "Self-tests run is skipped and results are not included." + }, + { + "name": "INCLUDE_SELF_TEST_RESULTS", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FALL_THROUGH_ISP_ON_FAIL", + "value": 2, + "description": "On failure fall through ISP." + }, + { + "name": "LOCK_DEVICE_ON_FAIL", + "value": 3, + "description": "Stop on execution on fail." + } + ] + }, + { + "width": 2, + "id": "fuse18-bits-26-27", + "name": "FIPS_SHA_STEN", + "description": "Enable self-test for SHA2 block on power-up. Needed for FIPS certification. If this field is non-zero run self-test and log result in BOOT_STATE register.", + "values": [ + { + "name": "SKIP_SELF_TEST_RUN", + "value": 0, + "description": "Self-tests run is skipped and results are not included." + }, + { + "name": "INCLUDE_SELF_TEST_RESULTS", + "value": 1, + "description": "On failure continue to boot." + }, + { + "name": "FALL_THROUGH_ISP_ON_FAIL", + "value": 2, + "description": "On failure fall through ISP." + }, + { + "name": "LOCK_DEVICE_ON_FAIL", + "value": 3, + "description": "Stop on execution on fail." + } + ] + }, + { + "width": 2, + "id": "fuse18-bits-28-29", + "name": "SKIP_PM_SIGN_VERIFICATION", + "description": "On boot-up from PM3/PM4, do not run through ECDSA signature verification of the image.", + "values": [ + { + "name": "NO_SKIP", + "value": 0, + "description": "Image verification is not skipped upon wake up from PM3 and PM4." + }, + { + "name": "NO_SKIP_1", + "value": 1, + "description": "Image verification is not skipped upon wake up from PM3 and PM4." + }, + { + "name": "NO_SKIP_2", + "value": 2, + "description": "Image verification is not skipped upon wake up from PM3 and PM4." + }, + { + "name": "SKIP", + "value": 3, + "description": "Image verification is skipped upon wake up from PM3 and PM4." + } + ] + }, + { + "width": 2 + } + ] + }, + { + "id": "fuse19", + "name": "BOOT_CFG4", + "description": "Boot configuration word specifying settings for recovery image.", + "index_int": "0x0013", + "shadow_reg_offset_int": "0x004C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 4, + "id": "fuse19-bits-0-3", + "name": "RECOVERY_IMAGE_SIZE", + "description": "Recovery image size", + "values": [ + { + "name": "SIZE_OFFSET", + "value": 0, + "description": "The size of the boot image is considered to be equal to the offset of the second image." + }, + { + "name": "SIZE_1MB", + "value": 1, + "description": "Size of remapped area is 1MByte." + }, + { + "name": "SIZE_2MB", + "value": 2, + "description": "Size of remapped area is 2MByte." + }, + { + "name": "SIZE_3MB", + "value": 3, + "description": "Size of remapped area is 3MByte." + }, + { + "name": "SIZE_4MB", + "value": 4, + "description": "Size of remapped area is 4MByte." + }, + { + "name": "SIZE_5MB", + "value": 5, + "description": "Size of remapped area is 5MByte." + }, + { + "name": "SIZE_6MB", + "value": 6, + "description": "Size of remapped area is 6MByte." + }, + { + "name": "SIZE_7MB", + "value": 7, + "description": "Size of remapped area is 7MByte." + }, + { + "name": "SIZE_8MB", + "value": 8, + "description": "Size of remapped area is 8MByte." + }, + { + "name": "SIZE_9MB", + "value": 9, + "description": "Size of remapped area is 9MByte." + }, + { + "name": "SIZE_10MB", + "value": 10, + "description": "Size of remapped area is 10MByte." + }, + { + "name": "SIZE_11MB", + "value": 11, + "description": "Size of remapped area is 11MByte." + }, + { + "name": "SIZE_12MB", + "value": 12, + "description": "Size of remapped area is 12MByte." + }, + { + "name": "SIZE_256KB", + "value": 13, + "description": "Size of remapped area is 256KByte." + }, + { + "name": "SIZE_512KB", + "value": 14, + "description": "Size of remapped area is 512KByte." + }, + { + "name": "SIZE_768KB", + "value": 15, + "description": "Size of remapped area is 768KByte." + } + ] + }, + { + "width": 10, + "id": "fuse19-bits-4-13", + "name": "RECOVERY_IMAGE_OFFSET", + "description": "The offset in flash memory where the second boot image starts for recovery image. The offset to the second image is X * 256 kB." + }, + { + "width": 1, + "id": "fuse19-bit-14", + "name": "RECOVERY_BOOT_EN", + "description": "Configures recovery boot flag", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Boot from recovery image is disabled." + }, + { + "name": "ENABLED", + "value": 1, + "description": "Boot from recovery image is enabled." + } + ] + }, + { + "width": 17 + } + ] + }, + { + "id": "fuse20", + "name": "BOOT_CFG5", + "description": "The USB VID and PID can be customized by writing the new values to the USB_VID and USB_PID fields in this fuse word field.", + "index_int": "0x0014", + "shadow_reg_offset_int": "0x0050", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse20-bits-0-15", + "name": "USB_VID", + "description": "Value of USB VID" + }, + { + "width": 16, + "id": "fuse20-bits-16-31", + "name": "USB_PID", + "description": "Value of USB PID" + } + ] + }, + { + "id": "fuse21", + "name": "BOOT_CFG6", + "description": "The SDIO VID and PID can be customized by writing the new values to the SDIO_VID and SDIO_PID fields in this fuse word field.", + "index_int": "0x0015", + "shadow_reg_offset_int": "0x0054", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse21-bits-0-15", + "name": "SDIO_VID", + "description": "Value of SDIO VID" + }, + { + "width": 16, + "id": "fuse21-bits-16-31", + "name": "SDIO_PID", + "description": "Value of SDIO PID" + } + ] + }, + { + "id": "fuse22", + "name": "SEC_BOOT_CFG0", + "description": "Root key revocation fuse word.", + "index_int": "0x0016", + "shadow_reg_offset_int": "0x0058", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 1, + "id": "fuse22-bit-0", + "name": "REVOKE_ROOTKEY0", + "description": "RoT Key 0 enable", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "RoT Key is enabled." + }, + { + "name": "REVOKED", + "value": 1, + "description": "RoT Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse22-bit-1", + "name": "REVOKE_ROOTKEY1", + "description": "RoT Key 1 enable", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "RoT Key is enabled." + }, + { + "name": "REVOKED", + "value": 1, + "description": "RoT Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse22-bit-2", + "name": "REVOKE_ROOTKEY2", + "description": "RoT Key 2 enable ", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "RoT Key is enabled." + }, + { + "name": "REVOKED", + "value": 1, + "description": "RoT Key is revoked." + } + ] + }, + { + "width": 1, + "id": "fuse22-bit-3", + "name": "REVOKE_ROOTKEY3", + "description": "RoT Key 3 enable ", + "values": [ + { + "name": "ENABLED", + "value": 0, + "description": "RoT Key is enabled." + }, + { + "name": "REVOKED", + "value": 1, + "description": "RoT Key is revoked." + } + ] + }, + { + "width": 1 + }, + { + "width": 1, + "id": "fuse22-bit-5", + "name": "NXP_PROV_FW_EXEC_DIS", + "description": "Flag to disable execution of NXP signed provisioning Firmwares", + "values": [ + { + "name": "EXEC_NOT_DISABLED", + "value": 0, + "description": "Execution of NXP provisioning fw is not disabled." + }, + { + "name": "EXEC_DISABLED", + "value": 1, + "description": "Execution of NXP provisioning fw is disabled." + } + ] + }, + { + "width": 10 + } + ] + }, + { + "id": "fuse23", + "name": "SEC_BOOT_CFG1", + "description": "DAP Vendor Usage configurations fuse word.", + "index_int": "0x0017", + "shadow_reg_offset_int": "0x005C", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse23-bits-0-15", + "name": "DAP_VENDOR_USAGE", + "description": "Lower 16-bits of Vendor Usage field in Debug Credentials defined in NXP's Debug Authentication Protocol specifications Version 1.0. " + } + ] + }, + { + "id": "fuse24", + "name": "SEC_BOOT_CFG2", + "description": "Lower 16-bits of revoke Image signing key configuration fuse word.", + "index_int": "0x0018", + "shadow_reg_offset_int": "0x0060", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse24-bits-0-15", + "name": "REVOKE_IMG_KEY", + "description": "Image key revocation bits." + } + ] + }, + { + "id": "fuse25", + "name": "SEC_BOOT_CFG3", + "description": "Upper 16-bits of revoke Image signing key configuration fuse word.", + "index_int": "0x0019", + "shadow_reg_offset_int": "0x0064", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse25-bits-0-15", + "name": "REVOKE_IMG_KEY", + "description": "Image key revocation bits." + } + ] + }, + { + "id": "fuse26", + "name": "SEC_BOOT_CFG4", + "description": "User defined", + "index_int": "0x001A", + "shadow_reg_offset_int": "0x0068", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse26-bits-0-15", + "name": "User", + "description": "User defined" + } + ] + }, + { + "id": "fuse27", + "name": "SEC_BOOT_CFG5", + "description": "User defined", + "index_int": "0x001B", + "shadow_reg_offset_int": "0x006C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse27-bits-0-31", + "name": "SEC_BOOT_CFG5", + "description": "User defined" + } + ] + }, + { + "id": "fuse28", + "name": "SEC_BOOT_CFG6", + "description": "SDIO Block size settings fuse word.", + "index_int": "0x001C", + "shadow_reg_offset_int": "0x0070", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 16, + "id": "fuse28-bits-0-15", + "name": "SDIO_F0_BLOCKSIZE", + "description": "SDIO Block F0 size\n`16b00` = SDIO_F0_BLOCKSIZE will be fixed `0x1`\n`SDIO_F0_BLOCKSIZE` = Fuse value" + }, + { + "width": 16, + "id": "fuse28-bits-16-31", + "name": "SDIO_FN_BLOCKSIZE", + "description": "SDIO Block FN size\n`16b00` = SDIO_FN_BLOCKSIZE will be fixed `0x200`\n`SDIO_FN_BLOCKSIZE` = Fuse value" + } + ] + }, + { + "id": "fuse29", + "name": "SEC_BOOT_CFG7", + "description": "SDIO configuration settings fuse word.", + "index_int": "0x001D", + "shadow_reg_offset_int": "0x0074", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse29-bits-0-7", + "name": "SDIO_REV", + "description": "Configure SDIO version revision.\n`8b00` = SDIO_REV will be fixed `0x30`\n`SDIO_REV ` = Fuse value" + }, + { + "width": 8, + "id": "fuse29-bits-8-15", + "name": "SDIO_SPEED", + "description": "Configure SDIO Speed.\n`8b00` = SDIO_SPEED will be fixed `0xB`\n`SDIO_SPEED` = Fuse value" + }, + { + "width": 16, + "id": "fuse29-bits-16-31", + "name": "SDIO_TIMEOUT", + "description": "Configure SDIO Timeout.\n`16b00` = SDIO_TIMEOUT will be fixed `0x14`\n`SDIO_TIMEOUT` = Fuse value" + } + ] + }, + { + "id": "fuse30", + "name": "SEC_BOOT_CFG8", + "description": "User defined", + "index_int": "0x001E", + "shadow_reg_offset_int": "0x0078", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0008", + "read_lock_int": "0x0020", + "operation_lock_int": "0x0010" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse30-bits-0-31", + "name": "SEC_BOOT_CFG8", + "description": "User defined" + } + ] + }, + { + "id": "fuse31", + "name": "DCFG_CC_SOCU_NS", + "description": "The DCFG_CC_SOCU_NS configuration fields can be used to increase the restriction level specified in DCFG_CC_SOCU. With TZ-M, the part can be sold by level 1 customers (secure code developer) to level-2 customers who develops non-secure code only.\n - In this scenario, or easy of development, Level-I customer releases the part to always allow non-secure debug.\n - To allow level-2 customers to further seal the part DCFG_CC_SOCU_NS is used.\n - ROM will use this word to further restrict the debug access.\n - Layout of this word is same as DCFG_CC_SOCU.\n - Combinations of PINNED_xxxEN and DFLT_xxxEN bits and resulting access restriction levels are:\n \n1. PINNED_xxxEN=1,DFLT_xxxEN=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product.\n2. PINNED_xxxEN=0,DFLT_xxxEN=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through the debug authentication process by providing an appropriate Debug Credential (DC) certificate.\n3. PINNED_xxxEN=0,DFLT_xxxEN=1: Illegal setting. Part will lock-up if this setting is selected.\n4. PINNED_xxxEN=1,DFLT_xxxEN=0: Restriction level 2. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "index_int": "0x001F", + "shadow_reg_offset_int": "0x007C", + "default_value_int": "0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse0", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse31-bits-0-7", + "name": "CRC8_NS", + "description": "CRC-8/ITU of upper 3 bytes (bits 8 to 31). Since these fields are security critical, they are constructed with built-in integrity protection to protect from side channel glitch attacks.\nThe lower byte (0 to 7 bits) of these OTP words should be written with CRC-8/ITU of upper 3 bytes (bits 8 to 31). \nThis construction makes the probability of a successful glitch attack to flip the exact control bits extremely difficult.\n The CRC8 calculation should be based on x8 + x2 + x + 1 polynomial. Polynomial=0x07, initial value= 0x00, XorOut=0x55", + "calculated": "CRC-8/ITU" + }, + { + "width": 1, + "id": "fuse31-bit-8", + "name": "DFLT_NIDEN_NS", + "description": "Controls non-Invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-9", + "name": "DFLT_DBGEN_NS", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-10", + "name": "DFLT_SPNIDEN_NS", + "description": "Controls non-Invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-11", + "name": "DFLT_SPIDEN_NS", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-12", + "name": "DFLT_TAPEN_NS", + "description": "Controls TAP (Test Access Point) controller used for structural integrity testing of silicon by NXP as part of Return Material Analysis (RMA)", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-13", + "name": "DFLT_CPU1NIDEN_NS", + "description": "Controls non-Invasive debugging of CPU1.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-14", + "name": "DFLT_CPU1DBGEN_NS", + "description": "Controls invasive debugging of CPU1.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-15", + "name": "DFLT_CPU2NIDEN_NS", + "description": "Controls non-Invasive debugging of CPU2.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-16", + "name": "DFLT_CPU2DBGEN_NS", + "description": "Controls invasive debugging of CPU2.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-17", + "name": "DFLT_ISPCMDEN_NS", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-18", + "name": "DFLT_FACMDEN_NS", + "description": "Controls whether DM-AP Set FA Mode command (command code: 0x06) can be issued after authentication", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-19", + "name": "PINNED_NIDEN_NS", + "description": "Controls non-Invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-20", + "name": "PINNED_DBGEN_NS", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-21", + "name": "PINNED_SPNIDEN_NS", + "description": "Controls non-Invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-22", + "name": "PINNED_SPIDEN_NS", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-23", + "name": "PINNED_TAPEN_NS", + "description": "Controls TAP (Test Access Point) controller used for structural integrity testing of silicon by NXP as part of Return Material Analysis (RMA)", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-24", + "name": "PINNED_CPU1NIDEN_NS", + "description": "Controls non-Invasive debugging of CPU1", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-25", + "name": "PINNED_CPU1DBGEN_NS", + "description": "Controls invasive debugging of CPU1.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-26", + "name": "PINNED_CPU2NIDEN_NS", + "description": "Controls non-Invasive debugging of CPU2.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-27", + "name": "PINNED_CPU2DBGEN_NS", + "description": "Controls invasive debugging of CPU2.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-28", + "name": "PINNED_ISPCMDEN_NS", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-29", + "name": "PINNED_FACMDEN_NS", + "description": "Controls whether DM-AP Set FA Mode command (command code: 0x06) can be issued after authentication", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse31-bit-30", + "name": "FORCE_UUID_MATCH_NS", + "description": "When set, debug authentication protocol only accepts Debug Credential certificates (DC) with matching UUID.", + "values": [ + { + "name": "NO_FORCE_UUID_MATCH", + "value": 0, + "description": "Accepts Debug Credential certificates (DC) with any UUID." + }, + { + "name": "FORCE_UUID_MATCH", + "value": 1, + "description": "Accepts Debug Credential certificates (DC) with matching UUID." + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse33", + "name": "DCFG_CC_SOCU", + "description": "The DCFG_CC_SOCU configuration field specifies the debug access restrictions per debug domain. The DCFG_CC_SOCU_NS fields can be used to increase the restriction level specified in DCFG_CC_SOCU but cannot be used to reduce the restriction level.\n - Combinations of PINNED_xxxEN and DFLT_xxxEN bits and resulting access restriction levels are:\n\n 1. PINNED_xxxEN=1,DFLT_xxxEN=1: Restriction level 0. Access to the sub-domain is always enabled. This setting is provided for module use case scenario where DCFG_CC_SOCU_NS would be used to define further access restrictions before final deployment of the product. \n 2. PINNED_xxxEN=0,DFLT_xxxEN=0: Restriction level 1. Access to the sub-domain is disabled at startup. But the access can be enabled through the debug authentication process by providing an appropriate Debug Credential (DC) certificate. \n 3. PINNED_xxxEN=0,DFLT_xxxEN=1: Illegal setting. Part will lock-up if this setting is selected. \n 4. PINNED_xxxEN=1,DFLT_xxxEN=0: Restriction level 2. Access to the sub-domain is permanently disabled and cannot be reversed. This setting offers the highest level of restriction.", + "index_int": "0x0021", + "shadow_reg_offset_int": "0x0084", + "default_value_int": "0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + }, + "bitfields": [ + { + "width": 8, + "id": "fuse33-bits-0-7", + "name": "CRC8", + "description": "CRC-8/ITU of upper 3 bytes (bits 8 to 31). Since these fields are security critical, they are constructed with built-in integrity protection to protect from side channel glitch attacks.\nThe lower byte (0 to 7 bits) of these OTP words should be written with CRC-8/ITU of upper 3 bytes (bits 8 to 31). \nThis construction makes the probability of a successful glitch attack to flip the exact control bits extremely difficult.\n The CRC8 calculation should be based on x8 + x2 + x + 1 polynomial. Polynomial=0x07, initial value= 0x00, XorOut=0x55", + "calculated": "CRC-8/ITU" + }, + { + "width": 1, + "id": "fuse33-bit-8", + "name": "DFLT_NIDEN", + "description": "Controls non-Invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-9", + "name": "DFLT_DBGEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-10", + "name": "DFLT_SPNIDEN", + "description": "Controls non-Invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-11", + "name": "DFLT_SPIDEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-12", + "name": "DFLT_TAPEN", + "description": "Controls TAP (Test Access Point) controller used for structural integrity testing of silicon by NXP as part of Return Material Analysis (RMA)", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-13", + "name": "DFLT_CPU1NIDEN", + "description": "Controls non-Invasive debugging of CPU1.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-14", + "name": "DFLT_CPU1DBGEN", + "description": "Controls invasive debugging of CPU1.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-15", + "name": "DFLT_CPU2NIDEN", + "description": "Controls non-Invasive debugging of CPU2.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-16", + "name": "DFLT_CPU2DBGEN", + "description": "Controls invasive debugging of CPU2.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-17", + "name": "DFLT_ISPCMDEN", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-18", + "name": "DFLT_FACMDEN", + "description": "Controls whether DM-AP Set FA Mode command (command code: 0x06) can be issued after authentication", + "values": [ + { + "name": "DISABLED", + "value": 0, + "description": "Disabled" + }, + { + "name": "ENABLED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-19", + "name": "PINNED_NIDEN", + "description": "Controls non-Invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-20", + "name": "PINNED_DBGEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined non-secure domain of CPU0", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-21", + "name": "PINNED_SPNIDEN", + "description": "Controls non-Invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-22", + "name": "PINNED_SPIDEN", + "description": "Controls invasive debugging of TrustZone for Arm8-M defined secure domain of CPU0", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-23", + "name": "PINNED_TAPEN", + "description": "Controls TAP (Test Access Point) controller used for structural integrity testing of silicon by NXP as part of Return Material Analysis (RMA)", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-24", + "name": "PINNED_CPU1NIDEN", + "description": "Controls non-Invasive debugging of CPU1", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-25", + "name": "PINNED_CPU1DBGEN", + "description": "Controls invasive debugging of CPU1.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-26", + "name": "PINNED_CPU2NIDEN", + "description": "Controls non-Invasive debugging of CPU2.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-27", + "name": "PINNED_CPU2DBGEN", + "description": "Controls invasive debugging of CPU2.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-28", + "name": "PINNED_ISPCMDEN", + "description": "Controls whether ISP boot flow DM-AP command (command code: 0x05) can be issued after authentication.", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-29", + "name": "PINNED_FACMDEN", + "description": "Controls whether DM-AP Set FA Mode command (command code: 0x06) can be issued after authentication", + "values": [ + { + "name": "DAR_CC", + "value": 0, + "description": "Debug Authentication Response determines the state." + }, + { + "name": "FIXED", + "value": 1, + "description": "Enabled" + } + ] + }, + { + "width": 1, + "id": "fuse33-bit-30", + "name": "FORCE_UUID_MATCH", + "description": "When set, debug authentication protocol only accepts Debug Credential certificates (DC) with matching UUID.", + "values": [ + { + "name": "NO_FORCE_UUID_MATCH", + "value": 0, + "description": "Accepts Debug Credential certificates (DC) with any UUID." + }, + { + "name": "FORCE_UUID_MATCH", + "value": 1, + "description": "Accepts Debug Credential certificates (DC) with matching UUID." + } + ] + }, + { + "width": 1 + } + ] + }, + { + "id": "fuse34", + "name": "DCFG_CC_SOCU_AP", + "description": "Anti-pole (inverse) value of Debug Configuration word (DCFG_CC_SOCU). DCFG_CC_SOCU_AP should be programmed with the exact anti-pole (inverse value) value of DCFG_CC_SOCU. \nAny mismatch between DCFG_CC_SOCU and DCFG_CC_SOCU_AP is deemed as an attack and device is locked permanently.", + "index_int": "0x0022", + "shadow_reg_offset_int": "0x0088", + "individual_write_lock": "implicit", + "calculated": { + "method": "inverse", + "src_register_id": "fuse33" + }, + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0040", + "read_lock_int": "0x0100", + "operation_lock_int": "0x0080" + } + } + ] + }, + { + "group": { + "name": "Life Cycle Management", + "description": "Life cycle management" + }, + "registers": [ + { + "id": "fuse45", + "name": "LIFE_CYCLE_STATE", + "description": "Life cycle state of rw61x platform.", + "index_int": "0x002D", + "shadow_reg_offset_int": "0x00B4", + "default_value_int": "0x0303", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "reg_width": 16, + "bitfields": [ + { + "width": 8, + "id": "fuse45-bits-0-7", + "name": "LCS", + "description": "Possible values of rw61x lifecycle states", + "values": [ + { + "name": "Blank", + "value": 0, + "description": "Initial state in NXP factory." + }, + { + "name": "Provisioned", + "value": 1, + "description": "NXP provisioned state." + }, + { + "name": "Develop", + "value": 3, + "description": "Initial customer development state after leaving NXP manufacturing." + }, + { + "name": "Develop2", + "value": 7, + "description": "Optional customer development state. Used for development of NS world code." + }, + { + "name": "In-Field", + "value": 15, + "description": "In-field application state for end-customer use." + }, + { + "name": "Field Return OEM", + "value": 31, + "description": "Field return state." + }, + { + "name": "Failure Analysis (FA)", + "value": 63, + "description": "NXP field return state (CQC)." + }, + { + "name": "In-Field Locked", + "value": 207, + "description": "Alternative in-field application state that disables debug capability and prevents use of field return/failure analysis states. The rest of the behavior of the device is same as the In-field state." + }, + { + "name": "Shredded", + "value": 255, + "description": "Bricked state to prevent device use." + } + ] + }, + { + "width": 8, + "id": "fuse45-bits-8-15", + "name": "LCS_REDUNDANT", + "description": "Repeat values of lifecycle state due to a security", + "values": [ + { + "name": "Blank", + "value": 0, + "description": "Initial state in NXP factory." + }, + { + "name": "Provisioned", + "value": 1, + "description": "NXP provisioned state." + }, + { + "name": "Develop", + "value": 3, + "description": "Initial customer development state after leaving NXP manufacturing." + }, + { + "name": "Develop2", + "value": 7, + "description": "Optional customer development state. Used for development of NS world code." + }, + { + "name": "In-Field", + "value": 15, + "description": "In-field application state for end-customer use." + }, + { + "name": "Field Return OEM", + "value": 31, + "description": "Field return state." + }, + { + "name": "Failure Analysis (FA)", + "value": 63, + "description": "NXP field return state (CQC)." + }, + { + "name": "In-Field Locked", + "value": 207, + "description": "Alternative in-field application state that disables debug capability and prevents use of field return/failure analysis states. The rest of the behavior of the device is same as the In-field state." + }, + { + "name": "Shredded", + "value": 255, + "description": "Bricked state to prevent device use." + } + ] + } + ] + } + ] + }, + { + "group": { + "name": "UUID", + "description": "UUID" + }, + "registers": [ + { + "id": "fuse46", + "name": "UUID[31:0]", + "description": "Universally Unique Identifier 0", + "index_int": "0x002E", + "individual_write_lock": "implicit" + }, + { + "id": "fuse47", + "name": "UUID[63:32]", + "description": "Universally Unique Identifier 1", + "index_int": "0x002F", + "individual_write_lock": "implicit" + }, + { + "id": "fuse48", + "name": "UUID[95:64]", + "description": "Universally Unique Identifier 2", + "index_int": "0x0030", + "individual_write_lock": "implicit" + }, + { + "id": "fuse49", + "name": "UUID[127:96]", + "description": "Universally Unique Identifier 3", + "index_int": "0x0031", + "individual_write_lock": "implicit" + } + ] + }, + { + "group": { + "name": "Firmware Decryption Key", + "description": "Firmware decryption key" + }, + "registers": [ + { + "id": "fuse92", + "name": "CUST_SK_MK[31:0]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x005C", + "shadow_reg_offset_int": "0x0170", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse93", + "name": "CUST_SK_MK[63:32]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x005D", + "shadow_reg_offset_int": "0x0174", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse94", + "name": "CUST_SK_MK[95:64]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x005E", + "shadow_reg_offset_int": "0x0178", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse95", + "name": "CUST_SK_MK[127:96]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x005F", + "shadow_reg_offset_int": "0x017C", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse96", + "name": "CUST_SK_MK[159:128]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x0060", + "shadow_reg_offset_int": "0x0180", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse97", + "name": "CUST_SK_MK[191:160]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x0061", + "shadow_reg_offset_int": "0x0184", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse98", + "name": "CUST_SK_MK[223:192]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x0062", + "shadow_reg_offset_int": "0x0188", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse99", + "name": "CUST_SK_MK[255:224]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x0063", + "shadow_reg_offset_int": "0x018C", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse100", + "name": "CUST_SK_MK[287:256]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x0064", + "shadow_reg_offset_int": "0x0190", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse101", + "name": "CUST_SK_MK[319:288]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x0065", + "shadow_reg_offset_int": "0x0194", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse102", + "name": "CUST_SK_MK[351:320]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x0066", + "shadow_reg_offset_int": "0x0198", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse103", + "name": "CUST_SK_MK[383:352]", + "description": "FW encryption and decryption key wrapped by RFC3394, used for FW decryption", + "index_int": "0x0067", + "shadow_reg_offset_int": "0x019C", + "access": "RO", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + } + ] + }, + { + "group": { + "name": "ROTKH", + "description": "ROTKH" + }, + "registers": [ + { + "id": "fuse104", + "name": "RKTH[383:352]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x0068", + "shadow_reg_offset_int": "0x01A0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse105", + "name": "RKTH[351:320]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x0069", + "shadow_reg_offset_int": "0x01A4", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse106", + "name": "RKTH[319:288]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x006A", + "shadow_reg_offset_int": "0x01A8", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse107", + "name": "RKTH[287:256]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x006B", + "shadow_reg_offset_int": "0x01AC", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse108", + "name": "RKTH[255:224]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x006C", + "shadow_reg_offset_int": "0x01B0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse109", + "name": "RKTH[223:192]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x006D", + "shadow_reg_offset_int": "0x01B4", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse110", + "name": "RKTH[191:160]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x006E", + "shadow_reg_offset_int": "0x01B8", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse111", + "name": "RKTH[159:128]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x006F", + "shadow_reg_offset_int": "0x01BC", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse112", + "name": "RKTH[127:96]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x0070", + "shadow_reg_offset_int": "0x01C0", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse113", + "name": "RKTH[95:64]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x0071", + "shadow_reg_offset_int": "0x01C4", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse114", + "name": "RKTH[63:32]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x0072", + "shadow_reg_offset_int": "0x01C8", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + }, + { + "id": "fuse115", + "name": "RKTH[31:0]", + "description": "SHA256 hash digest of hash of four Root Of Trust Keys", + "index_int": "0x0073", + "shadow_reg_offset_int": "0x01CC", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x0001", + "read_lock_int": "0x0004", + "operation_lock_int": "0x0002" + } + } + ] + }, + { + "group": { + "name": "User Space ECC", + "description": "User Space ECC" + }, + "registers": [ + { + "id": "fuse156", + "name": "USER_ECC_0", + "description": "Customer programmable ECC fuse word", + "index_int": "0x009C", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse156-bits-0-31", + "name": "USER_ECC_0", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse157", + "name": "USER_ECC_1", + "description": "Customer programmable ECC fuse word", + "index_int": "0x009D", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse157-bits-0-31", + "name": "USER_ECC_1", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse158", + "name": "USER_ECC_2", + "description": "Customer programmable ECC fuse word", + "index_int": "0x009E", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse158-bits-0-31", + "name": "USER_ECC_2", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse159", + "name": "USER_ECC_3", + "description": "Customer programmable ECC fuse word", + "index_int": "0x009F", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse159-bits-0-31", + "name": "USER_ECC_3", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse160", + "name": "USER_ECC_4", + "description": "Customer programmable ECC fuse word", + "index_int": "0x00A0", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse160-bits-0-31", + "name": "USER_ECC_4", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse161", + "name": "USER_ECC_5", + "description": "Customer programmable ECC fuse word", + "index_int": "0x00A1", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse161-bits-0-31", + "name": "USER_ECC_5", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse162", + "name": "USER_ECC_6", + "description": "Customer programmable ECC fuse word", + "index_int": "0x00A2", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse162-bits-0-31", + "name": "USER_ECC_6", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse163", + "name": "USER_ECC_7", + "description": "Customer programmable ECC fuse word", + "index_int": "0x00A3", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse163-bits-0-31", + "name": "USER_ECC_7", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse315", + "name": "USER_ECC_8", + "description": "Customer programmable ECC fuse word", + "index_int": "0x013B", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse315-bits-0-31", + "name": "USER_ECC_8", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse316", + "name": "USER_ECC_9", + "description": "Customer programmable ECC fuse word", + "index_int": "0x013C", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse316-bits-0-31", + "name": "USER_ECC_9", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse317", + "name": "USER_ECC_10", + "description": "Customer programmable ECC fuse word", + "index_int": "0x013D", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse317-bits-0-31", + "name": "USER_ECC_10", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse318", + "name": "USER_ECC_11", + "description": "Customer programmable ECC fuse word", + "index_int": "0x013E", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse318-bits-0-31", + "name": "USER_ECC_11", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse319", + "name": "USER_ECC_12", + "description": "Customer programmable ECC fuse word", + "index_int": "0x013F", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse319-bits-0-31", + "name": "USER_ECC_12", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse320", + "name": "USER_ECC_13", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0140", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse320-bits-0-31", + "name": "USER_ECC_13", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse321", + "name": "USER_ECC_14", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0141", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse321-bits-0-31", + "name": "USER_ECC_14", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse322", + "name": "USER_ECC_15", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0142", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse322-bits-0-31", + "name": "USER_ECC_15", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse323", + "name": "USER_ECC_16", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0143", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse323-bits-0-31", + "name": "USER_ECC_16", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse324", + "name": "USER_ECC_17", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0144", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse324-bits-0-31", + "name": "USER_ECC_17", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse325", + "name": "USER_ECC_18", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0145", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse325-bits-0-31", + "name": "USER_ECC_18", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse326", + "name": "USER_ECC_19", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0146", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse326-bits-0-31", + "name": "USER_ECC_19", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse327", + "name": "USER_ECC_20", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0147", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse327-bits-0-31", + "name": "USER_ECC_20", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse328", + "name": "USER_ECC_21", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0148", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse328-bits-0-31", + "name": "USER_ECC_21", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse329", + "name": "USER_ECC_22", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0149", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse329-bits-0-31", + "name": "USER_ECC_22", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse330", + "name": "USER_ECC_23", + "description": "Customer programmable ECC fuse word", + "index_int": "0x014A", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse330-bits-0-31", + "name": "USER_ECC_23", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse331", + "name": "USER_ECC_24", + "description": "Customer programmable ECC fuse word", + "index_int": "0x014B", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse331-bits-0-31", + "name": "USER_ECC_24", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse332", + "name": "USER_ECC_25", + "description": "Customer programmable ECC fuse word", + "index_int": "0x014C", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse332-bits-0-31", + "name": "USER_ECC_25", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse333", + "name": "USER_ECC_26", + "description": "Customer programmable ECC fuse word", + "index_int": "0x014D", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse333-bits-0-31", + "name": "USER_ECC_26", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse334", + "name": "USER_ECC_27", + "description": "Customer programmable ECC fuse word", + "index_int": "0x014E", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse334-bits-0-31", + "name": "USER_ECC_27", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse335", + "name": "USER_ECC_28", + "description": "Customer programmable ECC fuse word", + "index_int": "0x014F", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse335-bits-0-31", + "name": "USER_ECC_28", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse336", + "name": "USER_ECC_29", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0150", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse336-bits-0-31", + "name": "USER_ECC_29", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse337", + "name": "USER_ECC_30", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0151", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse337-bits-0-31", + "name": "USER_ECC_30", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse338", + "name": "USER_ECC_31", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0152", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse338-bits-0-31", + "name": "USER_ECC_31", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse339", + "name": "USER_ECC_32", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0153", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse339-bits-0-31", + "name": "USER_ECC_32", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse340", + "name": "USER_ECC_33", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0154", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse340-bits-0-31", + "name": "USER_ECC_33", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse341", + "name": "USER_ECC_34", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0155", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse341-bits-0-31", + "name": "USER_ECC_34", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse342", + "name": "USER_ECC_35", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0156", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse342-bits-0-31", + "name": "USER_ECC_35", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse343", + "name": "USER_ECC_36", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0157", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse343-bits-0-31", + "name": "USER_ECC_36", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse344", + "name": "USER_ECC_37", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0158", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse344-bits-0-31", + "name": "USER_ECC_37", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse345", + "name": "USER_ECC_38", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0159", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse345-bits-0-31", + "name": "USER_ECC_38", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse346", + "name": "USER_ECC_39", + "description": "Customer programmable ECC fuse word", + "index_int": "0x015A", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse346-bits-0-31", + "name": "USER_ECC_39", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse347", + "name": "USER_ECC_40", + "description": "Customer programmable ECC fuse word", + "index_int": "0x015B", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse347-bits-0-31", + "name": "USER_ECC_40", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse348", + "name": "USER_ECC_41", + "description": "Customer programmable ECC fuse word", + "index_int": "0x015C", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse348-bits-0-31", + "name": "USER_ECC_41", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse349", + "name": "USER_ECC_42", + "description": "Customer programmable ECC fuse word", + "index_int": "0x015D", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse349-bits-0-31", + "name": "USER_ECC_42", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse350", + "name": "USER_ECC_43", + "description": "Customer programmable ECC fuse word", + "index_int": "0x015E", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse350-bits-0-31", + "name": "USER_ECC_43", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse351", + "name": "USER_ECC_44", + "description": "Customer programmable ECC fuse word", + "index_int": "0x015F", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse351-bits-0-31", + "name": "USER_ECC_44", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse352", + "name": "USER_ECC_45", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0160", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse352-bits-0-31", + "name": "USER_ECC_45", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse353", + "name": "USER_ECC_46", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0161", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse353-bits-0-31", + "name": "USER_ECC_46", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse354", + "name": "USER_ECC_47", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0162", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse354-bits-0-31", + "name": "USER_ECC_47", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse355", + "name": "USER_ECC_48", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0163", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse355-bits-0-31", + "name": "USER_ECC_48", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse356", + "name": "USER_ECC_49", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0164", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse356-bits-0-31", + "name": "USER_ECC_49", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse357", + "name": "USER_ECC_50", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0165", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse357-bits-0-31", + "name": "USER_ECC_50", + "description": "Customer programmable ECC fuse word" + } + ] + }, + { + "id": "fuse358", + "name": "USER_ECC_51", + "description": "Customer programmable ECC fuse word", + "index_int": "0x0166", + "individual_write_lock": "implicit", + "bitfields": [ + { + "width": 32, + "id": "fuse358-bits-0-31", + "name": "USER_ECC_51", + "description": "Customer programmable ECC fuse word" + } + ] + } + ] + }, + { + "group": { + "name": "CRCx", + "description": "CRCx" + }, + "registers": [ + { + "id": "fuse360", + "name": "CRC0", + "description": "Reserved", + "index_int": "0x0168", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse360-bits-0-31", + "name": "CRC0", + "description": "Reserved" + } + ] + }, + { + "id": "fuse361", + "name": "CRC1", + "description": "CRC32 of BOOT_CFG0-6 configuration data, fuse words 15 to 21.", + "index_int": "0x0169", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse361-bits-0-31", + "name": "CRC1", + "description": "CRC32 of BOOT_CFG0-6 configuration data, fuse words 15 to 21." + } + ] + }, + { + "id": "fuse362", + "name": "CRC2", + "description": "CRC32 of LOCK configuration data, fuse words 0 to 2.", + "index_int": "0x016A", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse362-bits-0-31", + "name": "CRC2", + "description": "CRC32 of LOCK configuration data, fuse words 0 to 2." + } + ] + }, + { + "id": "fuse363", + "name": "CRC3", + "description": "Reserved", + "index_int": "0x016B", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse2", + "write_lock_int": "0x0200", + "read_lock_int": "0x0800", + "operation_lock_int": "0x0400" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse363-bits-0-31", + "name": "CRC3", + "description": "Reserved" + } + ] + }, + { + "id": "fuse364", + "name": "CRC4", + "description": "Reserved", + "index_int": "0x016C", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse364-bits-0-31", + "name": "CRC4", + "description": "Reserved" + } + ] + }, + { + "id": "fuse365", + "name": "CRC5", + "description": "Reserved", + "index_int": "0x016D", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse365-bits-0-31", + "name": "CRC5", + "description": "Reserved" + } + ] + }, + { + "id": "fuse366", + "name": "CRC6", + "description": "CRC32 of OEM programmed keys, fuse words 92 to 115.", + "index_int": "0x016E", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse366-bits-0-31", + "name": "CRC6", + "description": "CRC32 of OEM programmed keys, fuse words 92 to 115." + } + ] + }, + { + "id": "fuse367", + "name": "CRC7", + "description": "Reserved", + "index_int": "0x016F", + "individual_write_lock": "implicit", + "lock": { + "register_id": "fuse1", + "write_lock_int": "0x1000", + "read_lock_int": "0x4000", + "operation_lock_int": "0x2000" + }, + "bitfields": [ + { + "width": 32, + "id": "fuse367-bits-0-31", + "name": "CRC7", + "description": "Reserved" + } + ] + } + ] + }, + { + "group": { + "name": "TZ_NSW_Version", + "description": "Non-Secure firmware version counter" + }, + "registers": [ + { + "id": "fuse368", + "name": "NT_FW_VER0", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0170", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse368-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 0..15" + } + ] + }, + { + "id": "fuse369", + "name": "NT_FW_VER1", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0171", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse369-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 16..31" + } + ] + }, + { + "id": "fuse370", + "name": "NT_FW_VER2", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0172", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse370-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 32..47" + } + ] + }, + { + "id": "fuse371", + "name": "NT_FW_VER3", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0173", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse371-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 48..63" + } + ] + }, + { + "id": "fuse372", + "name": "NT_FW_VER4", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0174", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse372-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 64..79" + } + ] + }, + { + "id": "fuse373", + "name": "NT_FW_VER5", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0175", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse373-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 80..95" + } + ] + }, + { + "id": "fuse374", + "name": "NT_FW_VER6", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0176", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse374-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 96..111" + } + ] + }, + { + "id": "fuse375", + "name": "NT_FW_VER7", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0177", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse375-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 112..127" + } + ] + }, + { + "id": "fuse376", + "name": "NT_FW_VER8", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0178", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse376-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 128..143" + } + ] + }, + { + "id": "fuse377", + "name": "NT_FW_VER9", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0179", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse377-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 144..159" + } + ] + }, + { + "id": "fuse378", + "name": "NT_FW_VER10", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x017A", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse378-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 160..175" + } + ] + }, + { + "id": "fuse379", + "name": "NT_FW_VER11", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x017B", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse379-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 176..191" + } + ] + }, + { + "id": "fuse380", + "name": "NT_FW_VER12", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x017C", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse380-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 192..207" + } + ] + }, + { + "id": "fuse381", + "name": "NT_FW_VER13", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x017D", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse381-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 208..223" + } + ] + }, + { + "id": "fuse382", + "name": "NT_FW_VER14", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x017E", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse382-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 224..239" + } + ] + }, + { + "id": "fuse383", + "name": "NT_FW_VER15", + "description": "Non-Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x017F", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse383-bits-0-15", + "name": "NT_FW_VER", + "description": "Non-Secure TrustZone firmware version counter, bits 240..255" + } + ] + } + ] + }, + { + "group": { + "name": "TZ_SW_Version", + "description": "Secure firmware version counter" + }, + "registers": [ + { + "id": "fuse384", + "name": "TZ_FW_VER0", + "description": "Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0180", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse384-bits-0-15", + "name": "TZ_FW_VER", + "description": "Secure TrustZone firmware version counter, bits 0..15" + } + ] + }, + { + "id": "fuse385", + "name": "TZ_FW_VER1", + "description": "Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0181", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse385-bits-0-15", + "name": "TZ_FW_VER", + "description": "Secure TrustZone firmware version counter, bits 16..31" + } + ] + }, + { + "id": "fuse386", + "name": "TZ_FW_VER2", + "description": "Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0182", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse386-bits-0-15", + "name": "TZ_FW_VER", + "description": "Secure TrustZone firmware version counter, bits 32.47" + } + ] + }, + { + "id": "fuse387", + "name": "TZ_FW_VER3", + "description": "Secure TrustZone Version. The version is represented by number of set fuse bits.", + "index_int": "0x0183", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse387-bits-0-15", + "name": "TZ_FW_VER", + "description": "Secure TrustZone firmware version counter, bits 48..63" + } + ] + } + ] + }, + { + "group": { + "name": "User Space", + "description": "User Space" + }, + "registers": [ + { + "id": "fuse400", + "name": "USER_RED_0", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x0190", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse400-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 0" + } + ] + }, + { + "id": "fuse401", + "name": "USER_RED_1", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x0191", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse401-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 1" + } + ] + }, + { + "id": "fuse402", + "name": "USER_RED_2", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x0192", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse402-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 2" + } + ] + }, + { + "id": "fuse403", + "name": "USER_RED_3", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x0193", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse403-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 3" + } + ] + }, + { + "id": "fuse408", + "name": "USER_RED_4", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x0198", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse408-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 4" + } + ] + }, + { + "id": "fuse409", + "name": "USER_RED_5", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x0199", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse409-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 5" + } + ] + }, + { + "id": "fuse410", + "name": "USER_RED_6", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x019A", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse410-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 6" + } + ] + }, + { + "id": "fuse411", + "name": "USER_RED_7", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x019B", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse411-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 7" + } + ] + }, + { + "id": "fuse412", + "name": "USER_RED_8", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x019C", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse412-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 8" + } + ] + }, + { + "id": "fuse413", + "name": "USER_RED_9", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x019D", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse413-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 9" + } + ] + }, + { + "id": "fuse414", + "name": "USER_RED_10", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x019E", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse414-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 10" + } + ] + }, + { + "id": "fuse415", + "name": "USER_RED_11", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x019F", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse415-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 11" + } + ] + }, + { + "id": "fuse416", + "name": "USER_RED_12", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x01A0", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse416-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 12" + } + ] + }, + { + "id": "fuse417", + "name": "USER_RED_13", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x01A1", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse417-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 13" + } + ] + }, + { + "id": "fuse418", + "name": "USER_RED_14", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x01A2", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse418-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 14" + } + ] + }, + { + "id": "fuse419", + "name": "USER_RED_15", + "description": "Customer Programmable Redundant Fuse Word", + "index_int": "0x01A3", + "reg_width": 16, + "bitfields": [ + { + "width": 16, + "id": "fuse419-bits-0-15", + "name": "User", + "description": "Customer programmable fuse word 15" + } + ] + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/tz.json b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/tz.json new file mode 100644 index 0000000..81ab581 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/devices/rw612/tz.json @@ -0,0 +1,1933 @@ +{ + "cpu": "rw612", + "groups": [ + { + "group": { + "name": "General regs", + "description": "General register generated by SPSDK" + }, + "registers": [ + { + "id": "field000", + "offset_int": "0x0", + "reg_width": 32, + "name": "Start of block (tzm_magic)", + "description": "TrustZone register - Start of block (tzm_magic)", + "default_value_int": "0x4d2d5a54" + }, + { + "id": "field004", + "offset_int": "0x4", + "reg_width": 32, + "name": "CM33 Secure vector table address (cm33_vtor_addr)", + "description": "TrustZone register - CM33 Secure vector table address (cm33_vtor_addr)", + "default_value_int": "0x0" + }, + { + "id": "field008", + "offset_int": "0x8", + "reg_width": 32, + "name": "CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "description": "TrustZone register - CM33 Non-secure vector table address (cm33_vtor_ns_addr)", + "default_value_int": "0x0" + }, + { + "id": "field00C", + "offset_int": "0xc", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 0 (cm33_nvic_itns0)", + "default_value_int": "0x0" + }, + { + "id": "field010", + "offset_int": "0x10", + "reg_width": 32, + "name": "CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "description": "TrustZone register - CM33 Interrupt target non-secure register 1 (cm33_nvic_itns1)", + "default_value_int": "0x0" + }, + { + "id": "field014", + "offset_int": "0x14", + "reg_width": 32, + "name": "Miscellaneous CM33 settings (cm33_misc_ctrl)", + "description": "TrustZone register - Miscellaneous CM33 settings (cm33_misc_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field018", + "offset_int": "0x18", + "reg_width": 32, + "name": "CM33 Non-secure Access Control Register (cm33_nsacr)", + "description": "TrustZone register - CM33 Non-secure Access Control Register (cm33_nsacr)", + "default_value_int": "0x0" + }, + { + "id": "field01C", + "offset_int": "0x1c", + "reg_width": 32, + "name": "CM33 Coprocessor Power Control Register (cm33_cppwr)", + "description": "TrustZone register - CM33 Coprocessor Power Control Register (cm33_cppwr)", + "default_value_int": "0x0" + }, + { + "id": "field020", + "offset_int": "0x20", + "reg_width": 32, + "name": "CM33 Coprocessor Access Control Register (cm33_cpacr)", + "description": "TrustZone register - CM33 Coprocessor Access Control Register (cm33_cpacr)", + "default_value_int": "0x0" + }, + { + "id": "field024", + "offset_int": "0x24", + "reg_width": 32, + "name": "MPU Control Register (cm33_mpu_ctrl)", + "description": "TrustZone register - MPU Control Register (cm33_mpu_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field028", + "offset_int": "0x28", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0)", + "default_value_int": "0x0" + }, + { + "id": "field02C", + "offset_int": "0x2c", + "reg_width": 32, + "name": "MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "description": "TrustZone register - MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1)", + "default_value_int": "0x0" + }, + { + "id": "field030", + "offset_int": "0x30", + "reg_width": 32, + "name": "MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "description": "TrustZone register - MPU Region 0 Base Address Register (cm33_mpu_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field034", + "offset_int": "0x34", + "reg_width": 32, + "name": "MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "description": "TrustZone register - MPU Region 0 Limit Address Register (cm33_mpu_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field038", + "offset_int": "0x38", + "reg_width": 32, + "name": "MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "description": "TrustZone register - MPU Region 1 Base Address Register (cm33_mpu_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field03C", + "offset_int": "0x3c", + "reg_width": 32, + "name": "MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "description": "TrustZone register - MPU Region 1 Limit Address Register (cm33_mpu_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field040", + "offset_int": "0x40", + "reg_width": 32, + "name": "MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "description": "TrustZone register - MPU Region 2 Base Address Register (cm33_mpu_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field044", + "offset_int": "0x44", + "reg_width": 32, + "name": "MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "description": "TrustZone register - MPU Region 2 Limit Address Register (cm33_mpu_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field048", + "offset_int": "0x48", + "reg_width": 32, + "name": "MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "description": "TrustZone register - MPU Region 3 Base Address Register (cm33_mpu_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field04C", + "offset_int": "0x4c", + "reg_width": 32, + "name": "MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "description": "TrustZone register - MPU Region 3 Limit Address Register (cm33_mpu_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field050", + "offset_int": "0x50", + "reg_width": 32, + "name": "MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "description": "TrustZone register - MPU Region 4 Base Address Register (cm33_mpu_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field054", + "offset_int": "0x54", + "reg_width": 32, + "name": "MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "description": "TrustZone register - MPU Region 4 Limit Address Register (cm33_mpu_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field058", + "offset_int": "0x58", + "reg_width": 32, + "name": "MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "description": "TrustZone register - MPU Region 5 Base Address Register (cm33_mpu_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field05C", + "offset_int": "0x5c", + "reg_width": 32, + "name": "MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "description": "TrustZone register - MPU Region 5 Limit Address Register (cm33_mpu_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field060", + "offset_int": "0x60", + "reg_width": 32, + "name": "MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "description": "TrustZone register - MPU Region 6 Base Address Register (cm33_mpu_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field064", + "offset_int": "0x64", + "reg_width": 32, + "name": "MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "description": "TrustZone register - MPU Region 6 Limit Address Register (cm33_mpu_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field068", + "offset_int": "0x68", + "reg_width": 32, + "name": "MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "description": "TrustZone register - MPU Region 7 Base Address Register (cm33_mpu_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field06C", + "offset_int": "0x6c", + "reg_width": 32, + "name": "MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "description": "TrustZone register - MPU Region 7 Limit Address Register (cm33_mpu_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field070", + "offset_int": "0x70", + "reg_width": 32, + "name": "Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "description": "TrustZone register - Non-secure MPU Control Register (cm33_mpu_ctrl_ns)", + "default_value_int": "0x0" + }, + { + "id": "field074", + "offset_int": "0x74", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 0 (cm33_mpu_mair0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field078", + "offset_int": "0x78", + "reg_width": 32, + "name": "Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "description": "TrustZone register - Non-secure MPU Memory Attribute Indirection Register 1 (cm33_mpu_mair1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field07C", + "offset_int": "0x7c", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Base Address Register (cm33_mpu_rbar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field080", + "offset_int": "0x80", + "reg_width": 32, + "name": "Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "description": "TrustZone register - Non-secure MPU Region 0 Limit Address Register (cm33_mpu_rlar0_ns)", + "default_value_int": "0x0" + }, + { + "id": "field084", + "offset_int": "0x84", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Base Address Register (cm33_mpu_rbar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field088", + "offset_int": "0x88", + "reg_width": 32, + "name": "Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "description": "TrustZone register - Non-secure MPU Region 1 Limit Address Register (cm33_mpu_rlar1_ns)", + "default_value_int": "0x0" + }, + { + "id": "field08C", + "offset_int": "0x8c", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Base Address Register (cm33_mpu_rbar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field090", + "offset_int": "0x90", + "reg_width": 32, + "name": "Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "description": "TrustZone register - Non-secure MPU Region 2 Limit Address Register (cm33_mpu_rlar2_ns)", + "default_value_int": "0x0" + }, + { + "id": "field094", + "offset_int": "0x94", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Base Address Register (cm33_mpu_rbar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field098", + "offset_int": "0x98", + "reg_width": 32, + "name": "Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "description": "TrustZone register - Non-secure MPU Region 3 Limit Address Register (cm33_mpu_rlar3_ns)", + "default_value_int": "0x0" + }, + { + "id": "field09C", + "offset_int": "0x9c", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Base Address Register (cm33_mpu_rbar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A0", + "offset_int": "0xa0", + "reg_width": 32, + "name": "Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "description": "TrustZone register - Non-secure MPU Region 4 Limit Address Register (cm33_mpu_rlar4_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A4", + "offset_int": "0xa4", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Base Address Register (cm33_mpu_rbar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0A8", + "offset_int": "0xa8", + "reg_width": 32, + "name": "Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "description": "TrustZone register - Non-secure MPU Region 5 Limit Address Register (cm33_mpu_rlar5_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0AC", + "offset_int": "0xac", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Base Address Register (cm33_mpu_rbar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B0", + "offset_int": "0xb0", + "reg_width": 32, + "name": "Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "description": "TrustZone register - Non-secure MPU Region 6 Limit Address Register (cm33_mpu_rlar6_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B4", + "offset_int": "0xb4", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Base Address Register (cm33_mpu_rbar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0B8", + "offset_int": "0xb8", + "reg_width": 32, + "name": "Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "description": "TrustZone register - Non-secure MPU Region 7 Limit Address Register (cm33_mpu_rlar7_ns)", + "default_value_int": "0x0" + }, + { + "id": "field0BC", + "offset_int": "0xbc", + "reg_width": 32, + "name": "SAU Control Register (cm33_sau_ctrl)", + "description": "TrustZone register - SAU Control Register (cm33_sau_ctrl)", + "default_value_int": "0x0" + }, + { + "id": "field0C0", + "offset_int": "0xc0", + "reg_width": 32, + "name": "SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "description": "TrustZone register - SAU Region 0 Base Address Register (cm33_sau_rbar0)", + "default_value_int": "0x0" + }, + { + "id": "field0C4", + "offset_int": "0xc4", + "reg_width": 32, + "name": "SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "description": "TrustZone register - SAU Region 0 Limit Address Register (cm33_sau_rlar0)", + "default_value_int": "0x0" + }, + { + "id": "field0C8", + "offset_int": "0xc8", + "reg_width": 32, + "name": "SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "description": "TrustZone register - SAU Region 1 Base Address Register (cm33_sau_rbar1)", + "default_value_int": "0x0" + }, + { + "id": "field0CC", + "offset_int": "0xcc", + "reg_width": 32, + "name": "SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "description": "TrustZone register - SAU Region 1 Limit Address Register (cm33_sau_rlar1)", + "default_value_int": "0x0" + }, + { + "id": "field0D0", + "offset_int": "0xd0", + "reg_width": 32, + "name": "SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "description": "TrustZone register - SAU Region 2 Base Address Register (cm33_sau_rbar2)", + "default_value_int": "0x0" + }, + { + "id": "field0D4", + "offset_int": "0xd4", + "reg_width": 32, + "name": "SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "description": "TrustZone register - SAU Region 2 Limit Address Register (cm33_sau_rlar2)", + "default_value_int": "0x0" + }, + { + "id": "field0D8", + "offset_int": "0xd8", + "reg_width": 32, + "name": "SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "description": "TrustZone register - SAU Region 3 Base Address Register (cm33_sau_rbar3)", + "default_value_int": "0x0" + }, + { + "id": "field0DC", + "offset_int": "0xdc", + "reg_width": 32, + "name": "SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "description": "TrustZone register - SAU Region 3 Limit Address Register (cm33_sau_rlar3)", + "default_value_int": "0x0" + }, + { + "id": "field0E0", + "offset_int": "0xe0", + "reg_width": 32, + "name": "SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "description": "TrustZone register - SAU Region 4 Base Address Register (cm33_sau_rbar4)", + "default_value_int": "0x0" + }, + { + "id": "field0E4", + "offset_int": "0xe4", + "reg_width": 32, + "name": "SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "description": "TrustZone register - SAU Region 4 Limit Address Register (cm33_sau_rlar4)", + "default_value_int": "0x0" + }, + { + "id": "field0E8", + "offset_int": "0xe8", + "reg_width": 32, + "name": "SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "description": "TrustZone register - SAU Region 5 Base Address Register (cm33_sau_rbar5)", + "default_value_int": "0x0" + }, + { + "id": "field0EC", + "offset_int": "0xec", + "reg_width": 32, + "name": "SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "description": "TrustZone register - SAU Region 5 Limit Address Register (cm33_sau_rlar5)", + "default_value_int": "0x0" + }, + { + "id": "field0F0", + "offset_int": "0xf0", + "reg_width": 32, + "name": "SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "description": "TrustZone register - SAU Region 6 Base Address Register (cm33_sau_rbar6)", + "default_value_int": "0x0" + }, + { + "id": "field0F4", + "offset_int": "0xf4", + "reg_width": 32, + "name": "SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "description": "TrustZone register - SAU Region 6 Limit Address Register (cm33_sau_rlar6)", + "default_value_int": "0x0" + }, + { + "id": "field0F8", + "offset_int": "0xf8", + "reg_width": 32, + "name": "SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "description": "TrustZone register - SAU Region 7 Base Address Register (cm33_sau_rbar7)", + "default_value_int": "0x0" + }, + { + "id": "field0FC", + "offset_int": "0xfc", + "reg_width": 32, + "name": "SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "description": "TrustZone register - SAU Region 7 Limit Address Register (cm33_sau_rlar7)", + "default_value_int": "0x0" + }, + { + "id": "field100", + "offset_int": "0x100", + "reg_width": 32, + "name": "ROM Memory Rule Register 0 (rom_mem_rule0)", + "description": "TrustZone register - ROM Memory Rule Register 0 (rom_mem_rule0)", + "default_value_int": "0x33333333" + }, + { + "id": "field104", + "offset_int": "0x104", + "reg_width": 32, + "name": "ROM Memory Rule Register 1 (rom_mem_rule1)", + "description": "TrustZone register - ROM Memory Rule Register 1 (rom_mem_rule1)", + "default_value_int": "0x33333333" + }, + { + "id": "field108", + "offset_int": "0x108", + "reg_width": 32, + "name": "ROM Memory Rule Register 2 (rom_mem_rule2)", + "description": "TrustZone register - ROM Memory Rule Register 2 (rom_mem_rule2)", + "default_value_int": "0x33333333" + }, + { + "id": "field10C", + "offset_int": "0x10c", + "reg_width": 32, + "name": "ROM Memory Rule Register 3 (rom_mem_rule3)", + "description": "TrustZone register - ROM Memory Rule Register 3 (rom_mem_rule3)", + "default_value_int": "0x33333333" + }, + { + "id": "field110", + "offset_int": "0x110", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 0 Memory Rule Register 0 (flexspi0_region0_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 0 Memory Rule Register 0 (flexspi0_region0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field114", + "offset_int": "0x114", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 0 Memory Rule Register 1 (flexspi0_region0_mem_rule1)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 0 Memory Rule Register 1 (flexspi0_region0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field118", + "offset_int": "0x118", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 0 Memory Rule Register 2 (flexspi0_region0_mem_rule2)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 0 Memory Rule Register 2 (flexspi0_region0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field11C", + "offset_int": "0x11c", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 0 Memory Rule Register 3 (flexspi0_region0_mem_rule3)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 0 Memory Rule Register 3 (flexspi0_region0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field120", + "offset_int": "0x120", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 1 Memory Rule Register 0 (flexspi0_region1_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 1 Memory Rule Register 0 (flexspi0_region1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field124", + "offset_int": "0x124", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 2 Memory Rule Register 1 (flexspi0_region2_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 2 Memory Rule Register 1 (flexspi0_region2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field128", + "offset_int": "0x128", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 3 Memory Rule Register 2 (flexspi0_region3_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 3 Memory Rule Register 2 (flexspi0_region3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field12C", + "offset_int": "0x12c", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 4 Memory Rule Register 3 (flexspi0_region4_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 4 Memory Rule Register 3 (flexspi0_region4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field130", + "offset_int": "0x130", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 5 Memory Rule Register 0 (flexspi0_region5_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 5 Memory Rule Register 0 (flexspi0_region5_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field134", + "offset_int": "0x134", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 5 Memory Rule Register 1 (flexspi0_region5_mem_rule1)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 5 Memory Rule Register 1 (flexspi0_region5_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field138", + "offset_int": "0x138", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 5 Memory Rule Register 2 (flexspi0_region5_mem_rule2)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 5 Memory Rule Register 2 (flexspi0_region5_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field13C", + "offset_int": "0x13c", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 5 Memory Rule Register 3 (flexspi0_region5_mem_rule3)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 5 Memory Rule Register 3 (flexspi0_region5_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field140", + "offset_int": "0x140", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 6 Memory Rule Register 0 (flexspi0_region6_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 6 Memory Rule Register 0 (flexspi0_region6_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field144", + "offset_int": "0x144", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 7 Memory Rule Register 0 (flexspi0_region7_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 7 Memory Rule Register 0 (flexspi0_region7_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field148", + "offset_int": "0x148", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 8 Memory Rule Register 0 (flexspi0_region8_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 8 Memory Rule Register 0 (flexspi0_region8_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field14C", + "offset_int": "0x14c", + "reg_width": 32, + "name": "FLEXCOMM SPI 0 region 9 Memory Rule Register 0 (flexspi0_region9_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 0 region 9 Memory Rule Register 0 (flexspi0_region9_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field150", + "offset_int": "0x150", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 0 Memory Rule Register 0 (flexspi1_region0_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 0 Memory Rule Register 0 (flexspi1_region0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field154", + "offset_int": "0x154", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 0 Memory Rule Register 1 (flexspi1_region0_mem_rule1)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 0 Memory Rule Register 1 (flexspi1_region0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field158", + "offset_int": "0x158", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 0 Memory Rule Register 2 (flexspi1_region0_mem_rule2)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 0 Memory Rule Register 2 (flexspi1_region0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field15C", + "offset_int": "0x15c", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 0 Memory Rule Register 3 (flexspi1_region0_mem_rule3)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 0 Memory Rule Register 3 (flexspi1_region0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field160", + "offset_int": "0x160", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 1 Memory Rule Register 0 (flexspi1_region1_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 1 Memory Rule Register 0 (flexspi1_region1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field164", + "offset_int": "0x164", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 2 Memory Rule Register 1 (flexspi1_region2_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 2 Memory Rule Register 1 (flexspi1_region2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field168", + "offset_int": "0x168", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 3 Memory Rule Register 2 (flexspi1_region3_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 3 Memory Rule Register 2 (flexspi1_region3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field16C", + "offset_int": "0x16c", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 4 Memory Rule Register 3 (flexspi1_region4_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 4 Memory Rule Register 3 (flexspi1_region4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field170", + "offset_int": "0x170", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 5 Memory Rule Register 0 (flexspi1_region5_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 5 Memory Rule Register 0 (flexspi1_region5_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field174", + "offset_int": "0x174", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 5 Memory Rule Register 1 (flexspi1_region5_mem_rule1)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 5 Memory Rule Register 1 (flexspi1_region5_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field178", + "offset_int": "0x178", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 5 Memory Rule Register 2 (flexspi1_region5_mem_rule2)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 5 Memory Rule Register 2 (flexspi1_region5_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field17C", + "offset_int": "0x17c", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 5 Memory Rule Register 3 (flexspi1_region5_mem_rule3)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 5 Memory Rule Register 3 (flexspi1_region5_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field180", + "offset_int": "0x180", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 6 Memory Rule Register 0 (flexspi1_region6_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 6 Memory Rule Register 0 (flexspi1_region6_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field184", + "offset_int": "0x184", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 7 Memory Rule Register 0 (flexspi1_region7_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 7 Memory Rule Register 0 (flexspi1_region7_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field188", + "offset_int": "0x188", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 8 Memory Rule Register 0 (flexspi1_region8_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 8 Memory Rule Register 0 (flexspi1_region8_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field18C", + "offset_int": "0x18c", + "reg_width": 32, + "name": "FLEXCOMM SPI 1 region 9 Memory Rule Register 0 (flexspi1_region9_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 1 region 9 Memory Rule Register 0 (flexspi1_region9_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field190", + "offset_int": "0x190", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 0 Memory Rule Register 0 (flexspi2_region0_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 0 Memory Rule Register 0 (flexspi2_region0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field194", + "offset_int": "0x194", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 0 Memory Rule Register 1 (flexspi2_region0_mem_rule1)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 0 Memory Rule Register 1 (flexspi2_region0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field198", + "offset_int": "0x198", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 0 Memory Rule Register 2 (flexspi2_region0_mem_rule2)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 0 Memory Rule Register 2 (flexspi2_region0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field19C", + "offset_int": "0x19c", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 0 Memory Rule Register 3 (flexspi2_region0_mem_rule3)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 0 Memory Rule Register 3 (flexspi2_region0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1A0", + "offset_int": "0x1a0", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 1 Memory Rule Register 0 (flexspi2_region1_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 1 Memory Rule Register 0 (flexspi2_region1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1A4", + "offset_int": "0x1a4", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 2 Memory Rule Register 1 (flexspi2_region2_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 2 Memory Rule Register 1 (flexspi2_region2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1A8", + "offset_int": "0x1a8", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 3 Memory Rule Register 2 (flexspi2_region3_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 3 Memory Rule Register 2 (flexspi2_region3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1AC", + "offset_int": "0x1ac", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 4 Memory Rule Register 3 (flexspi2_region4_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 4 Memory Rule Register 3 (flexspi2_region4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1B0", + "offset_int": "0x1b0", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 5 Memory Rule Register 0 (flexspi2_region5_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 5 Memory Rule Register 0 (flexspi2_region5_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1B4", + "offset_int": "0x1b4", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 5 Memory Rule Register 1 (flexspi2_region5_mem_rule1)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 5 Memory Rule Register 1 (flexspi2_region5_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1B8", + "offset_int": "0x1b8", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 5 Memory Rule Register 2 (flexspi2_region5_mem_rule2)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 5 Memory Rule Register 2 (flexspi2_region5_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1BC", + "offset_int": "0x1bc", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 5 Memory Rule Register 3 (flexspi2_region5_mem_rule3)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 5 Memory Rule Register 3 (flexspi2_region5_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1C0", + "offset_int": "0x1c0", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 6 Memory Rule Register 0 (flexspi2_region6_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 6 Memory Rule Register 0 (flexspi2_region6_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1C4", + "offset_int": "0x1c4", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 7 Memory Rule Register 0 (flexspi2_region7_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 7 Memory Rule Register 0 (flexspi2_region7_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1C8", + "offset_int": "0x1c8", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 8 Memory Rule Register 0 (flexspi2_region8_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 8 Memory Rule Register 0 (flexspi2_region8_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1CC", + "offset_int": "0x1cc", + "reg_width": 32, + "name": "FLEXCOMM SPI 2 region 9 Memory Rule Register 0 (flexspi2_region9_mem_rule0)", + "description": "TrustZone register - FLEXCOMM SPI 2 region 9 Memory Rule Register 0 (flexspi2_region9_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1D0", + "offset_int": "0x1d0", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 0 (ram0_mem_rule0)", + "description": "TrustZone register - RAM00 Memory Rule Register 0 (ram0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1D4", + "offset_int": "0x1d4", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 1 (ram0_mem_rule1)", + "description": "TrustZone register - RAM00 Memory Rule Register 1 (ram0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1D8", + "offset_int": "0x1d8", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 2 (ram0_mem_rule2)", + "description": "TrustZone register - RAM00 Memory Rule Register 2 (ram0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1DC", + "offset_int": "0x1dc", + "reg_width": 32, + "name": "RAM00 Memory Rule Register 3 (ram0_mem_rule3)", + "description": "TrustZone register - RAM00 Memory Rule Register 3 (ram0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1E0", + "offset_int": "0x1e0", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 0 (ram1_mem_rule0)", + "description": "TrustZone register - RAM01 Memory Rule Register 0 (ram1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1E4", + "offset_int": "0x1e4", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 1 (ram1_mem_rule1)", + "description": "TrustZone register - RAM01 Memory Rule Register 1 (ram1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1E8", + "offset_int": "0x1e8", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 2 (ram1_mem_rule2)", + "description": "TrustZone register - RAM01 Memory Rule Register 2 (ram1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1EC", + "offset_int": "0x1ec", + "reg_width": 32, + "name": "RAM01 Memory Rule Register 3 (ram1_mem_rule3)", + "description": "TrustZone register - RAM01 Memory Rule Register 3 (ram1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field1F0", + "offset_int": "0x1f0", + "reg_width": 32, + "name": "RAM02 Memory Rule Register 0 (ram2_mem_rule0)", + "description": "TrustZone register - RAM02 Memory Rule Register 0 (ram2_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field1F4", + "offset_int": "0x1f4", + "reg_width": 32, + "name": "RAM02 Memory Rule Register 1 (ram2_mem_rule1)", + "description": "TrustZone register - RAM02 Memory Rule Register 1 (ram2_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field1F8", + "offset_int": "0x1f8", + "reg_width": 32, + "name": "RAM02 Memory Rule Register 2 (ram2_mem_rule2)", + "description": "TrustZone register - RAM02 Memory Rule Register 2 (ram2_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field1FC", + "offset_int": "0x1fc", + "reg_width": 32, + "name": "RAM02 Memory Rule Register 3 (ram2_mem_rule3)", + "description": "TrustZone register - RAM02 Memory Rule Register 3 (ram2_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field200", + "offset_int": "0x200", + "reg_width": 32, + "name": "RAM03 Memory Rule Register 0 (ram3_mem_rule0)", + "description": "TrustZone register - RAM03 Memory Rule Register 0 (ram3_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field204", + "offset_int": "0x204", + "reg_width": 32, + "name": "RAM03 Memory Rule Register 1 (ram3_mem_rule1)", + "description": "TrustZone register - RAM03 Memory Rule Register 1 (ram3_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field208", + "offset_int": "0x208", + "reg_width": 32, + "name": "RAM03 Memory Rule Register 2 (ram3_mem_rule2)", + "description": "TrustZone register - RAM03 Memory Rule Register 2 (ram3_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field20C", + "offset_int": "0x20c", + "reg_width": 32, + "name": "RAM03 Memory Rule Register 3 (ram3_mem_rule3)", + "description": "TrustZone register - RAM03 Memory Rule Register 3 (ram3_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field210", + "offset_int": "0x210", + "reg_width": 32, + "name": "RAM04 Memory Rule Register 0 (ram4_mem_rule0)", + "description": "TrustZone register - RAM04 Memory Rule Register 0 (ram4_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field214", + "offset_int": "0x214", + "reg_width": 32, + "name": "RAM04 Memory Rule Register 1 (ram4_mem_rule1)", + "description": "TrustZone register - RAM04 Memory Rule Register 1 (ram4_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field218", + "offset_int": "0x218", + "reg_width": 32, + "name": "RAM04 Memory Rule Register 2 (ram4_mem_rule2)", + "description": "TrustZone register - RAM04 Memory Rule Register 2 (ram4_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field21C", + "offset_int": "0x21c", + "reg_width": 32, + "name": "RAM04 Memory Rule Register 3 (ram4_mem_rule3)", + "description": "TrustZone register - RAM04 Memory Rule Register 3 (ram4_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field220", + "offset_int": "0x220", + "reg_width": 32, + "name": "RAM05 Memory Rule Register 0 (ram5_mem_rule0)", + "description": "TrustZone register - RAM05 Memory Rule Register 0 (ram5_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field224", + "offset_int": "0x224", + "reg_width": 32, + "name": "RAM05 Memory Rule Register 1 (ram5_mem_rule1)", + "description": "TrustZone register - RAM05 Memory Rule Register 1 (ram5_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field228", + "offset_int": "0x228", + "reg_width": 32, + "name": "RAM05 Memory Rule Register 2 (ram5_mem_rule2)", + "description": "TrustZone register - RAM05 Memory Rule Register 2 (ram5_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field22C", + "offset_int": "0x22c", + "reg_width": 32, + "name": "RAM05 Memory Rule Register 3 (ram5_mem_rule3)", + "description": "TrustZone register - RAM05 Memory Rule Register 3 (ram5_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field230", + "offset_int": "0x230", + "reg_width": 32, + "name": "RAM06 Memory Rule Register 0 (ram6_mem_rule0)", + "description": "TrustZone register - RAM06 Memory Rule Register 0 (ram6_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field234", + "offset_int": "0x234", + "reg_width": 32, + "name": "RAM06 Memory Rule Register 1 (ram6_mem_rule1)", + "description": "TrustZone register - RAM06 Memory Rule Register 1 (ram6_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field238", + "offset_int": "0x238", + "reg_width": 32, + "name": "RAM06 Memory Rule Register 2 (ram6_mem_rule2)", + "description": "TrustZone register - RAM06 Memory Rule Register 2 (ram6_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field23C", + "offset_int": "0x23c", + "reg_width": 32, + "name": "RAM06 Memory Rule Register 3 (ram6_mem_rule3)", + "description": "TrustZone register - RAM06 Memory Rule Register 3 (ram6_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field240", + "offset_int": "0x240", + "reg_width": 32, + "name": "RAM07 Memory Rule Register 0 (ram7_mem_rule0)", + "description": "TrustZone register - RAM07 Memory Rule Register 0 (ram7_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field244", + "offset_int": "0x244", + "reg_width": 32, + "name": "RAM07 Memory Rule Register 1 (ram7_mem_rule1)", + "description": "TrustZone register - RAM07 Memory Rule Register 1 (ram7_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field248", + "offset_int": "0x248", + "reg_width": 32, + "name": "RAM07 Memory Rule Register 2 (ram7_mem_rule2)", + "description": "TrustZone register - RAM07 Memory Rule Register 2 (ram7_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field24C", + "offset_int": "0x24c", + "reg_width": 32, + "name": "RAM07 Memory Rule Register 3 (ram7_mem_rule3)", + "description": "TrustZone register - RAM07 Memory Rule Register 3 (ram7_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field250", + "offset_int": "0x250", + "reg_width": 32, + "name": "RAM08 Memory Rule Register 0 (ram8_mem_rule0)", + "description": "TrustZone register - RAM08 Memory Rule Register 0 (ram8_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field254", + "offset_int": "0x254", + "reg_width": 32, + "name": "RAM08 Memory Rule Register 1 (ram8_mem_rule1)", + "description": "TrustZone register - RAM08 Memory Rule Register 1 (ram8_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field258", + "offset_int": "0x258", + "reg_width": 32, + "name": "RAM08 Memory Rule Register 2 (ram8_mem_rule2)", + "description": "TrustZone register - RAM08 Memory Rule Register 2 (ram8_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field25C", + "offset_int": "0x25c", + "reg_width": 32, + "name": "RAM08 Memory Rule Register 3 (ram8_mem_rule3)", + "description": "TrustZone register - RAM08 Memory Rule Register 3 (ram8_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field260", + "offset_int": "0x260", + "reg_width": 32, + "name": "RAM09 Memory Rule Register 0 (ram9_mem_rule0)", + "description": "TrustZone register - RAM09 Memory Rule Register 0 (ram9_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field264", + "offset_int": "0x264", + "reg_width": 32, + "name": "RAM09 Memory Rule Register 1 (ram9_mem_rule1)", + "description": "TrustZone register - RAM09 Memory Rule Register 1 (ram9_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field268", + "offset_int": "0x268", + "reg_width": 32, + "name": "RAM09 Memory Rule Register 2 (ram9_mem_rule2)", + "description": "TrustZone register - RAM09 Memory Rule Register 2 (ram9_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field26C", + "offset_int": "0x26c", + "reg_width": 32, + "name": "RAM09 Memory Rule Register 3 (ram9_mem_rule3)", + "description": "TrustZone register - RAM09 Memory Rule Register 3 (ram9_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field270", + "offset_int": "0x270", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 0 (ram10_mem_rule0)", + "description": "TrustZone register - RAM10 Memory Rule Register 0 (ram10_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field274", + "offset_int": "0x274", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 1 (ram10_mem_rule1)", + "description": "TrustZone register - RAM10 Memory Rule Register 1 (ram10_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field278", + "offset_int": "0x278", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 2 (ram10_mem_rule2)", + "description": "TrustZone register - RAM10 Memory Rule Register 2 (ram10_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field27C", + "offset_int": "0x27c", + "reg_width": 32, + "name": "RAM10 Memory Rule Register 3 (ram10_mem_rule3)", + "description": "TrustZone register - RAM10 Memory Rule Register 3 (ram10_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field280", + "offset_int": "0x280", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 0 (ram11_mem_rule0)", + "description": "TrustZone register - RAM11 Memory Rule Register 0 (ram11_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field284", + "offset_int": "0x284", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 1 (ram11_mem_rule1)", + "description": "TrustZone register - RAM11 Memory Rule Register 1 (ram11_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field288", + "offset_int": "0x288", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 2 (ram11_mem_rule2)", + "description": "TrustZone register - RAM11 Memory Rule Register 2 (ram11_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field28C", + "offset_int": "0x28c", + "reg_width": 32, + "name": "RAM11 Memory Rule Register 3 (ram11_mem_rule3)", + "description": "TrustZone register - RAM11 Memory Rule Register 3 (ram11_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field290", + "offset_int": "0x290", + "reg_width": 32, + "name": "RAM12 Memory Rule Register 0 (ram12_mem_rule0)", + "description": "TrustZone register - RAM12 Memory Rule Register 0 (ram12_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field294", + "offset_int": "0x294", + "reg_width": 32, + "name": "RAM12 Memory Rule Register 1 (ram12_mem_rule1)", + "description": "TrustZone register - RAM12 Memory Rule Register 1 (ram12_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field298", + "offset_int": "0x298", + "reg_width": 32, + "name": "RAM12 Memory Rule Register 2 (ram12_mem_rule2)", + "description": "TrustZone register - RAM12 Memory Rule Register 2 (ram12_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field29C", + "offset_int": "0x29c", + "reg_width": 32, + "name": "RAM12 Memory Rule Register 3 (ram12_mem_rule3)", + "description": "TrustZone register - RAM12 Memory Rule Register 3 (ram12_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2A0", + "offset_int": "0x2a0", + "reg_width": 32, + "name": "RAM13 Memory Rule Register 0 (ram13_mem_rule0)", + "description": "TrustZone register - RAM13 Memory Rule Register 0 (ram13_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2A4", + "offset_int": "0x2a4", + "reg_width": 32, + "name": "RAM13 Memory Rule Register 1 (ram13_mem_rule1)", + "description": "TrustZone register - RAM13 Memory Rule Register 1 (ram13_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2A8", + "offset_int": "0x2a8", + "reg_width": 32, + "name": "RAM13 Memory Rule Register 2 (ram13_mem_rule2)", + "description": "TrustZone register - RAM13 Memory Rule Register 2 (ram13_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2AC", + "offset_int": "0x2ac", + "reg_width": 32, + "name": "RAM13 Memory Rule Register 3 (ram13_mem_rule3)", + "description": "TrustZone register - RAM13 Memory Rule Register 3 (ram13_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2B0", + "offset_int": "0x2b0", + "reg_width": 32, + "name": "RAM14 Memory Rule Register 0 (ram14_mem_rule0)", + "description": "TrustZone register - RAM14 Memory Rule Register 0 (ram14_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2B4", + "offset_int": "0x2b4", + "reg_width": 32, + "name": "RAM14 Memory Rule Register 1 (ram14_mem_rule1)", + "description": "TrustZone register - RAM14 Memory Rule Register 1 (ram14_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2B8", + "offset_int": "0x2b8", + "reg_width": 32, + "name": "RAM14 Memory Rule Register 2 (ram14_mem_rule2)", + "description": "TrustZone register - RAM14 Memory Rule Register 2 (ram14_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2BC", + "offset_int": "0x2bc", + "reg_width": 32, + "name": "RAM14 Memory Rule Register 3 (ram14_mem_rule3)", + "description": "TrustZone register - RAM14 Memory Rule Register 3 (ram14_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2C0", + "offset_int": "0x2c0", + "reg_width": 32, + "name": "RAM15 Memory Rule Register 0 (ram15_mem_rule0)", + "description": "TrustZone register - RAM15 Memory Rule Register 0 (ram15_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2C4", + "offset_int": "0x2c4", + "reg_width": 32, + "name": "RAM15 Memory Rule Register 1 (ram15_mem_rule1)", + "description": "TrustZone register - RAM15 Memory Rule Register 1 (ram15_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2C8", + "offset_int": "0x2c8", + "reg_width": 32, + "name": "RAM15 Memory Rule Register 2 (ram15_mem_rule2)", + "description": "TrustZone register - RAM15 Memory Rule Register 2 (ram15_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2CC", + "offset_int": "0x2cc", + "reg_width": 32, + "name": "RAM15 Memory Rule Register 3 (ram15_mem_rule3)", + "description": "TrustZone register - RAM15 Memory Rule Register 3 (ram15_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2D0", + "offset_int": "0x2d0", + "reg_width": 32, + "name": "RAM16 Memory Rule Register 0 (ram16_mem_rule0)", + "description": "TrustZone register - RAM16 Memory Rule Register 0 (ram16_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2D4", + "offset_int": "0x2d4", + "reg_width": 32, + "name": "RAM16 Memory Rule Register 1 (ram16_mem_rule1)", + "description": "TrustZone register - RAM16 Memory Rule Register 1 (ram16_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2D8", + "offset_int": "0x2d8", + "reg_width": 32, + "name": "RAM16 Memory Rule Register 2 (ram16_mem_rule2)", + "description": "TrustZone register - RAM16 Memory Rule Register 2 (ram16_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2DC", + "offset_int": "0x2dc", + "reg_width": 32, + "name": "RAM16 Memory Rule Register 3 (ram16_mem_rule3)", + "description": "TrustZone register - RAM16 Memory Rule Register 3 (ram16_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2E0", + "offset_int": "0x2e0", + "reg_width": 32, + "name": "RAM17 Memory Rule Register 0 (ram17_mem_rule0)", + "description": "TrustZone register - RAM17 Memory Rule Register 0 (ram17_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2E4", + "offset_int": "0x2e4", + "reg_width": 32, + "name": "RAM17 Memory Rule Register 1 (ram17_mem_rule1)", + "description": "TrustZone register - RAM17 Memory Rule Register 1 (ram17_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2E8", + "offset_int": "0x2e8", + "reg_width": 32, + "name": "RAM17 Memory Rule Register 2 (ram17_mem_rule2)", + "description": "TrustZone register - RAM17 Memory Rule Register 2 (ram17_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2EC", + "offset_int": "0x2ec", + "reg_width": 32, + "name": "RAM17 Memory Rule Register 3 (ram17_mem_rule3)", + "description": "TrustZone register - RAM17 Memory Rule Register 3 (ram17_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field2F0", + "offset_int": "0x2f0", + "reg_width": 32, + "name": "RAM18 Memory Rule Register 0 (ram18_mem_rule0)", + "description": "TrustZone register - RAM18 Memory Rule Register 0 (ram18_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field2F4", + "offset_int": "0x2f4", + "reg_width": 32, + "name": "RAM18 Memory Rule Register 1 (ram18_mem_rule1)", + "description": "TrustZone register - RAM18 Memory Rule Register 1 (ram18_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field2F8", + "offset_int": "0x2f8", + "reg_width": 32, + "name": "RAM18 Memory Rule Register 2 (ram18_mem_rule2)", + "description": "TrustZone register - RAM18 Memory Rule Register 2 (ram18_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field2FC", + "offset_int": "0x2fc", + "reg_width": 32, + "name": "RAM18 Memory Rule Register 3 (ram18_mem_rule3)", + "description": "TrustZone register - RAM18 Memory Rule Register 3 (ram18_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field300", + "offset_int": "0x300", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 0 (apb_grp0_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field304", + "offset_int": "0x304", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 1 (apb_grp0_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field308", + "offset_int": "0x308", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 2 (apb_grp0_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field30C", + "offset_int": "0x30c", + "reg_width": 32, + "name": "APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 0 Memory Rule Register 3 (apb_grp0_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field310", + "offset_int": "0x310", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 0 (apb_grp1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field314", + "offset_int": "0x314", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 1 (apb_grp1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field318", + "offset_int": "0x318", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 2 (apb_grp1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field31C", + "offset_int": "0x31c", + "reg_width": 32, + "name": "APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "description": "TrustZone register - APB Bridge Group 1 Memory Rule Register 3 (apb_grp1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field320", + "offset_int": "0x320", + "reg_width": 32, + "name": "AHB Peripherals 0 Slave Rule Register (ahb_periph0_slave_rule)", + "description": "TrustZone register - AHB Peripherals 0 Slave Rule Register (ahb_periph0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field324", + "offset_int": "0x324", + "reg_width": 32, + "name": "AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule)", + "description": "TrustZone register - AHB Peripherals 1 Slave Rule Register (ahb_periph1_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field328", + "offset_int": "0x328", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 0 (aips_bridge_mem_rule0)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 0 (aips_bridge_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field32C", + "offset_int": "0x32c", + "reg_width": 32, + "name": "AIPS bridge 1 Memory Rule Register 1 (aips_bridge_mem_rule1)", + "description": "TrustZone register - AIPS bridge 1 Memory Rule Register 1 (aips_bridge_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field330", + "offset_int": "0x330", + "reg_width": 32, + "name": "AHB Peripherals 2 Slave Rule Register (ahb_periph2_slave_rule)", + "description": "TrustZone register - AHB Peripherals 2 Slave Rule Register (ahb_periph2_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field334", + "offset_int": "0x334", + "reg_width": 32, + "name": "Security control Memory Rule Register (security_ctrl_mem_rule)", + "description": "TrustZone register - Security control Memory Rule Register (security_ctrl_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field338", + "offset_int": "0x338", + "reg_width": 32, + "name": "AHB Peripherals 3 Slave Rule Register (ahb_periph3_slave_rule)", + "description": "TrustZone register - AHB Peripherals 3 Slave Rule Register (ahb_periph3_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field33C", + "offset_int": "0x33c", + "reg_width": 32, + "name": "Always ON Memory Rule Register (aon_mem_rule)", + "description": "TrustZone register - Always ON Memory Rule Register (aon_mem_rule)", + "default_value_int": "0x0" + }, + { + "id": "field340", + "offset_int": "0x340", + "reg_width": 32, + "name": "WLAN Slave Rule register (wlan_s0_slave_rule)", + "description": "TrustZone register - WLAN Slave Rule register (wlan_s0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field344", + "offset_int": "0x344", + "reg_width": 32, + "name": "WLAN Memory Rule Register 0 (wlan_s1_mem_rule0)", + "description": "TrustZone register - WLAN Memory Rule Register 0 (wlan_s1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field348", + "offset_int": "0x348", + "reg_width": 32, + "name": "WLAN Memory Rule Register 1 (wlan_s1_mem_rule1)", + "description": "TrustZone register - WLAN Memory Rule Register 1 (wlan_s1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field34C", + "offset_int": "0x34c", + "reg_width": 32, + "name": "WLAN Memory Rule Register 2 (wlan_s1_mem_rule2)", + "description": "TrustZone register - WLAN Memory Rule Register 2 (wlan_s1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field350", + "offset_int": "0x350", + "reg_width": 32, + "name": "WLAN Memory Rule Register 3 (wlan_s1_mem_rule3)", + "description": "TrustZone register - WLAN Memory Rule Register 3 (wlan_s1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field354", + "offset_int": "0x354", + "reg_width": 32, + "name": "BLE Slave Rule register (ble_s0_slave_rule)", + "description": "TrustZone register - BLE Slave Rule register (ble_s0_slave_rule)", + "default_value_int": "0x0" + }, + { + "id": "field358", + "offset_int": "0x358", + "reg_width": 32, + "name": "BLE Memory Rule Register 0 (ble_s1_mem_rule0)", + "description": "TrustZone register - BLE Memory Rule Register 0 (ble_s1_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field35C", + "offset_int": "0x35c", + "reg_width": 32, + "name": "BLE Memory Rule Register 1 (ble_s1_mem_rule1)", + "description": "TrustZone register - BLE Memory Rule Register 1 (ble_s1_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field360", + "offset_int": "0x360", + "reg_width": 32, + "name": "BLE Memory Rule Register 2 (ble_s1_mem_rule2)", + "description": "TrustZone register - BLE Memory Rule Register 2 (ble_s1_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field364", + "offset_int": "0x364", + "reg_width": 32, + "name": "BLE Memory Rule Register 3 (ble_s1_mem_rule3)", + "description": "TrustZone register - BLE Memory Rule Register 3 (ble_s1_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field368", + "offset_int": "0x368", + "reg_width": 32, + "name": "SOC Top Memory Rule Register 0 (soc_top_mem_rule0)", + "description": "TrustZone register - SOC Top Memory Rule Register 0 (soc_top_mem_rule0)", + "default_value_int": "0x0" + }, + { + "id": "field36C", + "offset_int": "0x36c", + "reg_width": 32, + "name": "SOC Top Memory Rule Register 1 (soc_top_mem_rule1)", + "description": "TrustZone register - SOC Top Memory Rule Register 1 (soc_top_mem_rule1)", + "default_value_int": "0x0" + }, + { + "id": "field370", + "offset_int": "0x370", + "reg_width": 32, + "name": "SOC Top Memory Rule Register 2 (soc_top_mem_rule2)", + "description": "TrustZone register - SOC Top Memory Rule Register 2 (soc_top_mem_rule2)", + "default_value_int": "0x0" + }, + { + "id": "field374", + "offset_int": "0x374", + "reg_width": 32, + "name": "SOC Top Memory Rule Register 3 (soc_top_mem_rule3)", + "description": "TrustZone register - SOC Top Memory Rule Register 3 (soc_top_mem_rule3)", + "default_value_int": "0x0" + }, + { + "id": "field378", + "offset_int": "0x378", + "reg_width": 32, + "name": "Security violation address/information registers valid flags (sec_vio_info_valid)", + "description": "TrustZone register - Security violation address/information registers valid flags (sec_vio_info_valid)", + "default_value_int": "0x0" + }, + { + "id": "field37C", + "offset_int": "0x37c", + "reg_width": 32, + "name": "Secure GPIO Mask Register 0 (sec_gpio_mask0)", + "description": "TrustZone register - Secure GPIO Mask Register 0 (sec_gpio_mask0)", + "default_value_int": "0xffffffff" + }, + { + "id": "field380", + "offset_int": "0x380", + "reg_width": 32, + "name": "Secure GPIO Mask Register 1 (sec_gpio_mask1)", + "description": "TrustZone register - Secure GPIO Mask Register 1 (sec_gpio_mask1)", + "default_value_int": "0xffffffff" + }, + { + "id": "field384", + "offset_int": "0x384", + "reg_width": 32, + "name": "Secure GPIO Mask Lock Register (sec_gpio_mask_lock)", + "description": "TrustZone register - Secure GPIO Mask Lock Register (sec_gpio_mask_lock)", + "default_value_int": "0xa" + }, + { + "id": "field388", + "offset_int": "0x388", + "reg_width": 32, + "name": "Master Secure Level Register (master_sec_reg)", + "description": "TrustZone register - Master Secure Level Register (master_sec_reg)", + "default_value_int": "0x80000000" + }, + { + "id": "field38C", + "offset_int": "0x38c", + "reg_width": 32, + "name": "Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "description": "TrustZone register - Master Secure Level Anti-pole Register (master_sec_anti_pol_reg)", + "default_value_int": "0xbfffffff" + }, + { + "id": "field390", + "offset_int": "0x390", + "reg_width": 32, + "name": "M33 Lock Control Register (cm33_lock_reg)", + "description": "TrustZone register - M33 Lock Control Register (cm33_lock_reg)", + "default_value_int": "0x800002aa" + }, + { + "id": "field394", + "offset_int": "0x394", + "reg_width": 32, + "name": "Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "description": "TrustZone register - Secure Control Duplicate Register (misc_ctrl_dp_reg)", + "default_value_int": "0x86a2" + }, + { + "id": "field398", + "offset_int": "0x398", + "reg_width": 32, + "name": "Secure Control Register (misc_ctrl_reg)", + "description": "TrustZone register - Secure Control Register (misc_ctrl_reg)", + "default_value_int": "0x86a2" + }, + { + "id": "field39C", + "offset_int": "0x39c", + "reg_width": 32, + "name": "ITRC IRQ Trigger source low selector register 0 (itrc_irq_lo_sel0)", + "description": "TrustZone register - ITRC IRQ Trigger source low selector register 0 (itrc_irq_lo_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field3A0", + "offset_int": "0x3a0", + "reg_width": 32, + "name": "ITRC IRQ Trigger source low selector register 1 (itrc_irq_lo_sel1)", + "description": "TrustZone register - ITRC IRQ Trigger source low selector register 1 (itrc_irq_lo_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field3A4", + "offset_int": "0x3a4", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger low source selector register 0 (itrc_chip_reset_lo_sel0)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger low source selector register 0 (itrc_chip_reset_lo_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field3A8", + "offset_int": "0x3a8", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger low source selector register 1 (itrc_chip_reset_lo_sel1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger low source selector register 1 (itrc_chip_reset_lo_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field3AC", + "offset_int": "0x3ac", + "reg_width": 32, + "name": "ITRC IRQ Trigger source high selector register 0 (itrc_irq_hi_sel0)", + "description": "TrustZone register - ITRC IRQ Trigger source high selector register 0 (itrc_irq_hi_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field3B0", + "offset_int": "0x3b0", + "reg_width": 32, + "name": "ITRC IRQ Trigger source high selector register 1 (itrc_irq_hi_sel1)", + "description": "TrustZone register - ITRC IRQ Trigger source high selector register 1 (itrc_irq_hi_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field3B4", + "offset_int": "0x3b4", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger high source selector register 0 (itrc_chip_reset_hi_sel0)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger high source selector register 0 (itrc_chip_reset_hi_sel0)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field3B8", + "offset_int": "0x3b8", + "reg_width": 32, + "name": "ITRC CHIP_RESET Trigger high source selector register 1 (itrc_chip_reset_hi_sel1)", + "description": "TrustZone register - ITRC CHIP_RESET Trigger high source selector register 1 (itrc_chip_reset_hi_sel1)", + "default_value_int": "0xaaaaaaaa" + }, + { + "id": "field3BC", + "offset_int": "0x3bc", + "reg_width": 32, + "name": "Miscellaneous TZM settings (misc_tzm_settings)", + "description": "TrustZone register - Miscellaneous TZM settings (misc_tzm_settings)", + "default_value_int": "0x0" + } + ] + } + ] +} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_ahab.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_ahab.yaml new file mode 100644 index 0000000..6686805 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_ahab.yaml @@ -0,0 +1,882 @@ +# Copyright 2023-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +--- +whole_ahab_image: + type: object + required: + - containers + - output + properties: + target_memory: + type: string + title: Target memory + description: Target memory for AHAB container + enum: [standard, nor, serial_downloader, nand_2k, nand_4k, sd_emmc] + enum_template: [serial_downloader, standard, nand_2k, nand_4k, sd_emmc] + template_value: standard + output: + type: string + title: Output file name + description: Output AHAB file name + format: file_name + template_value: generated_ahab.bin + output_format: + type: string + title: Output file format + description: Output file format for AHAB image + enum: [bin, hex, srec, sparse] + template_value: bin + output_offset: + type: [string, number] + title: Base offset for the output file + description: Base offset where the AHAB image will be placed in target memory. (primarily when using SREC/HEX output_format) + template_value: 0 + format: number + container_version: + type: number + title: Container version + description: + Force container version, if not specified the default version is used. + This configuration option is valid only for chips that supports both AHAB container versions. Possible options <2, 1> + minimal: 1 + maximal: 2 + template_value: 2 + skip_in_template: True + + containers: + title: List of containers present in AHAB + description: The order of containers in the list defines the order in AHAB. + type: array + minItems: 1 + items: + oneOf: + - type: object + required: [binary_container] + properties: + binary_container: + type: object + title: Binary AHAB container + description: Binary Container format to add to AHAB image, Typically it could be used to add ELE Firmware. + required: [path] + properties: + path: + type: string + title: The AHAB container binary file + description: The binary file that contains AHAB "my_binary_container.bin + template_value: my_ahab_container.bin + - type: object + required: [container] + properties: + container: + type: object + title: AHAB Container + description: Configurable Container format to add to AHAB image. This allow to configure all aspects of the AHAB container. + required: [srk_set, images] + if: + properties: + srk_set: + const: none + then: + required: [] + else: + required: [srk_table, used_srk_id] + properties: + srk_set: + type: string + title: Super Root Key (SRK) set + description: Defines which set is used to authenticate the container. + enum: [none, oem, nxp] + template_value: none + used_srk_id: + type: [number, string] + title: Used SRK + description: Which key from SRK set is being used. + format: number + template_value: 0 + srk_revoke_mask: + type: [number, string] + title: SRK revoke mask + description: + Bit-mask to indicate which SRKs to revoke. Bit set to 1 means revoke + key. Bit 0 = revoke SRK_0, bit 1 = revoke SRK_1 etc. + Example of revocation SRK_0 and SRK_1 - the value should be 0x03 + format: number + template_value: "0x00" + gdet_runtime_behavior: + type: string + title: GDET runtime behavior + description: + "This option defines runtime behavior of Glitch detector. Not supported by all devices and their ELE firmware.\n + - disabled: GDET is disabled after the first OEM container has been authenticated (default behavior)\n + - enabled_eleapi: Automatically enable GDET during all ELE API calls\n + - enabled: Leave GDET enabled" + enum: [disabled, enabled_eleapi, enabled] + template_value: disabled + check_all_signatures: + type: string + title: Check all signatures + description: + "This option overrides a fuse to select verification mode.\n + - default: Apply default fuse policy.\n + - check_all_signatures: Force verification of all present signatures." + enum: [default, check_all_signatures] + template_value: default + skip_in_template: True + fast_boot: + type: string + title: Fast boot + description: "This option enables fast boot mode.\n + - disabled: Fast boot disabled.\n + - hash_and_copy: ELE will do the hash and copy (when disabled, BootROM will do the copy).\n + - external_accelerator: Use external accelerator for authentication (e.g. V2X on i.MX95B0, i.MX943 and i.MX952).\n + - hash_and_copy_with_external_accelerator:ELE will do hash and copy, and use external accelerator for authentication." + enum: + [ + disabled, + hash_and_copy, + external_accelerator, + hash_and_copy_with_external_accelerator, + ] + skip_in_template: True + template_value: disabled + fuse_version: + type: [number, string] + title: Fuse version + description: + The value must be equal or greater than the version stored in fuses + to allow loading this container. + format: number + template_value: 0 + sw_version: + type: [number, string] + title: Software version + description: + Number used by Privileged Host Boot Companion (PHBC) to select between + multiple images with same Fuse version field. + format: number + template_value: 0 + signer: + type: string + title: AHAB container signer + description: + Signature provider configuration in format 'type=;=;=' or a + private key used for sign the container header. Header can be signed by SRK. + The referenced SRK must not have been revoked. + template_value: type=file;file_path=my_prv_key.pem + signer_#2: + type: string + title: AHAB container signer for second signature (PQC only) + description: + Signature provider configuration in format 'type=;=;=' or a + private key used for second sign (PQC only) of the container header. Header can be signed by SRK. + The referenced SRK must not have been revoked. + template_value: type=file;file_path=my_prv_key.pem + skip_in_template: True + images: + type: array + title: Image array + description: Array of image entries. + template_title: Configuration of AHAB Container images (array of multiple images) + minItems: 1 + maxItems: 8 + items: + oneOf: + - type: object + template_title: SPL with optional DDR tunning images + image_identifier: spl_ddr + skip_in_template: True + description: U-Boot SPL with optional DDR PHY tunning images + required: + [ + spl_ddr, + lpddr_imem_1d, + lpddr_imem_2d, + lpddr_dmem_1d, + lpddr_dmem_2d, + ] + properties: + lpddr_imem_1d: + type: string + title: LPDDR memory FW in 1D mode + description: Firmware for LPDDR4/5 memory in 1D mode. + template_value: lpddr_imem_1d.bin + format: file + lpddr_imem_2d: + type: string + title: LPDDR memory FW in 2D mode + description: Firmware for LPDDR4/5 memory in 2D mode. + template_value: lpddr_imem_2d.bin + format: file + lpddr_dmem_1d: + type: string + title: LPDDR memory data in 1D mode + description: Data for LPDDR4/5 memory in 1D mode. + template_value: lpddr_dmem_1d.bin + format: file + lpddr_dmem_2d: + type: string + title: LPDDR memory data in 2D mode + description: Data for LPDDR4/5 memory in 2D mode. + template_value: lpddr_dmem_2d.bin + format: file + spl_ddr: + type: string + title: SPL + description: SPL firmware + template_value: spl.bin + format: file + + - type: object + template_title: OEI with DDR tunning images + image_identifier: oei_ddr + skip_in_template: True + description: OEI with DDR PHY tunning images + required: [oei_ddr, lpddr_imem, lpddr_dmem] + properties: + lpddr_imem: + type: string + title: LPDDR memory FW + description: Firmware for LPDDR4/5 memory. + template_value: lpddr_imem.bin + format: file + lpddr_imem_qb: + type: string + title: LPDDR memory FW for quick boot + description: Firmware for LPDDR4/5 for quick boot. + template_value: lpddr_imem_qb.bin + format: file + lpddr_dmem: + type: string + title: LPDDR memory data + description: Data for LPDDR4/5 memory. + template_value: lpddr_dmem.bin + format: file + lpddr_dmem_qb: + type: string + title: LPDDR memory data for quick boot + description: Data for LPDDR4/5 memory in quick boot. + template_value: lpddr_dmem_qb.bin + format: file + oei_ddr: + type: string + title: OEI + description: OEI - Optional Executable Image firmware + template_value: oei_ddr.bin + format: file + qb_data: + type: string + title: Quick Boot Data + description: QB data - Optional Quick boot data, if defined a new empty record will be added just behind DDR FW entry + template_value: qb_data.bin + format: file + + - type: object + template_title: OEI with DDR tunning images + image_identifier: oei_ddr_no_qb + skip_in_template: True + description: OEI with DDR PHY tunning images + required: [oei_ddr, lpddr_imem, lpddr_dmem] + properties: + lpddr_imem: + type: string + title: LPDDR memory FW + description: Firmware for LPDDR4/5 memory. + template_value: lpddr4x_imem_v202409.bin + format: file + lpddr_imem_qb: + type: string + title: LPDDR memory FW for quick boot + description: Firmware for LPDDR4/5 for quick boot. + template_value: lpddr4x_imem_qb_v202409.bin + format: file + lpddr_dmem: + type: string + title: LPDDR memory data + description: Data for LPDDR4/5 memory. + template_value: lpddr4x_dmem_v202409.bin + format: file + lpddr_dmem_qb: + type: string + title: LPDDR memory data for quick boot + description: Data for LPDDR4/5 memory in quick boot. + template_value: lpddr4x_dmem_qb_v202409.bin + format: file + oei_ddr: + type: string + title: OEI + description: OEI - Optional Executable Image firmware + template_value: oei-m33-ddr.bin + format: file + + - type: object + template_title: OEI TCM Settings (ECC configuration etc.) + image_identifier: oei_tcm + skip_in_template: True + description: OEI TCM settings (ECC etc.) + required: [oei_tcm] + properties: + oei_tcm: + type: string + title: OEI TCM FW + description: OEI(Optional Executable Image) TCM settings binary file. + template_value: oei_tcm.bin + format: file + + - type: object + template_title: Double Authentication of NXP Firmwares + image_identifier: double_authentication + skip_in_template: True + description: Double Authentication of NXP firmwares + required: [double_authentication] + properties: + double_authentication: + type: string + title: NXP ELE FW + description: NXP ELE firmware, that should be also signed by OEM keys binary file. + template_value: nxp_ele.bin + format: file + + - type: object + template_title: Boot system manager + image_identifier: system_manager + skip_in_template: True + description: System booting image + required: [system_manager] + properties: + system_manager: + type: string + title: Boot system manager + description: System manager booting image + template_value: system_manager.bin + format: file + + - type: object + template_title: Cortex M7 additional application + image_identifier: cortex_m7_app + skip_in_template: True + description: Cortex M7 additional application + required: [cortex_m7_app] + properties: + cortex_m7_app: + type: string + title: Cortex M7 additional application + description: Cortex M7 additional application + template_value: cortex_m7_app.bin + format: file + + - type: object + template_title: Cortex M7 second core additional application + image_identifier: cortex_m7_2_app + skip_in_template: True + description: Cortex M7 second core additional application + required: [cortex_m7_2_app] + properties: + cortex_m7_2_app: + type: string + title: Cortex M7 second core additional application + description: Cortex M7 second core additional application + template_value: cortex_m7_2_app.bin + format: file + + - type: object + template_title: Cortex M33 second core additional application + image_identifier: cortex_m33_2_app + skip_in_template: True + description: Cortex M33 second core additional application + required: [cortex_m33_2_app] + properties: + cortex_m33_2_app: + type: string + title: Cortex M33 second core additional application + description: Cortex M33 second core additional application + template_value: cortex_m33_2_app.bin + format: file + + - type: object + template_title: TEE Trusted Execution Environment + image_identifier: tee + skip_in_template: True + description: + A TEE (Trusted Execution Environment) is a trusted OS running in some + secure environment, for example, TrustZone on ARM CPUs, or a separate + secure co-processor etc. A TEE driver handles the details needed to + communicate with the TEE. + required: [tee] + properties: + tee: + type: string + title: TEE + description: TEE - Trusted Execution Environment binary + template_value: tee.bin + format: file + + - type: object + template_title: uPower + image_identifier: upower + skip_in_template: True + description: uPower firmware + required: [upower] + properties: + upower: + type: string + title: uPower + description: uPower firmware + template_value: upower.bin + format: file + + - type: object + template_title: MCU Image + image_identifier: mcu + skip_in_template: True + description: MCU Image + required: [mcu] + properties: + mcu: + type: string + title: MCU Image + description: MCU Image + template_value: m33_image.bin + format: file + + - type: object + template_title: SPL + image_identifier: spl + skip_in_template: True + description: U-Boot SPL (Secondary program loader) + required: [spl] + properties: + spl: + type: string + title: SPL + description: SPL firmware + template_value: spl.bin + format: file + + - type: object + template_title: Uboot ATF + image_identifier: atf + skip_in_template: True + description: U-Boot ATF container definition + required: [atf] + properties: + atf: + type: string + title: ATF binary + description: ARM Trusted Firmware binary file. + template_value: bl31.bin + format: file + + - type: object + template_title: Linux Kernel Image + image_identifier: kernel + skip_in_template: True + description: Linux kernel Image container definition + required: [kernel] + properties: + kernel: + type: string + title: Linux Kernel Image Binary + description: Linux kernel executable Image binary file (typically Image.bin) + template_value: Image.bin + format: file + + - type: object + template_title: Device Tree Blob + image_identifier: dtb + skip_in_template: True + description: Device Tree Blob (DTB) container definition + required: [dtb] + properties: + dtb: + type: string + title: Device Tree Blob Binary + description: Device Tree Blob (DTB) binary file containing hardware description + template_value: device-tree.dtb + format: file + + - type: object + template_title: Uboot + image_identifier: uboot + skip_in_template: True + description: U-Boot container definition + required: [uboot] + properties: + uboot: + type: string + title: U-Boot binary + description: U-Boot binary file. + template_value: u-boot.bin + format: file + + - type: object + template_title: V2X Dummy + image_identifier: v2x_dummy + skip_in_template: True + description: V2X dummy image container definition + required: [v2x_dummy] + properties: + v2x_dummy: + type: boolean + title: V2X Dummy + description: If Present, V2X dummy image will be added to Image Array Entry (no data record) + template_value: True + + - type: object + template_title: General Image Entry + image_identifier: general_image + description: General Image Entry + required: + - load_address + - entry_point + - image_type + - core_id + properties: + image_path: + type: string + title: Image path + description: + Path to image binary (absolute/relative). In case that only Image Array entry without any data image is needed, Just do not use the image path. + In case that the image size in container should be aligned differently then SPSDK do (4 bytes for ELE images, 1 byte otherwise), there is hidden option + 'image_size_alignment' where could be override image size by any custom value. + format: file + template_value: my_image.bin + image_size_alignment: + type: number + title: Image size alignment. + description: As a standard is use 1 byte in general and for ELE image 4 bytes. + template_value: 1 + skip_in_template: True + image_offset: + type: [number, string] + title: Image offset in AHAB container + description: + Offset in bytes from start of container header to beginning of the image. + Zero value means automatic placing the image with proper alignment after previous one, this is recommended + for serial_downloader mode. + In case of XiP type of AHAB image, the load_address and entry_point must correspond to this values. + Example of setting of load_address - AHAB_IMAGE_ADDRESS+IMAGE_OFFSET=LOAD_ADDRESS. + The Booting core images must be located after the other ones + format: number + template_value: 0 + default: 0 + load_address: + type: [number, string] + title: Image destination address + description: + Address the image is written to in memory (absolute address in + system memory). + format: number + template_value: "0x1FFC_0000" + entry_point: + type: [number, string] + title: Image entry point + description: + Image entry point (absolute address). Valid only for executable + image types. + format: number + template_value: "0x1FFC_0000" + image_type: + type: string + title: Image type + description: Kind of image. + template_value: executable + core_id: + type: string + title: Core ID + description: Defines the core the image is dedicated for. Not all cores are supported for all families. + template_value: cortex-m33 + is_encrypted: + type: boolean + title: Image encryption + description: Determines, whether image is encrypted or not. + template_value: false + default: false + is_image_descriptor: + type: boolean + title: Image Descriptor + description: Determines, whether image is descriptor or not. + template_value: false + default: false + boot_flags: + type: [number, string] + title: Boot flags + description: Boot flags controlling SCFW boot. + template_value: 0x00 + meta_data_start_cpu_id: + type: [number, string] + title: Start CPU ID + description: Resource ID of CPU to be started + format: number + template_value: 0 + meta_data_mu_cpu_id: + type: [number, string] + title: CPU memory unit start ID + description: Resource ID of the MU associated with the CPU + format: number + template_value: 0 + meta_data_start_partition_id: + type: [number, string] + title: Start partition ID + description: Partition ID of the partition to start + format: number + template_value: 0 + hash_type: + type: string + title: Images HASH type + description: HASH type of image. + enum: [] + template_value: sha512 + gap_after_image: + type: number + title: Size of gap + description: Size of empty gap just behind the image in AHAB container + template_value: 0 + default: 0 + skip_in_template: True + srk_table: + type: object + title: SRK Table + template_title: Configuration of AHAB SRK table + description: "SRK (Super Root key) table definition." + required: [srk_array] + properties: + flag_ca: + type: boolean + title: CA Flag + description: + "CA Flag is used by HAB to indicate if the SRK is allowed to sign other keys. + In AHAB CA Flag only affects the final SRKH (Super Root Key Hash) value burned into chip fuses. It is not used in the AHAB signing process itself. + This option exists only for compatibility with systems where fuses are already programmed. In most cases, this should remain false." + template_value: false + hash_algorithm: + type: string + title: Hash Algorithm + description: "Hash algorithm used for SRK records. If not specified, default algorithm based on key type will be used." + enum: + &ahab_hash_algorithms [ + default, + sha256, + sha384, + sha512, + sha3_256, + sha3_384, + sha3_512, + shake_128_256, + shake_256_512, + sm3, + ] + template_value: default + rsa_exponent_legacy_size: + type: boolean + title: RSA exponent legacy size (4 bytes) + description: + "Force RSA exponent to use legacy 4-byte size instead of actual exponent size. + This option provides backward compatibility with older SPSDK versions that always used 4 bytes for RSA exponents. + Only enable this if you need compatibility with containers generated by older SPSDK versions." + template_value: false + default: false + skip_in_template: true + srk_array: + type: array + title: Super Root Key (SRK) table + description: + "Table containing the used SRK records. All SRKs must be of the same + type. Supported signing algorithms are: RSA-PSS, ECDSA, Dilithium or SM2. Supported hash algorithms: + sha256, sha384, sha512, sha3_256, sha3_384, sha3_512, sm3. Supported key sizes/curves: prime256v1, sec384r1, sec512r1, + rsa2048, rsa4096, dilithium3, sm2. Certificate may be of Certificate Authority. Dilithium algorithms are supported just + in new type of AHAB container" + minItems: 4 + maxItems: 4 + items: + type: string + title: SRK key + description: Path to SRK Key file. + format: file + template_value: + - my_srk_public_key0.pub + - my_srk_public_key1.pub + - my_srk_public_key2.pub + - my_srk_public_key3.pub + srk_table_#2: + type: object + title: Second SRK Table + template_title: Configuration of AHAB SRK table in case that the double signing (ECC + PQC) + required: [srk_array] + skip_in_template: True + properties: + flag_ca: + type: boolean + title: CA Flag + description: + "CA Flag is used by AHAB to indicate if the SRK is allowed to sign other keys. + In AHAB CA Flag only affects the final SRKH (Super Root Key Hash) value burned into chip fuses. It is not used in the AHAB signing process itself. + This option exists only for compatibility with systems where fuses are already programmed. In most cases, this should remain false." + template_value: false + hash_algorithm: + type: string + title: Hash Algorithm + description: "Hash algorithm used for SRK records. If not specified, default algorithm based on key type will be used." + enum: *ahab_hash_algorithms + template_value: default + srk_array: + type: array + title: Super Root Key (SRK) table + description: + "Table containing the used SRK Dilithium records. All SRKs must be of the same + type. Supported signing algorithms are: Dilithium level 3. Supported hash algorithms: + sha3_256, sha3_384, sha3_512. Certificate may be of Certificate Authority." + minItems: 4 + maxItems: 4 + items: + type: string + title: SRK key + description: Path to SRK Key file. + format: file + template_value: + - my_srk_public_key0.pub + - my_srk_public_key1.pub + - my_srk_public_key2.pub + - my_srk_public_key3.pub + + certificate: + type: string + title: The AHAB certificate + template_title: Optional configuration of AHAB Container Certificate (if not used, erase the section) + description: + The file that contains AHAB certificate. It could be used already prepared binary form signed by SRK, or it is possible to + use configuration YAML file of certificate and the AHAB export process it will export it itself. + format: file + template_value: my_ahab_certificate.bin + + blob: + type: object + title: Encryption blob + description: Encryption blob container definition + template_title: Optional configuration of AHAB Container Encryption blob (if not used, erase the section) + required: [key_identifier, dek_key_size, dek_key] + properties: + key_identifier: + type: [number, string] + title: Key identifier + description: The key identifier that has been used to generate DEK keyblob. + format: number + template_value: 0 + dek_key_size: + type: [number, string] + title: DEK key size + description: Data Encryption key size. Used for AES CBC-MAC (128/192/256 size) + enum: [128, 192, 256] + format: number + template_value: 128 + dek_key: + type: string + title: DEK key + description: Data Encryption key. Used for AES CBC-MAC (128/192/256 size). The HEX format is accepted + template_value: my_dek_key.txt + format: file-or-hex-value + dek_keyblob: + type: string + title: DEK keyblob + description: Wrapped Data Encryption key. Used for AES CBC-MAC (128/192/256 size). The HEX format is accepted. If NOT used, the empty keyblob is inserted into container and need to be updated later. + template_value: my_wrapped_key.txt + format: file-or-hex-value + +ahab_certificate: + type: object + title: Configuration of AHAB Container Certificate + description: Certificate container definition." + required: [public_key_0, permissions, signer_0] + properties: + permissions: + type: array + title: Certificate permissions + description: Permissions used to indicate what a certificate can be used for + items: + type: string + enum: + - container + - debug + - secure_fuse + - return_life_cycle + - patch_fuses + template_value: + - container + - debug + permission_data: + type: [number, string] + title: Permission data + description: (Optional) Complementary information for debug auth feature 96-bits + format: number + template_value: "0x00001111aaaabbbb22223333" + uuid: + type: string + title: Device UUID + description: Optional 128-bit IETF RFC4122 compliant non-sequential Universally Unique Identifier (UUID) + format: hex_value + template_value: "00000000000000000000000000000000" + fuse_version: + type: [number, string] + title: Fuse/PFR monotonic counter version + description: | + The fuse version serves as a monotonic counter for anti-rollback protection, but its exact + implementation and validation mechanism depends on the target device type and certification purpose. + + **For MPU devices (i.MX series):** + The fuse version is compared against a monotonic counter implemented directly in hardware fuses. + The value must be equal to or greater than the version stored in fuses to allow loading this container. + + **For MCU devices (e.g., MCXN556S):** + The fuse version validation depends on the specific feature being certified: + + - **Debug Authentication:** The fuse version is validated against the monotonic counter + "Vendor usage" located in the CFPA (Customer Field Programmable Area) PFR page. + + - **Bootable Image Certification:** The fuse version is validated against the + IMAGE_KEY_REVOCATION_ID, which is a combination of both CFPA and OTP fuse data: + `CFPA.IMAGE_KEY_REVOKE[23:0] | OTP.IMAGE_KEY_REVOKE[7:0] << 24` + This creates a 32-bit revocation ID where the lower 24 bits come from CFPA and + the upper 8 bits come from OTP fuses. + + **Note:** Despite these different validation mechanisms across device types and use cases, + a single "fuse_version" field name is used for consistency and simplicity in the configuration + schema, as all scenarios serve the same fundamental purpose of preventing rollback attacks + through monotonic counter validation. + format: number + template_value: 0 + public_key_0: + type: string + title: Certificate public key 0 + description: Path to Public key 0 file. + format: file + template_value: my_cert_public_key0.pem + signer_0: + type: string + title: Signer 0 + description: Signature provider configuration in format 'type=;=;=' or the private key 0 used for signing the certificate container. + template_value: type=file;file_path=my_prv_key0.pem + hash_algorithm_0: + type: string + title: Hash Algorithm 0 + description: "Hash algorithm used for SRK records. If not specified, default algorithm based on key type will be used." + enum: *ahab_hash_algorithms + template_value: default + + public_key_1: + type: string + title: Certificate public key 1 + description: Path to Public key 1 file. + format: file + template_value: my_cert_public_key1.pem + signer_1: + type: string + title: Signer 1 + description: Signature provider configuration in format 'type=;=;=' or the private key 1 used for signing the certificate container. + template_value: type=file;file_path=my_prv_key0.pem + hash_algorithm_1: + type: string + title: Hash Algorithm 1 + description: "Hash algorithm used for SRK records. If not specified, default algorithm based on key type will be used." + enum: *ahab_hash_algorithms + template_value: default diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bca.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bca.yaml new file mode 100644 index 0000000..1ea9214 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bca.yaml @@ -0,0 +1,14 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +bca: + type: object + properties: + bca: + type: object + title: Settings of BCA + description: BCA settings. + # properties will be added in runtime + + required: [bca] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bee.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bee.yaml new file mode 100644 index 0000000..a816596 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bee.yaml @@ -0,0 +1,149 @@ +# Copyright 2022-2023,2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +bee_output: + type: object + title: Basic Settings + properties: + output_folder: + type: string + title: BEE output folder + description: Folder name to store generated BEE output + template_value: bee_output + + output_name: + type: string + title: Output binary file name + description: File name of the encrypted file, output_folder/output_name or full path (.bin will be appended) + template_value: "encrypted" + + header_name: + type: string + title: File name of the exported BEE region headers + description: output_folder/header_name or full path + index will be appended (.bin will be appended) + template_value: "bee_ehdr" + + # Add data_blobs configuration similar to OTFAD + data_blobs: + type: array + title: Data blobs list + description: List of all data blobs to be encrypted + items: + type: object + required: [data, address] + properties: + data: + type: string + title: Plain Text data blob + description: Path to binary file with plain text data to be encrypted + format: file + template_value: my_data.bin + + address: + type: [number, string] + title: Data blob address + description: Data blob address where the data should be loaded + format: number + template_value: "0x60001000" + + required: [output_folder] +bee: + type: object + title: BEE Settings + required: [engine_selection, engine_key_selection, bee_engine] + properties: + engine_selection: + type: string + title: Engine selection + description: BEE Engine Selection, engine0, engine1 or both engines + enum: ["engine0", "engine1", "both"] + template_value: "engine0" + + engine_key_selection: + type: string + title: Engine Key selection + description: Random Key or Zero key + enum: ["random", "zero"] + template_value: "random" + + bee_engine: + title: Bee engines + description: Configuration of BEE engines + type: array + minItems: 1 + maxItems: 2 + items: + oneOf: + - type: object + title: Engine Config + description: BEE engine configuration + required: [bee_cfg] + properties: + bee_cfg: + type: object + required: [user_key] + properties: + user_key: + type: [string, number] + title: User AES-128 key + description: AES key for encryption + format: number + template_value: "0x0123456789abcdeffedcba9876543210" + + # aes_mode: + # type: string + # title: AES mode + # description: AES mode - counter or ECB + # enum: ["CTR", "ECB"] + # template_value: "CTR" + + protected_region: + title: Protected region + description: List of protected regions, up to four regions + type: array + items: + type: object + required: [start_address, length, protected_level] + properties: + start_address: + type: [string, number] + title: Start address of protected region + description: Start address of protected region, it should be aligned to 1 KB (1024 B) + format: number + template_value: "0x60001000" + + length: + type: [string, number] + title: Length of protected region + description: Length of protected region, it should be aligned to 1 KB (1024 B) + format: number + template_value: "0x4400" + + protected_level: + type: number + title: Protected level + description: Protected level (0/1/2/3), 0 is default + format: number + template_value: 0 + - type: object + title: Engine BinConfig + description: BEE engine configuration with binary header + required: [bee_binary_cfg] + properties: + bee_binary_cfg: + type: object + required: [header_path, user_key] + properties: + header_path: + type: string + title: BEE header path + description: Path to the existing BEE header in binary form + template_value: bee_ehdr0.bin + + user_key: + type: [string, number] + title: User AES-128 key + description: AES key that was used for header encryption + format: number + template_value: "0x0123456789abcdeffedcba9876543210" diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_binary.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_binary.yaml new file mode 100644 index 0000000..99cde3e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_binary.yaml @@ -0,0 +1,113 @@ +# Copyright 2021-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +type: object +required: [name, regions] +properties: + name: + type: string + title: Image name + description: The optional image name used just during prints to console during merging. + template_value: My super binary image + size: + type: [string, number] + title: Overall size of image + description: The overall size of merged image. If the size of merged blocks exceeds this size the merge failed, otherwise the merged blocks will be padded with defined pattern. + format: number + template_value: 1024 + pattern: + title: Pattern defined as number or special values + description: > + The pattern that will be used to fill up gaps between defined regions. String or number or choose from predefined patterns - [rand, zeros, ones, inc] + - any number pattern: The defined number pattern, that will be repeated to fill up gaps between blocks. + - rand: Random pattern + - zeros: The zeros pattern 0x0000000.... + - ones: The 'ones' pattern 0xfffffff.... + - inc: The byte incremental pattern 0x00010203.....fdfeff00010203.... + template_value: zeros + oneOf: + - type: [string, number] + format: number + - type: string + enum: [rand, zeros, ones, inc] + alignment: + type: [string, number] + title: Regions alignment + description: The region alignment that will be used in case that offset is not specified. + format: number + template_value: 1 + regions: + type: array + title: Array of defined binary regions + description: The array of individual regions to merge into final image. + template_title: Binary images to merge + items: + oneOf: + - type: object + required: [binary_file] + properties: + binary_file: + type: object + title: Binary file + required: [path] + properties: + name: + type: string + title: Image name + description: The optional image name used just during prints to console during merging. + template_value: My super binary image + path: + type: string + title: Binary file + description: The path to binary file to merge into final image + format: file + template_value: my_binary_to_merge.bin + offset: + type: [string, number] + title: Offset of image in merged block + description: The offset of image to be merged on. The offset could be also negative - for example to 'erase' security bit from address. + In case that offset definition is omitted, the block will be placed after previous one with defined alignment. + format: number + template_value: 1024 + - type: object + required: [binary_block] + properties: + binary_block: + type: object + title: Binary block + required: [pattern, size] + properties: + name: + type: string + title: Image name + description: The optional image name used just during prints to console during merging. + template_value: My super binary block + size: + type: [string, number] + title: Binary block size + description: The size of binary block + format: number + template_value: 0x200 + offset: + type: [string, number] + title: Offset of binary block in merged block + description: The offset of binary block to be merged on. The offset could be also negative. + In case that offset definition is omitted, the block will be placed after previous one with defined alignment. + format: number + template_value: 1024 + pattern: + title: Pattern defined as number or special values + description: > + The pattern that will be used to fill up binary block. Number or choose from predefined patterns - [rand, zeros, ones, inc] + - any number pattern: The defined number pattern, that will be repeated to fill up binary block. + - rand: Random pattern + - zeros: The zeros pattern 0x0000000.... + - ones: The 'ones' pattern 0xfffffff.... + - inc: The byte incremental pattern 0x00010203.....fdfeff00010203.... + template_value: zeros + oneOf: + - type: [string, number] + format: number + - type: string + enum: [rand, zeros, ones, inc] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bootable_image.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bootable_image.yaml new file mode 100644 index 0000000..4152b39 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_bootable_image.yaml @@ -0,0 +1,277 @@ +# Copyright 2022-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +memory_type: + type: object + required: [memory_type] + properties: + memory_type: + type: string + title: Memory type + description: Specify type of memory used by bootable image description. + template_value: flexspi_nor + +init_offset: + properties: + init_offset: + type: [number, string] + format: number + title: Initial segment + description: The segment name or the index of initial segment in exported image + template_value: 0 + +output_definition: + properties: + output: + type: string + title: Output file name + description: Bootable image output file name + format: file_name + template_value: bootable_image.bin + output_format: + type: string + title: Output file format + description: Output file format for Bootable image + enum: [bin, hex, srec, sparse] + template_value: bin + +keyblob: + title: Bootable Segments definition + properties: + keyblob: + type: string + format: optional_file + title: Key Blob block path + description: Key blob block path + template_value: keyblob.bin + +fcb: + title: Bootable Segments definition + properties: + fcb: + type: string + title: FCB block path + format: optional_file + description: + Flash Configuration block Image path. It could be used as pre-prepared binary form of FCB and also YAML configuration file for FCB. + In case that YAML configuration file is used, the Bootable image tool build the FCB itself. + template_value: fcb.bin + +image_version: + title: Bootable Segments definition + properties: + image_version: + type: [number, string] + title: Image version + format: number + description: Image version + template_value: 0x00 + +image_version_ap: + title: Bootable Segments definition + properties: + image_version: + type: [number, string] + title: Image version + format: number + description: Image version + template_value: 0x00 + +keystore: + title: Bootable Segments definition + properties: + keystore: + type: string + format: optional_file + title: Key Store block path + description: Key store block path + template_value: keystore.bin + +bee_header_0: + title: Bootable Segments definition + properties: + bee_header_0: + type: string + title: BEE encryption header 0 + format: optional_file + description: BEE encryption header 0 path + template_value: bee_header_0.bin + +bee_header_1: + title: Bootable Segments definition + properties: + bee_header_1: + type: string + title: BEE encryption header 1 + format: optional_file + description: BEE encryption header 1 path + template_value: bee_header_1.bin + +xmcd: + title: Bootable Segments definition + properties: + xmcd: + type: string + title: XMCD block path + format: optional_file + description: + External Memory Configuration Data Segment Image path. It could be used as pre-prepared binary form of XMCD and also YAML configuration file for XMCD. + In case that YAML configuration file is used, the Bootable image tool build the XMCD itself. + template_value: xmcd.bin + +mbi: + title: Executable Segment definition + properties: + mbi: + type: string + format: file + title: Master Boot Image + description: + Master Boot Image path. It could be used as pre-prepared binary form of MBI and also YAML configuration file for MBI. + In case that YAML configuration file is used, the Bootable image tool build the MBI itself. + template_value: mbi.bin + application: + type: string + format: file + title: Application + description: Application image path + template_value: application.yaml + skip_in_template: True + +hab_container: + title: Executable Segment definition + properties: + hab_container: + type: string + title: HAB container + format: file + description: + HAB container image path. It could be used as pre-prepared binary form of HAB and also YAML configuration file for HAB. + In case that YAML configuration file is used, the Bootable image tool build the HAB itself. + template_value: hab_container.yaml + +ahab_container: + title: Executable Segment definition + properties: + ahab_container: + type: string + title: AHAB container + format: file + description: + AHAB container image path. It could be used as pre-prepared binary form of AHAB and also YAML configuration file for AHAB. + In case that YAML configuration file is used, the Bootable image tool build the AHAB itself. + template_value: ahab_container.yaml + +primary_image_container_set: + title: Primary Executable Segment definition + properties: + spl: + type: string + title: Primary Image Container Set + format: file + description: + This is primary Image Container Set that is validated by ROM and usually contains DDR initialization and SPL code. + It could be used as pre-prepared binary form of AHAB and also YAML configuration file for AHAB. + In case that YAML configuration file is used, the Bootable image tool build the AHAB itself. + template_value: spl.yaml + primary_image_container_set: + type: string + title: Primary Image Container Set + format: file + description: + This is primary Image Container Set that is validated by ROM and usually contains DDR initialization and SPL code. + It could be used as pre-prepared binary form of AHAB and also YAML configuration file for AHAB. + In case that YAML configuration file is used, the Bootable image tool build the AHAB itself. + template_value: spl.yaml + skip_in_template: True + +secondary_image_container_set: + title: Secondary Executable Segment definition + properties: + uboot: + oneOf: + - type: string + title: Secondary Image Container Set + format: file + description: > + This is secondary AHAB image that is validated by SPL from primary image. + It could be used as pre-prepared binary form of AHAB and also YAML configuration file for AHAB. + In case that YAML configuration file is used, the Bootable image tool build the AHAB itself. + template_value: uboot.yaml + - type: object + title: Secondary Image Container Set with custom offset + properties: + path: + type: string + title: Secondary Image Container Set path + format: file + description: > + Path to the secondary AHAB image that is validated by SPL from primary image. + offset: + type: [number, string] + title: Custom offset + format: number + description: Custom offset for the secondary image container set + required: ["path"] + skip_in_template: True + secondary_image_container_set: + skip_in_template: True + oneOf: + - type: string + title: Secondary Image Container Set + format: file + description: > + This is secondary AHAB image that is validated by SPL from primary image. + It could be used as pre-prepared binary form of AHAB and also YAML configuration file for AHAB. + In case that YAML configuration file is used, the Bootable image tool build the AHAB itself. + template_value: uboot.yaml + - type: object + title: Secondary Image Container Set with custom offset + properties: + path: + type: string + title: Secondary Image Container Set path + format: file + description: > + Path to the secondary AHAB image that is validated by SPL from primary image. + offset: + type: [number, string] + title: Custom offset + format: number + description: Custom offset for the secondary image container set + required: ["path"] + skip_in_template: True + +sb21: + title: Secure Binary Executable Segment definition + properties: + sb21: + type: string + title: Secure Binary v2.1 + format: file + description: + Secure Binary v2.1 image path. It could be used as pre-prepared binary form of Secure Binary v2.1 and also YAML configuration file for Secure Binary v2.1. + In case that YAML configuration file is used, the Bootable image tool build the Secure Binary v2.1 itself. + template_value: secure_binary_21.yaml + +sb31: + title: Secure Binary Executable Segment definition + properties: + sb31: + type: string + title: Secure Binary v3.1 + format: file + description: + Secure Binary v3.1 image path. It could be used as pre-prepared binary form of Secure Binary v3.1 and also YAML configuration file for Secure Binary v3.1. + In case that YAML configuration file is used, the Bootable image tool build the Secure Binary v3.1 itself. + template_value: secure_binary_21.yaml + +post_export: + title: General Options + properties: + post_export: + type: string + title: Path to directory for post export + description: Path to directory where post export artifacts like fuse scripts, keyblobs etc. will be exported + template_value: output diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_cert_block.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_cert_block.yaml new file mode 100644 index 0000000..a4d0942 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_cert_block.yaml @@ -0,0 +1,282 @@ +# Copyright 2021-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +certificate_v1: + type: object + title: Certificate V1 Settings + properties: + imageBuildNumber: + type: [number, string] + title: Image Build Number + description: If it's omitted, it will be used 0 as default value. + format: number + template_value: 0 + + chainCertificate0File0: + type: string + title: Chain certificate 0 for root 0 + description: Chain certificate 0 for root certificate 0 + format: optional_file + template_value: chain_certificate0_depth0.pem + chainCertificate0File1: + type: string + title: Chain certificate 1 for root 0 + description: Chain certificate 1 for root certificate 0 + format: optional_file + template_value: chain_certificate0_depth1.pem + chainCertificate0File2: + type: string + title: Chain certificate 2 for root 0 + description: Chain certificate 2 for root certificate 0 + format: optional_file + template_value: chain_certificate0_depth2.pem + chainCertificate0File3: + type: string + title: Chain certificate 3 for root 0 + description: Chain certificate 3 for root certificate 0 + format: optional_file + template_value: chain_certificate0_depth3.pem + + chainCertificate1File0: + type: string + title: Chain certificate 0 for root 1 + description: Chain certificate 0 for root certificate 1 + format: optional_file + template_value: chain_certificate1_depth0.pem + chainCertificate1File1: + type: string + title: Chain certificate 1 for root 1 + description: Chain certificate 1 for root certificate 1 + format: optional_file + template_value: chain_certificate1_depth1.pem + chainCertificate1File2: + type: string + title: Chain certificate 2 for root 1 + description: Chain certificate 2 for root certificate 1 + format: optional_file + template_value: chain_certificate1_depth2.pem + chainCertificate1File3: + type: string + title: Chain certificate 3 for root 1 + description: Chain certificate 3 for root certificate 1 + format: optional_file + template_value: chain_certificate1_depth3.pem + + chainCertificate2File0: + type: string + title: Chain certificate 0 for root 2 + description: Chain certificate 0 for root certificate 2 + format: optional_file + template_value: chain_certificate2_depth0.pem + chainCertificate2File1: + type: string + title: Chain certificate 1 for root 2 + description: Chain certificate 1 for root certificate 2 + format: optional_file + template_value: chain_certificate2_depth1.pem + chainCertificate2File2: + type: string + title: Chain certificate 2 for root 2 + description: Chain certificate 2 for root certificate 2 + format: optional_file + template_value: chain_certificate2_depth2.pem + chainCertificate2File3: + type: string + title: Chain certificate 3 for root 2 + description: Chain certificate 3 for root certificate 2 + format: optional_file + template_value: chain_certificate2_depth3.pem + + chainCertificate3File0: + type: string + title: Chain certificate 0 for root 3 + description: Chain certificate 0 for root certificate 3 + format: optional_file + template_value: chain_certificate3_depth0.pem + chainCertificate3File1: + type: string + title: Chain certificate 1 for root 3 + description: Chain certificate 1 for root certificate 3 + format: optional_file + template_value: chain_certificate3_depth1.pem + chainCertificate3File2: + type: string + title: Chain certificate 2 for root 3 + description: Chain certificate 2 for root certificate 3 + format: optional_file + template_value: chain_certificate3_depth2.pem + chainCertificate3File3: + type: string + title: Chain certificate 3 for root 3 + description: Chain certificate 3 for root certificate 3 + format: optional_file + template_value: chain_certificate3_depth3.pem + +certificate_v21: + type: object + title: ISK (Image signing key) Certificate Settings + properties: + useIsk: + type: boolean + title: Use ISK for signature certification + description: Enable ISK type of signature certification. + template_value: false + + signingCertificateFile: + type: string + title: ISK public key + description: Path to ISK public key. + format: file + template_value: sign_cert.pub + skip_in_template: true + iskPublicKey: + type: string + title: ISK public key + description: Path to ISK public key. + format: file + template_value: sign_cert.pub + + signingCertificateConstraint: + type: [string, number] + title: ISK certificate constraint + description: Constraint is certificate version, compared with monotonic counter in fuses. + format: number + default: 0 + template_value: 0 + skip_in_template: true + iskCertificateConstraint: + type: [string, number] + title: ISK certificate constraint + description: Constraint is certificate version, compared with monotonic counter in fuses. + format: number + default: 0 + template_value: 0 + + signCertData: + type: string + title: ISK certificate user data + description: Path to user data. + format: optional_file + template_value: user_cert_data.bin + skip_in_template: true + iskCertData: + type: string + title: ISK certificate user data + description: Path to user data. + format: optional_file + template_value: user_cert_data.bin + signer: + type: string + title: Signer configuration + description: Signature provider configuration in format 'type=;=;=' or path to a private key. + template_value: type=file;file_path=root_prv_key.pem + required: [useIsk] + allOf: # Global all of group - this is main concatenation group for all sub rules + - if: + properties: + useIsk: + const: True + then: + allOf: + - oneOf: + - required: [signingCertificateFile] + - required: [iskPublicKey] + required: [signer] + +certificate_vx: + type: object + title: ISK Certificate Settings + properties: + selfSigned: + type: boolean + title: True if certificate is self signed, false for NXP Signed certificate + description: NXP Signed = false, Self signed = true + template_value: true + signingCertificateFile: + type: string + title: ISK public key + description: Path to ISK public key. + format: file + template_value: sign_cert.pub + skip_in_template: true + iskPublicKey: + type: string + title: ISK public key + description: Path to ISK public key. + format: file + template_value: sign_cert.pub + signer: + type: string + title: Signature Provider + description: Signature provider configuration in format 'type=;=;=' a path to a Main root Certification Private Key. + template_value: type=file;file_path=root_prv_key.pem + + allOf: # Global all of group - this is main concatenation group for all sub rules + - if: + properties: + useIsk: + const: True + then: + allOf: + - oneOf: + - required: [signingCertificateFile] + - required: [iskPublicKey] + required: [signer] + +cert_block_output: + type: object + title: Basic Settings + properties: + containerOutputFile: + type: string + title: cert block filename + description: Generated cert block filename. + template_value: cert_block.bin + required: [containerOutputFile] + +certificate_root_keys: + type: object + title: Root Keys Settings + properties: + rootCertificate0File: + type: string + title: Root Certificate File 0 + description: Root certificate file index 0. + format: file + template_value: my_certificate0.pub + rootCertificate1File: + type: string + title: Root Certificate File 1 + description: Root certificate file index 1. + format: optional_file + template_value: my_certificate1.pub + rootCertificate2File: + type: string + title: Root Certificate File 2 + description: Root certificate file index 2. + format: optional_file + template_value: my_certificate2.pub + rootCertificate3File: + type: string + title: Root Certificate File 3 + description: Root certificate file index 3. + format: optional_file + template_value: my_certificate3.pub + + mainRootCertId: + type: [number, string] + title: Main Certificate Index + description: Index of certificate that is used as a main. If not defined, the certificate matching private key will be selected. + format: number + template_value: 0 + + allOf: # Global all of group - this is main concatenation group for all sub rules + - oneOf: + - required: [binaryCertificateBlock] + - allOf: + - required: [rootCertificate0File] + - anyOf: + - required: [signer] + - required: [mainRootCertId] + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_dat.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_dat.yaml new file mode 100644 index 0000000..09b7933 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_dat.yaml @@ -0,0 +1,308 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +--- +dc_content: + allOf: + - required: [signer] + - oneOf: + - required: [family] + - required: [socc] + required: + - uuid + - cc_socu + - cc_vu + - cc_beacon + - rot_meta + - rot_id + - dck + + type: object + title: Debug Credential Content + properties: + socc: + type: [string, integer] + title: Device SoC Class + description: + A unique identifier for a set of SoCs that require no SoC-specific differentiation in + their debug authentication. The main usage is to allow a different set of debug + domains and options to be negotiated between the device configuration and + credentials. A class can contain just a single revision of a single SoC model, if the + granularity of debug control warrants it. + format: number + template_value: 6 + skip_in_template: true + uuid: + type: string + title: Device UUID + description: 128-bit IETF RFC4122 compliant non-sequential Universally Unique Identifier (UUID) + format: hex_value + template_value: "00000000000000000000000000000000" + cc_socu: + type: [string, integer] + title: SoC Usage + description: + A CC (constraint) value that is a bit mask, and whose bits are used in an + SoCC-specific manner. These bits are typically used for controlling which debug + domains are accessed via the authentication protocol, but device-specific debug + options can be managed in this way also. + format: number + template_value: "0x0FFF" + cc_vu: + type: [string, integer] + title: Vendor Usage + description: + A CC (constraint) value that is opaque to the debug authentication protocol itself but + which can be leveraged by vendors in product-specific ways. + format: number + template_value: 0 + cc_beacon: + type: [string, integer] + title: Credential Beacon + description: + A value that is passed through the authentication protocol, which is not interpreted + by the protocol but is instead made visible to the application being debugged. A + credential beacon is associated with a DC and is therefore vendor/RoT-signed. An + authentication beacon is provided and signed by the debugger during the + authentication process. + format: number + template_value: 0 + rot_meta: + type: array + title: RoT meta-data + description: + The RoT meta-data required by the device to corroborate; the ROTID sent in the + DAC, the field in this DC, and any additional RoT state that is not stored within the + device. This allows different RoT identification, management and revocation + solutions to be handled. + minItems: 1 + maxItems: 4 + items: + type: string + format: file + template_value: + - ./rotk0.pub + - ./rotk1.pub + - ./rotk2.pub + - ./rotk3.pub + rot_id: + type: [string, integer] + title: RoT Identifier + description: + RoTID allows the debugger to infer which RoT public key(s) are acceptable to the + device. If the debugger cannot or does not provide such a credential, the + authentication process will fail. + minimum: 0 + maximum: 100 + format: number + template_value: 0 + dck: + type: string + title: Debug Credential Key + description: + A user-owned key pair. The public part of the key is associated with a DC, the + private part is held by the user and used to produce signatures during + authentication. + format: file + template_value: dck.pub + signer: + type: string + title: Signer + description: Signature provider configuration in format 'type=;key_number=' or a private key for the RoT meta chosen by rot_id to sign the image. + template_value: type=sasp;key_number=0 + rot_config: + type: string + format: file + title: Rot Config + description: Path to a cert block binary/cert block configuration of MBI configuration. + template_value: cert_block.yaml + skip_in_template: true + +dc_srk_ca_flag: + type: object + title: Debug Credential Signature part + properties: + flag_ca: + type: boolean + title: CA Flag + description: + "CA Flag is used by HAB to indicate if the SRK is allowed to sign other keys. + In AHAB CA Flag only affects the final SRKH (Super Root Key Hash) value burned into chip fuses. It is not used in the AHAB signing process itself. + This option exists only for compatibility with systems where fuses are already programmed. In most cases, this should remain false." + template_value: false + +main_note: "\nDebug credential file has following binary structure:\n + ============================================\n + ============================================\n + === Version ===\n + ============================================\n + === Soc Class ===\n + ============================================\n + === UUID ===\n + ============================================\n + === RoT Meta SHA256 of following: ===\n + === RoT Key0 SHA256 ===\n + === RoT Key1 SHA256 ===\n + === RoT Key2 SHA256 ===\n + === RoT Key3 SHA256 ===\n + ============================================\n + === Debugger Key DCK (Pub): ===\n + === ===\n + ============================================\n + === CC SOCU ===\n + ============================================\n + === CC VU ===\n + ============================================\n + === CB ===\n + ============================================\n + === RoT Key (pub) ===\n + === ===\n + ============================================\n + ============================================\n + === Signature of all block ===\n + === SHA256 of whole block => Sign(RoTK) ===\n + ============================================\n + ============================================\n + \n\n + ============================================\n + Debug Credential Signature\n + ============================================\n + There are two ways how sign the final DC data blob.\n + \n + 1. The 'signer' option is available to specify the signature provider configuration or path to a private key. \n + The 'signer' option provides a standardized interface for external signing solutions that works \n + consistently across all SPSDK applications. \n + Previous options like 'rotk' and 'sign_provider'/'signProvider' are no longer supported \n + \n + 2. For case that Debug Credential files are generated in untrusted environment (without access to RoT private keys),\n + there is option to use plugin (example how to create own plugin is in: ./SPSDK/examples/dat/hsm/). The plugin\n + has simple interface that allows handle DC data blob into plugin with index of RoT meta public key to get back signed\n + DC image.\n + \n + Those options are exclusive, so only one option could be used to sign the DC.\n + \n + " + +ele_socu: + required: + - cc_socu + + type: object + title: Debug Credential Content + properties: + cc_socu: + type: [string, integer] + title: SoC Usage + description: + A CC (constraint) value that is a bit mask, and whose bits are used in an + SoCC-specific manner. These bits are typically used for controlling which debug + domains are accessed via the authentication protocol, but device-specific debug + options can be managed in this way also. + format: number + template_value: "0x0FFF" + +ele_dc_beacon: + type: object + title: Debug Credential Content + properties: + cc_beacon: + type: [string, integer] + title: Credential Beacon + description: + A value that is passed through the authentication protocol, which is not interpreted + by the protocol but is instead made visible to the application being debugged. A + credential beacon is associated with a DC and is therefore vendor/RoT-signed. An + authentication beacon is provided and signed by the debugger during the + authentication process. + format: number + template_value: 0 + +ele_auth_beacon: + type: object + title: Debug Credential Content + properties: + beacon: + type: [string, integer] + title: Authentication beacon + description: + Debug authentication process can be extended with beacons. DEBUG_AUTH_BEACON (this field) contain + information from debug authentication after debugger is successfully authenticated. This register contain + data from Authentication beacon [31:16] which is defined during authentication session and + Credential beacon [15:0] which is defined on RoT keys owner side during debug credential file + generation and signing. + When credential beacon non-zero value is used in this field, ROM defers opening debug access to user + application. The result of the authentication process is written to DBG_FEATURES register while the + user application after doing its extended processing, such as clean-up of critical keys and secrets, should + copy the value to DBG_FEATURES_DP register to enable the debug access. + format: number + template_value: 0 + +ahab_certificate_vendor_usage: + type: object + title: Debug Credential Content + properties: + cc_vendor_usage: + type: [number, string] + title: Vendor Usage version + description: The value must be equal to VU stored in fuses to allow loading this certificate. + format: number + template_value: 0 + +ahab_debug_certificate: + type: object + properties: + certificate: + type: string + title: The AHAB Debug Certificate file + template_title: AHAB Debug Certificate + description: + The file that contains AHAB Debug Certificate. It could be used already prepared binary form signed by SRK, or it is possible to + use configuration YAML file of debug certificate. + format: file + template_value: my_ahab_dc.bin + required: [certificate] + +dat_classic: + allOf: + - required: [signer] + required: + - certificate + - beacon + + type: object + title: Debug Authentication Content + properties: + certificate: + type: string + title: Debug Credential Certificate file + description: A debug credential binary file provided by owner of Root Keys. The file could be created by 'dc' group of commands. + format: file + template_value: dc.bin + beacon: + type: [string, integer] + title: Authentication beacon + description: + Debug authentication process can be extended with beacons. DEBUG_AUTH_BEACON (this field) contain + information from debug authentication after debugger is successfully authenticated. This register contain + data from Authentication beacon [31:16] which is defined during authentication session and + Credential beacon [15:0] which is defined on RoT keys owner side during debug credential file + generation and signing. + When credential beacon non-zero value is used in this field, ROM defers opening debug access to user + application. The result of the authentication process is written to DBG_FEATURES register while the + user application after doing its extended processing, such as clean-up of critical keys and secrets, should + copy the value to DBG_FEATURES_DP register to enable the debug access. + format: number + template_value: 0 + srk_set: + type: string + title: Keys set + description: Selection of keys origin. + enum: [oem, nxp] + default: oem + template_value: oem + signer: + type: string + title: Signer + description: Signature provider configuration in format 'type=;key_number=' or a Private key that match the public key in debug credential file, to sign Debug Authentication response. + template_value: type=sasp;key_number=0 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_devhsm.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_devhsm.yaml new file mode 100644 index 0000000..230dde8 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_devhsm.yaml @@ -0,0 +1,122 @@ +# Copyright 2021-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +common: + type: object + title: Common DevHSM settings + if: + properties: oemEncMasterShare + then: + required: [oemRandomShare] + + required: [containerOutputFile] + properties: + oemRandomShare: + type: string + title: OEM Random Share input + description: > + Path to a file containing 16B of random seed data. If not specified, random seed will be generated. In case that 'oemEncMasterShare' is defined, the 'oemRandomShare' + must be defined with the original random seed that has been used to create OEM Encrypted master share. + template_value: oem_seed.bin + format: optional_file + oemEncMasterShare: + type: string + title: OEM Encrypted Master Share + description: Path to a file containing encrypted OEM Master Share to restore a secure session + template_value: oem_enc_master_share.bin + format: optional_file + oemEncShare: + type: string + title: OEM Encrypted Share + description: Path to a file containing encrypted OEM Share to restore a secure session + template_value: oem_enc_share.bin + format: optional_file + initialReset: + type: boolean + title: Initial device reset + description: Reset the device before starting the DevHSM operation + template_value: false + finalReset: + type: boolean + title: Final device reset + description: Reset the device after the DevHSM operation + template_value: true + workspace: + type: string + title: Development/debug workspace + description: Path to a folder where to store intermediate artifacts for development/debugging purposes + template_value: wsp + format: dir_name + bufferAddress: + type: [string, number] + format: number + title: Communication buffer address + description: Address to override default communication buffer address + template_value: + containerOutputFile: + type: string + title: Output file path + description: Path where to store generated DevHSM SB file + template_value: devhsm.sb + format: file_name + +cust_mk_sk: + type: object + properties: + containerKeyBlobEncryptionKey: + type: string + title: Part Common Key + description: Path to PCK/NPK/CUST_MK_SK/SB_KEK 256 or 128 bit key in plain hex string format or path to binary file or hex string. + template_value: cust_mk_sk.bin + format: file-or-hex-value + +subTitle: | + # ================================= Minimal steps to perform DevHSM Trust Provisioning ================================= + commands: + +programLifeCycleFuse: >2 + # Advance Life-cycle to Production + - programFuses: + address: {address} + values: {value:#_x} + +loadCMPA: >2 + # Load CMPA + - load: + address: {address:#_x} + file: cmpa.bin + +loadCFPA: >2 + # Load CFPA + - load: + address: {address:#_x} + file: cfpa.bin + +loadKeyBlob: >2 + # In case you have the encryption key in plain (set via containerKeyBlobEncryptionKey) + # a default loadKeyBlob command will be injected automatically + # However, if you'd like to customize the command, use the following command. + # Please note the `plainInput` parameter + # - loadKeyBlob: + # offset: {offset:#_x} + # wrappingKeyId: NXP_CUST_KEK_EXT_SK + # file: cust_mk_sk.bin + # plainInput: bin + # + # if you already have a wrapped encryption key use loadKeyBlob command + # you may wrap the key using `nxpdevhsm wrap-cust-mk-sk` command + # in such case comment-out the `containerKeyBlobEncryptionKey` field + # - loadKeyBlob: + # offset: {offset:#_x} + # wrappingKeyId: NXP_CUST_KEK_EXT_SK + # file: wrapped_key_blob.bin + # + +writeIFR: >2 + # Write IFR command - IMPORTANT: This command must ALWAYS be placed after loadKeyBlob + # This command instructs the ROM to write the generated key blob to the flash + # The type must be set to CFPA_AND_CMPA to ensure both CFPA and CMPA regions are written + # - writeIFR: + # type: CFPA_AND_CMPA + # file: ifr_data.bin diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_el2go_tp.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_el2go_tp.yaml new file mode 100644 index 0000000..fc56fe4 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_el2go_tp.yaml @@ -0,0 +1,182 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause +el2go_tp: + type: object + properties: + url: + type: string + title: EdgeLock 2GO API URL + description: Base URL of the EdgeLock 2GO backend API without an / at the end + template_value: https://api.edgelock2go.com + api_key: + type: string + title: EdgeLock 2GO API Key + description: "REST API key used for user authentication in EdgeLock 2GO. + You may use: + 1) path to a file with the key on the first line: ~/.el2go/wpc_token.txt (~ is interpreted as your HOME) + 2) environment variable with the key: $MY_EL2GO_KEY + 3) environment variable containing a path to the key file: $MY_KEY_FILE + 4) directly your API key in plain text (not recommended)" + template_value: abcxyz123 + device_group_id: + type: number + title: Device Group ID + description: Device Group ID in which the connected secure element needs to be assigned + template_value: 49 + nc12: + type: number + title: Product 12NC + description: Product 12NC registered in EdgeLock 2GO + template_value: 123456789012 + domains: + type: array + title: Secure Objects Domains + description: List of the EdgeLock 2GO Secure Objects Domains to download. + items: + type: string + enum: [RTP, MATTER] + template_value: [RTP, MATTER] + enum_template: [RTP, MATTER] + delay: + type: number + title: Delay between EdgeLock 2GO's API calls + description: Delay in seconds between EdgeLock 2GO API requests regarding Secure Objects generation status. Default value is 5 seconds + template_value: 5 + timeout: + type: number + title: Timeout for EdgeLock 2GO API + description: Timeout in seconds of downloading Secure Objects through EdgeLock 2GO API operation. Default is 60 seconds + template_value: 60 + download_timeout: + type: number + title: Download Timeout + description: Timeout for overall download process including waiting for Secure Objects creation + template_value: 300 + + required: [api_key, device_group_id, nc12] + +prov_fw_path: + properties: + prov_fw_path: + type: string + format: file + title: NXP EL2GO Provisioning FW path + description: Path to NXP EL2GO Provisioning Firmware SB file. If you don't want to use the Provisioning FW, please comment out the line below + template_value: oem_tp_fw.sb + required: [] + +uboot_path: + properties: + uboot_path: + type: string + format: optional_file + title: Path to U-Boot binary + description: Path to U-Boot binary that will be used for writing assets to EMMC/SD + template_value: u-boot.bin + skip_in_template: True + +imx_bootloader_path: + properties: + imx_bootloader_path: + type: string + format: optional_file + title: Path to imx-bootloader + description: Path to imx-bootloader binary that will be used for writing assets to EMMC/SD. This bootloader will be loaded using the SDPS protocol as part of the preparation step. + template_value: flash.bin + +fw_load_address: + properties: + fw_load_address: + type: number + title: Address for loading the Provisioning Firmware + description: Address where to store the Provisioning Firmware. + Please note, that if you're using external memory, you have to configure the memory first. + template_value: 1234 + required: ["fw_load_address"] + +additional_data_address: + properties: + secure_objects_address: + type: number + title: Address for External (user-defined) Secure Objects + description: + Address where to store External (user-defined) Secure Objects obtained from EL2GO. + External Secure Objects refers to Secure Objects other than OEM FW Authentication Key Hash, and OEM FW Decryption Key. + Please note that the FW will always erase 8K memory block (flash page size) in the destination address, + so any data previously stored at that flash location will be gone. + If you don't use any External Secure Objects, this setting has no effect + template_value: 123456 + required: ["secure_objects_address"] + +secure_objects_address: + properties: + secure_objects_address: + type: number + title: Secure Objects address + description: Address where to store Secure Objects obtained from EL2GO. + Please note, that if you're using external memory, you have to configure the memory first. + template_value: 123456 + required: ["secure_objects_address"] + +prov_report_address: + properties: + prov_report_address: + type: number + title: Trust Provisioning Report address + description: + Address where to put the provisioning report. If you don't want to store TP Report in memory, + leave the address empty, or comment out this setting, or set to 0xFFFF_FFFF. + template_value: 0xFFFF_FFFF + required: [] + +fatwrite: + properties: + fatwrite_filename: + type: string + title: Filename of the secure objects stored in partition + description: Filename of the secure objects stored in partition. Passed to U-Boot fatwrite command. + template_value: secure_objects.bin + default: secure_objects.bin + fatwrite_interface: + type: string + title: Interface for storing the secure objects + description: Interface for storing the secure objects, passed to U-Boot fatwrite command. + template_value: mmc + default: mmc + fatwrite_device_partition: + type: string + title: Device and partition for writing the secure objects. + description: Device and partition for writing the secure objects, separated by colon. Passed to U-Boot fatwrite command. Enclose in quotes. + template_value: "0:1" + default: "0:1" + oem_provisioning_config_filename: + type: string + title: Filename of the configuration file for OEM Provisioning App + description: Filename of the configuration file for OEM Provisioning App that will be stored in partition together with the secure objects. + template_value: config.yaml + default: config.yaml + +linux_boot: + properties: + boot_linux: + type: boolean + title: Boot Linux + description: Boot Linux after provisioning + template_value: true + default: true + linux_boot_sequence: + type: array + title: Linux boot sequence + description: List of UUU commands to execute to boot Linux + items: + type: string + template_value: + [ + "setenv mmcdev 0", + "setenv mmcpart 1", + "setenv mmcroot /dev/mmcblk0p2 rootwait rw", + "run loadimage", + "run loadfdt", + "run bsp_bootcmd", + ] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fcb.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fcb.yaml new file mode 100644 index 0000000..17a611d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fcb.yaml @@ -0,0 +1,25 @@ +# Copyright 2022-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +memory_type: + type: object + required: [type] + properties: + type: + type: string + title: Memory type + description: Specify type of memory used by FCB description. + # enum: [flexspi_nor] This field will be added in run time + template_value: flexspi_nor + +fcb: + type: object + properties: + fcb_settings: + type: object + title: Settings of FCB + description: Flash Configuration settings for selected MCU. + # properties will be added in runtime + + required: [fcb_settings] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fcf.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fcf.yaml new file mode 100644 index 0000000..03da6ea --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fcf.yaml @@ -0,0 +1,14 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +fcf: + type: object + properties: + fcf: + type: object + title: Settings of FCF + description: FCF settings. + # properties will be added in runtime + + required: [fcf] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fuses.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fuses.yaml new file mode 100644 index 0000000..47b7273 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_fuses.yaml @@ -0,0 +1,11 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +fuses: + type: object + required: [registers] + properties: + registers: + type: object + title: Fuses Settings diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_general.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_general.yaml new file mode 100644 index 0000000..6f5f642 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_general.yaml @@ -0,0 +1,20 @@ +# Copyright 2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause +--- +family: + type: object + required: + - family + properties: + family: + type: string + title: The chip family name + description: + NXP chip family identifier. + template_value: mimxrt1189 + revision: + type: string + title: MCU revision + description: Revision of silicon. The 'latest' name, means most current revision. + template_value: latest diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_hab.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_hab.yaml new file mode 100644 index 0000000..ce62c6f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_hab.yaml @@ -0,0 +1,559 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +hab_input: + type: object + title: HAB Input + properties: + inputImageFile: + type: string + title: Plain application image + description: The input application image in plain BIN, S-REC or ELF. + format: file_name + template_value: my_application.bin + required: ["inputImageFile"] + +hab: + type: object + required: [options] + properties: + options: + type: object + title: HAB Options + description: An options block contains zero or more name/value pairs and the option settings that assign values to global options used by the nxpimage to control the generation of the output file. + allOf: + - required: [family, flags, startAddress] + - oneOf: + - required: [ivtOffset, initialLoadSize] + - required: [bootDevice] + properties: + flags: + type: + - number + - string + title: HAB flags + description: HAB flags. 0x0 for unsigned, 0x08 signed, 0x0C encrypted. + template_value: 0x8 + startAddress: + type: + - number + - string + title: Image start address + description: "First address of the bootable image in the target memory." + template_value: 0x60000000 + ivtOffset: + type: + - number + - string + title: IVT Offset + description: "Offset of IVT table(beginning of HAB container) from startAddress. This option can be omitted if family and bootDevice are specified." + template_value: 0x1000 + initialLoadSize: + type: + - number + - string + title: Initial Load size + description: "Size of the segments(such as IVT, BDT, DCD, XMCD) placed before the actual application image. The value is specific per boot device type. This option can be omitted if family and bootDevice are specified." + template_value: 0x2000 + entryPointAddress: + type: + - number + - string + title: Entry Point address + description: "Reset vector of the application. If not specified, the vector will be automatically detected from the input image." + template_value: 0x800041f5 + family: + type: string + title: Family + description: "Processor family" + template_value: mimxrt1010 + bootDevice: + type: string + title: Boot device + description: "Boot device memory where the image is booted from. If not specified, the ivtOffset and initialLoadSize must be defined." + template_value: flexspi_nor + signatureTimestamp: + type: string + title: Timestamp of the signature + description: "Date and time when the signature was created. Format: day/month/year hour:minute:second (DD/MM/YYYY HH:MM:SS)" + template_value: "31/05/2023 11:22:33" + DCDFilePath: + type: string + title: DCD file path + description: "Optional path to DCD data." + template_value: "dcd.bin" + XMCDFilePath: + type: string + title: XMCD file path + description: "Optional path to XMCD data." + template_value: "xmcd.bin" + +hab_sections: + type: object + title: CSF Sections + properties: + sections: + type: array + title: CSF Sections + description: CSF Sections. + items: + oneOf: + - type: object + required: + - Header + properties: + Header: + type: object + title: Header + description: >- + The Header command contains data used in the CSF header as well as default values used by the CST for other commands throughout the remaining CSF. + There must be exactly one Header command and it must appear first in the CSF. + properties: + Header_Version: + type: + - string + - number + title: Version + description: Version of HAB. + template_value: "4.2" + Header_HashAlgorithm: + type: + - string + title: Hash algorithm + description: Default hash algorithm. + template_value: "sha256" + enum: ["sha256"] + Header_Engine: + type: string + title: Engine + description: Default engine. + template_value: "ANY" + enum: + - ANY + - SAHARA + - RTIC + - DCP + - CAAM + - SW + Header_EngineConfiguration: + type: + - string + - number + title: Engine configuration + description: Default engine configuration. See the CST manual for more info. + template_value: 0 + Header_CertificateFormat: + type: + - string + title: Certificate format + description: Default certificate format. + template_value: "x509" + enum: + - x509 + - WTLS + Header_SignatureFormat: + type: + - string + - number + title: Signature format + description: Default signature format. + template_value: "CMS" + enum: + - PKCS1 + - CMS + required: + - Header_Version + - type: object + required: + - InstallSRK + properties: + InstallSRK: + type: object + title: Install SRK + description: >- + The Install SRK command authenticates and installs the root public key for use in subsequent Install CSFK (HAB only) or Install Key (HAB4 only) commands. + HAB or AHAB authenticates the SRK using the SRK hash (SRK_HASH) fuses. HAB4 or AHAB allows revocation of individual keys within the SRK table using the SRK revocation (SRK_REVOKE) fuses. + HAB installs the SRK in slot 0 of its internal public key store. + There must be exactly one Install SRK command in a CSF, and it must occur before the Install + CSFK (HAB only) command. + properties: + InstallSRK_Table: + type: string + title: SRK table binary file + description: Valid file path + template_value: "srk_table.bin" + InstallSRK_SourceIndex: + type: number + title: InstallSRK SourceIndex + description: SRK index within SRK table. Installation fails if the SRK revocation fuse with this index is burned. + enum: + - 0 + - 1 + - 2 + - 3 + template_value: 0 + required: + - InstallSRK_Table + - InstallSRK_SourceIndex + - type: object + required: + - InstallCSFK + properties: + InstallCSFK: + type: object + title: Install CSFK + description: + The Install CSFK command authenticates and installs a public key for use in subsequent Install Key (HAB3 only) or Authenticate CSF commands. + HAB authenticates the CSFK from the CSFK certificate using the SRK. + HAB installs the CSFK in slot 1 of its internal public key store. + There must be exactly one Install CSFK command in a CSF, and it must occur before the Authenticate CSF command. + properties: + InstallCSFK_File: + type: string + title: CSFK Certificate + description: Valid path. + template_value: "csf.der" + InstallCSFK_CertificateFormat: + type: string + title: Certificate Format + description: CSFK certificate format. + enum: + - x509 + - WTLS + template_value: x509 + required: + - InstallCSFK_File + - type: object + required: + - InstallNOCAK + properties: + InstallNOCAK: + type: object + title: Install NOCAK + description: + The Install NOCAK command authenticates and installs a public key for use with the fast authentication mechanism (HAB 4.1.2 and later only). With this mechanism, one key is used for all signatures. + HAB installs the no-CA key in slot 1 of its internal public key store. + There must be exactly one Install NOCAK command in a CSF, and it must occur before the Authenticate CSF command and there must be no Install Key commands. + properties: + InstallNOCAK_File: + type: string + title: NOCAK Certificate + description: Valid path. + template_value: "srk.pem" + InstallNOCAK_CertificateFormat: + type: string + title: Certificate Format + description: NOCAK certificate format. + enum: + - x509 + - WTLS + template_value: x509 + required: + - InstallNOCAK_File + - type: object + required: + - AuthenticateCSF + properties: + AuthenticateCSF: + type: object + title: Authenticate CSF + description: + The Authenticate CSF command authenticates the CSF from which it is executed. + HAB authenticates the CSF using the CSFK public key, from a digital signature generated automatically by the CST. + There must be exactly one Authenticate CSF command in a CSF file, and it must occur after the Install CSFK command. Most other CSF commands are allowed only after the Authenticate CSF command. + properties: + AuthenticateCSF_EngineConfiguration: + type: + - string + - number + title: Engine configuration + description: Default engine configuration. See the CST manual for more info. + template_value: 0 + AuthenticateCSF_CertificateFormat: + type: + - string + title: Certificate format + description: Default certificate format. + template_value: "x509" + enum: + - x509 + - WTLS + AuthenticateCSF_SignatureFormat: + type: + - string + - number + title: Signature format + description: Default signature format. + template_value: "CMS" + enum: + - PKCS1 + - CMS + Signer: + type: + - string + title: Signer + description: Signature provider configuration string or a path to authenticate CSF private key file. + template_value: "type=file;file_path=keys/CSF1_1_sha256_2048_65537_v3_usr_key.pem;password=PrivateKeyPwd" + - type: object + required: + - InstallKey + properties: + InstallKey: + type: object + title: Install Key + description: + The Install Key command authenticates and installs a public key for use in subsequent Install Key or Authenticate Data commands. + HAB authenticates a public key from a public key certificate using a previously installed verifying key and a hash of the public key certificate. + HAB installs the authenticated public key in an internal public key store with a zero-based array of key slots. + The CSF author is responsible for managing the key slots in the internal public key store to establish the desired public key hierarchy and determine the keys used in authentication operations. Overwriting occupied key slots is not allowed, although a repeat command to re- install the same public key occupying the target slot will be skipped and not generate an error. + properties: + InstallKey_File: + type: string + title: Public key certificate + description: Valid file path. + template_value: "imgk.pem" + InstallKey_VerificationIndex: + type: number + title: Verification Index + description: Verification key index in key store. CSFK not supported. + enum: + - 0 + - 2 + - 4 + template_value: 0 + InstallKey_TargetIndex: + type: number + title: Target Index + description: Target key index in key store. SRK, CSFK slots reserved. + enum: + - 2 + - 4 + template_value: 2 + required: + - InstallKey_File + - InstallKey_VerificationIndex + - InstallKey_TargetIndex + - type: object + required: + - AuthenticateData + properties: + AuthenticateData: + type: object + title: Authenticate Data + description: + The Authenticate Data command verifies the authenticity of pre-loaded data in memory. The data may include executable SW instructions and may be spread across multiple non-contiguous address ranges drawn from multiple object files. + HAB authenticates the pre-loaded data using a previously installed public key from a digital signature generated automatically by the CST. + properties: + AuthenticateData_VerificationIndex: + type: number + title: Verification Index + description: Verification key index in key store. SRK, CSFK not supported. NOTE For HAB4 Fast Authentication, this must be 0 + enum: + - 0 + - 2 + - 4 + template_value: 2 + AuthenticateData_Engine: + type: string + title: Engine + description: Data signature hash engine. + enum: + - ANY + - SAHARA + - RTIC + - DCP + - CAAM + - SW + template_value: ANY + AuthenticateData_EngineConfiguration: + type: + - string + - number + title: Engine Configuration + description: Configuration flags for the engine. See the CSF manual. + template_value: 0 + Signer: + type: + - string + title: Signer + description: Signature provider configuration string or a path to authenticate IMG private key file. + template_value: "type=file;file_path=keys/IMG1_1_sha256_2048_65537_v3_usr_key.pem;password=PrivateKeyPwd" + required: + - AuthenticateData_VerificationIndex + - type: object + required: + - SetEngine + properties: + SetEngine: + type: object + title: Set Engine + description: + The Set Engine command selects the default engine and engine configuration for a given algorithm. HAB3 does not support the Set Engine command. + Some CSF commands allow the CSF author to select the engine used for an algorithm by specifying an argument other than ANY. However, if the engine argument is ANY, then HAB selects the engine to use based on internal criteria. The Set Engine command overrides the HAB internal criteria and selects the engine and configuration to use when ANY is specified. + + Some algorithm types do not have an associated engine argument in the CSF commands (e.g. the signature algorithm in Authenticate Data commands). By default, HAB selects the engine to use for such algorithms based on internal criteria. The Set Engine command overrides the HAB internal criteria in such cases as well. + Multiple Set Engine commands may appear anywhere in a CSF after the Header command. Subsequent commands use the engine selected by the most recent Set Engine command + properties: + SetEngine_HashAlgorithm: + type: string + title: Hash Algorithm + description: Hash algorithm. + enum: + - sha256 + template_value: sha256 + SetEngine_Engine: + type: string + title: Engine + description: Engine, use ANY to restore internal HAB criteria. + template_value: "ANY" + enum: + - ANY + - SAHARA + - RTIC + - DCP + - CAAM + - SW + SetEngine_EngineConfiguration: + type: + - string + - number + title: Engine configuration + description: Default engine configuration. See the CST manual for more info. + template_value: 0 + required: + - SetEngine_HashAlgorithm + - SetEngine_Engine + - type: object + required: + - Unlock + properties: + Unlock: + type: object + title: Unlock + description: + The Unlock command prevents specified engine features from being locked when exiting the internal boot ROM. HAB3 does not support the Unlock command. + Multiple Unlock commands may appear after the Authenticate CSF command. A feature will be unlocked if specified in one or more Unlock commands. + properties: + Unlock_Engine: + type: string + title: Engine + description: Engine to unlock. + enum: + - SRTC + - CAAM + - SNVS + - OCOTP + template_value: OCOTP + Unlock_Features: + type: [string, array] + title: Features + description: Comma-separated list of features to unlock. + template_value: ['JTAG', 'SRK REVOKE'] + Unlock_UID: + type: [string, array] + title: Unlock UID + description: List of UIDs. + template_value: [0x1, 0x23, 0x45, 0x67] + - type: object + required: + - SecretKey + properties: + SecretKey: + type: object + title: Install Secret Key + description: This command is applicable from HAB 4.1 onwards and only on processors which include CAAM and SNVS. Each instance of this command generates a CSF command to install a secret key in CAAM's secret key store. + properties: + SecretKey_Name: + type: string + title: Key + description: CMS encrypted data encryption key. + template_value: "dek.bin" + SecretKey_Length: + type: number + title: Key length + description: Key length in bits + enum: + - 128 + - 192 + - 256 + template_value: 128 + SecretKey_VerifyIndex: + type: number + title: Verification index + description: Master KEK index. 0 or 1 OTPMK from fuses. 2 ZMK from SNVS, 3 CMK from SNVS. + enum: + - 0 + - 1 + - 2 + - 3 + template_value: 0 + SecretKey_TargetIndex: + type: number + title: Target index + description: Target secret key store index. + enum: + - 0 + - 1 + - 2 + - 3 + template_value: 0 + SecretKey_ReuseDek: + type: + - boolean + - number + title: Reuse DEK + description: If set, the secret key from SecretKey_Name parameter will be used. If not, a random key will be generated and stored. + template_value: false + required: + - SecretKey_Name + - SecretKey_TargetIndex + - type: object + required: + - Decrypt + properties: + Decrypt: + type: object + title: Decrypt Data + description: This command is applicable from HAB4.1 onwards. Each instance generates a CSF command to decrypt and authenticate a list of code/data blocks using secret key stored in the secret key store. CST will generate a corresponding AUT_DAT command. CST will encrypt the data blocks in- place in the given files using a secret key and generate MAC data which is appended to the CSF. The secret key index must have been the target key index in a preceding Install Secret Key command. The same secret key must never be used more than once. The secret key used is removed from the secret key store by the Decrypt Data command. A separate Install Secret Key command (which generates a fresh secret key) is required for another Decrypt Data command. + properties: + Decrypt_VerifyIndex: + type: number + title: Verification Index + description: Secret key index in Secret key store. + enum: + - 0 + - 1 + - 2 + - 4 + template_value: 0 + Decrypt_Engine: + type: string + title: Engine + description: MAC Engine. + enum: + - ANY + - CAAM + - DCP + template_value: ANY + Decrypt_EngineConfiguration: + type: + - string + - number + title: Engine Configuration + description: Configuration flags for the engine. See the CSF manual. + template_value: 0 + Decrypt_MacBytes: + type: + - string + - number + title: Mac Bytes + description: Size of MAC in bytes. Even value between 4 and 16. + template_value: 16 + Decrypt_Nonce: + type: string + title: Nonce + description: If set, the nonce from the given file will be used. If not, a random nonce will be generated. + template_value: "nonce.bin" + required: + - Decrypt_VerifyIndex diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_hse.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_hse.yaml new file mode 100644 index 0000000..dae89e5 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_hse.yaml @@ -0,0 +1,620 @@ +# Copyright 2025-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +key_info: + type: object + title: HSE Key Information + required: [output, keyType, keyBitLen] + properties: + output: + type: string + title: Output file name + description: Output Key Info file name + format: file_name + template_value: key_info.bin + + keyType: + type: string + title: Key Type + description: Type of the cryptographic key + enum: [SHE, AES, HMAC, SHARED_SECRET, SIPHASH, ECC_PAIR, ECC_PUB, ECC_PUB_EXT, + RSA_PAIR, RSA_PUB, RSA_PUB_EXT, DH_PAIR, DH_PUB] + template_value: AES + + keyBitLen: + type: number + title: Key Bit Length + description: Length of the key in bits + format: number + enum: [0, 64, 128, 160, 192, 224, 240, 256, 320, 384, 512, 521, 638, 1024, 2048, 3072, 4096] + template_value: 256 + + keyCounter: + type: [number, string] + title: Key Counter + description: Counter value for rollback protection (0 to 0xFFFFFFFE) + format: number + minimum: 0 + maximum: 0xFFFFFFFE + template_value: 0 + + keyFlags: + type: array + title: Key Flags + description: | + Flags defining key properties and usage restrictions: + - USAGE_ENCRYPT: Key is used to encrypt data (including keys if USAGE_KEY_PROVISION is set) + - USAGE_DECRYPT: Key is used to decrypt data (including keys if USAGE_KEY_PROVISION is set) + - USAGE_SIGN: Key is used to generate digital signatures or MACs of any data (including keys if USAGE_KEY_PROVISION is set) + - USAGE_VERIFY: Key is used to verify digital signatures or MACs of any data (including keys if USAGE_KEY_PROVISION is set) + - USAGE_EXCHANGE: Key may be used for key exchange operations + - USAGE_DERIVE: Key may be used as a base key for deriving other keys + - USAGE_KEY_PROVISION: Key used for key provisioning operation. Provision keys can only be NVM keys. This flag along with encrypt/decrypt/sign/verify flags specifies which operations can be performed on a key using this provisioning key + - USAGE_AUTHORIZATION: Key can be used for system authorization. Can be set only for NVM keys. This key should have the verify flag set, but the sign flag NOT set + - USAGE_SMR_DECRYPT: The key is used for SMR decryption. If this flag is set during key installation, HSE will set the USAGE_DECRYPT flag to zero + - ACCESS_WRITE_PROT: The key is write protected and cannot change anymore. For RAM keys, this flag is forced to zero + - ACCESS_DEBUG_PROT: The key is disabled when a debugger is attached. For RAM keys, this flag is forced to zero + - ACCESS_EXPORTABLE: The key can be exported in any format. Ignored when used in combination with USAGE_KEY_PROVISION or USAGE_AUTHORIZATION (provision/authorization keys are NOT exportable) + - USAGE_XTS_TWEAK: This is used as a tweak key in XTS AES encryption; no other flag shall be set + - USAGE_OTFAD_DECRYPT: The key is used just in OTFAD decryption; no other flag shall be set + items: + type: string + enum: [USAGE_ENCRYPT, USAGE_DECRYPT, USAGE_SIGN, USAGE_VERIFY, USAGE_EXCHANGE, + USAGE_DERIVE, USAGE_KEY_PROVISION, USAGE_AUTHORIZATION, USAGE_SMR_DECRYPT, + ACCESS_WRITE_PROT, ACCESS_DEBUG_PROT, ACCESS_EXPORTABLE, USAGE_XTS_TWEAK, + USAGE_OTFAD_DECRYPT] + template_value: [USAGE_ENCRYPT, USAGE_DECRYPT] + enum_template: [USAGE_ENCRYPT, USAGE_DECRYPT, USAGE_SIGN, USAGE_VERIFY, USAGE_EXCHANGE, + USAGE_DERIVE, USAGE_KEY_PROVISION, USAGE_AUTHORIZATION, USAGE_SMR_DECRYPT, + ACCESS_WRITE_PROT, ACCESS_DEBUG_PROT, ACCESS_EXPORTABLE, USAGE_XTS_TWEAK, + USAGE_OTFAD_DECRYPT] + + smrFlags: + type: array + title: SMR Flags + description: Secure Memory Region flags that must be verified before key usage + items: + type: integer + minimum: 0 + maximum: 31 + minItems: 1 # At least one item + maxItems: 32 # At most 32 items (since range is 0-31) + uniqueItems: true # No duplicates allowed + template_value: [] + enum_template: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31] + + specificData: + title: Key-Specific Data + description: Additional data specific to the key type + oneOf: + - type: object + title: ECC Key Specific Data + description: Specific data for ECC keys + required: [eccCurveId] + properties: + eccCurveId: + type: string + title: ECC Curve ID + description: Elliptic curve to use with ECC keys + enum: [NONE, SEC_SECP256R1, SEC_SECP384R1, SEC_SECP521R1, BRAINPOOL_P256R1, + BRAINPOOL_P320R1, BRAINPOOL_P384R1, BRAINPOOL_P512R1, + ED25519, CURVE25519, ED448, CURVE448, USER_CURVE1, USER_CURVE2, USER_CURVE3] + template_value: SEC_SECP256R1 + + - type: object + title: RSA Key Specific Data + description: Specific data for RSA keys + required: [pubExponentSize] + properties: + pubExponentSize: + type: [number, string] + title: RSA Public Exponent Size + description: Size of RSA public exponent in bytes (must be less than 16) + format: number + template_value: 3 + + - type: object + title: AES Key Specific Data + description: Specific data for AES keys + required: [aesBlockModeMask] + properties: + aesBlockModeMask: + type: array + title: AES Block Mode Mask + description: Allowed block modes for AES keys + items: + type: string + enum: [BLOCK_MODE_XTS, BLOCK_MODE_CTR, BLOCK_MODE_CBC, BLOCK_MODE_ECB, + BLOCK_MODE_CFB, BLOCK_MODE_OFB, BLOCK_MODE_CCM, BLOCK_MODE_GCM] + template_value: [BLOCK_MODE_CBC, BLOCK_MODE_CTR] + +key_catalog: + type: object + title: HSE Key Catalog Configuration + required: [output, nvmKeyGroups, ramKeyGroups] + properties: + output: + type: string + title: Output file name + description: Output Key Catalog Configuration file name + format: file_name + template_value: key_catalog.bin + + nvmKeyGroups: + type: array + title: NVM Key Groups + description: Configuration for NVM key groups + minItems: 1 + items: + type: object + properties: + muMask: + type: string + title: MU Mask + description: Specifies which Message Units can access this key group + enum: [NONE, MU0, MU1, MU2, MU3, ALL] + default: ALL + template_value: ALL + + groupOwner: + type: string + title: Group Owner + description: Specifies the owner of the key group + enum: [ANY, CUST, OEM] + default: ANY + template_value: ANY + + keyType: + type: string + title: Key Type + description: Type of keys in this group + enum: [SHE, AES, HMAC, SHARED_SECRET, SIPHASH, ECC_PAIR, ECC_PUB, ECC_PUB_EXT, + RSA_PAIR, RSA_PUB, RSA_PUB_EXT, DH_PAIR, DH_PUB] + template_value: AES + + numOfKeySlots: + type: [number, string] + title: Number of Key Slots + description: Number of key slots in this group + format: number + minimum: 1 + maximum: 254 + template_value: 10 + + maxKeyBitLen: + type: [string, number] + title: Maximum Key Bit Length + description: Maximum bit length for keys in this group + format: number + enum: [0, 64, 128, 160, 192, 224, 240, 256, 320, 384, 512, 521, 638, 1024, 2048, 3072, 4096] + template_value: 256 + required: [keyType, numOfKeySlots, maxKeyBitLen] + template_value: + - muMask: ALL + groupOwner: ANY + keyType: SHE + numOfKeySlots: 10 + maxKeyBitLen: 256 + - muMask: ALL + groupOwner: CUST + keyType: AES + numOfKeySlots: 5 + maxKeyBitLen: 256 + + ramKeyGroups: + type: array + title: RAM Key Groups + description: Configuration for RAM key groups + minItems: 1 + items: + type: object + properties: + muMask: + type: string + title: MU Mask + description: Specifies which Message Units can access this key group + enum: [NONE, MU0, MU1, MU2, MU3, ALL] + default: ALL + template_value: ALL + + groupOwner: + type: string + title: Group Owner + description: Specifies the owner of the key group + enum: [ANY, CUST, OEM] + default: ANY + template_value: ANY + + keyType: + type: string + title: Key Type + description: Type of keys in this group + enum: [SHE, AES, HMAC, SHARED_SECRET, SIPHASH, ECC_PAIR, ECC_PUB, ECC_PUB_EXT, + RSA_PAIR, RSA_PUB, RSA_PUB_EXT, DH_PAIR, DH_PUB] + template_value: AES + + numOfKeySlots: + type: [number, string] + title: Number of Key Slots + description: Number of key slots in this group + format: number + minimum: 1 + maximum: 254 + template_value: 10 + + maxKeyBitLen: + type: [string, number] + title: Maximum Key Bit Length + description: Maximum bit length for keys in this group + format: number + enum: [0, 64, 128, 160, 192, 224, 240, 256, 320, 384, 512, 521, 638, 1024, 2048, 3072, 4096] + template_value: 256 + required: [keyType, numOfKeySlots, maxKeyBitLen] + template_value: + - muMask: ALL + groupOwner: ANY + keyType: SHE + numOfKeySlots: 5 + maxKeyBitLen: 256 + - muMask: ALL + groupOwner: ANY + keyType: AES + numOfKeySlots: 5 + maxKeyBitLen: 256 + +smr: + type: object + title: HSE Secure Memory Region Entry + description: Configuration for a Secure Memory Region (SMR) entry that defines memory regions to be verified during boot or runtime + required: [output,smrSrcAddr, smrSize, authKeyHandle, authScheme] + properties: + output: + type: string + title: Output file name + description: Output SME entry file name + format: file_name + template_value: emr_entry.bin + smrSrcAddr: + type: [number, string] + title: SMR Source Address + description: Source address where the SMR needs to be loaded from. This address must be an absolute address. + format: number + template_value: "0x0040_0000" + + smrSize: + type: [number, string] + title: SMR Size + description: The size in bytes of the SMR to be loaded/verified + format: number + minimum: 1 + template_value: "0x0001_0000" + + smrDest: + type: [number, string] + title: SMR Destination Address + description: | + Destination address of SMR (where to copy the SMR after authentication). + For HSE_B, if specified (non-zero), smrDest and (smrDest + smrSize) must be aligned to 16 bytes. + Set to 0 if no copy is needed. + format: number + template_value: "0x0" + + configFlags: + type: string + title: Configuration Flags + description: Configuration flags of SMR entry + enum: [QSPI_FLASH, SD_FLASH, MMC_FLASH, INSTALL_AUTH, AUTH_AAD] + template_value: QSPI_FLASH + + checkPeriod: + type: [number, string] + title: Check Period + description: | + If non-zero, HSE verifies the SMR entry periodically (in background). + Specifies the verification period in x100 milliseconds when HSE is running at maximum frequency. + The value 0xFFFFFFFF is invalid; the checkPeriod max value must be [MAX_UNSIGNED32_INT - 1]. + If checkPeriod is non-zero, smrDest must be non-zero and configFlags must be zero. + Set to 0 to disable periodic verification. + format: number + minimum: 0 + maximum: 0xFFFFFFFE + template_value: "0x0" + + authKeyHandle: + type: object + title: Authentication Key Handle + description: | + The key handle used to check the authenticity of the plaintext SMR. + If INSTALL_AUTH flag is cleared, the authKeyHandle is used only in the Installation Phase. + The key flags must be configured with USAGE_VERIFY set and USAGE_SIGN NOT set. + required: [catalogId, groupIdx, slotIdx] + properties: + catalogId: + type: string + title: Key Catalog ID + description: Key catalog type (ROM, NVM, or RAM) + enum: [ROM, NVM, RAM] + template_value: NVM + + groupIdx: + type: [number, string] + title: Group Index + description: Group index in catalog + format: number + minimum: 0 + maximum: 254 + template_value: 0 + + slotIdx: + type: [number, string] + title: Slot Index + description: Key slot index within the group + format: number + minimum: 0 + maximum: 254 + template_value: 0 + + authScheme: + title: Authentication Scheme + description: | + The authentication scheme used to verify the SMR either during the Installation Phase or Verification phase. + If INSTALL_AUTH flag is set, the same authentication scheme (installation TAG) can be used + to verify the authenticity of SMR during verification phase too; otherwise an internal authentication scheme is used. + oneOf: + - type: object + title: ECDSA Signature Scheme + description: ECDSA signature scheme for SMR authentication + required: [ecdsa] + properties: + ecdsa: + type: object + title: ECDSA Parameters + required: [hashAlgo] + properties: + hashAlgo: + type: string + title: Hash Algorithm + description: Hash algorithm for ECDSA signature + enum: [SHA_1, SHA224, SHA256, SHA384, SHA512, SHA512_224, SHA512_256, + SHA3_224, SHA3_256, SHA3_384, SHA3_512, MP] + template_value: SHA256 + + - type: object + title: EdDSA Signature Scheme + description: EdDSA signature scheme for SMR authentication + required: [eddsa] + properties: + eddsa: + type: object + title: EdDSA Parameters + properties: + preHashEddsa: + type: boolean + title: Pre-hash EdDSA + description: Use pre-hashing for EdDSA scheme + template_value: false + + contextLength: + type: [number, string] + title: Context Length + description: Length of context for EdDSA (0-255 bytes, maximum 16 bytes for SMR) + format: number + minimum: 0 + maximum: 16 + template_value: 0 + + contextAddr: + type: [number, string] + title: Context Address + description: Address of context data for EdDSA (required if contextLength > 0) + format: number + template_value: 0 + + - type: object + title: RSASSA-PSS Signature Scheme + description: RSASSA-PSS signature scheme for SMR authentication + required: [rsassa_pss] + properties: + rsassa_pss: + type: object + title: RSASSA-PSS Parameters + required: [hashAlgo] + properties: + hashAlgo: + type: string + title: Hash Algorithm + description: Hash algorithm for RSASSA-PSS signature + enum: [SHA_1, SHA224, SHA256, SHA384, SHA512, SHA512_224, SHA512_256, + SHA3_224, SHA3_256, SHA3_384, SHA3_512, MP] + template_value: SHA256 + + saltLength: + type: [number, string] + title: Salt Length + description: Salt length for RSASSA-PSS scheme + format: number + minimum: 0 + template_value: 32 + + - type: object + title: RSASSA-PKCS1-v1.5 Signature Scheme + description: RSASSA-PKCS1-v1.5 signature scheme for SMR authentication + required: [rsassa_pkcs1_v15] + properties: + rsassa_pkcs1_v15: + type: object + title: RSASSA-PKCS1-v1.5 Parameters + required: [hashAlgo] + properties: + hashAlgo: + type: string + title: Hash Algorithm + description: Hash algorithm for RSASSA-PKCS1-v1.5 signature + enum: [SHA_1, SHA224, SHA256, SHA384, SHA512, SHA512_224, SHA512_256, + SHA3_224, SHA3_256, SHA3_384, SHA3_512, MP] + template_value: SHA256 + + - type: object + title: CMAC Scheme + description: CMAC (AES-based) authentication scheme for SMR + required: [cmac] + properties: + cmac: + type: object + title: CMAC Parameters + properties: + cipherAlgo: + type: string + title: Cipher Algorithm + description: Cipher algorithm for CMAC scheme (only AES is supported) + enum: [AES] + template_value: AES + default: AES + + - type: object + title: GMAC Scheme + description: GMAC (AES-GCM based) authentication scheme for SMR + required: [gmac] + properties: + gmac: + type: object + title: GMAC Parameters + required: [ivLength, ivAddr] + properties: + ivLength: + type: [number, string] + title: IV Length + description: Length of initialization vector for GMAC scheme + format: number + minimum: 1 + template_value: 12 + + ivAddr: + type: [number, string] + title: IV Address + description: Address of initialization vector for GMAC scheme + format: number + template_value: "0x0050_0000" + + - type: object + title: XCBC-MAC Scheme + description: XCBC-MAC (AES128-based) authentication scheme for SMR + required: [xcbc_mac] + properties: + xcbc_mac: + type: object + title: XCBC-MAC Parameters + properties: {} + + - type: object + title: HMAC Scheme + description: HMAC authentication scheme for SMR + required: [hmac] + properties: + hmac: + type: object + title: HMAC Parameters + required: [hashAlgo] + properties: + hashAlgo: + type: string + title: Hash Algorithm + description: Hash algorithm for HMAC + enum: [SHA_1, SHA224, SHA256, SHA384, SHA512, SHA512_224, SHA512_256, + SHA3_224, SHA3_256, SHA3_384, SHA3_512, MP] + template_value: SHA256 + + instAuthTagAddrs: + type: array + title: Installation Authentication Tag Addresses + description: | + Optional - The location in external flash of the initial proof of authenticity over SMR. + If INSTALL_AUTH flag is set, specifies the address(es) where the SMR original authentication TAG is located. + For MAC and RSA signature, only first address is used. + Both addresses are used for ECDSA and EDDSA signatures (r at index 0, s at index 1). + minItems: 2 + maxItems: 2 + items: + type: [number, string] + format: number + template_value: [0, 0] + + smrDecrypt: + type: object + title: SMR Decryption Parameters + description: Specifies the parameters for SMR decryption (optional) + if: + properties: + aadLength: + not: + const: 0 + then: + required: [decryptKeyHandle, aadAddr] + else: + required: [decryptKeyHandle] + properties: + decryptKeyHandle: + type: object + title: Decryption Key Handle + description: The key handle referencing the decryption key + required: [catalogId, groupIdx, slotIdx] + properties: + catalogId: + type: string + title: Key catalog type (ROM, NVM, or RAM) + enum: [ROM, NVM, RAM] + template_value: NVM + + groupIdx: + type: [number, string] + title: Group Index + format: number + minimum: 0 + maximum: 254 + template_value: 0 + + slotIdx: + type: [number, string] + title: Key slot index within the group + format: number + minimum: 0 + maximum: 254 + template_value: 0 + + gmacTagAddr: + type: [number, string] + title: GMAC Tag Address + description: Address of the Tag used for GCM. If set to 0, AES-CTR is used for decryption. + format: number + template_value: 0 + + aadLength: + type: [number, string] + title: AAD Length + description: The length in bytes of the Authenticated Additional Data (AAD). Must be 0, 64, or 128 bytes. + format: number + enum: [0, 64, 128] + template_value: 0 + + aadAddr: + type: [number, string] + title: AAD Address + description: The address of AAD used for AEAD (required if aadLength > 0) + format: number + template_value: 0 + + versionOffset: + type: [number, string] + title: Version Offset + description: | + Optional - The offset in SMR where the image version can be found. + Provides anti-rollback protection for the image against attacks during update. + Set to 0 to disable version checking. + If used, must be a valid offset within the SMR in range [4, smrSize - 4]. + Must be aligned to 4 bytes. + Once used, all subsequent updates must have a version GREATER than the previous one. + Not used for SHE based secure boot. + format: number + minimum: 0 + template_value: 0 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_iee.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_iee.yaml new file mode 100644 index 0000000..dffab1c --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_iee.yaml @@ -0,0 +1,260 @@ +# Copyright 2022-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +iee_output: + type: object + title: Basic Settings + properties: + output_folder: + type: string + title: IEE output directory + description: Path to directory where the IEE output will be generated + template_value: "iee_output" + + output_format: + type: string + title: Output data file format's + description: Output file format for IEE image(s) + enum: [bin, hex, srec, sparse] + template_value: bin + + output_name: + type: string + title: Output binary image filename + description: Filename of the output image containing keyblobs and encrypted data blobs without file extension (.bin will be appended) + template_value: "iee_full_image" + default: "iee_full_image" + + keyblob_name: + type: string + title: Keyblob filename + description: Filename of the keyblob without file extension (.bin will be appended) + template_value: "iee_keyblob" + default: "iee_keyblob" + + encrypted_name: + type: string + title: Encrypted name + description: filename of the encrypted datablobs without file extension (.bin will be appended) + template_value: "encrypted_blob" + default: "encrypted_blob" + + generate_readme: + type: boolean + title: Generate readme.txt + description: Readme file contains information about image layout + template_value: true + default: true + + generate_fuses_script: + type: boolean + title: Generate blhost batch file to burn fuses + description: BCF file with fuses configuration + template_value: true + default: true + required: [output_folder] + +iee: + type: object + title: IEE Settings + required: [keyblob_address] + properties: + keyblob_address: + type: [string, number] + title: Base address of the IEE keyblob + description: Should be aligned to 1 kB + format: number + template_value: "0x30000000" + + data_blobs: + type: array + title: Data blobs list + description: List of all data blobs that will be encrypted + items: + type: object + required: [data] + properties: + data: + type: string + title: Binary data blob + description: Path to binary file with plain text data to be encrypted + format: file + template_value: my_data.bin + + address: + type: [number, string] + title: Data blob address + description: Data blob address, it doesn't have to be specified for S-REC + format: number + template_value: "0x30001000" + +ibkek: + type: object + title: Keyblob Encryption Key + required: [ibkek1, ibkek2] + properties: + ibkek1: + type: [string, number] + title: IBKEK1 AES-XTS 256-bit key + description: IBKEK1 AES-XTS key for keyblob encryption + format: number + template_value: "0x000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F" + + ibkek2: + type: [string, number] + title: IBKEK2 AES-XTS 256-bit key + description: IBKEK2 AES-XTS key for keyblob encryption + format: number + template_value: "0x202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F" + +key_blobs: + type: object + title: List of Key Blobs used by IEE + required: [key_blobs] + properties: + key_blobs: + description: The list of definition of individual key blobs including plain data. Add other array items as you need and device allows + type: array + minItems: 1 + maxItems: 4 + items: + type: object + required: [key1, key2, aes_mode, key_size, start_address, end_address] + properties: + region_lock: + type: boolean + title: Keyblob lock attribute + description: Determines if the ROM will lock the IEE configuration to prevent later changes. + template_value: False + default: False + + aes_mode: + type: string + title: AES mode + description: AES mode, Encryption bypass, AES-XTS, AES-CTR (with or without address binding) or AES-CTR keystream only + enum: + [ + "Bypass", + "AesXTS", + "AesCTRWAddress", + "AesCTRWOAddress", + "AesCTRkeystream", + ] + template_value: "AesXTS" + + key_size: + type: string + title: AES key size, 128/256 for AES-CTR or 256/512 for AES-XTS + description: AES mode, AES-XTS or AES-CTR + enum: ["CTR256XTS512", "CTR128XTS256"] + template_value: "CTR256XTS512" + + page_offset: + type: number + title: Page offset + description: Page offset, IEE_REG0PO value + format: number + template_value: 0 + default: 0 + + key1: + type: [number, string] + title: AES-XTS key1 / AES-CTR key + description: AES key for the key blob, size depends on key_size + format: number + template_value: "0x000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F" + + key2: + type: [number, string] + title: AES-CTR Counter value or AES-XTS key2 + description: AES key for the key blob, size depends on key_size + format: number + template_value: "0x202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F" + + start_address: + type: [number, string] + title: Start address of key blob data + description: Start address of key blob data, it should be aligned to 1 KB (1024 B) + format: number + template_value: "0x30001000" + + end_address: + type: [number, string] + title: End address of key blob data + description: End address of key blob data, it should be aligned to 1 KB (1024 B) + format: number + template_value: "0x30008000" + +key_blobs_with_ele: + type: object + title: MIMXRT118x Keyblob Configuration + properties: + key_blob: + description: Keyblob configuration, keyblob won't be generated. + type: object + required: [key1, key2, aes_mode, key_size, start_address, end_address] + properties: + region_lock: + type: boolean + title: Keyblob lock attribute + description: Determines if the ROM will lock the IEE configuration to prevent later changes. + template_value: False + default: False + + aes_mode: + type: string + title: AES mode + description: AES mode, Encryption bypass, AES-XTS, AES-CTR (with or without address binding) or AES-CTR keystream only + enum: + [ + "Bypass", + "AesXTS", + "AesCTRWAddress", + "AesCTRWOAddress", + "AesCTRkeystream", + ] + template_value: "AesXTS" + + key_size: + type: string + title: AES key size, 128/256 for AES-CTR or 256/512 for AES-XTS + description: AES mode, AES-XTS or AES-CTR + enum: ["CTR256XTS512", "CTR128XTS256"] + template_value: "CTR256XTS512" + + page_offset: + type: number + title: Page offset + description: Page offset, IEE_REG0PO value + format: number + template_value: 0 + default: 0 + + key1: + type: [number, string] + title: AES-XTS key1 / AES-CTR key + description: AES key for the key blob, size depends on key_size + format: number + template_value: "0x000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F" + + key2: + type: [number, string] + title: AES-CTR Counter value or AES-XTS key2 + description: AES key for the key blob, size depends on key_size + format: number + template_value: "0x202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F" + + start_address: + type: [number, string] + title: Start address of key blob data + description: Start address of key blob data, it should be aligned to 1 KB (1024 B) + format: number + template_value: "0x04001000" + + end_address: + type: [number, string] + title: End address of key blob data + description: End address of key blob data, it should be aligned to 1 KB (1024 B) + format: number + template_value: "0x04008000" diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_mbi.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_mbi.yaml new file mode 100644 index 0000000..3862ceb --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_mbi.yaml @@ -0,0 +1,584 @@ +# Copyright 2021-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +app: + type: object + title: Basic Settings + properties: + inputImageFile: + type: string + title: Plain application image + description: The input application image to by modified to Master Boot Image. + format: file + template_value: my_application.bin + required: [inputImageFile] + +output_file: + type: object + title: Basic Settings + properties: + masterBootOutputFile: + type: string + title: Output Image name + description: The path for result binary file. + format: file_name + template_value: my_mbi.bin + required: [masterBootOutputFile] + +trust_zone: + type: object + title: Trust Zone Settings + properties: + enableTrustZone: + type: boolean + title: TrustZone enable option + description: If not specified, the Trust zone is disabled. + template_value: false + trustZonePresetFile: + type: string + title: TrustZone Customization file + description: If not specified, but TrustZone is enabled(enableTrustZone) the default values are used. + template_value: my_tz_custom.yaml + format: optional_file + +trust_zone_mandatory: + type: object + title: Trust Zone Settings + properties: + trustZonePresetFile: + type: string + title: TrustZone Customization file + description: If not specified the default values are used. + template_value: my_tz_custom.yaml + format: optional_file + +trust_zone_2: + type: object + title: Trust Zone Settings + properties: + trustZonePresetFile: + type: string + title: TrustZone Customization file in version 2 + description: Specification of Trust Zone configuration file for advanced settings. It could be as YAML TrustZone configuration file as pre-prepared binary TrustZone configuration. + template_value: my_tz_custom.yaml + format: optional_file + +load_addr: + type: object + title: Basic Settings + properties: + outputImageExecutionAddress: + type: [number, string] + title: Loading address of application + description: Application loading address in RAM if not XiP, otherwise address of load in XiP. + template_value: 0 + +firmware_version: + type: object + title: Basic Settings + properties: + firmwareVersion: + type: [number, string] + title: Firmware version. + description: Value compared with Secure_FW_Version monotonic counter value stored in protected memory (MCU specific). If value is lower than value in protected memory, then is image rejected (rollback protection). + format: number + template_value: 0 + +firmware_version_vx: + type: object + title: Basic Settings + properties: + firmwareVersion: + type: [number, string] + title: Firmware version. + description: Used for anti-rollback protection. New firmware must have the same or higher FW version. This value is the minimum firmware version will be stored in BCA and the firmware version specified in SBX file is then compared with this value. + format: number + template_value: 0 + +image_version: + type: object + title: Basic Settings + properties: + imageVersion: + type: [number, string] + title: Image version. + description: Image version is used for dual boot. The boot ROM decides which image to boot first based on the image version. It boots the one with the newer image version first, and in case of a failure, it boots the older one. + format: number + template_value: 0 + +image_subtype: + type: object + title: Basic Settings + properties: + outputImageSubtype: + type: string + title: Image SubType + description: Image subtype determine the image use in MCU. "main" for main application, "nbu" for Narrow Band Unit image and "recovery" for recovery image type + enum: [main, nbu, recovery] + template_value: main + +cert_block_v1: + type: object + title: Certificate Block V1 + properties: + certBlock: + type: string + title: Certificate Block binary/config file + description: Path to certificate block binary or config file. + template_value: cert_block.yaml + format: file + required: [certBlock] + +cert_block_v21: + type: object + title: Certificate Block V2.1 + properties: + certBlock: + type: string + title: Certificate Block binary/config file + description: Path to certificate block binary or config file. + template_value: cert_block.yaml + format: file + required: [certBlock] + + +ahab_sign_support: + type: object + title: AHAB Container format to add to ECC + PQC sign. + required: [srk_set, srk_table, used_srk_id] + properties: + srk_set: + type: string + title: Super Root Key (SRK) set + description: Defines which set is used to authenticate the container. + enum: [oem, nxp] + template_value: oem + used_srk_id: + type: [number, string] + title: Used SRK + description: Which key from SRK set is being used. + format: number + template_value: 0 + signer: + type: string + title: AHAB container signer + description: + Signature provider configuration in format 'type=;=;=' or a + private key used for sign the container header. Header can be signed by SRK. + The referenced SRK must not have been revoked. + template_value: type=file;file_path=my_prv_key.pem + signer_#2: + type: string + title: AHAB container signer for second signature (PQC only) + description: + Signature provider configuration in format 'type=;=;=' or a + private key used for second sign (PQC only) of the container header. Header can be signed by SRK. + The referenced SRK must not have been revoked. + template_value: type=file;file_path=my_prv_key.pem + srk_table: + type: object + title: SRK Table + template_title: Configuration of AHAB SRK table + description: "SRK (Super Root key) table definition." + required: [srk_array] + properties: + flag_ca: + type: boolean + title: CA Flag + description: CA Flag is used by HAB to indicate if the SRK is allowed to sign other keys + template_value: false + srk_array: + type: array + title: Super Root Key (SRK) table + description: + "Table containing the used SRK records. All SRKs must be of the same + type. Supported signing algorithms are: RSA-PSS, ECDSA, Dilithium or SM2. Supported hash algorithms: + sha256, sha384, sha512, sha3_256, sha3_384, sha3_512, sm3. Supported key sizes/curves: prime256v1, sec384r1, sec512r1, + rsa2048, rsa4096, dilithium3, sm2. Certificate may be of Certificate Authority. Dilithium algorithms are supported just + in new type of AHAB container" + minItems: 4 + maxItems: 4 + items: + type: string + title: SRK key + description: Path to SRK Key file. + format: file + template_value: + - my_srk_public_key0.pub + - my_srk_public_key1.pub + - my_srk_public_key2.pub + - my_srk_public_key3.pub + srk_table_#2: + type: object + title: Second SRK Table + template_title: Configuration of AHAB SRK table in case that the double signing (ECC + PQC) + required: [srk_array] + properties: + flag_ca: + type: boolean + title: CA Flag + description: CA Flag is used by HAB to indicate if the SRK is allowed to sign other keys + template_value: false + srk_array: + type: array + title: Super Root Key (SRK) table + description: + "Table containing the used SRK Dilithium records. All SRKs must be of the same + type. Supported signing algorithms are: Dilithium level 3. Supported hash algorithms: + sha3_256, sha3_384, sha3_512. Certificate may be of Certificate Authority." + minItems: 4 + maxItems: 4 + items: + type: string + title: SRK key + description: Path to SRK Key file. + format: file + template_value: + - my_srk_public_key0.pub + - my_srk_public_key1.pub + - my_srk_public_key2.pub + - my_srk_public_key3.pub + certificate: + type: string + title: The AHAB certificate + template_title: Optional configuration of AHAB Container Certificate (if not used, erase the section) + description: + The file that contains AHAB certificate. It could be used already prepared binary form signed by SRK, or it is possible to + use configuration YAML file of certificate and the AHAB export process it will export it itself. + format: file + template_value: my_ahab_certificate.bin + +ahab_sign_support_add_image_hash_type: + type: object + title: AHAB Container format to add to ECC + PQC sign. + properties: + image_hash_type: + type: string + title: Images HASH type + description: HASH type of image. + enum: [sha256, sha384, sha512] + template_value: sha512 + +ahab_sign_support_add_core_id: + type: object + title: AHAB Container format to add to ECC + PQC sign. + properties: + core_id: + type: string + title: Target Core ID + description: Target core id to select kind of image. + enum: [cortex-m33, nbu] + template_value: cortex-m33 + +ahab_sign_support_add_crc: + type: object + title: Additional Checks. + properties: + add_crc_check: + type: boolean + title: The additional CRC images check + description: + If true, add additional CRC image that is computed from all data execution mage and optionally TrustZone. + template_value: false + +cert_block_vX: + type: object + title: Certificate Block vX + properties: + certBlock: + type: string + title: Certificate Block binary file + description: Path to certificate block. + template_value: cert_block.bin + format: file + addCertHash: + type: boolean + title: True to append SHA256 hash [0:127] at the end of certificate block + description: Not mandatory if the hash is written in OTP + template_value: true + + required: [certBlock] + +signer: + type: object + title: Image Signing Settings + properties: + signer: + type: string + title: Signer configuration + description: Signature provider configuration in format 'type=;=;=' or path to a private key. + template_value: type=file;file_path=root_prv_key.pem + required: [signer] + +hw_key: + type: object + title: Basic Settings + properties: + enableHwUserModeKeys: + type: [boolean, string] + title: Enable User HW key sharing + description: Controlling secure hardware key bus. If enabled(1), then it is possible to access keys on hardware secure bus from non-secure application, else non-secure application will read zeros. + template_value: false + required: [enableHwUserModeKeys] + +key_store: + type: object + title: Encryption Settings + properties: + keyStoreFile: + type: string + title: The Key store data file + description: Optional KeyStore data file for included keystore in LoadToRam images. If defined the KeyStore is added into MBI. + format: optional_file + template_value: my_key_store_data.bin + +hmac: + type: object + title: Encryption Settings + properties: + outputImageEncryptionKeyFile: + type: string + title: OTP Master key (HMAC Key) + description: + The OTP Master key that is used to compute HMAC encryption key. + Could be defined as hex number and also as hex/binary file.\n + Used algorithm by tool the get HMAC Key; AES_ENCRYPT (OTP_MASTER_KEK, 0x00000000000000000000000000000000) + template_value: otp_master_key.bin + format: file-or-hex-value + +hmac_mandatory: + type: object + title: Encryption Settings + properties: + outputImageEncryptionKeyFile: + type: string + title: OTP Master key (HMAC Key) + description: + The OTP Master key that is used to compute HMAC encryption key. + Could be defined as hex number and also as hex/binary file.\n + Used algorithm by tool the get HMAC Key; AES_ENCRYPT (OTP_MASTER_KEK, 0x00000000000000000000000000000000) + template_value: otp_master_key.bin + format: file-or-hex-value + required: [outputImageEncryptionKeyFile] + +ctr_init_vector: + type: object + title: Encryption Settings + properties: + CtrInitVector: + type: string + title: The output image encryption initial vector for encryption counter + description: The initial vector for encryption counter. Could be defined as hex number and also as hex/binary file + template_value: "0xc3df2316fd40b15586cb5ae49483aee2" + format: file-or-hex-value + +app_table: + type: object + title: Basic Settings + properties: + applicationTable: + type: array + title: The list of additional binaries + description: This is software feature of RTxxx family that NXP SDK startup code (not ROM) could load additional images. + items: + type: object + required: [binary, destAddress, load] + properties: + binary: + type: string + title: Binary file + description: The binary file to be added to final application. + format: file + template_value: my_additional_binary.bin + destAddress: + type: [string, number] + title: Destination address + description: Destination address in RAM of additional binary. + format: number + template_value: 0x20000000 + load: + type: boolean + title: Enable load + description: Enabler to load/use the image. + template_value: true + +image_type: + type: object + title: Basic Settings + properties: + outputImageExecutionTarget: + type: string + title: Application target + description: Definition if application is Execute in Place(XiP) or loaded to RAM during reset sequence. + enum: + [ + "xip", + "load-to-ram", + "Internal flash (XIP)", + "External flash (XIP)", + "Internal Flash (XIP)", + "External Flash (XIP)", + "RAM", + "ram", + ] + enum_template: ["xip", "load-to-ram"] + template_value: xip + + outputImageAuthenticationType: + type: string + title: Type of boot image authentication + description: Specification of final master boot image authentication. + enum: + [ + plain, + crc, + signed, + signed-encrypted, + signed-nxp, + nxp_signed, + nbu-signed, + Plain, + CRC, + Signed, + Encrypted + Signed, + NXP Signed, + NXP signed, + NBU Signed, + encrypted, + ] + enum_template: + ["plain", "crc", "signed", "signed-encrypted", "signed-nxp","nbu-signed"] + template_value: plain + + required: [outputImageExecutionTarget, outputImageAuthenticationType] + +lifecycle: + type: object + title: Basic Settings + properties: + lifeCycle: + type: string + title: Life cycle state + description: + life cycle state model to protect code from reading from the device internal flash, which is called code + read protection feature. There are different levels of protections in the system, so that access to the on-chip flash and use of ISP + can be restricted. Four levels of Read Out Protection (ROP) are supported. This read out protection is a mechanism that allows user to enable + different levels of protection in the system. It is a 8-bit field FTFA_FSEC associated with flash security byte (0x40c byte address). + It can be programmed by customer. Check the SRM for more information. If not provided, value in application will be used. + enum: + [ + "NOT_SET", + "OEM_OPEN", + "OEM_CLOSED_ROP1", + "OEM_CLOSED_ROP2", + "OEM_CLOSED_ROP3", + "OEM_CLOSED_NO_RETURN", + ] + template_value: NOT_SET + +just_header: + type: object + title: Basic Settings + properties: + justHeader: + type: boolean + title: Generate only header + description: + Build only the boot headers (Vector table, BCA, FCB) 0x0..0x800 binary without the application. + This is needed for device HSM provisioning file in case the user set ROP2, ROP3. + template_value: false + +bca: + type: object + title: Bootloader Configuration Area (BCA) + properties: + bca: + type: string + title: BCA binary/config file + description: Path to bca binary or config file. + template_value: bca.yaml + format: file + +fcf: + type: object + title: Flash Configuration Fields + properties: + fcf: + type: string + title: FCF binary/config file + description: Path to FCF binary or config file. + template_value: fcf.yaml + format: file + +hse_ivt: + type: object + title: HSE IVT Settings + description: "HSE Interrupt Vector Table configuration settings" + properties: + appSwtInit: + type: boolean + title: APP SWT Init + description: "Application Software Tamper initialization" + template_value: false + appStartAddress: + type: [number, string] + title: Application Start Address + description: "Start address for CM7_0 core application" + format: number + template_value: "0x00400200" + lcConfigAddr: + type: [number, string] + title: Lifecycle Configuration Address + description: "Address of lifecycle configuration data. If not set, the LC configuration will be placed after application." + format: number + template_value: "0x0" + hseFwAddr: + type: [number, string] + title: HSE Firmware Address + description: "Address of HSE firmware" + format: number + template_value: "0x0" + +hse_app_boot_header: + type: object + title: Application Boot Header Settings + description: "Configuration for the Application Boot" + properties: + appStartAddress: + type: [number, string] + title: Start Address + description: "Start address of the application" + format: number + template_value: "0x00400200" + +hse_signature: + type: object + title: HSE Signature settings + description: "Configuration of HSE signature" + properties: + initialVector: + type: string + title: Initial Vector + description: "Initial vector for encryption (12 bytes hexadecimal). If not specified, random value will be generated." + format: file-or-hex-value + template_value: "000102030405060708090A0B" + adkp: + type: string + title: Application Debug/Key Password + description: "Key used for encryption (16 bytes hexadecimal)" + format: file-or-hex-value + template_value: "000102030405060708090A0B0C0D0E0F" + required: [adkp] + +hse_lifecycle: + type: object + title: Lifecycle Configuration + description: "Configuration for HSE lifecycle state. The lifecycle state determines the security level and available features of the device. Each state has specific implications for device functionality and security." + properties: + lifecycle: + type: string + title: Lifecycle State + description: "Defines the lifecycle state of the device: 'none' - default state with no lifecycle change, 'oem_prod' - OEM production state with increased security, 'in_field' - deployed state with highest security level and restricted debug access." + enum: ["none", "oem_prod", "in_field"] + template_value: "none" diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_memcfg.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_memcfg.yaml new file mode 100644 index 0000000..62aae2d --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_memcfg.yaml @@ -0,0 +1,31 @@ +# Copyright 2021-2024 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +base: + type: object + required: [peripheral] + properties: + peripheral: + type: string + title: Peripheral name + # enum: [] + description: Name of the external memory support peripheral + template_value: spi_nor + + interface: + type: string + title: Interface name + # enum: [] + description: Interface name of some other details about connection + template_value: quad_spi + +settings: + type: object + required: [settings] + properties: + settings: + type: object + title: Option words settings + description: The The option word settings + properties: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_otfad.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_otfad.yaml new file mode 100644 index 0000000..76d2b1f --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_otfad.yaml @@ -0,0 +1,182 @@ +# Copyright 2022-2023,2025-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +otfad_family: + type: object + title: Basic Settings + properties: + family: + type: string + title: MCU family + description: MCU family name. + enum: [place_holder] + template_value: rt5xx + required: [family] + +otfad_output: + type: object + title: Basic Settings + properties: + output_folder: + type: string + title: OTFAD output folder + description: Path to directory where the OTFAD output will be generated + template_value: "otfad_output" + + output_format: + type: string + title: Output data file format's + description: Output file format for OTFAD image(s) + enum: [bin, hex, srec, sparse] + template_value: bin + + output_name: + type: string + title: Output binary image file name + description: Filename of the output image containing keyblobs and encrypted data blobs without file extension (.bin will be appended) + template_value: "otfad_whole_image" + default: "otfad_whole_image" + + keyblob_name: + type: string + title: Keyblob file name + description: Filename of the keyblob without file extension (.bin will be appended) + template_value: "OTFAD_Table" + default: "OTFAD_Table" + + encrypted_name: + type: string + title: Encrypted name + description: filename of the encrypted datablobs without file extension (.bin will be appended) + template_value: "encrypted_blob" + default: "encrypted_blob" + + generate_readme: + type: boolean + title: Generate readme.txt + description: Readme file contains information about image layout + template_value: true + default: true + + required: [output_folder] + +otfad: + type: object + title: OTFAD Settings + required: [key_blobs, kek, otfad_table_address] + properties: + kek: + type: string + title: KEK + description: OTFAD Key Encryption Key to encrypt OTFAD table. Might be provided as a path to binary file containing KEK or as a string or number + template_value: my_secret_kek.bin + + otfad_table_address: + type: [number, string] + title: OTFAD key blobs table address + description: The base address of key blob table, it should be aligned to 1 KB (1024 B) + format: number + template_value: "0x08000000" + + data_blobs: + type: array + title: Data blobs list + description: List of all data blobs included in this key blob + items: + type: object + required: [data, address] + properties: + data: + type: string + title: Plain Text data blob + description: Path to binary file with plain text data to be encrypted if desired + format: file + template_value: my_data.bin + + address: + type: [number, string] + title: Data blob address + description: Data blob address, it could be omitted if data blob starts at start_address + format: number + template_value: "0x08001000" + + key_blobs: + title: List of Key Blobs used by OTFAD + description: The list of definition of individual key blobs including plain data. Add other array items as you need and device allows + type: array + minItems: 1 + items: + type: object + required: [aes_key, aes_ctr, start_address, end_address] + properties: + aes_key: + type: [number, string] + title: AES key + description: AES key for the key blob + format: number + template_value: "0xB1A0C56AF31E98CD6936A79D9E6F829D" + + aes_ctr: + type: [number, string] + title: AES Counter value + description: AES counter value for the key blob + format: number + template_value: "0x5689fab8b4bfb264" + + start_address: + type: [number, string] + title: Start address of key blob data + description: Start address of key blob data, it should be aligned to 1 KB (1024 B) + format: number + template_value: "0x08001000" + + end_address: + type: [number, string] + title: End address of key blob data + description: End address of key blob data, it should be aligned to 1 KB (1024 B) + format: number + template_value: "0x08010000" + + aes_decryption_enable: + type: boolean + title: AES decryption enable flag + description: For accesses hitting in a valid context, this bit indicates if the fetched data is to be decrypted or simply bypassed + template_value: True + default: True + + valid: + type: boolean + title: Valid flag + description: This field signals if the context is valid or not + template_value: True + default: True + + read_only: + type: boolean + title: Read Only flag + description: This field signals if the context is Read only or not + template_value: True + default: True + +otfad_scramble: + type: object + title: OTFAD Key Scrambling Settings + properties: + key_scramble: + type: object + description: If Key scrambling is not required, this section must be commented out + required: [key_scramble_mask, key_scramble_align] + properties: + key_scramble_mask: + type: [number, string] + title: Key Scramble + description: OTFAD Key Scramble mask (4 bytes size) + format: number + template_value: "0x12345678" + key_scramble_align: + type: [number, string] + title: Key Scramble Align + description: OTFAD Key scramble mask align (1 byte size) + format: number + template_value: "0x72" diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_pfr.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_pfr.yaml new file mode 100644 index 0000000..5ccd087 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_pfr.yaml @@ -0,0 +1,31 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +pfr_base: + type: object + required: [type] + properties: + type: + type: string + title: Configuration area type + description: PFR / IFR type + template_value: CMPA + +pfr_settings: + type: object + required: [settings] + properties: + settings: + type: object + title: Configuration area Settings + +pfr_additional_data: + type: object + properties: + additional_data: + type: string + title: Customer defined data + description: Custom configuration area for customer-specific data. If not specified, the data won't be added to the binary. + template_value: customer-data.bin + format: file-or-hex-value diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb21.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb21.yaml new file mode 100644 index 0000000..45c36e8 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb21.yaml @@ -0,0 +1,611 @@ +# Copyright 2023-2024,2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +common: + type: object + title: Basic Setting + properties: + containerKeyBlobEncryptionKey: + type: string + title: SB2.1 SBKEK + description: Path to SB key encryption key (AES-128). It might be provided in text file or binary file or as a hex string in the configuration. + template_value: sbkek.txt + format: file-or-hex-value + RKTHOutputPath: + type: string + title: Path to file where the hash of hashes will be stored + description: Path to output hash of hashes of root keys + template_value: hash.bin + format: file_name + required: [containerKeyBlobEncryptionKey] + +sb2_family: + type: object + title: Basic Settings + properties: + family: + type: string + title: MCU family + description: MCU family name. + enum: [] # Just placeholder to keep this record that will be fulfilled in runtime + template_value: lpc55s6x + required: [family] + +sb2_output: + type: object + title: SB2.1 Output + properties: + containerOutputFile: + type: string + title: SB2 filename + description: Generated SB2 container filename. + template_value: my_new.sb + format: file_name + required: [containerOutputFile] + +sb2: + type: object + required: [options] + properties: + options: + type: object + title: SB2.1 Options + description: An options block contains zero or more name/value pairs and the option settings that assign values to global options used by the nxpimage to control the generation of the output file. + required: + - flags + properties: + flags: + type: + - number + - string + title: SB2.1 flags + description: For SB2.1 use only 0x8 encrypted + signed. + template_value: 0x8 + buildNumber: + type: + - number + - string + title: SB2.1 build number + description: Build number. + template_value: 0x1 + productVersion: + type: + - number + - string + title: Product version + description: Version string as "xxx.yyy.zzz". + template_value: "1.00.00" + componentVersion: + type: + - number + - string + title: Component version + description: Component version string as "xxx.yyy.zzz". + template_value: "1.00.00" + secureBinaryVersion: + type: + - number + - string + title: SB Version + description: Used to specify version of SB2 file. + template_value: "2.1" + +keyblobs: + type: object + title: SB 2.1 Keyblobs + properties: + keyblobs: + type: array + title: SB2.1 Keyblobs + description: Section with keyblobs + items: + type: object + required: + - keyblob_id + - keyblob_content + properties: + keyblob_id: + type: number + title: Keyblob ID + description: >- + ID referenced by keywrap and encrypt commands + template_value: 0 + keyblob_content: + type: array + title: Keyblob Content + description: >- + Definition of keyblobs + items: + type: object + required: + - start + - end + - key + - counter + properties: + start: + type: + - string + - number + title: Start address + description: >- + Start address of keyblob + template_value: "0x08008000" + end: + type: + - string + - number + title: End address + description: >- + End address of keyblob. last bits must be 0x3ff to have the AES enabled, bit ADE = 1 + template_value: "0x087983ff" + key: + type: string + title: AES key + description: >- + Random user defined key + template_value: "000102030405060708090A0B0C0D0E0F" + minLength: 32 + maxLength: 64 + counter: + type: string + title: AES seed value + description: >- + Counter value + template_value: "0123456789ABCDEF" + minLength: 16 + maxLength: 16 + noByteSwap: + type: number + title: Byte swap + description: >- + RT500, RT600: noByteSwap = 1 (default) + template_value: 1 +sb2_test: + type: object + title: Secure Binary v2.1 Testing Settings + skip_in_template: true + properties: + options: + type: object + title: SB2.1 Options + description: An options block contains zero or more name/value pairs and the option settings that assign values to global options used by the nxpimage to control the generation of the output file. + properties: + dek: + type: string + title: DEK key + description: 32 bytes DEK key for SB 2.1 + template_value: "0000000000000000000000000000000000000000000000000000000000000000" + minLength: 64 + maxLength: 64 + skip_in_template: true + mac: + type: string + title: MAC key + description: 32 bytes MAC key for SB 2.1 + template_value: "0000000000000000000000000000000000000000000000000000000000000000" + minLength: 64 + maxLength: 64 + skip_in_template: true + nonce: + type: string + title: Nonce + description: Nonce for SB 2.1, clear bits at offset 31 and 63. 16 bytes. + template_value: "00000000000000000000000000000000" + minLength: 32 + maxLength: 32 + skip_in_template: true + zeroPadding: + type: [string, boolean] + title: Enable zero padding instead of random padding + description: Zero padding instead of random padding is useful if you want to binary compare two SB 2.1 files. + template_value: false + skip_in_template: true + timestamp: + type: [string, number] + title: SB 2.1 file force timestamp + description: For testing purposes. This option can override real timestamp of SB 2.1 file. + format: number + template_value: 1234567890 + skip_in_template: true + +sb2_sections: + type: object + title: SB 2.1 Sections and commands + required: [sections] + properties: + sections: + type: array + title: SB2.1 Sections + description: Secure Binary v2.1 section blocks + items: + type: object + properties: + section_id: + type: number + title: Section ID + description: >- + ID of the section + template_value: 0 + skip_in_template: True + commands: + type: array + title: SB2.1 Commands + description: >- + Secure Binary v2.1 commands block, list of all possible options - + Modify it according to your application + items: + oneOf: + - type: object + required: + - erase + properties: + erase: + type: object + title: Erase + description: >- + Performs a flash erase of the given address range. The + erase will be rounded up to the sector size. + properties: + address: + type: + - string + - number + title: Address + description: Address of memory block to be erased. + template_value: 0 + length: + type: + - string + - number + title: Size + description: Size of memory block to be erased. + template_value: 4096 + mem_opt: + type: + - string + - number + title: Memory ID + description: ID of memory block to be erased. + template_value: 0 + flags: + type: number + title: Flags + description: For erase all, flags=1, for erase unsecure all -> 2 + template_value: 0 + required: + - address + - type: object + required: + - load + properties: + load: + type: object + title: Load + description: >- + If set, then the data to write immediately follows the + range header. The length field contains the actual data + length + properties: + address: + type: + - string + - number + title: Address + description: Address of memory block to be loaded. + format: number + template_value: 0 + load_opt: + type: + - string + - number + title: Memory ID + description: ID of memory block to be loaded. + template_value: 0 + file: + type: string + title: Binary file. + description: Binary file to be loaded. + format: file + template_value: my_binary.bin + pattern: + type: + - string + - number + title: Value for fuse programming + description: Fill the 32bit integer value of fuse to be programmed. Legacy way of programming fuses. ProgramFuses is recommended in new projects. + format: number + template_value: 1 + values: + type: + - string + - number + title: Binary values. + description: Binary values delimited by comma to be loaded. + template_value: 0x1224, 0x5678, 0, 12245678 + required: + - address + - type: object + required: + - enable + properties: + enable: + type: object + title: Configure memory + description: >- + initialization of external memories using a parameter + block that was previously loaded to RAM. + properties: + address: + type: + - string + - number + title: Address + description: Configuration address. + format: number + template_value: 0 + mem_opt: + type: + - string + - number + title: Memory ID + description: ID of memory block to be configured. + template_value: 0 + required: + - address + - type: object + required: + - keywrap + properties: + keywrap: + type: object + title: Keywrap + description: >- + Keywrap holds keyblob ID to be encoded by a value stored in load command and + stored to address defined in the load command. + properties: + keyblob_id: + type: number + title: Address + description: ID of the keyblob. + format: number + template_value: 0 + address: + type: + - string + - number + title: Address + description: Address of keyblob. + format: number + template_value: 0 + values: + type: string + title: Key. + description: Key encryption key. + minLength: 32 + maxLength: 64 + template_value: "000102030405060708090A0B0C0D0E0F" + required: + - keyblob_id + - address + - values + - type: object + required: + - encrypt + properties: + encrypt: + type: object + title: Encrypt with keyblob + description: >- + Encrypt holds an ID, which is a reference to keyblob to be used for + encryption. So the encrypt command requires a list of keyblobs, the keyblob + ID and load command. + properties: + keyblob_id: + type: number + title: Address + description: ID of the keyblob. + format: number + template_value: 0 + address: + type: + - string + - number + title: Address + description: Where the data will be loaded. + format: number + template_value: 0 + values: + type: string + title: Datablob. + description: Encrypt data blob, choose either file or datablob. + template_value: "000102030405060708090A0B0C0D0E0F" + file: + type: string + title: Binary file. + description: Binary file to be encrypted. + format: file + template_value: my_binary.bin + required: + - keyblob_id + - address + - type: object + required: + - fill + properties: + fill: + type: object + title: Fill memory + description: Used for filling of the memory range by repeated pattern. + properties: + address: + type: + - string + - number + title: Address + description: Address of memory block to be filled. + format: number + template_value: 0 + pattern: + type: + - string + - number + title: Pattern + description: Pattern which will be used to fill memory. + format: number + template_value: 2779096485 + required: + - address + - pattern + - type: object + required: + - jump + properties: + jump: + type: object + title: Jump to address + description: The jump command produces the ROM_JUMP_CMD command. Optionally set SP and call argument. + properties: + address: + type: + - string + - number + title: Address + description: Jump to fixed address. + format: number + template_value: 0 + spreg: + type: + - string + - number + title: Stack pointer value + description: Sets the stack pointer before jumping. + template_value: 0x20000e00 + argument: + type: + - string + - number + title: Call argument + description: Argument to the function being jumped to. + template_value: 0x5a5a5a5a + required: + - address + - type: object + required: + - version_check + properties: + version_check: + type: object + title: Check firmware version + description: >- + Used to execute check of provided counter value with value + stored in specified monotonous counter in device. If + values are not same, SB file is rejected. + properties: + ver_type: + type: number + title: Version type + description: 0 for secure, 1 for non secure. + format: number + template_value: 0 + fw_version: + type: number + title: FW version + description: FW version to be checked. + format: number + template_value: 1 + required: + - ver_type + - fw_version + - type: object + required: + - keystore_to_nv + properties: + keystore_to_nv: + type: object + title: Load keystore to memory + description: >- + The keystore_to_nv statement instructs the bootloader to load the backed up + keystore values back into keystore memory region on non-volatile memory. + properties: + address: + type: + - string + - number + title: Address + description: Address of memory block to be loaded. + format: number + template_value: 0 + mem_opt: + type: + - string + - number + title: Memory ID + description: ID of memory block to be loaded. + template_value: 0 + required: + - address + - mem_opt + - type: object + required: + - keystore_from_nv + properties: + keystore_from_nv: + type: object + title: Load keystore from memory + description: >- + The keystore_to_nv statement instructs the bootloader to load the backed up + keystore values back into keystore memory. + properties: + address: + type: + - string + - number + title: Address + description: Address of memory block to be loaded. + format: number + template_value: 0 + mem_opt: + type: + - string + - number + title: Memory ID + description: ID of memory block to be loaded. + template_value: 0 + required: + - address + - mem_opt + - type: object + required: [programFuses] + properties: + programFuses: + type: object + title: Program Fuses + description: Address is OTP index of fuses to be programmed (Check the reference manual for more information). Values is a comma separated list of 32bit values. + properties: + address: + type: [string, number] + title: Address + description: OTP Index of fuses to be programmed. Depends on the chip ROM. + format: number + template_value: 0x0 + values: + type: string + title: Binary values + description: Binary blob either 4 or 8 bytes. + template_value: "aabbccdd" + pattern: + type: [string, number] + title: Integer values + description: values provided as integer e.g. 0x1000 represents data_word1. Choose only one way. + template_value: 0x1000 + load_opt: + type: + - string + - number + title: Memory ID + description: ID of memory block to be loaded. Default memory ID for fuses is 4. + template_value: 4 + skip_in_template: True + required: [address] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb31.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb31.yaml new file mode 100644 index 0000000..1bf75cf --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb31.yaml @@ -0,0 +1,579 @@ +# Copyright 2021-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +sb3_output: + type: object + title: Basic Settings + properties: + containerOutputFile: + type: string + title: SB3 filename + description: Generated SB3 container filename. + template_value: my_new.sb3 + required: [containerOutputFile] + +sb3_description: + type: object + title: Secure Binary v3.1 Settings + properties: + description: + type: string + title: Description + description: Description up to 16 characters, longer will be truncated. Stored in SB3.1 manifest. + template_value: My SB file +sb3: + type: object + title: Secure Binary v3.1 Settings + properties: + containerKeyBlobEncryptionKey: + type: string + title: Part Common Key + description: Path to PCK/NPK 256 or 128 bit key in plain hex string format or path to binary file or hex string. + template_value: my_pck.txt + format: file-or-hex-value-or-config-string + isNxpContainer: + type: boolean + title: Enable NXP Container format + description: Internal usage only, used for generating SB files with NXP content e.g. provisioning firmware, etc... + template_value: false + kdkAccessRights: + type: number + title: KDK access rights + description: Accepted values are 0, 1, 2 and 3. Value used as key properties for key derivation process, more details can be found in CSSv2 manual. + enum: [0, 1, 2, 3] + template_value: 0 + containerConfigurationWord: + type: [string, number] + title: Container configuration word + description: Flag value in SB3.1 manifest, not used by silicons with LPC55S3x ROM. Value can be kept 0, or it can be removed from the configuration file. + format: number + template_value: 0x0 + allOf: + - if: + properties: + isEncrypted: + enum: [true, null] + then: + required: [containerKeyBlobEncryptionKey] + else: + required: [] + +sb3_test: + type: object + title: Secure Binary v3.1 Testing Settings + skip_in_template: true + properties: + isEncrypted: + type: boolean + title: Enable NXP Container encryption + description: If false, generated SB3.1 blocks are not encrypted, only for testing, ROM won't accept unencrypted SB3.1 file. If option is missing, SB3.1 file is automatically encrypted. + template_value: true + skip_in_template: true + timestamp: + type: [string, number] + title: SB3 file force timestamp + description: For testing purposes. This option can override real timestamp of SB3 file. + format: number + template_value: 1234567890 + skip_in_template: true + +sb3_commands: + type: object + title: Secure Binary v3.1 / v4.0 Commands Settings + required: [commands] + properties: + commands: + type: array + title: SB3.1 Commands + description: Secure Binary v3.1 commands block, list of all possible options - Modify it according to your application + items: + oneOf: + - type: object + required: [erase] + properties: + erase: + type: object + title: Erase + description: Performs a flash erase of the given address range. The erase will be rounded up to the sector size. + properties: + address: + type: [string, number] + title: Address + description: Address of memory block to be erased. + format: number + template_value: 0x0 + size: + type: [string, number] + title: Size + description: Size of memory block to be erased. + format: number + template_value: 4096 + memoryId: + type: [string, number] + title: Memory ID + description: ID of memory block to be erased. + format: number + template_value: 0 + required: [address, size] + + - type: object + required: [load] + properties: + load: + type: object + title: Load + description: If set, then the data to write immediately follows the range header. The length field contains the actual data length + properties: + address: + type: [string, number] + title: Address + description: Address of memory block to be loaded. + format: number + template_value: 0x0 + memoryId: + type: [string, number] + title: Memory ID + description: ID of memory block to be loaded. + format: number + template_value: 0 + file: + type: string + title: Binary file. + format: file + skip_in_template: True + values: + type: [string, number, array] + title: 32-bit binary values delimited by comma to be programmed or a list with multiple values as integers or 32-bit binary values. + skip_in_template: True + value: + type: [string, number] + title: Binary value + skip_in_template: True + data: + type: [string, number, array] + title: Data to be loaded + description: > + The data to be loaded, it could be defined in following formats: + - 32-bit value. Value will be converted to binary in little endian format. Example: '0xB38AA899' or '0b111000' + - Array of 32-bit binary values delimited by comma to be loaded. Individual 32-bit values will be stored in little endian format. Example: 0x1234, 0x5678, 0, 12345678 + - List of integers passed as an array. + - Path to binary file. Example: my_binary.bin + template_value: my_binary.bin + compress: + type: boolean + title: Data compression + description: Use LZMA compression of date before loading onto the target + template_value: false + sectorSize: + type: [string, number] + title: Memory sector size + description: Size of memory sector where data should be loaded. + format: number + template_value: 8_192 + required: [address] + oneOf: + - required: [data] + - required: [file] + - required: [value] + - required: [values] + allOf: + - if: + properties: + compress: + enum: [false, no, null] + then: + required: [] + else: + required: [sectorSize] + - if: + properties: + data: + type: string + # Check if it doesn't start with 0x or 0b and doesn't contain commas + not: + pattern: "^(0x|0b)|,|^[0-9]+$" + required: [data] + then: + properties: + data: + format: file + - type: object + required: [execute] + properties: + execute: + type: object + title: Execute + description: Address is the jump-to address. No further processing of SB after jump, ROM do not expect to return. + properties: + address: + type: [string, number] + title: Address + description: Jump-to address to start execute code. + format: number + template_value: 0x0 + required: [address] + + - type: object + required: [call] + properties: + call: + type: object + title: Call + description: Address is address to jump. However, the state machine should expect a return to the next statement to continue processing the SB file + properties: + address: + type: [string, number] + title: Address + description: Jump-to address to start execute code. + format: number + template_value: 0x0 + required: [address] + + - type: object + required: [programFuses] + properties: + programFuses: + type: object + title: Program Fuses + description: Address is OTP index of fuses to be programmed (Check the reference manual for more information). Values is a comma separated list of 32bit values. + properties: + address: + type: [string, number] + title: Address + description: OTP Index of fuses to be programmed. Depends on the chip ROM. + format: number + template_value: 0x0 + values: + type: [string, number] + title: Binary values + description: 32bit binary values delimited by comma or one 32 bit integer to be programmed. + template_value: 0x1234, 0x5678, 0, 12345678 + required: [address, values] + + - type: object + required: [programIFR] + properties: + programIFR: + type: object + title: Program IFR + description: The startAddress will be the address into the IFR region, length will be in number of bytes to write to IFR region. The data to write to IFR region at the given address will immediately follow the header + properties: + address: + type: [string, number] + title: Address + description: Address of IFR region to be programmed. + format: number + template_value: 0x0 + file: + type: string + title: Binary file. + format: file + skip_in_template: True + values: + type: [string, number, array] + title: 32-bit binary values delimited by comma to be programmed or a list with multiple values as integer or 32-bit binary values. + skip_in_template: True + value: + type: [string, number] + title: Binary value + skip_in_template: True + data: + type: [string, number, array] + title: Data to be loaded + description: > + The data to be loaded, it could be defined in following formats: + - 32-bit value. Value will be converted to binary in little endian format. Example: '0xB38AA899' or '0b111000' + - Array of 32-bit binary values delimited by comma to be loaded. Individual 32-bit values will be stored in little endian format. Example: 0x1234, 0x5678, 0, 12345678 + - List of integers passed as an array. + - Path to binary file. Example: my_binary.bin + template_value: my_binary.bin + required: [address] + + - type: object + required: [writeIFR] + properties: + writeIFR: + type: object + title: Write IFR + description: The startAddress will be the address into the IFR region, length will be in number of bytes to write to IFR region. The data to write to IFR region at the given address will immediately follow the header + properties: + type: + type: [string, number] + title: IFR type + description: IFR type to be written. + enum: [CFPA, CFPA_AND_CMPA] + template_value: CFPA + file: + type: string + title: Binary file. + format: file + skip_in_template: True + values: + type: [string, number, array] + title: 32-bit binary values delimited by comma to be programmed or a list with multiple values as integer or 32-bit binary values. + skip_in_template: True + value: + type: [string, number] + title: Binary value + skip_in_template: True + data: + type: [string, number, array] + title: Data to be loaded + description: > + The data to be loaded, it could be defined in following formats: + - 32-bit value. Value will be converted to binary in little endian format. Example: '0xB38AA899' or '0b111000' + - Array of 32-bit binary values delimited by comma to be loaded. Individual 32-bit values will be stored in little endian format. Example: 0x1234, 0x5678, 0, 12345678 + - List of integers passed as an array. + - Path to binary file. Example: my_binary.bin + template_value: ifr_data.bin + required: [type] + + - type: object + required: [loadCMAC] + properties: + loadCMAC: + type: object + title: Load CMAC + description: If set, then the data to write immediately follows the range header. The length field contains the actual data length. ROM is calculating cmac from loaded data and storing on address known by ROM decided based on startAddress. + properties: + address: + type: [string, number] + title: Address + description: Address of memory block to be CMAC loaded. + format: number + template_value: 0x0 + memoryId: + type: [string, number] + title: Memory ID + description: ID of memory block to be CMAC loaded. + format: number + template_value: 0 + file: + type: string + title: Binary file + description: Binary file to be loaded. + format: file + template_value: my_cmac_binary.bin + required: [address, file] + + - type: object + required: [copy] + properties: + copy: + type: object + title: Copy + description: Used for copying data from one place to another. 32 bytes fixed size. + properties: + addressFrom: + type: [string, number] + title: Address From + description: Address of memory block to be copied. + format: number + template_value: 0x0 + memoryIdFrom: + type: [string, number] + title: Memory ID From + description: ID of memory block to be copied. + format: number + template_value: 0 + size: + type: [string, number] + title: Size + description: Size of memory block to be copied. + format: number + template_value: 4096 + addressTo: + type: [string, number] + title: Address To + description: Address of memory where block to be copied. + format: number + template_value: 0x2000_0000 + memoryIdTo: + type: [string, number] + title: Memory ID To + description: ID of memory block where to be copied. + format: number + template_value: 0 + required: [addressFrom, size, addressTo] + + - type: object + required: [loadHashLocking] + properties: + loadHashLocking: + type: object + title: Load with HASH locking + description: If set, then the data to write immediately follows the range header. The length field contains the actual data length. ROM is calculating hash of the data and storing the value in the last 64 bytes of the loaded data, which are reserved for it. + properties: + address: + type: [string, number] + title: Address + description: Address of memory block to be loaded. + format: number + template_value: 0x0 + memoryId: + type: [string, number] + title: Memory ID + description: ID of memory block to be loaded. + format: number + template_value: 0 + file: + type: string + title: Binary file + description: Binary file to be loaded. + format: file + template_value: my_hashlocking_binary.bin + required: [address, file] + + - type: object + required: [loadKeyBlob] + properties: + loadKeyBlob: + type: object + title: Load Key Blob + description: Wrapped key blob immediately follows the range key blob header. The length field contains the actual data length. + properties: + offset: + type: [string, number] + title: Offset + description: Offset of the key blob. + format: number + template_value: 0x0 + wrappingKeyId: + type: string + title: Wrapping key ID + description: Wrapping ID of key blob. + enum: [NXP_CUST_KEK_INT_SK, NXP_CUST_KEK_EXT_SK] + template_value: 0 + file: + type: string + title: Binary file + description: Binary file to be loaded. + format: file + template_value: my_keyblob.bin + plainInput: + type: [string, boolean] # boolean covers auto-conversion: no -> False + title: Key Blob as plain text + description: Indicates whether key is provided as plaintext or not. If it's in plaintext this option also indicates whether it's as binary or hex + enum: ["no", bin, hex] + template_value: "no" + required: [offset, wrappingKeyId, file] + + - type: object + required: [configureMemory] + properties: + configureMemory: + type: object + title: Configure memory + description: Configure memory. + properties: + configAddress: + type: [string, number] + title: Address + description: Configuration address. + format: number + template_value: 0x0 + memoryId: + type: [string, number] + title: Memory ID + description: ID of memory block to be configured. + format: number + template_value: 0 + required: [configAddress] + + - type: object + required: [fillMemory] + properties: + fillMemory: + type: object + title: Fill memory + description: Used for filling of the memory range by same repeated int32 pattern. + properties: + address: + type: [string, number] + title: Address + description: Address of memory block to be filled. + format: number + template_value: 0x0 + size: + type: [string, number] + title: Size + description: Size of memory block to be filled. + format: number + template_value: 4096 + pattern: + type: [string, number] + title: Pattern + description: Pattern which will be used to fill memory. + format: number + template_value: 0xA5A5A5A5 + required: [address, size, pattern] + + - type: object + required: [checkFwVersion] + properties: + checkFwVersion: + type: object + title: Check firmware version + description: Checks FW version value specified in command for specified counter ID. FW version value in command must be greater than value programmed in OTP to be accepted, otherwise rollback is detected and receive SB fails + properties: + value: + type: [string, number] + title: Value - Firmware version + description: Firmware version to be compared. + format: number + template_value: 0x0000_0001 + counterId: + type: string + title: Counter ID + description: ID of FW counter to be checked. + enum: + [ + none, + nonsecure, + secure, + radio, + snt, + bootloader, + radio_lp, + ] + template_value: secure + required: [value, counterId] + + - type: object + required: [reset] + properties: + reset: + type: object + title: Reset + description: Resets the target + properties: {} + + - type: object + required: [checkLifecycle] + properties: + checkLifecycle: + type: object + title: Check Lifecycle + description: Checks if the device is in the expected lifecycle state. The command will fail if the device is not in the specified state. + properties: + lifecycle: + type: string + title: Lifecycle State + description: The expected lifecycle state of the device. + enum: + [ + NXP_BLANK, + NXP_FAB, + DEVELOP, + NXP_PROVISIONED, + DEVELOP2, + IN_FIELD, + IN_FIELD_RETURN, + NXP_FA, + IN_FIELD_LOCKED, + NXP_DEV, + BRICKED + ] + template_value: IN_FIELD + required: [lifecycle] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb40.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb40.yaml new file mode 100644 index 0000000..08920ea --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sb40.yaml @@ -0,0 +1,93 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +sb4_output: + type: object + title: Basic Settings + properties: + containerOutputFile: + type: string + title: SB4 filename + description: Generated SB4 container filename. + template_value: my_new.sb4 + required: [containerOutputFile] + +sb4_description: + type: object + title: Secure Binary v4.0 Settings + properties: + description: + type: string + title: Description + description: Description up to 16 characters, longer will be truncated. Stored in SB4.0 manifest. + template_value: My SB file +sb4: + type: object + title: Secure Binary v4.0 Settings + properties: + containerKeyBlobEncryptionKey: + type: string + title: Part Common Key + description: Path to PCK/NPK 256 or 128 bit key in plain hex string format or path to binary file or hex string. + template_value: my_pck.txt + format: file-or-hex-value-or-config-string + kdkAccessRights: + type: number + title: KDK access rights + description: Accepted values are 0, 1, 2 and 3. Value used as key properties for key derivation process, more details can be found in CSSv2 manual. + enum: [0, 1, 2, 3] + template_value: 0 + allOf: + - if: + properties: + isEncrypted: + enum: [true, null] + then: + required: [containerKeyBlobEncryptionKey] + else: + required: [] + + +image_version: + type: object + title: AHAB Container format to add to ECC + PQC sign. + properties: + imageVersion: + type: [number, string] + title: Image version. + description: | + Image version used for rollback protection in SB4 format. While primarily designed for dual boot scenarios in MBI (Master Boot Image), this field provides security through firmware version validation. + + **Rollback Protection Mechanism:** + The image version must be equal to or greater than the version stored in fuses or PFR (Protected Flash Region) to ensure proper rollback protection. + + **Version Calculation (e.g., MCXN556s series):** + The firmware version is calculated by combining the image version with the fuse version: + + fw_version = (imageVersion << 8) | fuse_version + + + **Validation Process:** + During rollback protection, the calculated firmware version is checked against the 'SECURE_FW_VERSION' value stored in the CFPA (Customer Field Programmable Area) page. Only firmware with versions equal to or higher than the stored value will be allowed to execute. + format: number + template_value: 0 + +sb4_test: + type: object + title: Secure Binary v4.0 Testing Settings + skip_in_template: true + properties: + isEncrypted: + type: boolean + title: Enable NXP Container encryption + description: If false, generated SB4.0 blocks are not encrypted, only for testing, ROM won't accept unencrypted SB4.0 file. If option is missing, SB4.0 file is automatically encrypted. + template_value: true + skip_in_template: true + timestamp: + type: [string, number] + title: SB4 file force timestamp + description: For testing purposes. This option can override real timestamp of SB4 file. + format: number + template_value: 1234567890 + skip_in_template: true diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sbc.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sbc.yaml new file mode 100644 index 0000000..3f8e3ad --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sbc.yaml @@ -0,0 +1,181 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +common: + type: object + title: Common DevHSM settings + properties: + oemRandomShare: + type: string + title: OEM Random Share input + description: > + Path to a file containing 16B of random seed data. If not specified, random seed will be generated. + template_value: oem_seed.bin + format: optional_file + initialReset: + type: boolean + title: Initial device reset + description: Reset the device before starting the DevHSM operation + template_value: false + workspace: + type: string + title: Development/debug workspace + description: Path to a folder where to store intermediate artifacts for development/debugging purposes + template_value: wsp + format: dir_name + bufferAddress: + type: [string, number] + format: number + title: Communication buffer address + description: Address to override default communication buffer address + template_value: + containerOutputFile: + type: string + title: SBc filename + description: Generated SBc container filename. + template_value: my_new.sbc + format: file_name + +sbc_description: + type: object + title: Secure Binary C Settings + properties: + description: + type: string + title: Description + description: Description up to 16 characters, longer will be truncated. Stored in SBc manifest. + template_value: This is description of generated SB file. + +sbc_test: + type: object + title: Secure Binary C Testing Settings + properties: + timestamp: + type: [string, number] + title: SBc file force timestamp + description: For testing purposes. This option can override real timestamp of SBc file. + format: number + template_value: 1234567890 + +sbc_commands: + type: object + title: Secure Binary C Commands Settings + required: [commands] + properties: + commands: + type: array + title: SBc Commands + description: Secure Binary C commands block, list of all possible options - Modify it according to your application + items: + oneOf: + - type: object + required: [erase] + properties: + erase: + type: object + title: Erase + description: Performs a flash erase of the given address range. The erase will be rounded up to the sector size. + properties: + address: + type: [string, number] + title: Address + description: Address of memory block to be erased. + format: number + template_value: 0x0 + size: + type: [string, number] + title: Size + description: Size of memory block to be erased. + format: number + template_value: 4096 + memoryId: + type: [string, number] + title: Memory ID + description: ID of memory block to be erased. + format: number + template_value: 0 + required: [address, size] + + - type: object + required: [load] + properties: + load: + type: object + title: Load + description: If set, then the data to write immediately follows the range header. The length field contains the actual data length + properties: + address: + type: [string, number] + title: Address + description: Address of memory block to be loaded. + format: number + template_value: 0x0 + memoryId: + type: [string, number] + title: Memory ID + description: ID of memory block to be loaded. + format: number + template_value: 0 + file: + type: string + title: Binary file. + description: Binary file to be loaded. + format: file + template_value: my_binary.bin + values: + type: string + title: Binary values. + description: Binary values delimited by comma to be loaded. + template_value: 0x1234, 0x5678, 0, 12345678 + required: [address] + + - type: object + required: [execute] + properties: + execute: + type: object + title: Execute + description: Address is the jump-to address. No further processing of SB after jump, ROM do not expect to return. + properties: + address: + type: [string, number] + title: Address + description: Jump-to address to start execute code. + format: number + template_value: 0x0 + required: [address] + + - type: object + required: [loadKeyBlob] + properties: + loadKeyBlob: + type: object + title: Load Key Blob + description: Wrapped key blob immediately follows the range key blob header. The length field contains the actual data length. + properties: + offset: + type: [string, number] + title: Offset + description: Offset of the key blob. + format: number + template_value: 0x0 + wrappingKeyId: + type: string + title: Wrapping key ID + description: Wrapping ID of key blob. + enum: [NXP_CUST_KEK_EXT_SK] + template_value: 0 + file: + type: string + title: Binary file + description: Binary file to be loaded. + format: file + template_value: my_keyblob.bin + plainInput: + type: string + title: Key Blob as plain text + description: Indicates whether key is provided as plaintext or not. If it's in plaintext this option also indicates whether it's as binary or hex + enum: ["true", bin, hex] + template_value: "true" + required: [offset, wrappingKeyId, file] \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sbx.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sbx.yaml new file mode 100644 index 0000000..a84acd5 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_sbx.yaml @@ -0,0 +1,197 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +sbx_output: + type: object + title: Basic Settings + properties: + containerOutputFile: + type: string + title: SBx filename + description: Generated SBx container filename. + template_value: my_new.sbx + required: [containerOutputFile] + +sbx_description: + type: object + title: Secure Binary X Settings + properties: + description: + type: string + title: Description + description: Description up to 16 characters, longer will be truncated. Stored in SBx manifest. + template_value: This is description of generated SB file. + +sbx: + type: object + title: Secure Binary X Settings + properties: + image_type: + type: string + title: image type + description: SecureBinaryXType + enum: ["NXP_PROVISIONING", "OEM_PROVISIONING", "OEM"] + template_value: "OEM_PROVISIONING" + +sbx_test: + type: object + title: Secure Binary X Testing Settings + properties: + isEncrypted: + type: boolean + title: Enable NXP Container encryption + description: If false, generated SBx.1 blocks are not encrypted, only for testing, ROM won't accept unencrypted SBx.1 file. If option is missing, SBx.1 file is automatically encrypted. + template_value: true + timestamp: + type: [string, number] + title: SBx file force timestamp + description: For testing purposes. This option can override real timestamp of SBx file. + format: number + template_value: 1234567890 + +signer: + type: object + title: Certificate Settings + properties: + signer: + type: string + title: Signer + description: Signature provider configuration in format 'type=;=;=' or a ISK Certificate private key used to sign certificate. Only valid for OEM and NXP_PROVISIONING image types + template_value: type=file;file_path=my_prv_key.pem + + if: + properties: + image_type: + enum: ["NXP_PROVISIONING", "OEM"] + then: + required: [signer] + +sbx_commands: + type: object + title: Secure Binary X Commands Settings + required: [commands] + properties: + commands: + type: array + title: SBx Commands + description: Secure Binary X commands block, list of all possible options - Modify it according to your application + items: + oneOf: + - type: object + required: [erase] + properties: + erase: + type: object + title: Erase + description: Performs a flash erase of the given address range. The erase will be rounded up to the sector size. + properties: + address: + type: [string, number] + title: Address + description: Address of memory block to be erased. + format: number + template_value: 0x0 + size: + type: [string, number] + title: Size + description: Size of memory block to be erased. + format: number + template_value: 4096 + memoryId: + type: [string, number] + title: Memory ID + description: ID of memory block to be erased. + format: number + template_value: 0 + required: [address, size] + + - type: object + required: [load] + properties: + load: + type: object + title: Load + description: If set, then the data to write immediately follows the range header. The length field contains the actual data length + properties: + address: + type: [string, number] + title: Address + description: Address of memory block to be loaded. + format: number + template_value: 0x0 + memoryId: + type: [string, number] + title: Memory ID + description: ID of memory block to be loaded. + format: number + template_value: 0 + file: + type: string + title: Binary file. + description: Binary file to be loaded. + format: file + template_value: my_binary.bin + values: + type: string + title: Binary values. + description: Binary values delimited by comma to be loaded. + template_value: 0x1234, 0x5678, 0, 12345678 + required: [address] + + - type: object + required: [execute] + properties: + execute: + type: object + title: Execute + description: Address is the jump-to address. No further processing of SB after jump, ROM do not expect to return. + properties: + address: + type: [string, number] + title: Address + description: Jump-to address to start execute code. + format: number + template_value: 0x0 + required: [address] + + - type: object + required: [programIFR] + properties: + programIFR: + type: object + title: Program IFR + description: The startAddress will be the address into the IFR region, length will be in number of bytes to write to IFR region. The data to write to IFR region at the given address will immediately follow the header + properties: + address: + type: [string, number] + title: Address (IFR region index) + description: Index of IFR region to be programmed. + format: number + template_value: 0x0 + file: + type: string + title: Binary file + description: Binary file to be programmed. + format: file + template_value: my_binary.bin + value: + type: [string, number] + title: Binary value + description: Binary value to be programmed, at least 4 bytes. Value will be converted to binary little endian format. + template_value: "0xB38AA899" + values: + type: [string, number] + title: Binary values. + description: 32-bit binary values delimited by comma to be programmed. + template_value: 0x1234, 0x5678, 0, 12345678 + required: [address] + + - type: object + required: [reset] + properties: + reset: + type: object + title: Reset + description: Resets the target + properties: {} diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_shadow_regs.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_shadow_regs.yaml new file mode 100644 index 0000000..62e7425 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_shadow_regs.yaml @@ -0,0 +1,11 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +sr_registers: + type: object + required: [registers] + properties: + registers: + type: object + title: Shadow registers Settings diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_she_scec.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_she_scec.yaml new file mode 100644 index 0000000..e0ed06e --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_she_scec.yaml @@ -0,0 +1,129 @@ +# Copyright 2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +key_info: + type: object + title: SHE Configuration for using SCEc + properties: + key: + type: string + title: Key for SCEc operation + description: AES-128 key used in SHE (Secure Hardware Extension) SCEc operation + template_value: ~/keys/new_key.txt + key_id: + type: [number, string] + title: Key Identifier + description: Unique identifier for the SCEc key slot + enum: [ + "MASTER_ECU_KEY", + "BOOT_MAC_KEY", + "BOOT_MAC", + "RAM_KEY", + "USER_KEY_1", + "USER_KEY_2", + "USER_KEY_3", + "USER_KEY_4", + "USER_KEY_5", + "USER_KEY_6", + "USER_KEY_7", + "USER_KEY_8", + "USER_KEY_9", + "USER_KEY_10", + "USER_KEY_11", + "USER_KEY_12", + "USER_KEY_13", + "USER_KEY_14", + "USER_KEY_15", + "USER_KEY_16", + "USER_KEY_17", + ] + template_value: USER_KEY_1 + uid: + type: [number, string] + title: SHE Unique Identifier + description: Unique identifier for the SHE device + template_value: 0x12345678 + auth_key: + type: string + title: Authentication Key + description: Authentication AES-128 key for SHE (Secure Hardware Extension) SCEc operation + template_value: ~/keys/auth_key.txt + auth_key_id: + type: [number, string] + title: Authentication Key Identifier + description: Specifies which key to use for authentication. For most keys, you can use either MASTER_ECU_KEY or the key's own ID. For BOOT_MAC, you can only use MASTER_ECU_KEY or BOOT_MAC_KEY. + template_value: MASTER_ECU_KEY + counter: + type: [number, string] + title: Counter Value + description: Counter used in SHE (Secure Hardware Extension) SCEc operation + template_value: 1 + required: [key, key_id] + +flags: + type: object + title: SHE-SCEc key flags + properties: + write_protection: + type: boolean + title: Write Protection Flag + description: Enable or disable write protection for the SHE-SCEc key. This flag should be set with caution. Setting this flag is an irreversible step and will prevent the device from being reset to factory state + template_value: false + boot_protection: + type: boolean + title: Boot Protection Flag + description: If set, the key cannot be used if the MAC value calculated in the SECURE_BOOT step did not match the BOOT_MAC value stored in secure Flash. In other words, if secure boot fails, the keys marked BOOT_PROT remain locked, and they cannot be used during application execution. + template_value: false + debugger_protection: + type: boolean + title: Debugger Protection Flag + description: If set, the key cannot be used if a debugger is (or has ever been) connected to the MCU since it was last reset. + template_value: false + key_usage: + type: boolean + title: Key Usage Flag + description: This flag determines if a key is used for encryption/decryption or for CMAC generation/verification. If the flag is set, the key is used for CMAC generation/verification. If the flag is clear, the key is used for encryption/decryption. + template_value: false + wildcard: + type: boolean + title: Wildcard Key Flag + description: If set, the key cannot be updated by supplying a special wildcard UID (i.e. UID=0). + template_value: false + verify_only: + type: boolean + title: Verify Only Flag + description: If set, the key cannot be used by the GENERATE_MAC command and can only be used by the VERIFY_MAC command. If KEY_USAGE==0, then this attribute has no effect + template_value: false + + allOf: + # boot_protection + - if: + properties: + key_id: + enum: ["BOOT_MAC_KEY", "BOOT_MAC"] + then: + properties: + boot_protection: + enum: [false] + description: "The 'boot_protection' flag can not be set to true for BOOT_MAC_KEY, or BOOT_MAC keys" + # key_usage + - if: + properties: + key_id: + enum: ["MASTER_ECU_KEY", "BOOT_MAC_KEY", "BOOT_MAC"] + then: + properties: + key_usage: + enum: [false] + description: "The 'key_usage' flag can not be set to true for MASTER_ECU_KEY, BOOT_MAC_KEY, or BOOT_MAC keys" + # verify_only + - if: + properties: + key_id: + enum: ["MASTER_ECU_KEY", "BOOT_MAC_KEY", "BOOT_MAC"] + then: + properties: + verify_only: + enum: [false] + description: "The 'verify_only' flag can not be set to true for MASTER_ECU_KEY, BOOT_MAC_KEY, or BOOT_MAC keys" diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_signed_msg.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_signed_msg.yaml new file mode 100644 index 0000000..459c790 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_signed_msg.yaml @@ -0,0 +1,563 @@ +# Copyright 2023-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause +--- +family: + type: object + required: + - family + properties: + family: + type: string + title: MCU family + description: + Family identifier including the chip revision. If revision is not + present, latest revision is used as default. + template_value: mimxrt1189 + revision: + type: string + title: MCU revision + description: Revision of silicon + template_value: latest + +signed_message: + type: object + required: + - output + - srk_set + - fuse_version + - sw_version + - srk_table + - signer + - used_srk_id + - srk_revoke_mask + - message + properties: + output: + type: string + title: Output file name + description: Output Signed Message file name + format: file_name + template_value: signed_message.bin + + container_version: + type: number + title: Container version + description: + Force container version, if not specified the default version is used. + This configuration option is valid only for chips that supports both AHAB container versions. Possible options <2, 1> + minimal: 1 + maximal: 2 + template_value: 2 + skip_in_template: True + + srk_set: + type: string + template_title: Settings of Signed Message + title: Super Root Key (SRK) set + description: Defines which set is used to authenticate the signed message. + enum: [none, oem, nxp] + template_value: oem + used_srk_id: + type: [number, string] + title: Used SRK + description: Which key from SRK set is being used. + format: number + template_value: 0 + srk_revoke_mask: + type: [number, string] + title: SRK revoke mask + description: + Bitmask to indicate which SRKs to revoke. Bit set to 1 means revoke + key. Bit 0 = revoke SRK_0, bit 1 = revoke SRK_1 etc. + format: number + template_value: 0x00 + fuse_version: + type: [number, string] + title: Fuse version + description: + The value must be equal or greater than the version stored in fuses + to allow loading this container. + format: number + template_value: 0 + sw_version: + type: [number, string] + title: Software version + description: + Number used by Privileged Host Boot Companion (PHBC) to select between + multiple images with same Fuse version field. + format: number + template_value: 0 + + check_all_signatures: + type: string + title: Check all signatures + description: "This option overrides a fuse to select verification mode.\n + - default: Apply default fuse policy.\n + - check_all_signatures: Force verification of all present signatures." + enum: [default, check_all_signatures] + template_value: default + skip_in_template: True + + signer: + type: string + title: Signed Message container signer + description: + Signature provider configuration in format 'type=;=;=' or a + private key used for sign the container header. Header can be signed by SRK. + The referenced SRK must not have been revoked. + template_value: type=file;file_path=my_prv_key.pem + signer_#2: + type: string + title: Signed Message container signer for second signature (PQC only) + description: + Signature provider configuration in format 'type=;=;=' or a + private key used for second sign (PQC only) of the container header. Header can be signed by SRK. + The referenced SRK must not have been revoked. + template_value: type=file;file_path=my_prv_key.pem + skip_in_template: True + + srk_table: + type: object + title: SRK Table + template_title: Configuration of Signed Message SRK table + description: "SRK (Super Root key) table definition." + required: [srk_array] + properties: + flag_ca: + type: boolean + title: CA Flag + description: + "CA Flag is used by HAB to indicate if the SRK is allowed to sign other keys. + In AHAB CA Flag only affects the final SRKH (Super Root Key Hash) value burned into chip fuses. It is not used in the AHAB signing process itself. + This option exists only for compatibility with systems where fuses are already programmed. In most cases, this should remain false." + template_value: false + hash_algorithm: + type: string + title: Hash Algorithm + description: "Hash algorithm used for SRK records. If not specified, default algorithm based on key type will be used." + enum: + [default, sha256, sha384, sha512, sha3_256, sha3_384, sha3_512, sm3] + template_value: default + rsa_exponent_legacy_size: + type: boolean + title: RSA exponent legacy size (4 bytes) + description: + "Force RSA exponent to use legacy 4-byte size instead of actual exponent size. + This option provides backward compatibility with older SPSDK versions that always used 4 bytes for RSA exponents. + Only enable this if you need compatibility with containers generated by older SPSDK versions." + template_value: false + default: false + skip_in_template: true + srk_array: + type: array + title: Super Root Key (SRK) table + description: + "Table containing the used SRK records. All SRKs must be of the same + type. Supported signing algorithms are: RSA-PSS, ECDSA, Dilithium or SM2. Supported hash algorithms: + sha256, sha384, sha512, sha3_256, sha3_384, sha3_512, sm3. Supported key sizes/curves: prime256v1, sec384r1, sec512r1, + rsa2048, rsa4096, dilithium3, sm2. Certificate may be of Certificate Authority. Dilithium algorithms are supported just + in new type of AHAB container" + minItems: 4 + maxItems: 4 + items: + type: string + title: SRK key + description: Path to SRK Key file. + format: file + template_value: + - my_srk_public_key0.pub + - my_srk_public_key1.pub + - my_srk_public_key2.pub + - my_srk_public_key3.pub + srk_table_#2: + type: object + title: Second SRK Table + template_title: Configuration of AHAB SRK table in case that the double signing (ECC + PQC) + required: [srk_array] + skip_in_template: True + properties: + flag_ca: + type: boolean + title: CA Flag + description: + "CA Flag is used by AHAB to indicate if the SRK is allowed to sign other keys. + In AHAB CA Flag only affects the final SRKH (Super Root Key Hash) value burned into chip fuses. It is not used in the AHAB signing process itself. + This option exists only for compatibility with systems where fuses are already programmed. In most cases, this should remain false." + template_value: false + hash_algorithm: + type: string + title: Hash Algorithm + description: "Hash algorithm used for SRK records. If not specified, default algorithm based on key type will be used." + enum: + [ + default, + sha256, + sha384, + sha512, + sha3_256, + sha3_384, + sha3_512, + sm3, + ] + template_value: default + srk_array: + type: array + title: Super Root Key (SRK) table + description: + "Table containing the used SRK Dilithium records. All SRKs must be of the same + type. Supported signing algorithms are: Dilithium level 3. Supported hash algorithms: + sha3_256, sha3_384, sha3_512. Certificate may be of Certificate Authority." + minItems: 4 + maxItems: 4 + items: + type: string + title: SRK key + description: Path to SRK Key file. + format: file + template_value: + - my_srk_public_key0.pub + - my_srk_public_key1.pub + - my_srk_public_key2.pub + - my_srk_public_key3.pub + certificate: + type: string + title: The AHAB certificate + template_title: Optional configuration of AHAB Container Certificate (if not used, erase the section) + description: + The file that contains AHAB certificate. It could be used already prepared binary form signed by SRK, or it is possible to + use configuration YAML file of certificate and the AHAB export process it will export it itself. + format: file + template_value: my_ahab_certificate.bin + + iv_path: + type: string + title: IV file path + description: + "Used only for encrypted messages. Fixed size at 256 bits. If defined the encryption is used for this Signed message. + The HEX format is accepted." + format: file-or-hex-value + template_value: my_IV.txt + + message: + type: object + template_title: Settings of Message + required: [command] + properties: + cert_version: + type: [number, string] + title: Certificate version + description: Certificate version + format: number + template_value: 0x00 + cert_permission: + type: [number, string] + title: Certificate permission + description: Certificate permission, to be used in future. The stated permission must allow the operation requested by the signed message. + format: number + template_value: 0x00 + issue_date: + type: string + pattern: ^\d{4}-\d{2}$ + title: Issue date + description: "Optional Issue date of message, if not defined the current date is used. The format must be following: 'YYYY-MM'" + template_value: 2022-10 + uuid: + type: string + title: Device UUID + description: + Unique identifier of the chip. It could be retrieve by BLHOST command from chip or also the debug authentication protocol + could provide this value. Hex string format (hexadecimal string without '0x'). In case that the restriction on UUID is not needed + the field could be omitted. + template_value: "0000000000000000" + command: + oneOf: + - type: object + required: [RETURN_LIFECYCLE_UPDATE_REQ] + properties: + RETURN_LIFECYCLE_UPDATE_REQ: + type: [number, string] + title: Life Cycle + description: Value of life cycle to be moved on. The value 16 is used for OEM keys (FIELD_RETURN_OEM) and 32 for NXP keys(FIELD_RETURN_NXP). + template_value: 0x10 + + - type: object + template_title: The 'Write secure fuse request' is message for NXP use, not usable for OEM + required: [WRITE_SEC_FUSE_REQ] + properties: + WRITE_SEC_FUSE_REQ: + type: object + title: Secure Fuse + description: Description of secure fuse to write (burn) + required: [id, data] + properties: + id: + type: [number, string] + title: Fuse ID + description: Fuse ID (address), maximal 16 bit value is allowed. + template_value: 0x0 + flags: + type: [number, string] + title: Fuse flags + description: Fuse flags, maximal 8 bit value is allowed. + template_value: 0x0 + data: + type: array + title: Fuse data + description: Fuse data, maximal 32 bit value is allowed in each item. + minItems: 1 + items: + type: [number, string] + format: number + template_value: ["0xA5A5A5A5", "0x01"] + + - type: object + template_title: The 'Key store reprovisioning enable' + required: [KEYSTORE_REPROVISIONING_ENABLE_REQ] + properties: + KEYSTORE_REPROVISIONING_ENABLE_REQ: + type: object + title: Key store reprovisioning enable + description: + This message is sent to enable the re-provisioning of a key store. User must send this signed + message before trying to create a new key store in a chip that has already been provisioned. + Once this command is successfully sent a new key store can be created through the key store + open message. + required: [monotonic_counter, user_sab_id] + properties: + monotonic_counter: + type: [number, string] + title: Monotonic counter value + description: Current monotonic counter value. Can be retrieve with SAB Get Info API + template_value: 0x0 + user_sab_id: + type: [number, string] + title: User SAB id + description: User SAB id that will do the re-provisioning. Can be retrieve with SAB Get Info API + template_value: 0x0 + + - type: object + template_title: The 'Key exchange' + required: [KEY_EXCHANGE_REQ] + properties: + KEY_EXCHANGE_REQ: + type: object + title: Key exchange + description: + This message is used to perform a combined key agreement and key derivation operation. The + derived key will be stored in key storage as a new key. Only symmetric keys can be created with + this operation. Key attributes are set in the command, like others key creation APIs (Generate + key, Import key). + required: + - key_store_id + - key_exchange_algorithm + - salt_flags + - derived_key_grp + - derived_key_size_bits + - derived_key_type + - derived_key_lifetime + - derived_key_usage + - derived_key_permitted_algorithm + - derived_key_lifecycle + - derived_key_id + - private_key_id + properties: + key_store_id: + type: [number, string] + title: Key store ID + description: + Key store ID where to store the derived key. It must be the key store ID + related to the key management handle set in the command API + format: number + template_value: 0x0 + key_exchange_algorithm: + type: string + title: Key exchange algorithm + description: | + ECDH HKDF SHA256 KEY IMPORT 0x09020109 + ECDH HKDF SHA384 KEY IMPORT 0x0902010A + ECDH HKDF SHA ANY KEY IMPORT 0x090201FF + ECDH HKDF SHA256 0x89020109 + ECDH HKDF SHA384 0x8902010A + ECDH HKDF SHA ANY 0x890201FF + enum: + - ECDH HKDF SHA256 KEY IMPORT + - ECDH HKDF SHA384 KEY IMPORT + - ECDH HKDF SHA ANY KEY IMPORT + - ECDH HKDF SHA256 + - ECDH HKDF SHA384 + - ECDH HKDF SHA ANY + - HKDF SHA256 + - HKDF SHA384 + template_value: ECDH HKDF SHA256 KEY IMPORT + + salt_flags: + type: [number, string] + title: Salt Flags + description: + "Bit field indicating the requested operations:\n + Bit 0: Salt in step #1 (HKDF-extract) of HMAC based two-step key derivation process:\n + - 0: Use zeros salt\n + - 1:Use peer public key hash as salt\n + Bit 1: In case of ELE import, salt used to derive OEM_IMPORT_WRAP_SK and OEM_IMPORT_CMAC_SK:\n + - 0: Zeros string\n + - 1: Device SRKH.\n + Bit 2 to 15: Reserved" + format: number + template_value: 0x0 + derived_key_grp: + type: [number, string] + title: Derived key group + description: + Derived key group. 100 groups are available per key store. It must be a + value in the range [0; 99]. Keys belonging to the same group can be managed through the Manage + key group command + format: number + template_value: 0x0 + derived_key_size_bits: + type: number + title: Derived key size bits + description: Derived key size bits + enum: [128, 192, 224, 256, 384, 512] + template_value: 256 + derived_key_type: + type: string + title: Derived key type + description: "\n + Key type Value Key size in bits\n + AES 0x2400 128/192/256\n + HMAC 0x1100 224/256/384/512\n + OEM_IMPORT_MK_SK 0x9200 128/192/256 " + enum: [AES, HMAC, OEM_IMPORT_MK_SK] + template_value: AES + derived_key_lifetime: + type: string + title: Derived key lifetime + description: "\n + VOLATILE 0x00 Standard volatile key.\n + PERSISTENT 0x01 Standard persistent key.\n + PERMANENT 0xFF Standard permanent key.\n" + enum: [VOLATILE, PERSISTENT, PERMANENT] + template_value: PERSISTENT + derived_key_usage: + type: array + title: Derived key usage + description: + "Permission usage list. List of possible permissions:\n + Cache 0x00000004 Permission to cache the key in the ELE internal secure memory. + This usage is set by default by ELE FW for all keys generated or imported.\n + Encrypt 0x00000100 Permission to encrypt a message with the key. It could be cipher + encryption, AEAD encryption or asymmetric encryption operation.\n + Decrypt 0x00000200 Permission to decrypt a message with the key. It could be + cipher decryption, AEAD decryption or asymmetric decryption operation.\n + Sign message 0x00000400 Permission to sign a message with the key. It could be + a MAC generation or an asymmetric message signature operation.\n + Verify message 0x00000800 Permission to verify a message signature with the key. + It could be a MAC verification or an asymmetric message signature verification operation.\n + Sign hash 0x00001000 Permission to sign a hashed message with the key + with an asymmetric signature operation. Setting this permission automatically + sets the Sign Message usage.\n + Verify hash 0x00002000 Permission to verify a hashed message signature with + the key with an asymmetric signature verification operation.\n + Setting this permission automatically sets the Verify Message usage.\n + Derive 0x00004000 Permission to derive other keys from this key." + inItems: 0 + maxItems: 8 + items: + type: string + enum: + [ + Cache, + Encrypt, + Decrypt, + Sign message, + Verify message, + Sign hash, + Verify hash, + Derive, + ] + template_value: [Cache, Derive] + derived_key_permitted_algorithm: + type: string + title: Derived key permitted algorithm + description: "\n + HKDF SHA256 (HMAC two-step) 0x08000109\n + HKDF SHA384 (HMAC two-step) 0x0800010A" + enum: [HKDF SHA256, HKDF SHA384] + template_value: HKDF SHA256 + derived_key_lifecycle: + type: string + title: Derived key lifecycle + description: "\n + CURRENT 0x00 Key is usable in current lifecycle.\n + OPEN 0x01 Key is usable in open lifecycle.\n + CLOSED 0x02 Key is usable in closed lifecycle.\n + CLOSED and LOCKED 0x04 Key is usable in closed and locked lifecycle." + enum: [CURRENT, OPEN, CLOSED, LOCKED] + template_value: CURRENT + derived_key_id: + type: [number, string] + title: Derived key ID + description: "It could be:\n + - Wanted key identifier of the generated key: only supported by persistent and permanent keys\n + - 0x00000000 to let the FW chose the key identifier: supported by all keys (all persistence levels)" + format: number + template_value: 0x0 + private_key_id: + type: [number, string] + title: Private key ID + description: Identifier in the ELE key storage of the private key to use with the peer public key during the key agreement process + format: number + template_value: 0x0 + input_peer_public_key_digest: + type: [number, string] + title: Input peer public key digest + description: The algorithm used to generate the digest must be SHA256 + template_value: "0x0000000000000000000000000000000000000000000000000000000000000000" + input_user_fixed_info_digest: + type: [number, string] + title: Input user fixed info digest + description: The algorithm used to generate the digest must be SHA256 + template_value: "0x0000000000000000000000000000000000000000000000000000000000000000" + oem_private_key: + type: string + title: OEM Private Key for ECDH + description: + "Path to OEM P256 private key file (PEM format) used for ECDH key agreement. + This key will be used with NXP_PROD_KA_PUB to derive the shared secret and subsequent keys. + If provided along with nxp_prod_ka_pub, automatic ECDH key derivation will be performed." + format: file + template_value: oem_p256_private_key.pem + nxp_prod_ka_pub: + type: [number, string] + title: NXP Production Key Agreement Public Key + description: "NXP production key agreement public key. + Used together with oem_private_key for ECDH key derivation." + format: file + template_value: nxp_prod_ka.pub + srkh: + type: [number, string] + title: Super Root Key Hash + description: Optional Super root key hash is used if Salt flags that requires in Exchange keys algorithms. + template_value: "0x00000000000000000000000000000000" + + - type: object + template_title: The 'Debug Authentication request' is message for DAT process, do not use it individually + required: [DAT_AUTHENTICATION_REQ] + properties: + DAT_AUTHENTICATION_REQ: + type: object + title: Debug Authentication response + description: Debug authentication response for DAT procedure + required: [challenge_vector] + properties: + challenge_vector: + type: [number, string] + title: Challenge vector + description: Challenge vector 32 bytes got's from the DAC. + template_value: 0x1234567812345678123456781234567812345678123456781234567812345678 + authentication_beacon: + type: [number, string] + title: Authentication beacon + description: Authentication beacon, keep it 0 till it will be implemented on HW. + template_value: 0x0 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_tlv_blob.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_tlv_blob.yaml new file mode 100644 index 0000000..958b7d2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_tlv_blob.yaml @@ -0,0 +1,286 @@ +# Copyright 2025-2026 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +--- +output_file: + type: object + title: Basic Settings + properties: + output: + type: string + title: Output Image name + description: The path for result binary file. + format: file_name + template_value: tlv.bin + required: [output] + +tlv: + type: object + template_title: Settings of TLV + required: [command] + properties: + command: + oneOf: + - type: object + required: [KEY_IMPORT] + properties: + KEY_IMPORT: + type: object + title: Key import TLV + description: + This TLV is designed to import a symmetric key or a private key of an asymmetric key pair. The imported key must be encrypted + (except specific cases like SRKH). The key used to decrypt the imported key must have the following attributes; + - DECRYPT usage; + - A wrapping key algorithm as permitted algorithm (detailed in next sections). + User must import symmetric key or private key from an asymmetric key pair. For RSA asymmetric + private keys, it must be the concatenation of private exponent followed by the modulus. + To be valid, all key attributes of the imported key must be coherent. If attributes are invalid, an error is returned. + allOf: + - required: + - key_id + - permitted_algorithm + - key_usage + - key_type + - key_size_bits + - key_lifetime + - key_lifecycle + - oem_mk_sk_key_id + - key_wrapping_algorithm + - oneOf: + - required: + - wrapped_key + - signature + - required: + - import_key + - oem_import_mk_sk_key + + properties: + key_id: + type: [number, string] + title: Key ID + description: + Key store ID where to store the imported key. It must be the key store ID + related to the key management handle set in the command API. If set to 0, the actual ID is determined by ELE. + format: number + template_value: 0x0 + permitted_algorithm: + type: string + title: Permitted algorithm + description: "Permitted algorithm of the imported key. Supports hash, MAC, cipher, AEAD, signature, and key exchange algorithms." + enum: + # Hash Algorithms + - MD5 + - SHA1 + - SHA224 + - SHA256 + - SHA384 + - SHA512 + - SHA3_224 + - SHA3_256 + - SHA3_384 + - SHA3_512 + - SHAKE256 + # MAC Algorithms + - HMAC SHA256 + - HMAC SHA384 + - CMAC + # Cipher Algorithms + - ECB NO PADDING + - CBC NO PADDING + - CTR + - CFB + - OFB + - ALL CIPHER + # AEAD Algorithms + - CCM + - GCM + - CHACHA20_POLY1305 + - ALL AEAD + # Signature Algorithms + - ECDSA SHA224 + - ECDSA SHA256 + - ECDSA SHA384 + - ECDSA SHA512 + - RSA PKCS1 V1.5 SHA224 + - RSA PKCS1 V1.5 SHA256 + - RSA PKCS1 V1.5 SHA384 + - RSA PKCS1 V1.5 SHA512 + - RSA PKCS1 V1.5 SHA ANY + - RSA PKCS1 PSS MGF1 SHA224 + - RSA PKCS1 PSS MGF1 SHA256 + - RSA PKCS1 PSS MGF1 SHA384 + - RSA PKCS1 PSS MGF1 SHA512 + - RSA PKCS1 PSS MGF1 SHA ANY + - RSA PKCS1 ALL + - ED25519PH + - ED448PH + - PURE EDDSA + - ALL EDDSA + # Public Key Attestation + - CMAC ATTESTATION + - ECDSA SHA224 ATTESTATION + - ECDSA SHA256 ATTESTATION + - ECDSA SHA384 ATTESTATION + - ECDSA SHA512 ATTESTATION + # Asymmetric Encryption/Decryption + - RSA PKCS1 V1.5 CRYPT + - RSA PKCS1 OAEP SHA1 + - RSA PKCS1 OAEP SHA224 + - RSA PKCS1 OAEP SHA256 + - RSA PKCS1 OAEP SHA384 + - RSA PKCS1 OAEP SHA512 + # Key Exchange + - ECDH HKDF SHA256 KEY IMPORT + - ECDH HKDF SHA384 KEY IMPORT + - ECDH HKDF SHA ANY KEY IMPORT + - ECDH HKDF SHA256 + - ECDH HKDF SHA384 + - ECDH HKDF SHA ANY + template_value: SHA256 + key_usage: + type: array + title: Derived key usage + description: + "Permission usage list. List of possible permissions:\n + Cache 0x00000004 Permission to cache the key in the ELE internal secure memory. + This usage is set by default by ELE FW for all keys generated or imported.\n + Encrypt 0x00000100 Permission to encrypt a message with the key. It could be cipher + encryption, AEAD encryption or asymmetric encryption operation.\n + Decrypt 0x00000200 Permission to decrypt a message with the key. It could be + cipher decryption, AEAD decryption or asymmetric decryption operation.\n + Sign message 0x00000400 Permission to sign a message with the key. It could be + a MAC generation or an asymmetric message signature operation.\n + Verify message 0x00000800 Permission to verify a message signature with the key. + It could be a MAC verification or an asymmetric message signature verification operation.\n + Sign hash 0x00001000 Permission to sign a hashed message with the key + with an asymmetric signature operation. Setting this permission automatically + sets the Sign Message usage.\n + Verify hash 0x00002000 Permission to verify a hashed message signature with + the key with an asymmetric signature verification operation.\n + Setting this permission automatically sets the Verify Message usage.\n + Derive 0x00004000 Permission to derive other keys from this key." + inItems: 0 + maxItems: 8 + items: + type: string + enum: + [ + Cache, + Encrypt, + Decrypt, + Sign message, + Verify message, + Sign hash, + Verify hash, + Derive, + ] + template_value: [Cache, Derive] + key_type: + type: string + title: Import key type + description: "\n + Key type Value Key size in bits\n + AES 0x2400 128/192/256\n + HMAC 0x1100 224/256/384/512\n + Derived key 0x1200 256/384\n + OEM_IMPORT_MK_SK 0x9200 128/192/256\n + ECC NIST 0x7112 256/384/521\n + RSA 0x7001 2048/3072/4096" + enum: + [AES, HMAC, Derived key, OEM_IMPORT_MK_SK, ECC NIST, RSA] + template_value: AES + key_size_bits: + type: number + title: Import key size bits + description: Import key size bits + enum: [128, 192, 224, 256, 384, 512, 521, 2048, 3072, 4096] + template_value: 256 + key_lifetime: + type: string + title: Imported key lifetime + description: "\n + ELE_KEY_IMPORT_VOLATILE 0xC0020000 Standard volatile key.\n + ELE_KEY_IMPORT_PERSISTENT 0xC0020001 Standard persistent key.\n + ELE_KEY_IMPORT_PERMANENT 0xC00200FF Standard permanent key.\n" + enum: + [ + ELE_KEY_IMPORT_VOLATILE, + ELE_KEY_IMPORT_PERSISTENT, + ELE_KEY_IMPORT_PERMANENT, + ] + template_value: ELE_KEY_IMPORT_PERSISTENT + key_lifecycle: + type: string + title: Imported key lifecycle + description: "\n + CURRENT 0x00 Key is usable in current lifecycle.\n + OPEN 0x01 Key is usable in open lifecycle.\n + CLOSED 0x02 Key is usable in closed lifecycle.\n + OPENED and CLOSED 0x03 Key is usable in opened and closed lifecycle.\n + CLOSED and LOCKED 0x04 Key is usable in closed and locked lifecycle." + enum: [CURRENT, OPEN, CLOSED, OPEN_CLOSED, LOCKED] + template_value: CURRENT + oem_mk_sk_key_id: + type: [number, string] + title: OEM_IMPORT_MK_SK key ID + description: + Key store ID where is stored the OEM_IMPORT_MK_SK key. It must be the key store ID + related to the key management handle set in the command API + format: number + template_value: 0x0 + key_wrapping_algorithm: + type: string + title: Imported key wrapping algorithm + description: "\n + RFC3394 - RFC 3394 wrapping\n + AES_CBC - AES-CBC wrapping (padding: ISO7816-4 padding)" + enum: [RFC3394, AES_CBC] + template_value: RFC3394 + iv: + type: [number, string] + title: Initial vector + description: IV to use for CBC wrapping. Not used if 'wrapping algorithm' not equal 0x02. + template_value: "0x00000000000000000000000000000000" + signing_algorithm: + type: string + title: Wrapped key signing algorithm + description: "Algorithm used to sign the blob itself. Field “Signature” of this blob. It must be: 0x01 (CMAC)" + enum: [CMAC] + template_value: CMAC + wrapped_key: + type: [number, string] + title: Wrapped key + description: + "Private key data in encrypted format as defined by the 'Wrapping Algorithm'. + Key used to do the encryption must be OEM_IMPORT_WRAP_SK derived from OEM_IMPORT_MK_SK. + Instead of 'wrapped_key' & 'signature' it could be used 'import_key' & 'oem_import_mk_sk_key'." + template_value: "0x00000000" + signature: + type: [number, string] + title: Signature + description: + "Signature of all previous fields of this blob including + the signature tag (0x5E) and signature length fields. Key used to do the signature must be + OEM_IMPORT_CMAC_SK derived from OEM_IMPORT_MK_SK. + Instead of 'wrapped_key' & 'signature' it could be used 'import_key' & 'oem_import_mk_sk_key'." + template_value: "0x00000000000000000000000000000000" + import_key: + type: [number, string] + title: Raw import key + description: + "Raw private key that will be wrapped and encrypted by OEM_IMPORT_MK_SK key that must be also provided. + Instead of 'import_key' & 'oem_import_mk_sk_key' it could be used 'wrapped_key' & 'signature'." + template_value: raw_key.pem + oem_import_mk_sk_key: + type: [number, string] + title: OEM_IMPORT_MK_SK Key + description: + "OEM_IMPORT_MK_SK key used to wrap and encrypt the raw key. + Instead of 'import_key' & 'oem_import_mk_sk_key' it could be used 'wrapped_key' & 'signature'." + template_value: "0x00000000000000000000000000000000" + srkh: + type: [number, string] + title: Super Root Key Hash + description: Optional Super root key hash is used if Salt flags that requires in Exchange keys algorithms. + template_value: "0x00000000000000000000000000000000" diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_tz.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_tz.yaml new file mode 100644 index 0000000..a31a838 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_tz.yaml @@ -0,0 +1,160 @@ +# Copyright 2021-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +tz: + type: object + required: [tzpOutputFile, trustZonePreset] + properties: + tzpOutputFile: + type: string + title: Optional name of output file for TZ binary + description: The name of output binary file with Trust Zone data. + format: file_name + template_value: my_tz_file.bin + + trustZonePreset: + type: object + title: Customization of standard preset values + description: Trust Zone preset dictionary, with trust zone configuration. + +tz_v2: + type: object + required: [tzpOutputFile, trustZoneRecords] + properties: + tzpOutputFile: + type: string + title: Optional name of output file for TZ binary + description: The name of output binary file with Trust Zone data. + format: file_name + template_value: my_tz_file.bin + + trustZoneRecords: + type: array + title: List of Trust Zone configuration Records + description: > + Trust Zone preset dictionary, with trust zone configuration. + + The ROM executes following read/write sequence for every data record: + + 1. Reads DATA from ADDRESS + + 2. Calculates RESULT = (DATA AND ~MASK) OR (VALUE AND MASK) + + 3. Writes Result/Value into Address + + 4. Reads DATA from ADDRESS + + 5. Compare values (DATA AND MASK) and (VALUE AND MASK) + + 6. Repeats steps 4 and 5 + + 7. If compared values are not equal, the boot process fails + + + Many peripherals have registers, which combines control and status bits. In some cases these registers requires specific handling. For example registers, where reading register can delete some status bits or read value is different from value, which was written. In this case user can skip some steps in the sequence above (steps 1-7) to avoid unwanted behavior. + 32-bit platforms have peripheral registers address aligned to word boundary (bits bit1:bit0 are always zero). Therefore, these two bits together with mask value can be utilized to define, which steps will be skipped during memory address/register modification. + There are three ways how user can modify read/write data sequence: + + + Modification of read/write Data Sequence: + + Mask = 0: If Mask is set to 0, the read and mask with all zero bits, prior to value is modified, doesn't make any sense because all bits are cleared. Therefore, these steps are skipped (steps 1-2) and Value is directly written into destination address. + + b0 = 1: If bit0 in address is set to "1", the readback operation is skipped (steps 4-7) + + b1 = 1: If bit1 in address is set to "1", the write operation is skipped (steps 1-3) + + All possible combinations are summarized in Table below: + + + | Mode | skip_write | skip_readback | mask | Operations with register | Skipped steps | + + |--------------------|------------|---------------|----------|--------------------------|---------------| + + | read-modify-write | False | False | non-zero | read+write+read+read | none | + + | + readback | | | | | | + + | write + readback | False | False | 0x0 | write+read+read | 1-2 | + + | read-modify-write | False | True | non-zero | read+write | 4-7 | + + | write | False | True | 0x0 | write | 3-7 | + + + Usage Examples + -------------- + Read-modify-write + Readback Sequence + + This sequence is standard sequence and can be used to modify part or whole register/memory address. + For example, set SAU->RNR (0xE000EDD8) to 0x7 the TZ-M preset data is: + + Address Mask Value + 0xE000EDD8 0xFF 0x7 + + + Write+Readback Sequence + + In case user wants to configure whole register/memory address the mask can be set to 0x0. In this case steps 1-2 are skipped, and value is directly written into register. Following readback verifies that register/memory address contains desired value. + Let consider the same example as above. Then preset data is + + Address Mask Value + 0xE000EDD8 0x0 0x7 + + + Configuring special peripheral/core register + + Let’s consider setting bit3 in SCB->AIRCR (0xE000ED0C) register. This register contains specific bitfield VECTKEY/VECTKEYSTAT (bits 31-16). When register is read, this bitfield contains value 0xFA05 while when register is written, this bitfield needs to be set to 0x05FA. This fact doesn’t allow to use standard read-modify-write + readback sequence. But this register can be modified by read-modify-write sequence: + + Address Mask Value + 0xE000ED0D 0xFFFF0008 0x05FA0008 + + + If validation of written value is required, it can be done by additional read only sequence: + + Address Mask Value + 0xE000ED0E 0xFFFF0008 0xFA050008 + + This complex example shows that TZ-M preset data can be used not only to configure some registers or memory addresses, but it can be also used to verify that certain register or memory address contains desired value. + + minItems: 1 + items: + type: object + required: [address, value] + properties: + address: + type: [number, string] + title: Memory or Register Address + description: Hexadecimal or decimal address of register for Trust Zone configuration + format: number + template_value: "0xE000EDD8" + mask: + type: [number, string] + title: Mask for register write/read operation + description: Bit mask to control which bits of the register will be modified during Trust Zone configuration + format: number + template_value: "0x00000007" + value: + type: [number, string] + title: Value for register write/read operation + description: Value to be written to the specified address with the given mask + format: number + template_value: "0x00000007" + skip_write: + type: boolean + title: Skip Write Operation + description: Flag to control whether write operation (steps 1-3) should be skipped during Trust Zone configuration + default: false + template_value: false + skip_readback: + type: boolean + title: Skip Readback Operation + description: Flag to control whether readback verification (steps 4-7) should be skipped during Trust Zone configuration + default: false + template_value: false + + + + + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_wpc.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_wpc.yaml new file mode 100644 index 0000000..eacc8c2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_wpc.yaml @@ -0,0 +1,137 @@ +# Copyright 2024-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +el2go: + type: object + properties: + url: + type: string + title: "EdgeLock2Go URL" + description: "URL pointing to the root of EL2GO server" + template_value: "https://api.edgelock2go.com" + qi_id: + type: [number, string] + title: "Customer Qi ID" + description: "Customer's (product line) Qi ID registered in EL2GO" + template_value: 123456 + api_key: + type: string + title: "EL2GO API Key" + description: "REST API key used for user authentication in EL2GO. + You may use: + 1) path to a file with the key on the first line: ~/.el2go/wpc_token.txt (~ is interpreted as your HOME) + 2) environment variable with the key: $MY_EL2GO_KEY + 3) environment variable containing a path to the key file: $MY_KEY_FILE + 4) directly your API key in plain text (not recommended)" + template_value: abcxyz123 + timeout: + type: number + title: "Timeout for EL2GO API" + description: "Timeout for EL2GO API in seconds. Default is 60 seconds" + template_value: 60 + required: [url, qi_id, api_key] + +mboot: + type: object + description: Select one of the communication interfaces. For specification details please see 'blhost --help' + properties: + port: + type: string + title: Serial line interface + template_value: com1 + usb: + type: string + title: USB interface + template_value: 0x1fc9:0x014f + sdio: + type: string + title: SDIO Interface + template_value: /dev/mcu-sdio + lpcusbsio: + type: string + title: USBSIO Interface + template_value: spi0 + can: + type: string + title: CAN Interface + template_value: can1 + plugin: + type: string + title: Plugin Interface + template_value: identifier=,param1=value1,param2=value2 + oneOf: + - required: [port] + - required: [usb] + - required: [sdio] + - required: [lpcusbsio] + - required: [can] + - required: [plugin] + +model: + type: object + properties: + model_dir: + type: string + format: dir + title: "Model directory" + description: "Path to directory containing the model (config.yaml)" + template_value: + required: [model_dir] + +full_config: + type: object + properties: + family: + type: string + title: "Target family" + description: "Name of the target family" + template_value: mwct2xxxs + service_type: + type: string + title: "Name of the WPC service adapter" + description: "Name of the WPC service adapter" + service_parameters: + type: object + title: "Parameters for the WPC service adapter" + description: "Parameters for the WPC service adapter" + properties: {} + target_type: + type: string + title: "Name of the target adapter" + description: "Name of the target adapter" + target_parameters: + type: object + title: "Parameters for the target adapter" + description: "Parameters for the target adapter" + properties: {} + required: + [service_type, service_parameters, target_type, target_parameters, family] + +service_config: + type: object + properties: + service_type: + type: string + title: "Name of the WPC service adapter" + description: "Name of the WPC service adapter" + service_parameters: + type: object + title: "Parameters for the WPC service adapter" + description: "Parameters for the WPC service adapter" + properties: {} + required: [service_type, service_parameters] + +target_config: + type: object + properties: + target_type: + type: string + title: "Name of the target adapter" + description: "Name of the target adapter" + target_parameters: + type: object + title: "Parameters for the target adapter" + description: "Parameters for the target adapter" + properties: {} + required: [target_type, target_parameters] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_xmcd.yaml b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_xmcd.yaml new file mode 100644 index 0000000..bd69633 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/jsonschemas/sch_xmcd.yaml @@ -0,0 +1,35 @@ +# Copyright 2022-2025 NXP +# +# SPDX-License-Identifier: BSD-3-Clause + +memory_type: + type: object + required: [mem_type] + properties: + mem_type: + type: string + title: Memory type + description: Specify type of memory used by XMCD description. + enum: [flexspi_ram, semc_sdram, xspi_ram] + template_value: flexspi_ram + +config_type: + type: object + required: [config_type] + properties: + config_type: + type: string + title: Configuration type + description: Specify type of configuration used by XMCD description. + enum: [full, simplified] + template_value: simplified + +xmcd: + type: object + properties: + xmcd_settings: + type: object + title: Settings of XMCD + description: External memory configuration settings for selected MCU. + + required: [xmcd_settings] diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/readme.md b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/readme.md new file mode 100644 index 0000000..e0a64f3 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/data/readme.md @@ -0,0 +1,230 @@ +# NXP Secure Provisioning SDK Database + The data folder in package contains all data that is used by SPSDK tool. + +## Organization of database + - common: Folder that contains common data for the general operation of SPSDK as defaults for all devices. + - devices: Folder with all supported devices by SPSDK. the name of folder is unique name of supported family. Each family folder must contains at least 'database.yaml' file + with correct format. + - jsonschemas: Folder with JSON SCHEMAS used by individual SPSDK tools. Format of file depends on each tool, some of tool is using standard JSON SCHEMA format, rest is + contains chunks of JSON SCHEMAs organized as a big dictionary. + +## Glossary + - SPSDK_Database: The base SPSDK class to handle with database. It has Singleton behavior so it could created any time without duplicate load of database. + - SPSDK_Database cache: See chapter "Database caching" + - Device: Name of the device. The exact name of the device is specified by name of the folder in 'devices' folder. + - Revision: Revision of the device. Each device has to have at least one revision. + - Feature: Device feature. By feature is organized the whole database to support individual tools. Example of features: mbi (Master BOot Image), tp (Trust Provisioning) etc. The whole list contains the SPSDK_Database class. + + +## Device data composition + The device data for the using by SPSDK are organized by family chip revisions, the database method 'get_device_features()' is designed as a main way to get data from database. + +### Mandatory fields in device 'database.yaml' for fully defined devices + - revisions: The dictionary with all supported revisions. In case that the revision doesn't contains any changes to standard features it enough to define empty dictionary + - latest: The name of latest revision of the device. + - features: The dictionary with all supported features by device. The final device feature is composed from the defaults from 'common/database_defaults.yaml' updated by information in '{device_name}/database.yaml' + +Example of newly created device: +``` +revisions: + rev0: {} + rev1: + features: + feature1: + key1: override_value_for_this_revision + rev2: + features: + feature1: + key1: override_value_for_this_revision + feature2: + key1: override_value_for_this_revision + +latest: rev2 +features: +feature1: +key1: value +feature2: +key1: value +``` + +### Mandatory fields in device 'database.yaml' for alias defined devices + - alias: The name of a device that is used as origin. + +In aliased devices is possible to define also all definitions from 'Mandatory fields in device 'database.yaml' for fully defined devices' chapter. +To define a new revision in aliased device the key word 'alias' must be used also in newly defined revision: + +Example of created a new device as a alias of existing device. In example there is also created new revision. +``` +alias: origin_device +revisions: + new_rev: + alias: origin_device_revision + features: + feature1: + key1: override_value_for_this_revision + +latest: new_rev +``` + +### Steps to create final revision +The SPSDK database flow to get the final data for requested revision. + +**The code without alias devices performs the following steps:** +1. Load device features +2. Load default features +3. For all defined device features do following: + 1. Get default feature values + 2. Updated default feature values by device feature values +4. For all defined device revisions update gotten feature data by revision updates + +Here is example of simple data to show creating of final revision data + +**Default database file => common/default_database.yaml** +``` +revisions: {} +latest: latest + +features: + feature1: + key1: value_default + feature2: + key1: value_default + feature3: {} +``` + +**Device 1 database file => devices/device1/database.yaml** +``` +revisions: + rev1: {} + rev2: + features: + feature1: + key2: rev2_value +latest: rev2 + +features: + feature1: + key2: value +``` + +**Device 2 database file => devices/device2/database.yaml** +``` +revisions: + rev1: + features: + feature1: + key1: rev1_value +latest: rev1 + +features: + feature1: + key1: value + feature2: {} +``` + +--- +--- +**The final revisions data for device 1:** +``` +rev1: + features: + feature1: + key1: value_default + key2: value +rev2: + features: + feature1: + key1: value_default + key2: rev2_value +``` + +**The final revisions data for device 2:** +``` +rev1: + features: + feature1: + key1: rev1_value + feature2: + key1: value_default +``` + +--- +--- +**The code with alias device do following steps:** +1. Load origin device +2. Load device features +3. If the device features are present, all origin revision are updated by them +4. If the device revisions are present, update the revision data from step 3 by them +5. If there is a new revision defined (must contains alias key), then is copied from aliased revision and update by possible new revision values +6. If a new latest revision field is available, also this one is updated + +**Here is example of new aliased device from previous data with new created revision:** +``` +alias: device1 + +revisions: + new_rev: + alias: rev2 + features: + feature1: + key2: new_rev_value +latest: new_rev +``` +**The final revisions data for new aliased device:** +``` +rev1: + features: + feature1: + key1: value_default + key2: value +rev2: + features: + feature1: + key1: value_default + key2: rev2_value +new_rev: + features: + feature1: + key1: value_default + key2: new_rev_value +``` + +### Revision data access in code +The revision class contains few basic methods to get data from database including type hints and type validation. +Each "get_" has two mandatory parameters: +- feature: Name of the feature to be data gets from +- key: What is union of simple string key or list of strings that is used as a path to get into nested values + +**List of supported "get_" methods:** +- get_value: Get general value without type checking +- get_bool: Get boolean +- get_int: Get integer +- get_str: Get string +- get_dict: Get dictionary +- get_list: Get list +- get_file_path: Get file path. Path is relative to device folder. In case of aliased device and non existing file in device folder, + it automatically used device path of aliased device. The method also check if the file exists. + + +## Database Caching +By default, the SPSDK database is cached on the local machine to improve load performance. Each SPSDK instance on the machine has its own independent cache. + An invalidation mechanism is also in place to detect changes in the original data and update the cache accordingly. If necessary, the cache can be disabled + by setting the environment variable "SPSDK_CACHE_DISABLED_{version}" to True, where {version} represents the current version of SPSDK. + +You can now specify a custom path for the SPSDK cache by setting the system environment variable "SPSDK_CACHE_FOLDER". This allows you to control where the cache is stored on your system. + +The database itself also maintains a simple cache for opened configuration files to prevent multiple loads during the application's runtime. The content of these runtime configuration files is checked upon exit of SPSDK, and + the main cache is updated if new files are found. + +## Support for Restricted Data +The database also supports a mechanism to load restricted data (usually chips and features under an NDA deal). The structure of the restricted data folders/files + must adhere to the standard database. If the restricted data is used, the database performs the following steps: +- Checks if "database_defaults.yaml" is present in the restricted data and uses it instead of the standard one if available. +- Checks if "database.yaml" is present in the restricted device data and uses it instead of the standard one if available. This check is performed for each device. +- If the restricted data contains a file with the same name as a standard database folder, the restricted file is used instead of the standard one. + +## Support for Database Add-On Data +Add-ons are designed to add any customer data to the standard/restricted database. The structure of the add-on data folders/files must adhere to the standard database. + If the add-on data is used, the database performs the following steps: +- Checks if "database.yaml" is present in the add-on device data and updates the loaded database with these add-ons. +- Add-ons also allow the addition of new data files. Files with the same names as those in the restricted/standard database are ignored. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/py.typed b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/sbfile/sb2/bd_ebnf_grammar.txt b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/sbfile/sb2/bd_ebnf_grammar.txt new file mode 100644 index 0000000..50d8ba6 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/sbfile/sb2/bd_ebnf_grammar.txt @@ -0,0 +1,174 @@ +/* BD file grammar in EBNF form */ +command_file ::= pre_section_block* section_block* + +pre_section_block ::= options_block +| constants_block +| sources_block +| keyblob_block + +options_block ::= OPTIONS '{' option_def* '}' + +option_def ::= IDENT '=' const_expr ';' + +constants_block ::= CONSTANTS '{' constant_def* '}' + +constant_def ::= IDENT '=' bool_expr ';' + +sources_block ::= SOURCES '{' source_def* '}' + +source_def ::= IDENT '=' source_value ( '(' option_list? ')' )? ';' + +source_value ::= STRING_LITERAL +| EXTERN '(' int_const_expr ')' + +option_list ::= IDENT '=' const_expr (',' IDENT '=' const_expr )* + +keyblob_block ::= KEYBLOB '(' int_const_expr ')' '{' keyblob_contents '}' + +keyblob_contents ::= '(' option_list* ')' + +section_block ::= SECTION '(' int_const_expr section_options? ')' section_contents + +section_options ::= ';' option_list? + +section_contents ::= '{' statement* '}' +| '<=' source_name ';' + +statement ::= basic_stmt ';' +| from_stmt +| if_stmt +| keywrap_stmt + +basic_stmt ::= load_stmt +| load_ifr_stmt +| call_stmt +| jump_sp_stmt +| mode_stmt +| message_stmt +| erase_stmt +| enable_stmt +| reset_stmt +| encrypt_stmt +| keystore_stmt + +load_stmt ::= LOAD load_opt load_data load_target + +load_opt ::= IDENT +| int_const_expr +| empty + +load_data ::= int_const_expr +| STRING_LITERAL +| IDENT +| section_list +| section_list FROM IDENT +| BINARY_BLOB + +load_target ::= '>' '.' +| '>' address_or_range + +section_list ::= section_ref (',' section_ref )* + +section_ref ::= '~' SECTION_NAME +| SECTION_NAME + +erase_stmt ::= ERASE address_or_range +| ERASE ALL + +address_or_range ::= int_const_expr ( '..' int_const_expr)? + +symbol_ref ::= IDENT'?' ':' IDENT + +load_ifr_stmt ::= LOAD IFR int_const_expr '>' int_const_expr + +call_stmt ::= call_type call_target call_arg? + +call_type ::= CALL +| JUMP + +call_target ::= int_const_expr +| symbol_ref +| IDENT + +call_arg ::= '(' int_const_expr? ')' + +jump_sp_stmt ::= JUMP_SP int_const_expr call_target call_arg? + +from_stmt ::= FROM IDENT '{' in_from_stmt* '}' + +in_from_stmt ::= basic_stmt ';' +| if_stmt + +mode_stmt ::= MODE int_const_expr + +message_stmt ::= message_type STRING_LITERAL + +message_type ::= INFO +| WARNING +| ERROR + +keystore_stmt ::= KEYSTORE_TO_NV mem_opt address_or_range +| KEYSTORE_FROM_NV mem_opt address_or_range + +mem_opt ::= IDENT +| '@' int_const_expr +| empty + +if_stmt ::= IF bool_expr '{' statement* '}' else_stmt? + +else_stmt ::= ELSE '(' statement* ')' +| ELSE if_stmt + +keywrap_stmt ::= KEYWRAP '(' int_const_expr ')' '{' statement* '}' + +encrypt_stmt ::= ENCRYPT '(' int_const_expr ')' '{' statement* '}' + +enable_stmt ::= ENABLE AT_INT_LITERAL int_const_expr + +reset_stmt ::= RESET + +ver_check_stmt ::= VERSION_CHECK sec_or_nsec int_const_expr + +sec_or_nsec ::= SEC +| NSEC + +const_expr ::= STRING_LITERAL +| bool_expr + +int_const_expr ::= expr + +bool_expr ::= bool_expr '<' bool_expr +| bool_expr '<=' bool_expr +| bool_expr '>' bool_expr +| bool_expr '>=' bool_expr +| bool_expr '==' bool_expr +| bool_expr '!=' bool_expr +| bool_expr '&&' bool_expr +| bool_expr '||' bool_expr +| '(' bool_expr ')' +| int_const_expr +| '!' bool_expr +| DEFINED '(' IDENT ')' +| IDENT '(' source_name ')' + +expr ::= expr '+' expr +| expr '-' expr +| expr '*' expr +| expr '/' expr +| expr '%' expr +| expr '<<' expr +| expr '>>' expr +| expr '&' expr +| expr '|' expr +| expr '^' expr +| expr '.' INT_SIZE +| '(' expr ')' +| INT_LITERAL +| IDENT +| SYMBOL_REF +| unary_expr +| SIZEOF '(' SYMBOL_REF ')' +| SIZEOF '(' IDENT ')' + +unary_expr ::= '+' expr +| '-' expr diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/sbfile/sb2/bd_grammer.txt b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/sbfile/sb2/bd_grammer.txt new file mode 100644 index 0000000..c8718ba --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/spsdk/sbfile/sb2/bd_grammer.txt @@ -0,0 +1,210 @@ +/* BD file grammar in BNF form */ +command_file ::= pre_section_block section_block + +pre_section_block ::= pre_section_block options_block +| pre_section_block constants_block +| pre_section_block sources_block +| pre_section_block keyblob_block +| empty + +options_block ::= OPTIONS '{' option_def '}' + +option_def ::= option_def IDENT '=' const_expr ';' +| empty + +constants_block ::= CONSTANTS '{' constant_def '}' + +constant_def ::= constant_def IDENT '=' bool_expr ';' +| empty + +sources_block ::= SOURCES '{' source_def '}' + +source_def ::= source_def IDENT '=' source_value ';' +| source_def IDENT '=' source_value '(' source_attr_list ')' ';' +| empty + +source_value ::= STRING_LITERAL +| EXTERN '(' int_const_expr ')' + +source_attr_list ::= option_list +| empty + +option_list ::= IDENT '=' const_expr ',' option_list +| IDENT '=' const_expr + +keyblob_block ::= KEYBLOB '(' int_const_expr ')' '{' keyblob_contents '}' + +# ----------------------------- Original keyblob grammar ------------- +# keyblob_contents ::= keyblob_contents '(' keyblob_options_list ')' +# | empty + +# keyblob_options_list ::= keyblob_options +# | empty + +# keyblob_options ::= IDENT '=' const_expr ',' keyblob_options +# | IDENT '=' const_expr + +# ----------------------------- New keyblob grammar ------------------ +keyblob_contents ::= '(' keyblob_options ')' + +keyblob_options ::= IDENT '=' const_expr ',' keyblob_options +| IDENT '=' const_expr + +section_block ::= section_block SECTION '(' int_const_expr section_options ')' section_contents +| empty + +section_options ::= ';' option_list +| ';' +| empty + +section_contents ::= '{' statement '}' +| '<=' source_name ';' + +statement ::= statement basic_stmt ';' +| statement from_stmt +| statement if_stmt +| statement encrypt_block +| statement keywrap_block +| empty + +basic_stmt ::= load_stmt +| load_ifr_stmt +| call_stmt +| jump_sp_stmt +| mode_stmt +| message_stmt +| erase_stmt +| enable_stmt +| reset_stmt +| keystore_stmt + +load_stmt ::= LOAD load_opt load_data load_target + +load_opt ::= IDENT +| int_const_expr +| empty + +load_data ::= int_const_expr +| STRING_LITERAL +| SOURCE_NAME +| section_list +| section_list FROM SOURCE_NAME +| BINARY_BLOB + +load_target ::= '>' '.' +| '>' address_or_range +| empty + +section_list ::= section_list ',' section_ref +| section_ref + +section_ref ::= '~' SECTION_NAME +| SECTION_NAME + +erase_stmt ::= ERASE address_or_range +| ERASE ALL + +address_or_range ::= int_const_expr +| int_const_expr '..' int_const_expr + +symbol_ref ::= SOURCE_NAME'?' ':' IDENT + +load_ifr_stmt ::= LOAD IFR int_const_expr '>' int_const_expr + +call_stmt ::= call_type call_target call_arg + +call_type ::= CALL +| JUMP + +call_target ::= int_const_expr +| symbol_ref +| IDENT + +call_arg ::= '(' ')' +| '(' int_const_expr ')' +| empty + +jump_sp_stmt ::= JUMP_SP int_const_expr call_target call_arg + +from_stmt ::= FROM IDENT '{' in_from_stmt '}' + +in_from_stmt ::= in_from_stmt basic_stmt ';' +| in_from_stmt if_stmt +| empty + +mode_stmt ::= MODE int_const_expr + +message_stmt ::= message_type STRING_LITERAL + +message_type ::= INFO +| WARNING +| ERROR + +keystore_stmt ::= KEYSTORE_TO_NV mem_opt address_or_range +| KEYSTORE_FROM_NV mem_opt address_or_range + +mem_opt ::= IDENT +| '@' int_const_expr +| empty + +if_stmt ::= IF bool_expr '{' statement '}' else_stmt + +else_stmt ::= ELSE '(' statement ')' +| ELSE if_stmt +| empty + +keywrap_block ::= KEYWRAP '(' int_const_expr ')' '{' LOAD BINARY_BLOB GT int_const_expr SEMICOLON '}' + +encrypt_block ::= ENCRYPT '(' int_const_expr ')' '{' load_stmt '}' + +enable_stmt ::= ENABLE AT_INT_LITERAL int_const_expr + +reset_stmt ::= RESET + +ver_check_stmt ::= VERSION_CHECK sec_or_nsec int_const_expr + +sec_or_nsec ::= SEC +| NSEC + +const_expr ::= STRING_LITERAL +| bool_expr + +int_const_expr ::= expr + +bool_expr ::= bool_expr '<' bool_expr +| bool_expr '<=' bool_expr +| bool_expr '>' bool_expr +| bool_expr '>=' bool_expr +| bool_expr '==' bool_expr +| bool_expr '!=' bool_expr +| bool_expr '&&' bool_expr +| bool_expr '||' bool_expr +| '(' bool_expr ')' +| int_const_expr +| '!' bool_expr +| DEFINED '(' IDENT ')' +| IDENT '(' source_name ')' + +expr ::= expr '+' expr +| expr '-' expr +| expr '*' expr +| expr '/' expr +| expr '%' expr +| expr '<<' expr +| expr '>>' expr +| expr '&' expr +| expr '|' expr +| expr '^' expr +| expr '.' INT_SIZE +| '(' expr ')' +| INT_LITERAL +| IDENT +| SYMBOL_REF +| unary_expr +| SIZEOF '(' SYMBOL_REF ')' +| SIZEOF '(' IDENT ')' + +unary_expr ::= '+' expr +| '-' expr + +empty ::= diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/INSTALLER b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/INSTALLER new file mode 100644 index 0000000..5c69047 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/INSTALLER @@ -0,0 +1 @@ +uv \ No newline at end of file diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/METADATA b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/METADATA new file mode 100644 index 0000000..f3bb97a --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/METADATA @@ -0,0 +1,266 @@ +Metadata-Version: 2.4 +Name: textual +Version: 8.2.7 +Summary: Modern Text User Interface framework +License: MIT +License-File: LICENSE +Author: Will McGugan +Author-email: will@textualize.io +Requires-Python: >=3.9,<4.0 +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: MacOS +Classifier: Operating System :: Microsoft :: Windows :: Windows 10 +Classifier: Operating System :: Microsoft :: Windows :: Windows 11 +Classifier: Operating System :: POSIX :: Linux +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Typing :: Typed +Provides-Extra: syntax +Requires-Dist: markdown-it-py[linkify] (>=2.1.0) +Requires-Dist: mdit-py-plugins +Requires-Dist: platformdirs (>=3.6.0,<5) +Requires-Dist: pygments (>=2.19.2,<3.0.0) +Requires-Dist: rich (>=14.2.0) +Requires-Dist: tree-sitter (>=0.25.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-bash (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-css (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-go (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-html (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-java (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-javascript (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-json (>=0.24.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-markdown (>=0.3.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-python (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-regex (>=0.24.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-rust (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-sql (>=0.3.11) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-toml (>=0.6.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-xml (>=0.7.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: tree-sitter-yaml (>=0.6.0) ; (python_version >= "3.10") and (extra == "syntax") +Requires-Dist: typing-extensions (>=4.4.0,<5.0.0) +Project-URL: Bug Tracker, https://github.com/Textualize/textual/issues +Project-URL: Documentation, https://textual.textualize.io/ +Project-URL: Homepage, https://github.com/Textualize/textual +Project-URL: Repository, https://github.com/Textualize/textual +Description-Content-Type: text/markdown + + + +[![Discord](https://img.shields.io/discord/1026214085173461072)](https://discord.gg/Enf6Z3qhVr) +[![Supported Python Versions](https://img.shields.io/pypi/pyversions/textual)](https://pypi.org/project/textual/) +[![PyPI version](https://badge.fury.io/py/textual.svg?)](https://badge.fury.io/py/textual) +![OS support](https://img.shields.io/badge/OS-macOS%20Linux%20Windows-red) + + + +![textual-splash](https://github.com/user-attachments/assets/4caeb77e-48c0-4cf7-b14d-c53ded855ffd) + +# Textual + +clock + +Build cross-platform user interfaces with a simple Python API. Run your apps in the terminal *or* a web browser. + +Textual's API combines modern Python with the best of developments from the web world, for a lean app development experience. +De-coupled components and an advanced [testing](https://textual.textualize.io/guide/testing/) framework ensure you can maintain your app for the long-term. + +Want some more examples? See the [examples](https://github.com/Textualize/textual/tree/main/examples) directory. + +```python +""" +An App to show the current time. +""" + +from datetime import datetime + +from textual.app import App, ComposeResult +from textual.widgets import Digits + + +class ClockApp(App): + CSS = """ + Screen { align: center middle; } + Digits { width: auto; } + """ + + def compose(self) -> ComposeResult: + yield Digits("") + + def on_ready(self) -> None: + self.update_clock() + self.set_interval(1, self.update_clock) + + def update_clock(self) -> None: + clock = datetime.now().time() + self.query_one(Digits).update(f"{clock:%T}") + + +if __name__ == "__main__": + app = ClockApp() + app.run() +``` + +> [!TIP] +> Textual is an asynchronous framework under the hood. Which means you can integrate your apps with async libraries — if you want to. +> If you don't want or need to use async, Textual won't force it on you. + + + + + +## Widgets + +Textual's library of [widgets](https://textual.textualize.io/widget_gallery/) covers everything from buttons, tree controls, data tables, inputs, text areas, and more… +Combined with a flexible [layout](https://textual.textualize.io/how-to/design-a-layout/) system, you can realize any User Interface you need. + +Predefined themes ensure your apps will look good out of the box. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + ![buttons](https://github.com/user-attachments/assets/2ac26387-aaa3-41ed-bc00-7d488600343c) + + + +![tree](https://github.com/user-attachments/assets/61ccd6e9-97ea-4918-8eda-3ee0f0d3770e) + +
    + + ![datatables](https://github.com/user-attachments/assets/3e1f9f7a-f965-4901-a114-3c188bd17695) + + + +![inputs](https://github.com/user-attachments/assets/b02aa203-7c37-42da-a1bb-2cb244b7d0d3) + +
    + +![listview](https://github.com/user-attachments/assets/963603bc-aa07-4688-bd24-379962ece871) + + + +![textarea](https://github.com/user-attachments/assets/cd4ba787-5519-40e2-8d86-8224e1b7e506) + +
    + + + + +## Installing + +Install Textual via pip: + +``` +pip install textual textual-dev +``` + +See [getting started](https://textual.textualize.io/getting_started/) for details. + + + + +## Demo + + +Run the following command to see a little of what Textual can do: + +``` +python -m textual +``` + +Or try the [textual demo](https://github.com/textualize/textual-demo) *without* installing (requires [uv](https://docs.astral.sh/uv/)): + +```bash +uvx --python 3.12 textual-demo +``` + + + +## Dev Console + +devtools + + +How do you debug an app in the terminal that is also running in the terminal? + +The `textual-dev` package supplies a dev console that connects to your application from another terminal. +In addition to system messages and events, your logged messages and print statements will appear in the dev console. + +See [the guide](https://textual.textualize.io/guide/devtools/) for other helpful tools provided by the `textual-dev` package. + + + +## Command Palette + + +Textual apps have a *fuzzy search* command palette. +Hit `ctrl+p` to open the command palette. + +It is easy to extend the command palette with [custom commands](https://textual.textualize.io/guide/command_palette/) for your application. + + +![Command Palette](https://github.com/user-attachments/assets/94d8ec5d-b668-4033-a5cb-bf820e1b8d60) + + + +# Textual ❤️ Web + +textual-serve + + +Textual apps are equally at home in the browser as they are the terminal. Any Textual app may be served with `textual serve` — so you can share your creations on the web. +Here's how to serve the demo app: + +``` +textual serve "python -m textual" +``` + +In addition to serving your apps locally, you can serve apps with [Textual Web](https://github.com/Textualize/textual-web). + +Textual Web's firewall-busting technology can serve an unlimited number of applications. + +Since Textual apps have low system requirements, you can install them anywhere Python also runs. Turning any device into a connected device. +No desktop required! + + + + + +## Join us on Discord + +Join the Textual developers and community on our [Discord Server](https://discord.gg/Enf6Z3qhVr). + diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/RECORD b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/RECORD new file mode 100644 index 0000000..70ddeb2 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/RECORD @@ -0,0 +1,270 @@ +textual-8.2.7.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +textual-8.2.7.dist-info/METADATA,sha256=r1Da-UtMgQhjGBX_b4tBj4KSnSOZREXxlNmTla-Q-04,9077 +textual-8.2.7.dist-info/RECORD,, +textual-8.2.7.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +textual-8.2.7.dist-info/WHEEL,sha256=kJCRJT_g0adfAJzTx2GUMmS80rTJIVHRCfG0DQgLq3o,88 +textual-8.2.7.dist-info/licenses/LICENSE,sha256=lPKQp2I3bf23do5CBwYYsKv9KieZ6rGxwJeBbDo561c,1069 +textual/__init__.py,sha256=_NFSSXXfYHVJe7tcR_5WTGkJ0rS5ZRcI4o6tZedJJnE,5694 +textual/__main__.py,sha256=rmEDkF8gNwJNy5dkubcHyIkFoCxXSlgM62tfVsWqpy4,563 +textual/_animator.py,sha256=ko0PzmET9DeHEoS93CFCNS9-B3XZOC8uTQONDj5c6zI,20673 +textual/_ansi_sequences.py,sha256=C0A3o_Npl8p415cAkd_ZmjRjI5dvWnIwZNJDgny1OgM,18565 +textual/_ansi_theme.py,sha256=fBXe88e8BzvPne_SHjPbta2L9IMzOfP27h3pDkDXQIo,1509 +textual/_arrange.py,sha256=wjxQrq3y1gfL6k7mZKDJS5hwSpcvJGlxk7m5zRv5ZCo,9045 +textual/_auto_scroll.py,sha256=0Qix_rEPb71hgobXFiNAUezFzfI5KwiGkKsUo5iR5a4,1080 +textual/_binary_encode.py,sha256=dJ7bg076xofkw0_kG8x3gQDAApqT-X_8sqvajEVmJlw,7653 +textual/_border.py,sha256=7oi58cFbV9_cqxrQmEWwjmmqOeFjf0ZM6Id785H1aIo,13018 +textual/_box_drawing.py,sha256=Bu2sJZXeRb4zeGYraxhQcRtDGBedu4TGPdPqUHefh1A,8159 +textual/_callback.py,sha256=NbzkjsJ7LzWljzTMCEh15FOwNO2_g6CEacP_a6wEH3c,2753 +textual/_cells.py,sha256=zoL0YG-ZC6OMJ1J2JGxreIlU2n71fgGEsQH4YTjX4I0,1416 +textual/_color_constants.py,sha256=Q9ZQwtoZKkRq23cwWL95rjtg7fHUNC3rwImqeZLgcwY,6099 +textual/_compat.py,sha256=VyunkVZFi_XfUJzoVhaOLO53DngzSaezTjILWKV1zZ4,2849 +textual/_compositor.py,sha256=bBIgAC1rGXMDg1F7ira0o25tJzlB7dwPULRW3qh-qz8,44275 +textual/_context.py,sha256=Ujsl9xYHGTtp8mCqtwxpjrT_Wch1lK1Eo6y1nFnjicA,1028 +textual/_debug.py,sha256=pZ5YtrAaWkeDYoCI9wVMrwwZ71l4IuctHybV-MKSdFA,614 +textual/_dispatch_key.py,sha256=qesJHJMB6dNUbMTtpPBftLEo-e_SymbhEzO3U6hnJPQ,2462 +textual/_doc.py,sha256=7TmNVfVTxsYNjyyyTtG53PbPTk8MqG54OWBR0JnjId0,5708 +textual/_duration.py,sha256=JrFyqVeUr6gxxaoyo9S3GloKBHLeNzkBD0eyultTzQk,1211 +textual/_easing.py,sha256=r3Jb71ijnfjtlL6GnmhUxmdCvTEmLC7j-2KrpxYoluU,4101 +textual/_event_broker.py,sha256=Bl5R38QBo89OD8xjm1shdAo90v4T3HeIMd1-jvLeGgA,999 +textual/_extrema.py,sha256=qJFkcXx_jzFNACj7b0TSVYp7ht7_YLHpkro29pn1zzU,1662 +textual/_files.py,sha256=k6nkz2nRVhzxn8HSLCmCQoIM8MX8fUq_jCcfAfCyY6U,1002 +textual/_immutable_sequence_view.py,sha256=hdK2l5-CVkrwNb35LnDA0KWLy6drrQs5iyvrzZXSX7E,1859 +textual/_import_app.py,sha256=SjJ1Csw1G1nlmY5TJUY5cz-ut0qbyuwPIl0JRBzHJHI,3609 +textual/_keyboard_protocol.py,sha256=qC40E1HoISjS0qQBTuoQVhosEmFnyVBY4TKY3rfKs0s,3199 +textual/_layout_resolve.py,sha256=tI_3JCOcUhmdZhAD--eCO0pJwLrLZfQS6-xZ0VDuenk,3274 +textual/_line_split.py,sha256=vlbYtnU1sNO8n4CApMDbU9Pq1wmZ96AWxrW4SbcKzSY,846 +textual/_log.py,sha256=JcWqpo98ntjo83SeIgmEuu7yYjEL8SUhb9-24eWEmzQ,436 +textual/_loop.py,sha256=2N2GLMdpG9Bs72VcAzq5cTO8a2kzFbo1kiUbD62AIKs,2602 +textual/_markup_playground.py,sha256=N3rFTWf1IcLLA3nyq278hgRC7-FBTzPva5K-lVViajw,4957 +textual/_node_list.py,sha256=RfrA3QhqnNB0wX9-yIEaieHKIb8ZaWLQ7n4mFWa-75U,7599 +textual/_on.py,sha256=GCQqrasJaH5wTutndEzei4I_wZVhNnaBFI-VN7TAhw0,3336 +textual/_opacity.py,sha256=6ksXtAu6_AYir8y3vkpz9Op-rYXB9sJgPrnbw6Oieno,1527 +textual/_parser.py,sha256=grGWl80M3LF16gP0SAgIyvUmtWCQNNlw2iAPaL7OKzQ,3307 +textual/_partition.py,sha256=2155vy7zJGcXBRKn5qIzViu1CpW9QNFSSlW9pCjGMyA,844 +textual/_path.py,sha256=nFU9maUFeMgKsRZWzQIrs1xPAkCSvh0xevoCtDeGhxM,2062 +textual/_profile.py,sha256=THxMJhHI9NFykYdknuuH1z3JZkTnuE6hu7XFpeVgzCE,641 +textual/_queue.py,sha256=qkQnak-7SkcdSIlLyvae45ZiVUR8cG9UKqNmdrJzfnk,1211 +textual/_resolve.py,sha256=hWsVaEfyH1DeM_s48cMfi6JfUOj9SOtKgXYXfokxQXQ,11050 +textual/_segment_tools.py,sha256=FO1YnZOZW6Xms7YwcPJk5QqRFP80FPV8XLE1GYb7M_g,8708 +textual/_sleep.py,sha256=-4I-rtLWHL0sI7b0iRAWcjOcwYoRHRmSqz5dwaBQ8nw,1620 +textual/_slug.py,sha256=oq8p1zDSutQaRkQBgrvLEdZWDFSAVLyBJblI2045KVg,4392 +textual/_spatial_map.py,sha256=Jt4NEYub6IMkeiZXhuVM6wHje_4PnjuNul9dDdvqe-8,3764 +textual/_styles_cache.py,sha256=ehl9-gUX0i8flWWe6X2gTk24EsChlEaCLSo1Y2qbHD4,19197 +textual/_text_area_theme.py,sha256=dyZXT1WUEtcBGjXu9PKOI_y8-qvl4JUpnH8vAHdjXE0,18067 +textual/_time.py,sha256=6uwXYkuJqNsaUbdDPILYFVIG3MAtyYOxOgxJfiJkIiU,1410 +textual/_tree_sitter.py,sha256=JVw2RbkpPYVCm4uKtWV9HM7OHgXJFQ9b_9xN-jafml0,1299 +textual/_two_way_dict.py,sha256=jgjnZJquPTXJXAVH0TbmxFYFFT_6wDGsTAbZu8iR-PQ,2009 +textual/_types.py,sha256=1ivhTkBWxn3gsxzwzJaAIJDLHTvyITItitogKZTbvzA,1935 +textual/_wait.py,sha256=02WFOnKgfjenZJGdG7gMkAB6_S628Bd6cwqSUjuhV48,1446 +textual/_widget_navigation.py,sha256=lXaDlKOYMs8N778c8w1P36E4q_KRRFxe5u_-B46Sh9U,5702 +textual/_win_sleep.py,sha256=hQOr66VZQRh_dLflytq-FiUuAnxUKPtxk3nfqEaJwso,3773 +textual/_work_decorator.py,sha256=nFVvKFkK5WY0yJqPBlYDxdqpqo-gFhSc-WJYlO4EdZ0,5109 +textual/_wrap.py,sha256=Wub-6hr5P4JYyb-prW9x0YKPl4Q4H5mNaN_sTUqbyhI,5986 +textual/_xterm_parser.py,sha256=oSwlQvzTtq6c75BcwrTcNn8pwyEu98D0wV5RZPTDe3Y,17428 +textual/actions.py,sha256=4UViH1TdTW8BaPxirxA5x7trNTpGTYCHIqnivBxq0Do,1669 +textual/app.py,sha256=ocBOl4cWueNqXoyBh2rFniA4dZxs-vkjiciioJFwCd0,184776 +textual/await_complete.py,sha256=YVsA_7Ag7E6hMiWoXt4hATzJIi0tgBukmDMMb7C8sXo,2598 +textual/await_remove.py,sha256=7eYlWIgV8ezMR092Vxf8fvTY11hoWCKqL0pdPRcFoNY,1345 +textual/binding.py,sha256=yjlIAm0pGFWVhF7vo7OWurFzU71PtFdsifev_NzUFak,13746 +textual/box_model.py,sha256=YZwVBQ-cWw0LbuvJ0Y7MzBB6siDIgyxOSnhW7KE-mrY,322 +textual/cache.py,sha256=XiW_VmMVHB_qJ0jcpiTGm3VyUlekqkxrFNd5dTBlo40,9357 +textual/canvas.py,sha256=mQ727jv-4re83KGsznyyyFv6Jt8WXmMI9d5FBrHJOWA,8420 +textual/case.py,sha256=ppOh4oJwrV1zg-O0xMAwiY3KQWkXi2fMcHom4p7lBwA,524 +textual/clock.py,sha256=cxdZ_3Li9d-uzKRIWYe9Zu0Xi1o3eV0trThFDEC9A0g,2022 +textual/color.py,sha256=_VBvj44wnyMxHDXUgDBO5fG7YlqkWSBdQliamr9EHsI,28040 +textual/command.py,sha256=JX5rsedD_PSm69cZ3Q8_qh5rWa9DGCPr55o0w2QmNlc,43086 +textual/compose.py,sha256=LtwChy-8QKS05SjdGXtD-uIpEZucTnzWs3ledPP5HkQ,3129 +textual/constants.py,sha256=XW6A0T9kXRpj4X-sc4S067sMP20Czht5Vjt7MyhAB20,5666 +textual/containers.py,sha256=IZAnYF7dpefWbmMoEdJXYxAx3v9L_Hky_2HlcIJrlww,8693 +textual/content.py,sha256=ba2mWnLCMTx654QWKqomoHhme_SfyHEmOOM3TnDPC70,62237 +textual/coordinate.py,sha256=OTKoFBCgu0UF3QAxZkbbFVX2kcXzi7BFvRgQ59LhHII,1247 +textual/css/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +textual/css/_error_tools.py,sha256=arH_pq5n4hS904RzU13W1K32hbUm3xOo41-zhR3VMNA,743 +textual/css/_help_renderables.py,sha256=eDeNkC_dUXJ-iMkX-NLVJxQVVc3rqVbH9-nLVNj2o28,2833 +textual/css/_help_text.py,sha256=aLOo1UtLE8CWXWf18aF3WmSjr_IEjYhXEDV62RqmhWo,30032 +textual/css/_style_properties.py,sha256=OUx8QHn8iFlwXH7KvxBja3vq1jjFrzxfRR4GavhRBfc,43257 +textual/css/_styles_builder.py,sha256=oIUORDcvnCfIIrdbWqlMb-DWZEIt_gSpg69Gl2AHADg,49495 +textual/css/constants.py,sha256=3F_Jg7IrMbrkLJ996QjqP41lRWXa0zqNdMhhAqiw62U,2629 +textual/css/errors.py,sha256=7nLjfcAC36ZGOZds1zqbHAxhc0gfEvhED20Tat8goWQ,1304 +textual/css/match.py,sha256=NCR-qQ6qpAYYd4gBU0wyOBQOWBHwjhbi0ZBsvSZyJFY,2390 +textual/css/model.py,sha256=ogdrDqUxvOAn4Q5ZgUVr1wHFTl5K3aOYAOLkh4rVyxE,8750 +textual/css/parse.py,sha256=rhTu3cIbGtrgWd6ZNMar77efpO2_-4pxrgPsnMJ-HxQ,17000 +textual/css/query.py,sha256=uYmdialqrarZ_rZK3_MCtDJ7JHiaPuPIuUfPvun00No,15732 +textual/css/scalar.py,sha256=D_zKs7grhVLr_h5tW6kvbjE7KUl-Y4NxtWYsLv2kRzE,9948 +textual/css/scalar_animation.py,sha256=SRcA2ncys8BM37TJb7YQkrOn_GRrNtmtOuOYyynTruk,3159 +textual/css/styles.py,sha256=ckFrHG5qRvYUSuDvckibrQfmfWNZxbXh2TCcskvHQ1I,52117 +textual/css/stylesheet.py,sha256=P3DrwNespAFwdYDL6fsqXovGsaVsRtwgZqyAhf2lzY8,27148 +textual/css/tokenize.py,sha256=AxPpDkQoVAJ88WUt1MKndZK177l_1a0_FBw9n5L-Kd0,11258 +textual/css/tokenizer.py,sha256=k32B83EdfUUGGPqhFC7ONAheM-Py4XucUprw8fJ77lA,11826 +textual/css/transition.py,sha256=IufvMOlCOnfTt3JtzFVp30_Nmi6PQsulaANXgFW2N2M,417 +textual/css/types.py,sha256=QbOI4CQ2Rcgefoj6WEzkVfjDADiMgRSpPBy1BF6F5bA,2164 +textual/demo/__main__.py,sha256=im4DgMc-NCHyZsg9zQ_eHL_cQD30vnpv8_faistjl-U,104 +textual/demo/_project_data.py,sha256=1n3LuODZO2tyKg5sWDalODPP1bDDd1dn-eOrQmqjibY,3444 +textual/demo/_project_stargazer_updater.py,sha256=7jI16jrc-v5H7--Y5BxADKb5xycNXHpk3ZW9JRFE6VA,1523 +textual/demo/_project_stars.py,sha256=czA9EWrop2DoiqdRM78XAQ_cRh6ICTgMit3zu_oIucU,335 +textual/demo/data.py,sha256=ICO9k-4VJC1_yyRnZuMDBi6YQfyGN9sQrAevfKSR3U8,15435 +textual/demo/demo_app.py,sha256=XytLFr0KlGDdRf4UwZmz6aV9UM_Zk5nFI5spHQiLXPw,2965 +textual/demo/game.py,sha256=-VQ5PbRgU9FvRnzitRW8Joj7nNt_MSomBLDsc79F_Hs,19438 +textual/demo/home.py,sha256=3fFJQ4XIw-8ilIHJVlr-ZA65cAQ8-ab-o6IYfjer-vE,8588 +textual/demo/page.py,sha256=SpC1DiZEX1nZ_XvMg9hNQhl9rSppFdwC1lepIRBL1X8,2527 +textual/demo/projects.py,sha256=Sip0dRl7q6DH3YF3RcTe4_TEagccXl6fTAhzunlwH18,3824 +textual/demo/widgets.py,sha256=xL5PboQuv9lsNl5wKEwwf97LIVgAw7sbNAcZBqpM6EU,23870 +textual/design.py,sha256=7LvhKM7HbZ-ipxqTFVHOk2zHPCgeuFSq-9uMxS0dzs4,22000 +textual/document/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +textual/document/_document.py,sha256=Zfh4E1A9NCV_unaDeUiVWIcCefc_rUzCqg0bhAuQxHQ,15067 +textual/document/_document_navigator.py,sha256=d6NPYjOWoHP205dnPQ9Ui6pD4GD0yROQwbn9KZPZn1A,18340 +textual/document/_edit.py,sha256=cWNgagAsw3RHP0rBsE0kI_IEn9TpRii3loSSS0KZONU,5707 +textual/document/_history.py,sha256=cbjM8gU-0b58GM6S0s8UfxXOhWoIdjiKMls8QolWWaU,7061 +textual/document/_syntax_aware_document.py,sha256=iiCGBWtSrrIfwMnOZzi0ynyK3Pwz0D6xshmNPTTk_q4,7915 +textual/document/_wrapped_document.py,sha256=ZvvGZn57xzwr9j3Ovfz_JeriwYUJBkTCZNdMhIL1-yc,17779 +textual/dom.py,sha256=yC2IITyCcZdEGnSzqmtsgSPi0CEWhcVmZl45O3FgRDw,64878 +textual/driver.py,sha256=ZMC2WMeVw6QFylCxio-_13b4hq_ry5HYaVq_NkvkSU4,10325 +textual/drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +textual/drivers/_byte_stream.py,sha256=AAfHW-eVgPSkL7pQ2wU862HWyeeC118JoryJDZ-Ifqk,4052 +textual/drivers/_input_reader.py,sha256=jkV3cvjaiSM-nww0NW07NuDyNx4aP3oih-j2JHhVnto,222 +textual/drivers/_input_reader_linux.py,sha256=Xkk-aFeeVTRbN6I2jeV1FFVs_cdPYy7yHOG_s5TNUYw,1165 +textual/drivers/_input_reader_windows.py,sha256=u3IZ_dG4Nm1R80zG-nfP8yM0cs8esNWBbBVc4P6IJ4w,830 +textual/drivers/_writer_thread.py,sha256=7WHJGVKsuEE2MUdvok2QD_l7Ycx4juCmphLNQG36huo,1733 +textual/drivers/headless_driver.py,sha256=f7iV1VkGAR0-EliPfCcpegDfuA6qWjuIzMUiIkkvozI,1888 +textual/drivers/linux_driver.py,sha256=20KuYAa4vs55rkS67p4cH5zo6SIU1U2NZyUW-lPymsQ,16950 +textual/drivers/linux_inline_driver.py,sha256=A3eNH_VvStDJcEZGJhx7guDcqTtv5tckLb6cPaKhvGY,10600 +textual/drivers/web_driver.py,sha256=AwejeQWPEO9-iUBaqhAI9pN02RpLuVsOKpKzLcRFIgY,12324 +textual/drivers/win32.py,sha256=Da1faGDOpiPV7GCrWUSxPJOlMoQwuEgH4JdFhKhFd_o,9697 +textual/drivers/windows_driver.py,sha256=Aj3Xr_kz-w3zU-zoVD3sdmDlgIg9QQHWpWhgMrfTxoI,4486 +textual/errors.py,sha256=QPtkzBtQVpbeXKJLm4EYyaqnrFrucbaztxAXlrtULYQ,534 +textual/eta.py,sha256=o5yMTLluXRknS7M1H2ZYufdAXYCx-YQbvYmwc0OyQxA,4645 +textual/events.py,sha256=oGAd9Aoh5noaguKc7RMRdMV0FPTWOVGKaQ2YL5ATUc4,26355 +textual/expand_tabs.py,sha256=FDinVoYRDINnaWiBPP-Z_6WMFVpS7j0vklZE3_yquoc,3538 +textual/features.py,sha256=NdME3Ye5SodDPgK39wkE0DANWijBq9BDeNzx9iT_PJ4,699 +textual/file_monitor.py,sha256=dFfdQHpSsheW09lFLq_OJyaL2kptuGIFxn-pd50Ohzo,1945 +textual/filter.py,sha256=1uMdKblNLN1RgNG0GYTsMoybMyYaGT9xPvADvYmiqTQ,7880 +textual/fuzzy.py,sha256=6YH_ivLc6DRF5j3aqt7P6dTX82l-5I8QZ_RaoSfmbW8,6973 +textual/geometry.py,sha256=zzHAnu1TJMIwqHv4RaqAZ2DH6k9udaoJfie-E6uYIr4,45782 +textual/getters.py,sha256=QXWTe8UmmW9-jeO43HNbwRe-7XLK-x6CJdOBFlvXBu4,6864 +textual/highlight.py,sha256=tJQTlXI5cjPcet9sXKBTnbfrpv4DitrRjkWbvoSkx6s,7952 +textual/keys.py,sha256=IFOOBGbo_YO01PjuRRCoYKCTJ4L91s91-U1dfbzj7ck,10258 +textual/layout.py,sha256=yv6MZJdcvfuK1l__c9F-Sie-OH-unwFA7_lUNMdRafI,9963 +textual/layouts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +textual/layouts/factory.py,sha256=0JWcCAi8Z1SYD6135Kzsuk_OcF3TOqVceJRtdQA_OHE,881 +textual/layouts/grid.py,sha256=eLQ_yXhLUOrjZNHAXP4PPxsybyqs4E0zdQY7ZU7hJyo,13661 +textual/layouts/horizontal.py,sha256=8SR0IjIhnR4k3_wptK5l1muxZvZk0d3d_IeOdyaNwb8,3867 +textual/layouts/stream.py,sha256=vpOe9CUHXmGdbUd0qnjflA7uMNyxBnrv4SFlPMIoBO0,5169 +textual/layouts/vertical.py,sha256=TkP79qEFGya0NF5HCEv4xxS1K8BFWFj9SFgNVYI0Ows,3913 +textual/lazy.py,sha256=HnKGNlkV-0Fos1US5ighkdprRHafvZJlBF486o7zNCM,4329 +textual/logging.py,sha256=YSFS52VGUx_P-GL1IKqqnQf5brcbiVA_j5-HkBC0iw4,1187 +textual/map_geometry.py,sha256=Wge908i7q-i6t7dArr9UCDzbKlyJhBD58lpLLkZGMFM,1363 +textual/markup.py,sha256=ZwzpcFW0xO6eQnxyJZuWCP15AeCAvWuSgdXl9Mruk08,13404 +textual/message.py,sha256=UIFvz-AJgVlaGW90IVyXhzqho5cCxFzN2ZC6PJf-3GI,4893 +textual/message_pump.py,sha256=tYBVSkP9_RTmfNI2f2TUwR449RwlSJSxxe-aoLlSMaQ,32221 +textual/messages.py,sha256=5hbpq16yOTO6zM_I_zkRmxV4ly8fJgVZ4tg7fF_-bAU,3834 +textual/notifications.py,sha256=O3EXjJ1EkwzyhW9iNNuB7C0gAyXD_uL5PFUSm9hAKHo,3714 +textual/pad.py,sha256=DsyjLlO1SzVUrftxYOVDQvpM22q_Gq4UXJTYY4VdUrw,2306 +textual/pilot.py,sha256=fY2a9SukpTreHw7jszjriCsyogGEiBHNqAfEPtCImdg,22843 +textual/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +textual/reactive.py,sha256=W0M5XUZYn2EDD7pOi80BEF2lO_1o19v0hTIO3be1eJI,18056 +textual/render.py,sha256=ntSdGt8-GSgMbYi9zB2tWbgcv1qWS1zqqA0PEh35XSk,1135 +textual/renderables/__init__.py,sha256=LNDET3CcfKQYwg52JbF6ffJruVE-2N0Oq46VQfHykL0,62 +textual/renderables/_blend_colors.py,sha256=KbnKzTr2X22THJcp-P6XQzFufELM3HynSC8Ali6wQbg,732 +textual/renderables/background_screen.py,sha256=owJyg1aPV4QkrfpBjDSph6vtkGIINJneSeTBA0QOEZE,2975 +textual/renderables/bar.py,sha256=sPvFu11f6pl_63G8yGyPB14D-cNrlwpm-pT3D4HcEoo,5112 +textual/renderables/blank.py,sha256=v41ut4YHfODg3ZTbTwYleOq68hP5BmFBlPXTr76q4Kc,1359 +textual/renderables/digits.py,sha256=jBXOn-4m5v7ihccSwXUdCDFY7hkoKg4lBrGeWO6D2Og,3692 +textual/renderables/gradient.py,sha256=2DY9n4S92g5Vsy_0uPVP8W-l-Yvo2d1Jgvzf4EMMZPw,4631 +textual/renderables/sparkline.py,sha256=Bq4gBMSmJ0H5aZ39Hgngpva7-w7Cx3F8O8M4D-uhlu8,5475 +textual/renderables/styled.py,sha256=my4vs7gj1NyOjrHP43RpKCWJC5F61vCPvrJq5jUdARE,1937 +textual/renderables/text_opacity.py,sha256=1Gkt86qRok0F6Y6wqO2Uumm3HmVFC5BQGDl84WZfiGY,5827 +textual/renderables/tint.py,sha256=XORX11-bXcaxf1J37TFyKZTiSRcmJ7Uoq7i-HTjFvec,2605 +textual/rlock.py,sha256=-p1g3itvbTIiBJ3cuUX5-e_7RedDSeKgXU6JWHIk7BM,1657 +textual/screen.py,sha256=5kSixI8qekS69NplZSg7dphp1I8TMaal8DBfbiQ5Aiw,79739 +textual/scroll_view.py,sha256=jgncGsGVnUWA1cT4NnWu05F1DilZk6LZ5EMWXJLzWlo,6447 +textual/scrollbar.py,sha256=nuTEiv-Omc8IKqFWrJA0f5njrY_ZJvmNDcb4nSMEb1g,13956 +textual/selection.py,sha256=NCbLT98pCOjTOvo6jC5yfEq6UARVFK0Zdd3G0v-XiCg,16771 +textual/signal.py,sha256=vJYmBT0EohgwEHhIXz_ofZvH0-BMVQzLzGnl1AfAiwQ,4296 +textual/strip.py,sha256=tY2UbIsMuryHm7L008bRkab3Zn_m0EM46fbkNFN5Ul8,26717 +textual/style.py,sha256=CSMkfAqY5CZjwS3wiKtFLDE6ktF3avTDKXJ5wP1oorU,15973 +textual/suggester.py,sha256=mgF0OQYIdLDMN122SDNksOtw5vlcqpIHFQz2kJOkWXE,4723 +textual/suggestions.py,sha256=bXR4HHbksBrWnfCuQX2Q0Ohb8jFPdvpz8E9mVIJenT8,1415 +textual/system_commands.py,sha256=o44kIVF0wlxkBGp2AfjMtQj9gMPw5_JzDaZy3a30HuI,2041 +textual/theme.py,sha256=4iWyeAk7Tq0rj1bYTsRLCh2PGFxPsUPzknpX0K8AodM,16788 +textual/timer.py,sha256=-5f4GCGgzBUeBU9LznheExkf0ah14XxWwfhK9YE11D8,6255 +textual/tree-sitter/highlights/bash.scm,sha256=t0Ig2VT0hbdibSsrYfN7Ui4S6xgwgD44jlfdeX3JnxE,577 +textual/tree-sitter/highlights/css.scm,sha256=kFzMjBgzSkPbdBVrnRq8dweNZw6Hyd-pzSlcB-rfTss,998 +textual/tree-sitter/highlights/go.scm,sha256=FrYW0vTzVTTRQWn8fFCIm8U05fmAdgnTOhcSHGDgMP4,1421 +textual/tree-sitter/highlights/html.scm,sha256=h8CDLw5phM8CZBRVmv1xNqVVMDSJaSDcqpoj32EZXxI,408 +textual/tree-sitter/highlights/java.scm,sha256=l7TNO-5hRFPhfmFRWpjo1lDmb_m_ehisUB8RnfCTfp4,2008 +textual/tree-sitter/highlights/javascript.scm,sha256=02MK5tybKyeyMLX4u5KwXNSR-xK_81Pa5ioKbXgEYe4,2739 +textual/tree-sitter/highlights/json.scm,sha256=u9_szLgFyYLehBbugUMp9i22DiH7d_UJodrcLmXxCEA,430 +textual/tree-sitter/highlights/markdown.scm,sha256=eQbMTMHdDNxdCAMIZ7ueALx7I552uyV6zUIDwA4k3jk,745 +textual/tree-sitter/highlights/python.scm,sha256=CeZAwvYNUWnezWq5QMdrzmJjulp2U4NylF2J_Imfre0,7345 +textual/tree-sitter/highlights/regex.scm,sha256=WTAGJ0nhjdcc_T-p5mKiIPHtq-DWmJCpDwrV7RRBm3s,591 +textual/tree-sitter/highlights/rust.scm,sha256=ESEJTK6-dv8Xb-VnuuneOyvTfIi_jtgaYtFW_1rXR-g,3386 +textual/tree-sitter/highlights/sql.scm,sha256=2PMjK6-8MF2I7dWKGJ3_jFcy1AO6q_d9j7gr2XFlt5w,7735 +textual/tree-sitter/highlights/toml.scm,sha256=ONYMbMSK_vUThvf1ilCAJr-ko8LQLbTLzpCnpRCa2UI,606 +textual/tree-sitter/highlights/xml.scm,sha256=qkpWHIRpKMOk2IWsvmkKYGiWYaRWhLq-Fs-LehUJthA,2281 +textual/tree-sitter/highlights/yaml.scm,sha256=AEm4EwATSujzIy1qgSoXOXrUYaMH3Kd3P3BpkQT-Fxk,943 +textual/types.py,sha256=qT8j-7blws2qGW6ewjqBZYBww9lwlZPgeb0rMCCL7XI,1381 +textual/validation.py,sha256=z6ThEwYkSd7tX3y7NUHXP3NvlzV9L3ljplNa5dSQZSU,18715 +textual/visual.py,sha256=FJrlHaGd6ehDhENbOJOH4rCDX3DVBJt-fzXEFeNhl6o,13870 +textual/walk.py,sha256=0Wvc9FKYUSY3Snij69hm4RqEdhLXF2NkTzPZ2AvFk2g,6206 +textual/widget.py,sha256=li27MkCRkbyimlVMItgl7ipx1JZIulOF55cbxEuDm1o,175691 +textual/widgets/__init__.py,sha256=O3UwuSzpA9WQJWjbx7rPGPG-GbULWGTZNAVh0xgccxA,3817 +textual/widgets/__init__.pyi,sha256=Q1-TJ7SQGXhTwUypaOq9chCGVmE3r5H915MeOduMmwg,1970 +textual/widgets/_button.py,sha256=EXOYyI-nXUdPAdYz_5w0h5OLjJt3_JqFImCtGSzVv7I,17246 +textual/widgets/_checkbox.py,sha256=7dcek73xEVosI8Umkm0ZmLLrn-Ews4hpWUJhD68EqRk,803 +textual/widgets/_collapsible.py,sha256=UQfbXogv0f_LOXsrRLV7SHEtFl6_-WkUAnjj3AbsntI,7775 +textual/widgets/_content_switcher.py,sha256=VxF92FfuGZkR4novpSffNtkjp38IRgS8CqSlES4BQDQ,4326 +textual/widgets/_data_table.py,sha256=aCghYCUPZZHHsiB4HzaVsnaMYjw7MdDDnP_6-o7Auks,108987 +textual/widgets/_digits.py,sha256=j4-RQS4cm5TKT2l7Kt5wO_bd7r6dBEN7Lue-j2XsCnM,3478 +textual/widgets/_directory_tree.py,sha256=RbCEQbBOJ1rKHh6fmFwg_Rsgn1gv2cW5s2-NWGj5P4k,20281 +textual/widgets/_footer.py,sha256=xCYD_d-HRm0gaogWmaWJEVs_mrJURMSdTXr5HPpq19A,10585 +textual/widgets/_header.py,sha256=rExlTcD56TYXzM1WaVZM9js55jnmZVABjee3KYgoukE,6299 +textual/widgets/_help_panel.py,sha256=kCexoMEad9w8oiU7aDalbmlKRcirEndx-XiQOzGKoAM,2900 +textual/widgets/_input.py,sha256=1H3G6yMsvWGaBi-3FtrzWHGj6yI17uetGULhYxePVj8,41005 +textual/widgets/_key_panel.py,sha256=GrmOK9M7SolaOUFvRIAXw46lO6xVq7isqsL859O7a24,5569 +textual/widgets/_label.py,sha256=ZKZTojFo7B0M9Sh1FamPRv9wXIOaXw72JuOm-70Sdog,1762 +textual/widgets/_link.py,sha256=BdLkLfkk3mXIvuQK63Cg3e0dRP3ITGsw5cKpyV_1ts8,1978 +textual/widgets/_list_item.py,sha256=6T2eQt-V61lEkBD9LXeNcm2CrrCpPunQvE8eccW6Y6c,1199 +textual/widgets/_list_view.py,sha256=uTIH1Qff_Q26-tW7PlnIHqo7jWrS_Ans4uvJzptdPoQ,14297 +textual/widgets/_loading_indicator.py,sha256=gzVP6-4vEs0fTjVGUNSB23QsxLNccD6dbIsxq05ZEr4,2545 +textual/widgets/_log.py,sha256=ODu09HxxcOrxrygZvAlYDxcdyHdpsadW__drtuTKIkI,11504 +textual/widgets/_markdown.py,sha256=HkCLvlb9RQuO2Ub8WUP4Kd33Dx_kWcVxt5p1Jcn4lPg,54844 +textual/widgets/_markdown_viewer.py,sha256=0vm68FEUPAW48rKglOuEZkHD633yrE48GsUNL1BMw88,83 +textual/widgets/_masked_input.py,sha256=hIBTIAm7gf7YbQ7YJKhvRnLeltTLAeSEDlSt_aRApTg,26291 +textual/widgets/_option_list.py,sha256=L_o6BcEbdgfe3ZyPri8akna3vTINKLneE1t1_lf1Vzs,34230 +textual/widgets/_placeholder.py,sha256=NT72DMsgG4_jUimqSQdbcM_j-2pEgSP50D0mLAWCpC0,6435 +textual/widgets/_pretty.py,sha256=mH7mjcvh9w8uESuh-5U4pvImTMNg7how8hCaxaS2eUM,1379 +textual/widgets/_progress_bar.py,sha256=aDgQql2K5Vt80BGrk76P33BL7LXFy7u7_VK0EkDGzzQ,13150 +textual/widgets/_radio_button.py,sha256=k1XkfAwIHDvqPpSk8FCElOSnS_eoEksmwBhGZaMu90A,1037 +textual/widgets/_radio_set.py,sha256=fZ9YFXn_pRfLaxfZhHatY59MXjAe0HR4qC3f-eq6CiA,11492 +textual/widgets/_rich_log.py,sha256=JJ5H-x6JHR-4-jWO6oP4hQE2WWfGSKpHbph9d0aHvMY,12192 +textual/widgets/_rule.py,sha256=AoGNaME62i6sQFDPnJUtQymogKa1Xd2DI7b14oTT6nc,7481 +textual/widgets/_select.py,sha256=IjKNgvW9qLaOslwCVZSkV-hT18SyBCQsCWgYq5DdCKc,23970 +textual/widgets/_selection_list.py,sha256=abPFisH8ow90ESYOQyvGWJrPayUHYEOVLS90qTERyCM,25078 +textual/widgets/_sparkline.py,sha256=0OOfJnwSPruJBTPxXqbnSlv033iXyBV9InXFUFwzAnI,3884 +textual/widgets/_static.py,sha256=GpTgmyYM9H-GAm9FzygYf2Xucrn8fuSLqbzVDIIX3d4,3220 +textual/widgets/_switch.py,sha256=RAWQRONa8b-GKPcu47TINNcAkmTWmhGzBOaRR_RRT5I,6305 +textual/widgets/_tab.py,sha256=iWSYcf02lpgnbkmX187-TRlT-_n0PWhHS85ZAEjKsi0,57 +textual/widgets/_tab_pane.py,sha256=X8G7JmPYUhxPDRutl4nTQU_f15aMsmwg3grCN4-I7CI,75 +textual/widgets/_tabbed_content.py,sha256=gDK5ojnFO7iqxILF7cPXXDhOYbgtW_8p7lclsKEIwCk,23958 +textual/widgets/_tabs.py,sha256=vdkOQ7zJz6yLOqyS48aC3Hx7NBHl7DRnI0udyW0yhC0,27190 +textual/widgets/_text_area.py,sha256=dCoSzDgjCxHN9rIdM9KOZ8ydPM9Rk2DXa4CYSH9c_1I,102307 +textual/widgets/_toast.py,sha256=Yd9MHev_yxBQUBaleIPoQFPqjXdV0R3hGrNj7QY2BNY,5976 +textual/widgets/_toggle_button.py,sha256=7AStfxieKHKbmstUhaLy-ZNPL_5ty2IgCsDB46yNkcg,8942 +textual/widgets/_tooltip.py,sha256=dM5UjKe20_7iyhheQkhXTxzfpKwI5WKDrRCgML-HB_s,519 +textual/widgets/_tree.py,sha256=oSxYcUh9wuRZK9HN-S2dCYrTWS3iW6dU_vsP0GOpn6s,51557 +textual/widgets/_welcome.py,sha256=hAKv4kRhgXT62lJ_yyr0AQ4X_k3adZpGsX2DXCK8eLY,1535 +textual/widgets/button.py,sha256=XI_hItOeDSYGOvEHXPRM1mJixyh7B4gTv9epqTsarkI,79 +textual/widgets/collapsible.py,sha256=YM8Bo-9FMc8SxbWTS86fpTKZ3XwyoCxVpwFl8RcfX-M,90 +textual/widgets/data_table.py,sha256=fy95lQL4WZ17PKTHOP1bkidx-EJXm7LG1_yLn2YIHUQ,465 +textual/widgets/directory_tree.py,sha256=Oewg1taFCqi_olLdHu3FjmycMdD3bn3-z_192XT0QRw,77 +textual/widgets/input.py,sha256=fb7ubWtidEwVEAXU1rqjuOV4dTzSRT2Ld3ttTZpTRjQ,70 +textual/widgets/markdown.py,sha256=WqObXL9bL2WPhUJpowmPWjgQR1jCq2ESATanjzqQxUA,321 +textual/widgets/option_list.py,sha256=0YTGIg_1VGahyTNUTM9Ew-MSpeufiJP72oETEicT9xE,140 +textual/widgets/rule.py,sha256=xGAmACHfJuGmzjvqIFKKuxebsFeOe5X3KhPG0EYeQt0,233 +textual/widgets/select.py,sha256=ThTn7GucrR--eEhAOaiQdWgkPK_ELA6Yk8qZdo1DIa0,200 +textual/widgets/selection_list.py,sha256=qSnXxXFbDPUOqk41Zpm-redQNRgpxPA82dwnh84Zf9Q,212 +textual/widgets/tabbed_content.py,sha256=UkHQCXF7alJc9GIhxJC7bM0rRHPTywz3to-YGQcYV7Q,120 +textual/widgets/text_area.py,sha256=77ipu-EZHX12PkiC_ILPNFjdx8_fY-Nk90PvgbnDKI8,1025 +textual/widgets/tree.py,sha256=F4YBlgT7CQ64tmhYgrrzZhTv7zxiF26IaJZEs75l9QU,372 +textual/worker.py,sha256=SUv5I1K4TQjJBRZYrOgBoo3GCw6LHYn8hiFuH6IhGAA,13799 +textual/worker_manager.py,sha256=ndC5H7zzA1TDmVnwM-RsGrJmOZzbnDiD7csx_1DMMWk,5602 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/REQUESTED b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/WHEEL b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/WHEEL new file mode 100644 index 0000000..7894e88 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: poetry-core 2.3.1 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/licenses/LICENSE b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/licenses/LICENSE new file mode 100644 index 0000000..3a43997 --- /dev/null +++ b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/textual-8.2.7.dist-info/licenses/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Will McGugan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/unicodedata.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/unicodedata.pyd new file mode 100644 index 0000000000000000000000000000000000000000..218f03b31fc287f62f86056c003a0ad068db3586 GIT binary patch literal 712928 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 z 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 z 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%0Df7l?r@zt^Yt{m1L*0y6Po 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 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/wcwidth/py.typed b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/wcwidth/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/yaml/_yaml.cp313-win_amd64.pyd b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/_internal/yaml/_yaml.cp313-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..d31ae618bf8266049986e12a76d38b0fcae78b90 GIT binary patch literal 253952 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�STH~);WujP*UPr(1xx$5LFmh0`BvT@y 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 literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/custom_binaries/TFT_BOOTLOADER_NEW.bin b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/custom_binaries/TFT_BOOTLOADER_NEW.bin new file mode 100644 index 0000000000000000000000000000000000000000..336c7aec67d9fb13fca720414cb0302bde5b5ad5 GIT binary patch literal 39676 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 CUaH*y literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/custom_binaries/TFT_BOOTLOADER_OLD.bin b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/custom_binaries/TFT_BOOTLOADER_OLD.bin new file mode 100644 index 0000000000000000000000000000000000000000..f5a469290f8312405ba9678b4fc812dd15610daf GIT binary patch literal 47432 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 SCNANwBw literal 0 HcmV?d00001 diff --git a/tools/production/dist/service-tui-v0.2.0-windows/service_tui/custom_binaries/firmware_test_debug.bin b/tools/production/dist/service-tui-v0.2.0-windows/service_tui/custom_binaries/firmware_test_debug.bin new file mode 100644 index 0000000000000000000000000000000000000000..c2e6e0c1187c698a52ba903dddbca738f2705644 GIT binary patch literal 131928 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 literal 0 HcmV?d00001

    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%0D}*3^L4;qLr` zxJq}P-PE0(obEhLcc;eh#v1roFa8|)xyvNL?3A6$dZ4N7&=1e~Z#wk;p8u;3-DQS5 z^b+;PebS-l&Ig65D1yT86@$X-=bqT1pP(<$M`5(pUvanXDNh9$gY9M4{`yVXn(0*MBW7W(;jkh|#l!5C!u< zh)$Xi(~(vaK%ka{m<`gLiV%AE^8DCJlvi&Y*Tgt^{H?<4|3`Fj2Hjup57Q<8zoJXm z9{(!_xiPyrT?YPD=rUq%6J2gVT4jS?E$K1|lsW}n!t{9N*#BSjSg<%uk34DV|7})j zd)EJo9#>~Ir$?WAg&tSk*F=xuNUO_1r1qz*l9$KC}^rxmqlRSxojMws{75JmF z8+oX2A5?vUzTnuqn}P&h?SP_(IHdcJC}>4P6N{X5F(MbpbuI^LDS3vFhVlz*SAot zgCg`hge0;|;HNdmg?o;PNn#;h1lAGRR=y^@Q4g9n9?EHpSb%V3*ADI$9otPSFFmw7 z%c`P2H4AVM-6DMsdJ(|zvQGUfbW`Y*VS#E-K@G2RA+HNDVzG_v|8x`X*e|GJTqt!1!E1?V`Wyk;EzoiJg$=TDH?nA zI4nlUg6&Y7diL*dzpx&l%SyO^>Fjke(2j~j;}Jk^l!*wzY&@3?6+#9EsS-aEA_6}p zuVszHng*V*{$%lx!D(q^q-SjREMraU$^EyXh(cJT385_YhuETQ8f z2JPtx9SL+m1p>Uqp^oqtm*~^v+GHn8z>AG~sN=|iY(pWk-yT$Vc(5Gkc8(o52f8n| zf(P*qF6O>-aG2wHgmeq}r;u9WMx4(RE^c^coA#*uF!ZECRG z_rk|c97tGVAo_Zqv2YL472}XeRnQ<1Y|TY&vicoAY8e19s-B+SX}B?qnYigQ1g~=K zIjPYcyxFk4WJlE>;|Rx5@;RxlwA~f_8A_?C>I8ExB#v=EO~Ij*+d-j$*F!+~&v%M8 zl}XzgN?C>i!TZ8x=An$o9@Z+``pLw4E@rD~dkowHKC7)+jtjZ@&oBe~52|&)IsA@m zIbacxa|w+=JSPx}HRgZDl%3e^YP(~BH}mINZOqK~jR05jc<(ailUuPx0)M!`mp#0_ zQOl_0TzjYs&aiwH74@qzcksbn+wDeTcq5_&;8i}lu!?`T78v*JPr%og3BP)bdG3|W zy`LH61)rI#Sx`BdoqSdDW>-#T_4FsbX$zgl&gc_jhsm&UC{6e5^T4%u@0Zy)=l-J)PzyL=fnLbb<cESr zhDS{clY}!?3sD3+(+hY%r}afa#<+{T_Oy$9oy9*G+gd0vqb+=D3OpGDZt`Q>lh;qg zjbjZ+_Qe~~qrjnXhM?mY#Yu$mZxHDI?!4Ne%My6>#m)s{WhEH`01oAue@w4O)tigP zQbG_3fnEO_PjAYYehAN&kx-Rh9J!dhOOe>t6W-lG^q z@Gv_i&gX(&U~)k3_CW9C^=Wp>Pc!&5hfmkzX+sa@R-P$8g?RNjk{|UzvW+CCo<-aK zjU4TE${G};_*g(#BFP&2jf^@Em4-i;B0T^fN1VMI$cUpV=t+R15yfyIqxA{Dqg(tA z%hy9cJHwdq3I?ItiY_36r+f;iu8s^r^$<)~s_u8m%-RXftbB{k|@>G|+26wQgweNK1oMoW^Sm z3Rce2c>R74@Jc!fuink@0tq7RZ(je~DB7I$XOVsE)BUgOKa32OPwVNyTs((m}`Z4YN=lXrk>wkON3GI*6 z|M*mC{}|T)sMCIAR?h;j6WR}qn%XZT{Z#zt#6S5_S|7-W_FbVebR91MZe@wC<6_p~ zaq8fO6Pm{-hU-8yl;AZ^^vOU|aJFXsyIj{m{l!lC;%>CBFG%7ke~?1qVYj9)T#q?C znsM2Q!^OEzb*P5sDgRu{iNyejvc2jj4E(v}{W6Zd*M-Vdau|oB>T>87kTTM`lsuNk zS%*F9EEK1`Gong|&!aZ!w{<@VsnQ_Zu+^U9wvJE{>xBD+8HL231R>^DSDc2GY;d+4 zVHDl|%QncM$(Wr$XQUWpfKn~tu0y-AJC5gmgMl5bYutP%4~aqPVOrwT-Nu8pup@&K z)VXzk4b@2K^+AH=8NkK^Z%FAJ0MDb_Q7JQ6<|aR=rhD2Co)B*8brZq>;jYMZ)j<~?!orTvO*{*CbqcqFFOV*r z-l8yMGxutsRpMTE&eG#Bw2YGPP(NLKsCQfGFk1itlt>J z*oC`1jgl>>1_|G-{5m&q6nBdxA(zC{v{NoU20%zY*EdlU>x^hxLu% zcFKcmx^l0YS-wj-EQ|X(VwK!_0Pi*!lMq*!LFU2$kV9lDIgPv{r8YD|4{#xH1{ zK9NBKffrT=Ao`82QSj(w)=nBgZ>HO#NeEC4ogd4giR+Z4anS@|l>9C&frglqaWT&c!Ha#!I7Eg8aRAOT z)5TKJC@Wgj(v?S8Q}CXg%Qe0Zs}z!5a`!#h9AgNQ4OEM zQ>um|6V!P(Y1I(PbtzgkL^7{qGu80#C`g{0icd50Jc;tT2W0GoR9& z!AEg=ZsLTR(}9(z*~g3YSbQ9Ic~{4y{PuvbN#uN5I#=#+B5jHYilqj%ZU`YBDCOki z#G4#FD(o?0+ApQ924dx05vT{kAmh$h$#pa$%a`^gvsot)u|%+Ym>Qf%})c9YqX0;vU$}@AU1?8+l3}%7*%A@>vx_&8CBsf8H%_SW zS_hnX54o8Ki~v1`Mp$#cS*h+j^C%qt0WUcoM3)$nH>z=G@Zr#LU6F@D+TlsVH>Y?SRK6Wn9NUob3&Vh3x2}r#f1f?QTi34709E#Ob|h~dL}NS z(sWOnOuBDTcOHN{5NgZQ!vR(?0_HqhUEyL4Lt2bDP@j5NR8^oV+$q*}59L2$5 zP(n*(?;$u0{s^Fw(SDd|BC;~Y^1UFZsy$B19z}x8I?Rt`W1Q{?~oS2#LlYrJij-AmN=tCWtMK#Gz zd5p>k=62a_{}|WBNa{bjPn;dYT(Tj${olGz02_EpYv?zn3-`;0%TKIHM8{{`J!<}8 z4Ixi!{?rOm{69iK9E_!afO+Hy0wf^O7cZW1biv;wL|3H<=m_GO%58d<;{5-$-Cv@skVB>sB&*y$jjcq%Bj%P^{6 zONnfL)ZzEd9Ai_cpiGkyMpeYEhGVTOJ3Y8X55Jpj_W+hmloPRpuv+fld{Z3Rzu~^k zW#N4r+ad=4FZXWF#@>yzjqo zve`+$Bdy*Vujj3A@J#RE?3;jnR|o}gK+723U2CT}n z0RwRVfwY?Jz#Rc~PVlHrVAf?Hjsqo90><_cEsajgFbP z@gU_i;OHs$5d7>u;Cii5HsZjd7HvG()FMow32FOsf@kGOE96!ntceoT zozi~&8}|%NB!Mm=fwBY~4avbLbYqCT3{Xgm=Iw7ff3g2lrzel13oO8@NCqfRc^3jq z>&<@H!w$V14upiMcCz*$qGW)j`#9e4cFHv(zo*7yY~xI@la2iHj$Yj_#c+)gk7ck${yJIwlALd!Wj=xKwAOLlAcfmbnLet(rS zPR3dXpjlZ8QHL?{#7(X!bicZ*Vsh{7aCb#ed6?VBy(axNL$o0lYa{pgxrWMAa*@6eKMCJF0MhkM51qCflYkWOBzzz54hR@ zA`qcpaC`DMl!8;6+%(#kRNXsXT{D(KOE_p`cF7OE1Z*9BHz0bJk@1oaw{*Ry=vZe6 z%vEEggFF*Ji1*oOJL%YXbkORt;Ufp)?ko0{I(7S|BVmE)xb+urB5L8C93Hu5M}CET z;8Sem>{N%VL?mOD9)cAG7Q+z3RlW+N2e@iy?T{(tuUzYpI<1=djFN@;js9!|WzCF0 zR8myb^jYXrQd)*#rys&&)i)6rBXIe9H8A#+a{+B2vRC^+0ty+)Imt$QtBWK(E18KvCOX^EyW zUte1g$S11y>%_veM_dNz(in6sOblblpwp1UYv1JJA`_a&+++s>uRS8sYvsAU_E6}S zJRJ+ydzl6!{w831a_+brU2;JY_HWk6nrtym31;vv6wwI4mqth?mBDV=MaM&Wj@caY z1{z&P;6Xm9-rw4^R}02Y@t9wUh{pdvATC%E?J%Z99a6z@S8=d?;f64_d)^dm@4pu0 zq~=XjG>EFRsNBx)0ewfxe>7D8Wtw;F*j*zmx-UWnAw3)Okbujd0h z<=FL*#%`q5i{e^55*iaQJ*Zw%WC8@F!FVIk`D0x)&!|g2;c8}R7krWh&>s|!;YpN{i?A?GP`&C=Cx%iQ zW?n4&Q}O{Gm)jG&?ZD1cJ|9UuH}Rb7u5zLbd*H4E$8d8zmf>;{Yn^g!6S|jN1>b-O zm1pywKdS@~a1XXo`U`f_j5Wg&v-&Hexw!876n_K9Z$)4&DW;h@?T7jfq(&#Bw1IsLP#fPCSy#GGehYsZ zYZD4Gz$2wEQm}xp6OH*RMaIyUcO8`ffzS|(pj{zc*JJE-z_~D9gj3lRxw5)Wb?w5j zG!HbcQ+GLac=4{Ole##KxB^cP2UcTBjWtSVNO3JTv~YsFz-9^fyL2qxX+e#S!1<}Q zI6`Jf^;jD_o0BgYMqwnUxE~oIkpWZgJu(fQT94=*WU?( zddhDnR6Awv7|qE)(!m>?-1?hiAr+k`)6{&ttGq+KpQzHgj%E}d*B@;}ughRT zjMMr*@JmhAMPpg?FgH9>~HG#E$)D{gF_c7ddL1y4AB;^X5d<6!yw;9I^^h4pFHZ zPJ}B*2n9y5MtWkQMuRnO1SU=p@WUib5;NO6^LflXUuXX6I%Iy3nRV;7GxL6&Yf;|r`e;rSaH6s%P^&NeF?(IzD*Hmoq`1+{Jkh{{2Y!H~6Q3QA_BMb%Ft9(!^Dncf%;&!~5iMg^0J({MaO zEoZZq4_Lcy0FRp0_dr3XXBvED-67=yd>C~kzX$HE`K*9f%&b#P`TMA88g?7P&ep_v zXB1!;Ho?A?NYx-lA}yG$DOk&}9(yBoKc0&aM7V>Vl_ z9J}|W^_SyeQ{{iw=*qj|sY4IofSoPJNG19yO%j;2^wM0G3Msop!Nq0Iku^e2@zE$Z z7R3XV>6Jb>dM)U5o9=_hkyd%2U(*6WpZLRh;YvrptZxmPI*Sjg@AC9C6gYQa@crhaX zt;laeGB4`JTr?m1yL!s6VN>jsVe)dPx}-bi0*SaCoaKgQV%82bkpl%EXv7~JSeM#y zL#V2xDZqN*AhZe`sdb}1MEvueL043y#htjElaG-FXTfa^v8Fvd(J7AIvC^%C8st^$ zVE6!`7;DQ+lq?8R+t5$el%?ZInE^B~N3tS$4rg4}mld4V%M6Zmi6IoPreIo!HMcL4 zg*urozRWCXtR0pdQ`LJ|ujXmH_;J1}`r8EMlt$@KodN%klSuXHL zj4wq4L(>q#SPg})4Z}u?7D8gC2%Cx=TLs&G3U^=4@6A`m7pgBQI81pyrbzq$g5C2(iYP*mx3&<7l%}m4+ zl&yivC16?}16Z;O6>;CgVjk?_q*Y}FXHQ}G!weja5{L+boyRQe)>KnW<10}>>hOTI zSSJP#Y&>B1o=|rajRltrI#r;mer|&HkyG@;;jD7%8Q%-29$@ww|E4GTBN3OLdda)CX!YQ zcrr7m_wn%9tDO~(wV8A_MA(Q!VbKdFu2X~fvyp8zN)HeNRBFs0Bf#~ru!o_QuS!#b z#lk{?bv$Gc<+~8lAel{s!jI^{0SXK*&Oy!C_8?|^q_EGhQXV^F%*m9OV5})lXW1A5 zQPv8-2jh3y;Ao^glHxOVaM|D(r0AVfHaHe3Q&MqAaV1|i7?XA}13i@ujz@}^mJKHS z8zj{Rsp}=x7AZEMY%un|1QA3ObQ^0v1R>yx0TYE2hciZZD($}NpU|;{6)p$+>2~*q zRAjrkx6=b$#df33;g(*L@XKJMeQc|t!CPA;K+V5iuIr28tO|nfSk2R*TQIX>Mz8FR zqN?FG-KF~hlUW*GKo;JiW6a;~JSvRSqvS382KQQx_5J0I6L2*1ccb(lc%b|7695H@ z97>)*`MY?If$3*)vGTGR?k0It~ue_q6tu-ILG^2qN{ZDRO|cW!eGK&TDDHHzec)suK}4|4n>1eq6qA=IC+}72nXe25nBNWk4Kp6$LhpJB z#G8841uf++KHY(*p7OidT07-EJZHaFFe|LyvbE&QkKz5)u+r*c>3m(EC`9#e5V2Dh z14J_|$U36NbK6uKQLm&1bVWo1x<#tnuKsp9b8zRye?~+D%64$+16u z4&vb$NsO!OahF5NnaHUQcOneYqPly^C+PM>3yhtr9u;`Xxmay@)(pa-DeOTBRUqBj z1EiY(n%uO{K;4l4PSOviZgPk`*hK{)W-w+tI9mQS0oUIe3qNPoR&iAu4775u2ckZ+ z%4-b6(St@~VYPlKvuL1v33)Djm3C0XvpqIZSza8n0WJEdYuuuH-!Ke1?mlG3((7WR z)%6}My*O=q%Hz3cr%OS2gay|fq$mrP7oh-7gkdzWI$Y3)$M{`VTu4azsj+rwazU`T z3{PYLIQvi$wZY63Fut$U=0T{k9{C#Ds!FEcLmJD%4MSZ->tXy+8-XrvHv=-V3U;jB zb6%#g0{bW!a;H*ANM9_4?nrfs{+$oFDxt<9aopnBj{aRDacNEK1{W?eF|FYs`tN2; zotZg2!C3ex3K?sMBYeSxr>?u zI&NY@j**SIUb0d*%`(;&Qvw%w5Y>2rgpIMywluhn!&4q7Djmt!2+H7ZQ#7cfQ9@}+ zK-3eVLT^{RG^M^3pTe;L>`*~&fXxnT&n>wA*jV^AD8*p8b!vs!6Un_s$qqb)Db#3> zZ(2VQLQSlnZpZp*_Qh^E!}e!)!4&1SMz~+YUeb1KB^9A0H@w|q%gX{GppK8n<|vnV zbJNX?@u_bAr8F_aXTenGyf11r=SXR`*k?6y8ucrqw1yy21%}xhSri%~N*+n(U>iYE z@`OAUQ4+w@h$vZr=TwdF!b5iaBHevZ#1}zk(2Ic`-4vbjU!sk(WuxAX!keb^J8YjUSLhx4G2p%{H&6i%6(`Ccd2U>>LGLStWcX;WbKk&vmOW z2FQrZ1NN1Dz%^j)^+Ukg2L?7@?S>cHPrYzLfEqRN4~e_qhn<@CBJCgkvzfl~e>e#0 z@Uw^7_q3=OvT9YI&w@X9tsZv}KaTEBNi?y3W8)zQU)jatbw4sXzI!`7I;It#Vsv25 zaxIo|7$mTDbA)U&7N&^CcnUUr&scbr@`4T)-;wjyju1mBM^APdTy!88|HCL6`5qmT zMC=YleF?fzTVW9lFMLN+>?F4qc7`Ee*cpcW_GIS~Fy@1usoTNR#~Ym2rJ;j~3pFHm zea5f^qm*asyczRM|BV~S75aXH2tRxt=7$}p<_8+Hxe*xV2V?O@0MR^Au6ZJwjSml{ zkr+ze7*Oq$!%3iphm)~*7C~`H8Krk1>76tbY?|`KL#so9KN9A72HUYQS&$v}KS|Xd zZhT6R0?$v{<$-af`uCW?{&?7+pp8INXluM!UDg&o7E_m%Sv}{IhQGok$-^AT$Xr7Z zcsP0g3wK8)w6cdF#Lv(!o|r0}H?3}rsXiJLs?OYU-?`?b_X?K4D29P~ZFH!5a~3W- zYs!qAnOo-UCt`>L&(Q2A!B+y`w8mhA9Ik51fiAWlOmosktYAZe&C!^_#DqBqr^mMO zUttdp0Wvln3Okr9upj9u8W0`w_uw|fy}x?O<@BYUGSltCXy2-CN`xCta2{OYpxNFl zmidphI9k3#izA#EJy9Ipwo|`Kls;?7Lt+0=`UYeDH>%hi7aFOqFV@eJJg49=UESfNtEZUj`-Hc86)Q{ zxrCE_8e{D>$ptaH3wmGED>89yEW0lC63%|TocZqJu+ik%?LtGNgm+wW8*d%{qNO(V zj_i!NxU6OWwR8su*|`riwT9 zRIzj*ri%4fo;+1-S2Le+Y_bi1*J@?t8|PmnB(^gpB~>~Mv^N`vO*GRWaAmf2EUdZg zW9&)r9|*-D>X_!IaKg_E--m|DJx_IF+e9!MCEQ8SVpUW@syD{krJ~(rZZrZ^QL-|o z7Wz8kHc!7%5coaX-zKo`C3Hz=-wokfzj>DcWwgC8ATrwSPl$}RWU+r4-i8Etd$ zoTKel$+|<$!5(V;SWLz2ggkYpz{PejoK+pIl-wCc(33GH**_tSM1B(z=QbhHwh0NN z35i4T&5$^fsgd{s52=OMN5#d&+ZK046Vom^N zj_4XJ$cgA0CQpT!7d3CkB~Cj!JMFjx?ck~i*H+0DP=a|uR`7ZDu0u}#JPki{f)}L< zmp8yY=0%QT5q`XE&^e1B;qb{=TnJ6%vX^J6XdiW$bJ|*APOoOmw0+RQAqk2J9Yel2 z5r3U`j?vVA4d3&*Xa-r^&KUA^RrW_hoefK&8GvbI< z;0Z~Em6VXq0CDQbDihc|i(+C~L!hRv1AjyUY1m}P4?P0DE7L)&xS)D7Zu*Iu7^I1) zWs%_;IS+d48lgq;y<%VI$qQ?*|28cBDC6`=f`U*HN#i`j^k=MHLRu(gvO-+BdG}=^ zM9MQDM2=8Lvy;3?t66C$3z0f?=}OTzfzXZmYD(gED*sQ+Pn?>{-5`-#_og6fS{1~M z#L1UK9KSfO$a{_U3k!i2{*>uIEA*dLMDdjuGiFoC27 zOIF|KFu5TWq@|UU3-)aiijPJEnEzTnqO9aXN3WE{R->cB!ZIU98(1l@gn`{2LY={3 zP%4FLF3&MaWG(E5z)mlh&9p->P=LU;ok_tGM*^ErIWDoC-mUsaHZq?&10BnYr#P0g=x3xa+Cs{`C| z?7I{7agd^`Iy!j~pyExhT%LXbE|gv zaRu#m;SY>{G!()mbXY<4U3;1JINI+)?_k*u=Z1Na;74QBs@ zznu$$qjBKM53Kuy{PY&eX0f(4V>^$WS^&dr25$p2O1?xJ3uwvM!-O0f z-GNkAe^_1LLBi1ijM8%a(6c1>SlZ-d9yI2^&kO`p+7(dEh&7AyO&5e0QiuhMjv~`< zNM)sugi{cAdys;s)Dt=tW0dNJh6G2VdlJs-I6;wi(ppuGAR1W=~_UGm{-f;E> z2%*xjQ|-J+xLo;XZUf=F(#Uuwg$Fu*q( zh?Q?YDd$x#l%pN{9V^XL)OlgzoR`$Gxw#dyRra`c9=4Rgz z)lH+EO_bl&C?CBHD5p9oU&0ob8&bYbeg4Q1tj8kw)_(z_ouEs+ss&tFwRlygG+jhw zTMpV;PZe4{)mx~w4b@f7)K$-A)z1SZ`U*5vUB8|A@6q`mW&Q%4e+2X2>*Q}q-Lw-> z?FSG=gQC&o3pAW-2}h#v*h#Gk=h7B%{^Imf!-|$o{vO65r$ey(n1}1e%-{oBz?unK zdWWjv<{B2qj%*J;KtpRzuw!cdOMrmw3A6w!9uVVEftU^Fg8<<~1YvyuFWjR?Mb?a_ z{ZcBUvX#^KMs@h7NHzpAT2bJv9ZUBM(xv$TlZ!FSA>x~Q{E!JiDdRLOTfB7C4NYc4!lf!V31JuL1a&!M#vL0#Q1*>LF#kK%V^!I#mO z@E{2w3pC^eEaPAQu^aGzBefB@;Ba@o$niERbuEu_Ynv$z(>&a^>n%RpL6^GGd`+ts z_vq-dTC(;xG9duIFpDR*s<{4`rn=*{0iJJj;l+FMg7X+($x*KCm4;kmk-HjOh;oNT zc9psS;nH)hcTwVhPy)CAMDp|WCG)q>-4n^L)KSEFXB|8q<(CpT^&Y9=pi=`kDRm9W zs@5q1SLc)=4p#0+8Jy>IYUvdzldc|c%Fy&-IA!u8WiH5eJN4v6%H*qwPML8ivu`HJ z!lRL4+}dYPaq1}ymnkh{C-p+HNUjS?DMU4JdnJ;QysMe_BHU&JQo@9=njL88uH^j& zQy?#m_A;~RD(o%IOL9h1J<*#GnK*z3|Ln@cdWqg}tLlILuc5$OGBU9P@#)3Fg5The zucw?MRvEoc#eBamKN4!_R(Tykca|K@`R;NsG%M@g|Pc z$b^A|sk|S|Sok3`O+uWsl*i}mJHpE6${k_-@aL3wgr%TFjm&J}`@$}iC){$bDd!lf zDeoiS7t1$gXN{cVswuxz(wE71ntTtC@1gQNOuqBv`v&>GRld2JtdXt0n(}FqzDK^N z%l8cV9wXm{^4&|mA)P`sv+lzkWB3%|vjCq(_$$l*_^iQa zJw6-p*@Djwd_KVE6MXjL^DREzQ1*NL{RN*!e2(K2i)U@|NyeuWK0Wba9Z|0Ezvytn z)hZ^|NykN=wU!&q5|d6dlG}$Lb_ge2r*{k|QzX#|-<`vcTwTJc)@O7*vs?GGTH|+* zrlp^x#QxVzHPzQHj9KN#?&3mDWZV#xi_BzeR3ayOt*6TP3Xz{VUaaCG$+#WAqcAX3 zzZc<41HtMUONPfio5Ql2J3cWx_gL{)a>!~s|+*1x=2-9;TZWQU@ zyAa=J`%;J7iIedZp$)d@+OY$?sDQK3aJyqhPRxhH?b!Ye9j~?%Q%xM8cV66vr++nL zJ~m@;o!D}{`5j!8x)M;#Ou6H0=5WvY7w{ADC;r~sgUl?M~h z)PpQjS&tL^)&tYxSbmGOF|hx5P|60jMSG68-Lym+S-Y%_LCF)?|3_e3Y(q9cw8fR= z1c7=8rtJw}j)lRrIwhDRfo%!;MJvMB(5dply@;~zuqQ9U*G{fwhyP|B6%x%R`qsBB z{9@%0P_piF?p#N!iue?hdm(ZVHzcRAEIXD)0GI~h?#2t_U@pYUo$pqljBM=iiJMPW z$`fve<4IpGNwJi}x>OlZWlF1@06);08(E!m1H?(55qhA=sViB(=`a)JWhkSrc-9#o z+H*Gz^XHcc7lCu1AuJMR4pNiP7KP%83!uZ%^~}V%GNjd=Jt@npDkY|qXb2Yg3=+C{ z69H@A3>c}LXz{prWQ#QBjnpFkb&kU1*mt=zw2v=t7!JJC%8dEZQ%=hG8#)lB;fKxWG5Fz4gC|FFscaJ?%*9zQ zzVqRo2k*}68?L#pX)V|8$57b0A06AyUFJIjXEdr?VO`*lqpMas?Ag&R`McLssHdY5 zK(WW?-P!qSCmzyvQjf=xmmQp!uQ@N@Wts9jZ=T_sJl!?J%!u)yUOYQt@}%jL{cVe8 zC;E&Mj$~(91wRpKew~`(6t|`L)XDd{CKpb-nZ*qhziY;Acl%qT_+7rcbF5NEER_xZ z<*8N34|4+erI6hY_H#n2+a}nJdwVk7zfa!Er-fh~E@&isYcEPI!e5VA>YA>{ty72JW#}U(1_4%! zAU9|X%LFxh)FuboKx(XdG043UQiH@W=aR@?OT*T~9<&Fg9p8ZPFo&kA4@v@!B>=1P zVaA5Wbq2ezi1mbDEX>6%F|{-mn*b{fhDub;L0!CQKXS?rnV2HO^l|}FHR!1@z23P# zLa$`Jp~VJm0-bo*`7}HcdSUN+@8Kfea02TAnOtuuud+4GyvWx?vm(52PP2`5nr6Hi zkW!8BnVU@uQx5(XNKWgEM`61Hg`}n}~l)5&aRf(=j%1P5fxrNUN_rxGSel9Sn*Ays0|aCFMGtD{HB}hikD!2MY$| z)t}BQjn8_GNHCz)w4Er!b_D}k8w;ZnpzfhweM;+LH*%BU8Tk?Kg9p)0H48s1#67z= zTfNj(gwwM5E z47QN#%$Oh4)qmp=tzJ@9%8zHeP`aK0)6%6YLe0PRMsRL2EK%=x7`PA7hP~v$n z%Eo;QkA&()=xaG++7FQ9yuko18eZEHehj|I4i~3zi0MLd-!wP{h=k{qKPAkSVIfa! z!L1lcbjZS&n_qGQpsx#U43DM(Y(a!OKSx**jHv7*l+h#wX3D1SCZmSqaen=na3@`Z z+~j@ar9n--1pW(PN2Np!%6i6ap)Kr zIAKdg$H$(jYpaDUCry$b!o0Snkn1_9sTIx*OP2`*|JUHJUc?PLoY3Y|Twtx(b;Czjp+PR1Km# zL42k`R1m~P4hU|aXb{7jfv^WhdxG-`1s5SN6Qnw42gm=di^m!q>j`H4ty@klyhvaS zZR_FVY(BD}Nb;RF?`H?Se{(gF?WFY)1)#d(@6ub?(}s5gV((ZucmJh0_&(9>%dMrT{!HR&zAHtf3v%PI! z#8y4*Kz8?KJ+Lr2oRv8v!4Eg0b_l$cJ883e2|MqY({2oHHUl-uf#a7>|4cP@5^}$K z4rq0{rj?DfiUJK`*n#fw1Yd28kgPL^=(vh7(tiM_N1Ca>))0hw5BXNXDLi@l@F0%K z2InOs&bGh5Iq99D=>uHg!%|)4RfNmXHsHgqtkUkRd-$zLT`vNOhGp1}c_1!?PT2&u7WZ1?3TcT$KqL97G_JrF#gO#Qhi=qZoG zLrm?jAR`+*>3Qne{G}eP`%aBctL_k4sV*+wj@{|O)=4%()G8S!Y*%m)~ zzy5lZdEXuxKaUKMzTE7C8JaR5;&fsS21vuVj+P z;HhquoR3^Z_d#(l>5i1z*g>$V0|s(97TAm>Hrs$Du~~!mXlxYltKWt)xU>u-GpGwv zK2=WC%{Yq%mpTPEL<+vbf=f{lZNUudHf@~91Mfp+qWKu9zUuGCBs^V z^~CF47R*!w3?W-K8d|wqH~PIZ(daA?gJgRJc{SN?0T~*Gt=q)HpCTvXVo1@pC`u>z zq(@jTQJ1sc*M<6!{oov7r~Hby5?D^GF9a+j%fa4sfcEC z((i~^M9VS`{M_g%Z;NJ`HkPGo1&k723-W>20G;M3%80^|hL}IRnLGVySfY4To71G- z7otIxziE;^(G^W^4|mnq(1jNu{w7K}!J;LxUJJic}|IW@lU%ineKtBYaN^v2# zlX3`jJt`wmGGD{-FmedGinYGzPR2Xz~YO@z16Ap9#gqx++ z=AGgWmguRCP2GscP`|RR+%hlLy9_c5gG!$5IT&b+p4r(Ny(r77hA+Vq)mI$d57rlw zfe~{&jm4{^IIT@Ai5(;&%^jp=%h8ceWK;33!-9E2P2l)tbK0^T^|J;99GI}gMEqRF z&c!N5O?d4`@FV>rjgo!H!6Op0c&ZuOw(qNn4ZO8nZ-TzXx7HTx3w6fpKcbK3=0Q{I z7pfw$toLb?k6!bmsBfU%yWE5W2s2sDhIS+1=LmpZu+FKq0>O7DN`-3FR^X7iXHF$g z;9^G+t0v^}1paLAk5~4Kh>0Ah3h>9;gP>IXRXe$zmpJ+QcyOKei%(N#4dtxj>y{Nf zkI1_zS1_dL=^yMuqoBJ1mtx?Lr(Eujwp0G>3}(9Ib8a-Ita$!sEE=|}A|N7d$7Rau z{qNZJpI|tJ`xDv_xUVSWPtK6O_XGIm`a-r0=$d5QSYU|1S=N4)18^pYV@k90oU&w; zeBW)>>|vqzdggk;2^}SJ{P4MVzRA6=A;L;raqwr{fz~fX?L@*3`#F( zI{#vgN=)0DWyN@6J_?RXRxdY$^BF4RvZkS9=9`2w=lz^XJ3y}LPA*J)+woRi{3-1M zntiweWFylxjplkxd%~(E*42lytgEriim^sDq9a^vY`S^}^#o@B8HMmrXlVLo6b<38 zsCykVg~)R@Wm&mJp1{$NuaA{m!uX;d43bJ0>cL3KGKT)n#X?_?^>Gv2I{}xxm(PAo z&z-bMML(Vrm2GXNXHOxiT?lHeUBz6D%){;MgDGs#uWV3vG{{qah)uCm_TV}BA^{IM z|19J=Dl987Z8e?eU$;o)XO6W;j`LG|-Vyjc#(!xQCN{{lj0UM?98mP3=-S-YtrzMD#{;4CR z^qrJLcGA;Gt4?iB6#f0$o*?=Wqc40U(i7|?L&XASz4yfYYLpZsWvq!B;PKr)V2E$# zfIQ!|14jFc8o!6iW?^ZMOyQ zu%v^}bdOShIY`HmQMkgJCUQF|M4Xq&Lq5PFCgNsGy&SH!eNnT@ci_PugaWW&s~`VP zbxM{m1Ju&iLX6#PuN(OR_;Uh&1Vjo?krh1&Xf4RYd6(vA7#DC13|#CsxlaP?8T@YW zCr^1^7P)?l^*-LHwAB!Xc1mC1k9Ar&GF$wk!p0c2aD~MAyPt8TLJwr?BM2gL+avNm zQ&twp(EV3&vX}>mkn~@?B$ECK3?}kD1Sim-cX(bi+*AdxeX!$xKOODz>UOneyQD?J+L z3pwnQ9Gpd0mcHl>oY5EP27UBf`XUcAA$xutZvbID8H`nIo^X%!#TTVl<~rvuXiM3l z9{T5xn6W10Gs?C#8*^XC2Vzc3;Q1`xuJVz(X$3oikr_m)jMP8j>@wSh6?GSs@PE+I z(K=mgD>;}*FDszx<-=7fh|BCl7|0!=cT^wLo~h;pbF58_Y}1R~majVteU~SDFhEf!+mGNI06)HPe3wdSDKF|G6KX zF%A4UmVgoConmD7#nB1yPI~DNbFb8@SpfzfoR*W>?O2BvVqHZ7>}(XJh0^^ZoX=G~ zUVwePCiAm7TcO|RR-@C?+21WIK|G?m!>}Kr1*)yad$nces*6(Ti)FZ28M7WI}Sx}Q8 ztahpeU{lBEuCE+jS0C&?3?YK?p9Y^iE@J}UQ3mgX6uKVep>M)N9k01JB2_?x&I_V` zxFM`$mD+i?S>$s;m;HSkTGy<r z{**orhzSCMah7nNgD}XtT5r%C3;fAfP59e!6)oF?`3EZ|XA1f(;B?6^)Z50HR)=is zXbzaSpV%>c14Un^9izyMsjh^si-V(K>jpbHTI%fWW|OiIaJXXcN-Y z92TKRv3j~hO*#GxC)8-Px$-_~f6`}^tkXijh-?YqnI4*pqd1{zt+)fT`~dq6#_Hpm z`6=(v8Z;F`Zj6UV#$70@))wpL!c}~4E~g}Hzv$ahYpJC1urKcb!?`u1nQu*dKd516MqVcMgj+*ihC%D%=17J^nr;<6pU@a z4a4kT?OkZk4%Hie?Ky#~c+-NNauv{G3p?RqT9u9iubJroQ1&I@Q58$uSs^T80usax zBBFpS1|tv%NCpy^kwl^hL_tKOh=_nPgCH2dBuYFC;&NTCUd3In-YaexqGCcI3xR}1 zk;Nr$*u#hdDuhMnf8XjplS%aZ{{Q!RB4^I&uCA`Gs;;iCuAU9<2H$YsiAl3NsEQ|{ zWr_!g1h|VY5A0Ou>&ABiM(L}%n~$@beRTV!x8t2gVJuJp*Suu-1?#02@^SxCVHk-l zKgfN1sP&C6h%hjawfqa8s?Cc@UW+E7V5+J`N%fia(Fwkx% zXggMYhI%-kuIJlh7&=5*Veu%-%pBz7--;`j$^Z1mQv+0E>Q{AAt~Etn&s#`ctj^jB zb;dW!w+d)j+2DpowH(jbPji+`0D$Of4CZa>FZcI0Q#KScyk#)HbGso=I3Bw zyy|*VxUhzdU<~vx$p}fOw4gQ_yO)DySidvRrH}zX{+_D3P9>rNa7eV+8BH^A9Tf>? zU>}_D*TkyGfo@j&_20DedxV1SYlu`WLXE*LZC?-3*Hp<(Q_OLk-^K=4JQQg z93p-foAAZ=B;vQCL(Pq>B6KB%R$i{%J}j$e#8FM->P?CIVYteZ1OpwE!!x|A8t{u8 zuvPsAwgC7q6G(TZ2Cbq-A{vfD*=e)j2&+^71*RN}(lk_5bGRs%)t#eILV2vmdM?8U zm(LZ+flSpyYGo&6V_LwAbk2qhZa^Wdk9HUq>qY$~91xpHEztLbb3HW`7HukPnXMZ2 z`6(KL)vEGm3cK9BmhCKA#j?J{Hlji5RhwFzR;qBOeeGD81b%SSG&CJY6b0plL#BQB z47&>_n)>OukeqZVEf%=(Z{u10)`<6F9qwFz9_~!VC#^f$VJw^_bOiu~`-Ob4@3tHc z1}3QIG_chKmal=`Okl49Sm{G}5$K^7>oT)hW}z;V&N2loL(arN>z1AeH=vEPQHW!4 z-?L;%Kf5TJL;p{&4|m@qEQZqU9Z3=BVQ>GgM`e8|^S_w}*P2qeUJ{X(ZdYCuOqNj` zJ!c73Gpdh(#Hq$=TUtFmv+^JV&;=9X)MPIA^RVqvRT(oBG;O}<5N^Z@Bn&q`rkl1e z(`_U60kbUPH9W_J?mv*#2WT>slhv1iJY@AIW&KYO#s<#bB&&sw(hj9Pg_Uhz4d@vH zx>N&NNI)qDP?NA<1wevz2pTlg7TDA@fb~K4XIIL+n@IEYrbpNc+G{F~i6_))(@#zR zNsAJ}#tlf!6bG*g$=^9&$S?K?{3UCEnM$@x#jYC|(%PCo_t6mZCBAT=8^*d(r2{MU zuB{q@uKLf3lCfEiZgFzFKt6gFsiY=43{e;SE(GmNI`r0bNFp6b9}={Q4sK8eR+)bj z#gJ89{V4V?6r+!=7>rQie@JW(94wlMhhxz=(U?n{+8T|u zTbUQj)+t!KYwd^-R@p;H?=_rljy?9nDfI3m6%G0d>3Xqn@ z8B)e;;DM%W0;j7t4)VrF55lKqUpR681e}ke>s&oQBE+^(hVS)UOPZfXH_Rdyah>&Q zs}#~7r3KD+4CUoK%LN%uS+X^kirRtOo$^2)YBl6xrL~LiIn=L+;Gj}XQt=lbCN=}; z>Aj5gV1w7G&n@vPb!CH7q`|MKl86v!7?2pc(el1doqC7}HhmnZuKiWW^iOJtTUo^y zKZzRRMv#wWqKT}@v=oE`cUn5glbbC47lRR@?P#glkz>t7GJTTf#g`Tsj*Y$ek`}y3 z%NVzQ?mQ}J{0fC)k5)aN)jpute6$*Y7$(d4uqZeQakUjTU?&v^Ovkg@gSO!+d(eJL z5rX3#pgK&AGULA@w^Q0rCHgEFWIMCN|Mx=NDH^Y;SzU9SeLg1AnCKtNGn zD~g&B?fenRUZFV!{1zE?qrzq$5lUa%p-FUa!Lyo&5oj*Dt3dk{40uQj39FLLE?d$h zzoNcg^y%H&P*HHGOJq2#x?V5o{ep0()cqdA9nedMv8a|M(k>7Pj-9r+hrkSsQ~l?# zpgxDF41n>_{X#%hOu5+ZO2za{`%GkzKTF&wva8U(lR zrL~#Z6Hw7laKlJv$zZgkI#nDFs{XqDpX1T~5Z(SsJgY&b{dSm8wX94)`~E#B;w%}) z>bo{_Ye*WI00-qx4>(43dykuHWn{X6YR50qw?_zjq=x-0Vedto>{}D;<7h3glxupR zJOP>z3(A*K0}y$WftjlYs-+rYIw6kL5VHvJ0Ryo~N54#n{S6UzfhMb`o{c*>_XsVz zq7Jx@lHn{F$Ii4uXJ`ULbJObbCH@Yoshr1YG3eoLBDu5VN>gf7FTB4Km5 z@UO52<2}QZ5=bU*HT5px6ftfOr(b#~^U|Pt@*imT7!F>&hK4e%19UecCfkDx@EZA# zi~mbkZ*Rs)WV1PU1pe@XV5GN4%1+uklb)n?n)v9~-Oy27sFMtT1vSK_C}w>{OZHJr z3``BB*E1KPyf|Ctf%wO8r=c&gU3(I#PW=v(9h92mw(_~8==l&q)~m1d>yGJ#hrI1k z2Zww%r~kP*a52g(8AeA|y(-mZ7G@R(z4O;bq7+gaG?rjCj>vFiHo_D6jC9fAisVIWk50#9mFlrq z8X-p$U*w zw1+0pSJ<$h%pJsf_50^|fr;FO_PiaLQ|R(gR|+bycCS`9?ZWZ}RvNdExi%hkRNNmB zxjHp?1(fYE;d5v(2%;NF3;-#^1y4S(9q#h26jq^KLa9)lYs8G{#K~J; zH0kW_>&4b*j{WjL^U~ARxodz+16+R_P!t6%+YQkLom#ROCO)`oX`N zw4f)#xhxpvIT!y2rM94~P^z4O5cXH3r`3A(!hd5IPv&uSKW%U(6@FsvX0As8c7JZ4p`p%gH4-yO#o3IPlq=q}Dqa2H=6=Ptej z7WHO-4G{_YrHRJYXkxo=Vk@3iYc$b(?RBBugg^}Bs!h7;$E;edt3J%CTY+`yJ$MnQ zP-}FVrmUFHs!d5vXwnKQbf$E6YtQdnRX)~eTiTx7$%R3j_NVs)xl5lK#)_RAuM zer#2r$-moFHtxQmN`FSLYYYC8qFJv;DrXz5yj>O}V}ChjuNlMbku|!Mc)9j5z5he> zsafNvy9yS;vwsHlYg(iy2?zAB--K6Q99M#C2)tlh75=G;4ihAo_9fO}w45cf25b6$ zdahmv*;5MqT~6?7$R@?_*IWLEG6?_P23joq_if?7GbFZxQ_}=^$+W|z`gZ9(9Q4)} zSm}ts@XLnBQT694GMi&nITcLtOFfrilo)v-UVIlfG}DWM`E&%WxIu4boIV?oJ=kWe zQyU+~9OH}67|b0LM#w!cGfXX*T3ytdJ}cQ7S>Bny380*|=xVkzoIqfVxhY2&CQ` zB-kSC#FLci%ZvhqG+?JzwF=?&-MV8ziM-4d9A(r3c82heh)|0C+~lq@swkL{a@Ap9Hvz!?~-34#g|uu$!V*%5F-bTQ;rO z;Dgue2LJ3z@q@b?Q8PmgJuXJWyhlN@bNmO;NKng(IW@lbW$bPBmkDq7d#s zWmC$rGLf-aSoN&{miAE}a4HZBR*_}ZHG-349c!L@S@lJqd;a~68&XkYwI>JwiFH1}Jj&%7ZAWzy>b#?`nu4Wpp&?(&X zer{FhGXU(yBk6S$%h9aa4mg2LU*hmOj#90940OZ1#Q}%40h-c0pULTaIyoU3 zdfg0w>hqn9-F2LH1S-Ur)6PIpJDbuR`|e%X;HE(6*~bNP``coEUUgKT25HR5X!eJq~*9XW&e5-%e^p;QOd!LZzFwwlkukU7DMYO1Gc zKjojO=Pquwz6ttCx^-!&3%3x(x#uWci}ze-+*G6$ z;~M#WdmMU&?aM5An}3C!KV0ljthXSN5}crJmmNE;fqO{R?Jh9fZwA^X;0{RGGmOF; z?8$Bb>YrD$dE76CSJ0@4B}2yiD%DVk84(v%tQ?CT^5S!j&rZTDSO|Lg zLcRZ`$jvm6xb$9@@Wmfwhd(BjxZ)0(`uj0rX!6q_ZJVuX_&pNdx0FEU0Z3^&p8Oez z+*LR7=Xm}c#GhC5Cl4R{FJfFT^z8OUM}jI%x7?X6KY_1kc^+FHjh371=o@v*2di{v zN1=EAyXc!}{6di5foi3XXb}AgBEo=J3H-JC?507yYCr@F0OAsYcwd8Vfz7UB00BSUF&XQ0Jep5SYai|?X9>dznM?3yG04(u>;dwb1LMb<$Y7H$nbi7_jKZmL2bhNCd-5{zN zmuP3g#zB1R>F#h`e5(%3v!xC?ws=1V^1mn!?fe7S0OdB|AN4T$rnNJ7V!#|&3|xPo z)}Hs{jYHzc5Kp;PjRB*AJ|Cc(xVds69k{7=uE_kkFk=%CH1a$&yRht&Bvf&0|0Vp_ zm-s&0MDcGL=)iUqJq}c4h2m|a{#XXUJUZr!zw{5_)L#(Sc1te^w3xXF@OfF|Rrn=9 zu78PL-?as;!JkYSp~$Llq1a>x$(Tb+@RFFRTjwy1y3s0iYS^7xt2|67ckBZV=vbE2 zi?qjquxsPF*uOK_o+WB!Qo^!f>5ifw*rVV^IitFsW}C+JRlF7}9A;a+dYzsW8e8JC zc!TAjU|~R^n^2K$RGi&u#-3KIn&n#Yj1h#lBC7Or6rh#9lsXo%aE>A-;!tIKMQ+aj zvwKA8F%r=i|2v6R%}&su2?_lH3^_Vdf0C51S7R}6!h%>xAd5ASFHo`c0}W&?ffNwP zoNyq|1BiAN#(#wp+IC?*aj&dzC6!}8G%tFisI1YF)RPd7z%tblEtS@xlq6nMQM%zg zlrP<)8ynWol{PdFSzy_^hwWESnQ=;L`Og+hIzUXu%zRS6tGp_5xVvU9NHx( zAPebj(xJ>K-w#2T6v!N0%*68V3N{R;yaI5)yU>Q))xfPjrs0yskU(8ze-j)+*u7sI z0{S_l3IX&~C;4y_Bs?L)a|ZxE5(4-+IG1Ja7J&J1aZZK}R;ymUL$*`6Q$ueOITy3P<4hVpfuBeru2MZ*145vG(} zP(wFrkE}fSADB?yp=xde2m~iYwzjY_P0S>$kPeE_4;x;X{w_%Z5!EZ#O8f3Sr7yYU z`W{fv;$k>nRnO<5j;h7e!)0}m1!1ja-C`-LikXSgqj^#GdYYX(J{>J}@ z(`&mf6&~OF_yu-+? z{GlimZE$Ff`vvd{(R_@&tyQ-^!%RH+T?ia@V#z(?FM3QkU1x<7$q0=f*6ZQ%?oi93 zPm(#}eJ9IMIvJ)6T|y!pIiEye?C~+9dUqe?ZU@mL+qYJ`m&3``9tD0!0ae1UzQiA{ z&=P-bD;)Ij#lI1P(qN#h7AVpM?BS|!UZ5d}Ndh}+WcdE{T9L`IFASd*K+FUP2#_yv zorXY19}rVx1<=%<=^@!>_i#?f@L$t-H!WRr*xAb`NoSGw#Ep#f)*o~XrDvHmKQNT| z+oj^lh!~tyhn?0Tb=@Lu0y!}8&seR`lZ;scGlk?rG%`0=i!qbJAn**x8agwNELZ_AWtq1cTh%nwMgS^3smlQo8=0^rECPcqk;2K9K7EiL z8=3g75-N@aV{gTL`8xiBUUUZ3@bpr-J4AiFjw!UX7Yags+=6E{eJ3Wh=YYJQ`&;Vm zEm5!r*#j7vJ#`%~>ljDWK-THUI@C9EI$efdHoc4C`(hX`cV&vf2A1xayBKNJb?PDi z5t3=^cERO5!fmH<*?R(TKSg^oT_dFJHC^Te-j_z|GVim@T9%<7DP$Mb0UO2&f!Eq0 z<7F09H+iol4nbJG+p221s%?IH zvx{(azBhe=!F2cw)wl`5@M*Q004Ho}Vc+?cghd=h z;#xd4BkV)w1qcgUn9{9g@8SgH-%Mg!?RN>pyeK*OvWJVS`(Mvt3t6Qu-Pgj3})gNK?f8m9Hu!sh1@p|R^ zP_I$w4N^I}=2fie)itkY&0N;x&awYAjXPiB4S36j+epKXqNDhhjq}CU-3eJkFYpdi z$8NV5D-e|v+oV4yj{)p*4Yn1*MiQ)u%F6(&GyaGCOfk|#opPBbwEcf2?h&V&S(nT8 zo_0c<8%sOh} z$X|e(rndHQ!!O9`aoo3(%$KAX=p(?@`sR|30d4D~S6#8US6Ev7#^jVYaangHf79 z{q#Ai&sgm&!85)}B;7XEKMFANpkbHx^>!@97a+JzRmuG9g?kMC^xqJyb!^dW)q^c? zr4o2XlYb!KJJ-{=)`Smk#C_HveH-0hE~GI4PLiIHYuKsJYwL=>0xM87u5RPf-f9;) zusN~i6rWt*<^z-HCAQxF+z74ZELn%<)ZNdLqR|k>3lFoai5KA?(QZw&6lsN+Qt@Ha z?6+S~5YJ(vN%>+A7a@D6KM1%X%0EB_iIMvdI70j9ljw>{)=a|1Kmc?!U7Y1L5EYsTGsN0%`q5F3>d}4P9rdf_HZsblE2hGFDudb zGv?FAXq5dd7x%LYe`G^e2Qe1*;~9#%{1eI(bu=UP-<4mO{gJ8ZJ{HD^-V4h2CFN&K zgFeEGH12>F!!>}@ySNhOYjjH@<(I6GD0w1;C9#WUemZxVa%t%s+|`b1>G!`mtT*U> zuOslipa=UctC$}6ppJtQfxFZiU11R`T&pV-vBGO4pln24oZDl^(E5Fz{&fXxw2`~6;n$SbKr@ifOzZ% z6jN))$@pWcz9=R%Rc|K(q4S(avBapEBTI}~jBP!PuR0vy-8+BQw-CF0D|;@JN?6lG zs8dhkU?=Ss*rVpGr{XKbGbT~9K-hJ8_3&C^jtyUU$YeqB3gbH1Lg?hDAOlT4X*{Lz zJ)PHDr<^sB_If?G`wHC?_!f>pcDVnvD^JJ&`(kU3hRK73@|k=9YfLSZ4}fu=zW6gp z`Nsvdri1`p_;R_t-%bDaOK*cycr@Z?(@C$WFuOO<-HL6`02!UwP!BT)}{YMF!3yW(+=y6=yhPEz=w;` zi;kv6ct@!z8qi0;qjZ7>RE=kq2SAj%Cqe+00{}XCkW&m6so&m6Cu4w7`r1hY$%eZI zbPA`V=9gDoHov^d+T@oPQ62K3zu&LFJ4-qV28qw2D;TZ7d026>@I_g6RFBRNI?0rW zlgK{qlWlFs{O26bHR={@D7mejYH3BBNd{c7DOIaz@n4wraS|F+?F?#2hIhClZy4kP z$CHW`7jTJI3IL8~Kj%{GXuYSS6M&<{{{x{x|F&1Y-k1DOg`a6zbFgFfuR& zvDMRXesPA`hAZzfA{hVG4a;VPfF-yJPDb7JiyfGaaGQD9_YZV-Meme%+>g8Fvp7|X z8>pz(D%9%Rq>nJi%prY@0@a5t*3-ZO60PDQfjVi#aXwewI+N3{Y;F%zS8No?x_|<4 zBge`Y--`lqbw$hRcitv5{kj;MB9rfQ?gF6KGj-yMd7?MM!cz{RCAwg_pw9C3AG2=| z4z6-J_$l~Dwpt{j*o*zqc{l{>@{Q<=BI4YwQw`b7e4{T4b_J0;w+b{m6?IpGz2l5* zKBR63ctOC%==;KDsS)0ISK47u+;YrJNd2FuW|d3-Mne!wJ-UBm@vQDbzbWt!;hokP ztI=b#ArN~bgBiwfx1<#w!?w7dhW<#|?-yG>dcV_J@+IuiX|x>nP>`{YE2G0ONg zPWDN*s!Ab4{&4ghE{i?4V%*@eI0_3F8)cyw6pWllJJDxy45!Pp|X|Ls>eqgp@}{BG=?{2lMB)74IB)({dGnGhQGsFI?8Z17Z&lJ z*-&poI@nnQvM@tJXw z!ldpq;O3&9yI^=vy*c1TIh}`~lsX>GUT4aUML7VvCRAX(DKOL&xQKwP&OKQv^8ww3 zPI!kluRxF_Uw1G?PeDbyk@kw-JI|S!zVT66jIyd%hwy=2-zNpKdM3bCsB&-7J$cGDU|WI{>U3F`1i+a;(sJIQ9TZlBEeul1LN*9=xb8eRT;;yEAXZ!$LV{xhAYaQkM7(~;l;l<{0mIZhod?-&T=JxxxN#I7*T~KdwUcF#y~b2^ z>Z%x*W2y{w+1ZV#WXEGL3?CP_sF%Q%W(FDhU&O3dtNV}_)43kiff4e@AR*6;Dz zk;#3ywNM1;wsveix?fXi84)0ou-Ae&{fq#Q!;Y0>pnTnM1LEyw<;Po2QLYRsJqyc8 zD7SR#I>Ll*$Vo!!IaaUDx9>!y9d{4-sh$;VAc-= zCV2g*6vbudk}hf{z&#iOx72`}tIJ%?=Zm5hpXT8kA{Q#%5hroh zq0S)Gp&IHaLhb(-sN)1`ttz;NNKO5}9Peg6rL)lICVK+Ppn3kR>(cbdB9|Uoz)SkGA>2;r_F;reLIrgJVph<3+Plf<_{|Ey2C6cxT{GPGju!c0p5=2SAeI^(M{>3*7fy$1*CfZiQdj*|(HS|+% zPM?AC&#-WiTdxAU;!u!oeNstHC8|a34h3$jvs$J)^;KX0XBee`&%FCgJEX>|QY7Dp3U3%?yDXWWZ%> zaNv^=xPPLoD2~u(c&b)*GQ(^C$(SKBD9(~35ExXLLvYxlhfOH{lLNy-{*&Guf-Wt} z*Xi<$?egndls_=IIs9(qZ(sa4yZrqv%CBotevU4Gj$M9Ii}LrkC|{?`2Vf=&{ui|< zKdD9e0n`t^_z&&!$A;Sd4Lh$Td9O_#w?qv9x1xZJ;V{y1R*WYfcdb@;mr?UzB|n|3 z_ud)4IZ-@d!llkT5jGQ?DQm1+^~8?GAdjR#L$!yz!Y;*99OY1fiSRk zp|+;374`T#oe1;r8C(=eZ^+GWhnX+&_@M54$5va@skUZ=Ah zmuak!R}RntlS&^*H&=m*#KAHug1#Vj1R4k=;GrI^${@Xh2Mki~pJ!nr0Euf=Mm@%; zARqeUGJF_mKH$6u*C+Vili#gLP!zRl;ZoU($n2%ZaQ(NUT-t@|RR6&27w~t~X{+}$ z_S2e_#CO9{muswY>3d?Nf#KCKs{YUj`4S6FyKfp8jHbnEB}sjVWTWU~HhprrmaLnS z)tGm=Joltx37!kb-Q*KM7QcJrqV+YX$Xn;n&A_TQU zpJNgbQSp~*#b!=yGDYRC(`R7~!k~%Mp7SsqSa;W|_qTC45Sd#DCmQquqvm{x4}kOV zm5RZoMt#Es2SWhiVL-^>sYt7qndUtGQ1o0dwVDekh%qzYR1T8e;gb*Xl58Uq03_%t zj%7!qEMR2<7CuT9Ut$M-=|dATH z|J7=VnG12&ZGyGHUrZbga!lt$99npb0&YKnD&LE|;E9U>B(NS@nbXQ|SMz;-shm&R zs(zR#(*)fs|GtGMHml)lQgi=>m9okNi=Ph)U2*a(Gf&LFi?NhAKVr~n01x71K0IM! zJ1<UtVU->udd>8ya2{`Imrc9p>o_LY~@~=a4bv-z|^=cHF!>h3<4`2LCfPwvnvOqV? zSP)j^y^UXV0=(=?TuvswSun^y3*_NZn9r^x(^t@}V&{_UK>7 zGZ|e`mk%)F%or!e`}yKy&?u5iqFwE8s8jwL-FaR`gXZA?oQ&4R(S$b{zS|LGb6(*s z-7#gSi+6sj8hj1C^WYF%`hjS>%cW))K!2rCj}a1a(NWvmYKw+k^>7iwElSEQF^w&f zDp$s-K#qNUc^2vdM4kcR7|-L%JyBOqFthSVQ+c?l3_f}j)rso!=q~Xy@u&X)+kt}+ z8hj>z+%SzpQm5WRqJ9=W&0$8UF~9AqqoCHQN6oheezSH#OTYa(H&XVah9au|LTv$p;OJBfEf*jSuhwtz|lA30FoSVW_Fa+t-(@!^@5Gvc>i_<{#t}Hb&@b1J4&f22kAagLNChl{}Y-@LZI? zDyGSU_*UxVDEZ=_WotFBwOq;n__{Vt{`Y+LcU~zf$mFxn1J8q;r)A**S(z6{`*R4K z3urtZ`_CNvXCE>7?5}^H2-c}H_4iOd`|QW4dOS;AlF#0O79jM`ii-$yBB?G@hEbWI z`VAGz|BCeM9kg7Ut@~ApXLSVqrH7(v%i4i{nX_DlV?t-Fitre=0d@8pvUrV_j?}Ah zqvh<&5^y1>1<@B~vQN6$XoseJ)CYc}b|?cO9Czq=_1ev%*)A0d)T%G$(2~i&0409l zZZxL2Yxjbq{-1)^H9y^nK@0KIU-VZfI_SPWhP$@N1`q?*p_)F*((=yb2<06L<5J+P z_ZQ{@GBG++aCWR>Ag&HzE`mH@a-sfXX|b1Td7e;=k%ztqxxd}SIlYVdrYcs7F%n@q z>DgoE|HUl34rKwW0PRtDQ`WgvXW zSsNTlFT0twZ=j?6J90_We~|w^&BhDyT+M#Ner#q>aQtNM+1Tr^;}=w?uh8SiBWoN# zgkn((KZSrrj$FJT?pXC4KKtf!iwR`D>gZV!R1+wdXl$cF6?)FPn$L2zm z1t3k+M%1_+*s4~hxMXhDCxgzIt#{1mVn?yA27#5k^%T(!uhI1GBTe9ZiI)&o=|g|fClSEBuNll!6!jSf=4-5va6p?0=j0#7I68_} zYq(hbWCHGN1GnKb8RZ3lIiMNLdcy1^F!N!UP3~&L`?;9vDL(^1dKn;30|-|Vqi+X>Q@kOkwj1_@g;LAb)%_`=rJEf%3&IzPn);hV+4be|H0Vtd?GASSU93 zt3md*@OFHGdjjj$EV{prB9*wL^l#ehN>-B|)spv`3@-LQu!;ng;tpdpWwX+kxZf<` z0%dwQd5RcCe)xq7kQweX9AZgN6q8Z;dC}O!~J0rakH3jMlA4z4(<$f3$(87pqrx4X>CSRxzz*#kQs* z1Ga&9OsIo>Ob7j+h=#|Ul@Afq!Et7@DTj5e)~b~p{K=o{@)h=6hId%w0Mz=Qo5-1g zL1h1)(ZDXn=YQg}UJQ*lAD8Nn$d5P~S$K?-2Kg%hvE}9N-&1?&NV}%X-JzDue9;sS zH01)}5vy(JbRaj{~aH|TM1lz~_pheG~CXGIiL!rDz7 zj6&R$Lx*am+|te|HGe&Uhd2~d>L2%uVC_TQx-MGkN8#!K$Qmvvm1IObP1`?ztclPaMKR79zAIxSuSzyT+mR1Wf8+(s0Dmk|_iL5`AAp7c z(D#0_J9I=Wj#~AU0lEbRIMT9>`Z0cpLm2s*;ISTrvrsghU%_kHqy8�XsJYd$WN( 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
    GSM|xZOk>dUl3!@mwYKm)t?c)73l{lK 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
    VMUEFdlz`Q~g&avM7w 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

  • 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%0Ab`mh=*Xf0~l;!Ove_)bZlWv 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 z zp!zlE<9(?1eXtVWNRdDG2#Vng&u+C}hU zJnKS_q~p`%$x@i>5t(ZNJ<>%yvC;I1{8qglk>8`&Bl6dJJtBXt*CX_6ogV2XV%Ezw zdgS2YM(bMj@qd4241rl9zV*BJOKKWyI|V3NGq)Pov#M%Z2ePW!f16I#m{79rLpg-1 znTeKZhdL^+e$RxXHMBRjo6- z4{Mzt{ZyxQc488H|R}|Q15&w=*%+pN~NnTN9a z_z2XWM+oXqc<>8Re~!Y6nKkxg>=9dOPsSdxXI$RT88`xATJ<0&kzNrptZ?4#T`g{2X6_3i2%JB9Ck^JOeJbYPcLZKKqd(vFu9$yk8DI6Pn7@@e#bgkvj>s+;omi3GUp^im z33uS7KN^kEaclE+@82?Tue}R<{Xq5zwm~d}Z2|}4XNKA{!K-wZy&BYmPw@5ZWbwe00f8~0Bay<~&El*%*m_i?<9g5Aalb;C@ z+rU7z%w9Aum3Wt9-*tTUD*+nnenjF)-D7XwpK7p&*bk0NWws_cc&n0w=D{3nz{nF_ zew*DktCpEw>uZVWRox`{AjZ?nlXyfFaSwvMmTyvYgP8S*!Qm(CIfidixYPbrMZY+=ERZ+*6u5tu*!3N>j^gG_|}&Q_E{KwY)}C%WE{Xyhc;Y zYc#dIMpMgcG_|}&Q(w(Zopzhr-7r6#xG&wNPP3f2AIFC%E#Cdz_M}+fA*^-ouh|u!=iX{HjQAH$Ylk&@4djdt zALuie`|G0+4PSrlMWbo%udCGlYRUd;ueq9tZUi=|H@(%HGWDihz3HRg^i^+C>PyMF%I&+B+jnW}bd~74&jt3~drl)T-_lZhrahz=y0Im? zu_d~(CAzWIsol7GPDgg*?i0sJ*Tne_wHxn0!|lema9TqvCpeS>k%F8XbPgQt=lfMWjccZo87DR|Xig0=-G z`3GR*U0}5~L+{tNwyWiTHg!^!XK3$Ez4rsn$UTdvlIf61xz%w|uu!X7#%N1c%kQsT^&@yR95?HU^MyJ0q zN+$(iHa|8Q926>UD^DEoR-QNrt~_yITzTSPx$?vTbmfVI>dF%b+Lb2`zAH~0kXN2K zNRKBi8)?D678%Y+DTe!h3xbN&Iia2 zuMH_AJFZPTM%c6n$jCuJMh*fPIZI*FZsxN_w!^%qW+B3l7dy|^ef#@y`e>Gnc8&4V ztq5{btWQzJZN=%Xxcv*KrHEUf*{-;qjVp-TLqE`p8(HsS$6{I)w|gOOy?o+E4p*Xabh#P$)i<>(> zaKudzYLTs#6SuT0ZVI7RS)jPtWjFyoSWj)~viGomI817NhT9l1ltRD)EQV6J>ka{4 zJ|j-o%@Ql1R)7ye4Ex*kI8~rZ@8#eNAV+n>h<7+GMSAb1`eo^T0auXTOB%J(>yFhH zF)ctzdUew4js~MhuR^!fKUjJK91Y7crC+dC~zg{U%oCuU59 z44--hrKQMl3q4>NK8os{*u86R#1*7@ZiA5K>sqfxS5gM4U`%qY<{ZD06l;r>@?Z>E zzcMtXQO>JdQaHIywWNhUZhq|R*b9=crc06x+T@HXry;F_7%1VB#Zy4>M%HVV4rW5!(meP zM~+A(*4Yy6mR5Q1dvar9jP0s%3_n-|-be%}2k( zP;>1634)s306j-3lm|8U0&4u;F(EkV0H~=8fExMS2Q~7!4{GFdAJoX_KB$q;eNZEx z`=CZX_d$((?t>cn+y^!CxesdU@}MT|LXFP_;6lxCK#lOc`JpE5LQN7-bBlx;Kbe_3 z^JX>Jy+d(^Ozs#0;<^(?2zLSk1{vW_z+HEM%*gsUvX!Ok(}T=m2-K}p;?$vvPfb_@ zBJk;?sg#z2PiyD_<5P;7icO(wa0OH7d*2GeC$DE>Q5})$@~bEHs2OfBRmMDMtC4fjqqTU8sPycHNt~ZYJ>--)CdnwsSzHaQX@P_rABz5iX!r` zica}k3*%<1&-dYCm0&K=nMIb1RlR^!OC(lZ5^NSd5J{!)q_^TCmd}+kLby^8Fn9@9 z3hufCy#D?2ID+Tl1;a9%!xj3^{AQfmQ(^06tXdPWHI36!VCy()8iuX$d_`u}6Sx9w zEt?z!TV9t;3AVZiwtP+>1K8>f*djy{qq)xn!`6~Wu(gTaDg;|OU(tg=ARK5Fuh+8|iPlG){G@ zSas^rE>;1E5++~B4Z2W z6(E<$Gr24_xyTDOY3M+$7m7@;)$3BNt$_wu^JC+&`7Fo^Q(`rym=de8$COx&QKrOd zEHfomW1cCo8XHZC)gYb{tFhLUSdGc1#A@s|#J05hd|G6@QT=ac6Yi}5&z8G!LNJVw zDYwJt;UZJ+$QoKLGXbVxictQX8vyqUIy8$ZRN#DfkPDnQa9Rp*evaCM zfpZ#P5pcfBR|K3d;tIgI`d@;8)9*zSz?m)toODoJp8~*{E(n|x3j(K%)dHuC)dHuC z)dHuC)dHuC)dHuC)dHuC)dHuC)dHuC)dHuC)dJ_l0N_l!z!~7DbAfX>sG0ik)PNp1 zY26b8Cwc7%?Sx7Btw7+k#e(TVs0qhjm@x^*UR()woqILHxrc!9QaJZ;*ByBI)$wtJ zKT8BydLy)?oeJ#udE??ZwXH(!!hSB)9)Ag?r9kbI^njr@NsY>G!0+)DLG2Z|0@Qx% z%Rx}9a|mL)X(6bk^X_^VfLf~n)Y@yXl{MH%Riiavt43?kR*lxcts1StTQyn(xN5Wp zan)!IZfFeQY|7EF-W52Wz=T^C^~=gutcLgA9S^u_qFCKW9&bz)g4p0)OO) zhroKe%}xaV@*!{>?Wth|CS7U^U{ja+J7JfOWT$Wnd&2eUAOb&m?b_dFnb#L~3@r0z zX9gzMn@tPFpX#1F)1*{g4^L;|Vftpq>`bTkTxa*~@C9hwR%N5}9KJz|RRBZL#F-9d z)Wn%i^IP~=S3756uYA{Lr~%EC$&A~%UNi!uKb_`HYV`!IkOyb7);!x{QMD= zr*2PoY^ki9(%t@+iGFvO>Gu%!Q{t%k!MfT@%095v)pjpyv$!^|wKN}R{s&m~F6>T; zj=seHj=8S3pzN51hcO?Rtu82gKa-vhXS4X3uAA3d1|3*ZT8~_55bv=4gBrwHu&1e~ z!#fRi$a8on&qRf1jX}Ee(IS&VO^x6=Xq@izF34xC)0fq`V5d^`?piYxX(vr+U*(aD z+~yEeH`~$4v>Euqz0}?GH0U>Ys;j;K;dgEG_XUx$CQL8B7n(U+Ww0e=Gw6gXr$lYr z>dG0SwrzLi3{u47upz#PAxkld+QdMEcD$k+#9aG}t(f34cw=9=|_+Wd}d z)*tA4v01+*gQyfb%j`N(qV8yO%^srec*iw+5Sh@KeIc39VZj-RgONp|*qMogvl0h) zO&r`Uaj+$EaQDQ)JrW1^OdQ-Rad7X%!F?!rC+m`(tV?jcHo62i&QMRbvYy<^dU6Nr z$-NHm#5vUG^F|DG<-nOR(9GOP12dRAbs(1!ut5@A(xE=awhas>%+g?>;-ot7q5NJn zB#M3-`eoyA}R3i<4@|l$1!*y`4I(j>M zo$>6`TENu&?(EY)->LcBlW!qH%K)J*@L0_zBNX%WD2-wU&{NtJW5@0}B9TewWifXu zG=H3AFs3?5CLR`iDM{ub?C#?8SfJ23VLxq6TghJrx!zZi|JCQPu)1MTDKu9w$#8|BmC&Ptcp;WMw5ry~+g`iY; zA)0w1?#b`k{+3ufqP;DV)&7bOmeteBt0KSGKfUmJ;5;`AF62fA(y_4$_ z=+cxzNd0QF9nt~;8zveD-&RMz%_UKGsfrnfv9J>%A1*R0hd8n5BpEhXgyU2nxE2AL zK6XV|sXRDRweLss!Z`}?fwS4nocDkfNXn6)L8v;z4v7RMgPoqm?073mh8^uF8Fay^ zUgwhEB~&VfCAE$vMHh=l*^4xOor@?%mg~jes)P1pXV8=CpyNwiSDY*!guOslRI7vD zT9P=|1Xe1!ET6FY-Ei8x*nTV6dthHN9V-tL{aE#r?BG~!Oy5)i4;@ervohT>cXqc(pg1Z!9ggMbJl z9A@TDg$CiD?}eT?WfwVA*$`0cnqa*c?KjDjwSsP_xYKmS_kG6^F#9q za%nz6?mg!*88SXGfe&`5U*drFIR0V0eSV#W}Mbi0R$B)9#f+apA} z1KLlzJwv5B=WHfjONey4Gk5BFJwl|*t@ph|&Xn^BIv zP|u!MwgZY{yqtvA*jyIObZxD+3_8SsF)abWj`PMGM!JV2fF2!Dy!)04Toevdxj+G+Qi7s+1mCpP!)mVc1G+Fk%% zAUOOz5X-;xwwuvds4}bmYM4v@1ZItA+>9BJ`xuNSXI^A7%`V0>j3$r%Hl8oWGfXAl zI0iGNM}toG9SkNfE{4hDOc)bIFw7+X&`QDIhSi?H-*B22o=CMC^Qzgoc2I_lhy^wFktSrwAD2MNNH(+&$=cL zVT4V_l4+!4MkNVny)MwqDTg-bFk%Qzs>B_cB%WC?siMGH8Em$ca0(@^mmy)y0%3%u znu6$cfi__x(aQp2W;rGkv_uZcE{YK;lCb2N(d#_9c*)>ZL>AMR(LPxK3Q0v$g-PlW zvFPR&QBXp95kkl$LTH{LLTFY&A@~J^@I}I{*n+)A+se)CNI!!u+Z$X9Dom!0u006d z6x!*sh34>NW|*&AfumbyjLpTxk0$#rs2Sh{vYAth=`h~jGqL&dZpP4S*bMqT&CXtL zZc{po*_2)+X4oIPo&bKY!xRNJrPsNh0DiL<8Y~o&;P$3R3b3fPXI7+1Y4QkJl&+gH zE83uR;3?EdTSLY=KJTh};7PTt!IC28!DzeT8d1Gfv&wzeac8I;y&yI7-b$u9a%42wwCYn}1I|w{mkbGt({@Znrji3tFdQoKf+-{9^pIF7qTz8$S^eo-bJM%xcFHLT_qP9 zuA5Bh=an!@4_?eDU3L45#a#M0QF|ZErNPuO$*{C-ZyGGmsC%MSNu@Gl$b9z1G_0J} zbEERaMRbLE7@toj%&QRQ7r`p~2kD9Q#060Z*yCk<&FGw)$dICka!)q%j>;_+K|o5K zFIiv~PLuITSkcf_exmrP2nSMvsbGiHIGUg!rJ#um(pQ?$Abq8Y4$@be03m%P#0b_M zs2fuQTCfhtMT%wUNcj1XIH(k$M=TL<(Vy5?_TeN_-W@DDhPoqr_KXjH0hJjIv4? zMK{8cVq?3e*oe5WAQGeUG>noiEFkSyG)9fhbR`BTKBJh%H6d^qKygh7-p&v}z180^ zF$YMLh!Cc}zySSLKg0Ex!R$F)BndG4#ei5aI~oaQ*iIHHa6N^V=U|qdOHUDCM%%{X zgIQ`C7QS1IQZc-|!9^goePE^<12d6ZYG5W(m%xlpL^GQe49rA=sezeDFf}j}sfWQ# zq!0!(@l_bi#8+W36JLeFOnemvGx|ycGgSgJGONzOOw;5<7=w=lGumCn1TN_+2Qq;k z4Q7wGVDu)%vncJ)G_L)D!=R08fADsOpzWw)n6v|}vC#I##Pt(>3|C&pwFX>^3tU@~ z6N_uqMAAeu2G>@j**UHa&o+o_si~AYaV<0t{;J@brn*W6*Q84>`sv|XBjFn9so4S) z!zOxTYsU@Nrll|hXMzAB*U;}#^ zrtm;lG)c7N_9Z}irHA3Bkil*bE`$TvZRo|pZb&7@h|rrI!An_xp*I8E;Z%SHhfs&h z+Ov%)0SCR&=$44{0ASf{V>3SqV8O=bxPl#S$Vg3-#*YD5a15ZG;@#rO790SeMD9;d zt44APB@!x0YPvNh$%J!GUEq^)lEglKXqWVDQ*m_&+FOW!QuR^?ODU7oML{X2NP$pF zEmAC$VnhmuQjACuQHl{MC`vJ+#6{M~ve1Z6cYZ8%btF12!!;ovF#&QQ-iE7Nd`$Y6cdUjByA>-1Z!(TuufH_$idorD!|%$D!|&B4p@tvjexbtNe8U|1h5V-j&P13 zGBEHEEpmzmYmr(sSc@3ZU@c-qgSChe4b~z?G+0xNNU*lXfVEWv>nPQw2G;zd z6+N)d)4)3NqLm^YF?lRzVo79Vnii)4H2d4Q8gw#OgTi4joyTGNjHy9421gm*xJeBc zElhtkncRQ08E!op(x>2_Imq9oW<5y%To2O82uy_h?L_}^NMFOA;zByv>WD9Y8&RzC zW4P^>ztvL#>1sNVE^;;k=^`f`NZ-JW=0wWhA`>H!E;2C!=_03SNEfL^L%N6&4e26A zG^C3d(U2};L_<2oh=g=C2GUgx(xVi(8l?04X!IbRj>$6lJMumnx}+dRqq{UE36g6A z(ggM>eeh(iSAoMYp6gujc7{apz)`~}6}Tc63Fe>Rwx$4OK+(;(r-S5F=NwIQ2#SYmOGAjK`85^AgNV)3G1f-Pp<^xh} zy;*@2J4uc8W(ZPjT~5NgPFfI}L8IA>^@ zvEVbqU>dkuhbujuQad-M)Xr>OAl-KEz_o$vKQ-KTG9wxY+X7G|nVR(&(E+qn97be~ zW<+f$2cK}1qcoXz|Tb~h$*!ql!V(T#?YaB*o z)fiEnRSAs|@oS~xGon0=5k+1rb*By^8q3d{CfdgXRZTJ$gk_9$aZy{!n8=qh;4uEf zmoo5nhWJm$KEoIqn4-gfI{AEJTOUvDHQdfJuli|k#;Ydy^?23(_`E8@6e&%bzWcGp ztJbrplqOAdu~d9sWqcVV!Wt>rA5Gnqj=WokPgm4a$E(!zd6g)Iab6{IO~9)*u$u++ zCQTw^+q__XOftnY)PFfqLOhezBRu+Oe<=cW+Gpvfy4M0U#7v^ z8RB1~8V%!W;PzPl)hQlWn_u6n09kdA+t>0D$ZG~AsmJVH-2JJme zT2eZ=lbM`2dBVUd`?gEkd7gTchJ!BL2A=W6WQ)Dly!L2WD>rFaQ@7_f`!*A79Bzk6 z!`tjF!ldC|X3}u+y%y8kfv?{daa&UKqEy8Eip-(RMjvydqkhVipVRHU>Ve%Fk@kv| zkoY^VdJs(JOEI%LORjo&^=*x4uV7E@P>MM6JFj|(z9y#KRNHyg1Mb`jq32m5TnfrP z4Ocyc#E$-4l)#m3$;FP`(6=zq-!4&SKqwv9>rX1`oD=%CXWDt522tnoO~yqXalIA0 z>`Iuq$HiALb01;${W@Xxz4^kh+4rwWX5aIf+4n8N?EBrtFyP);q?vtpFthIi$n5*C zgxU9pB(v|Unc4RP{qTW9n0>#GnSK8?H~T(rGgBsrEkp6mzE7vNfZ_14{aN`Ut(45Z z(_LC*$(yv_hU}t{^3j5mr4-T7VOhE-%K{U0EXQPE?fkOYd|&*!;W=Oj*nB_n8lgs-HsAki z98>bG+!#rh@om1pi8ergOE%wi=rZvR2%^ihY`)XjvZhOy)>P?Ion$>6&VVJBWL)-JD1i{Yy261JKuVT&A+5w=K?2)q3T-}MMvlto*E zWo@SE1(@KWt*^2WZRWs2w6#+fLWE7J@paKwf5e(?iA4Y*<|hAw#IOUWE%fa zWz75d+DICYZ|yw?4VaY16R)jx(m12Hkc=-jUz{Nt*A|Gr_@>^ksxeFoUl>#GxBts< z-DEOvwKFpBznYP`Aye;pXjQ(uc?o-B%2CebVd*<;c{G;QCo%P|!9bd(-UZW2&(wSP zK5C0G%cB;}&S@$lfMg3@S|&fmrrzTLhh&>w6A`5HXo7`Wa3-p9Ij8XP#EI=i*^F9x)$pPwf z_7nk7lAU)QfJ&}pXosEmFi}`F$S`u8A`DPgV*n*`OAVkz>JmVmVmt5g0ZNoL3{avx zVSo}}g#k)@6$U8rRT!YeSCM_80aT}vcfCD-%_|I3@|ViUd-HO`^_P*%$Bn%IX=N;u zB{TBA94*h0?6Q~XDFVqPBkwv$mYP;2O=HMm>QUQ=WU4VF6S<{^WFmD5$xgA6_xMOA z${I#8QJyf8iLb&)CcX+InfNMvqriyJ5Qi@>qBuxXf_nWl&qm zExf<=Vl1d7v+&-CoH?j{4;^3#)KXI;b%I(uExdoBKuuFub((i)cjSd;l-Issn7qHN z=G})qZ@4LBqz;hny~h) z9p>Gmgo(+Pbj(YJC#oc*NY=%Z?OtI^PSZ%(p-3Ua@~Mk@QcjY)FMVSQi~YTNG)PSBejU3*SC>KZH+&n&#D0f#+&EcrJ1_g6AS99Xvmcrhk*+xu{Dto{REErRvIuKgQ}n|G$KQYl$t7?nCr zy6bKEIPpuv4JpI>Q{1HcieH7`y~dQLN%xnY)Ik25=-LR7k8ep=GU*;G%O^4E9<4=h zhe>x`sV{8Pyghmvk}M@_;70W7B&|}^kY#nFGQO0nj-=ngCf!qE5mH_C<^WQC^kxE5 zY`yt_6kBgrAjQ_38%VL^kCoVY0;0t+quXiEJ(rnoryE?)7JKf0{}01R+G)={w21w) zUl?vXnG5yj_S}ap(&Iu#?74pneaN*)zh_U97AZa#lI*$ba3NzW1nscru8%BM4gcHE zg{+z(660J*l)^X{61gVeLLFq!JvA;Q>Z;F$M1AzRkch3%g+y$9E+k^>b0HBs{#eoD zLY>Ck!`D{r58X?9mKk%u(qkAvJB_)gv6R2@QN!&lGpf6}G51Fw*JD&hjJa1orZKAH z>?tKiC0WJQVN}MKKGL*`s}DZvsbf@X`ix4H!Z@Q6xh7y#9c0WsHAW@ss?VrIee@ZX zh^^14L~MOVC1UF{DiJ&WSkYrtotE5TjXnCJMdDazwiiFuasHJwhL#W#R)#iGF3PM#&(DL$)sR-Cn? zPBZSLD|zCD;z7+zTw7o5kUa#O9yE-kAv5l?!)DxjxyC=K;=;a^jk)*c)<%;UbGKpl z@)p-!Y`^kd*sr`P(vo|hP$H>Va#up%o>i9IZ+-wgUM##nNH z4&BTxxnIPd+B3PzcO86N9sPFDR#~6TO@f+TyI?1OLOxuWjW5sFUx=a+!Yp)QT9)jZ zto#gSH`ksYUs`6Czfw>E=64B|D*9+g6u&U80u&N|yKO>8+%~T*M5!HfO%^wKYTFn# zf{J+v*-r}{X5ou&qOMxYYYW@J`-jfeA%b<{Z^7+LVQ(<2{xoPIm%@_GuX`5!| zd4_Jj$nTm$o}rsB^1G#*Cz)ZU+rZ|pAt%D_^6lSe29zyIRhLV`c9&cHGU3_dZHh{q?Y*y!<-N?($D@Rzi97&CB6=Ikws2n@pu@S}(-U#dBBX z(c<&*LDl=Y_~3mF~*?;b*)T&U&fP)!K^%95gAj}ZC|pqvfZfz0n2%JCc)@hmsId^1EGsG+xF zo8-wQuA3qEyt_oMaCg_{EVb-?i)-@`wd|M$RkO^CiY^%%T|P(G~;7y^GV!Vi;9k`yiagY-Nig!mMN+>H2pO?9>BmF>u6FDG#mi@7X_mud^u7N0SD zvlh)PrFMUL_jy1Yx^iy=?kP8!HnI!$HifPuUxQ63@^$33pBFd3>C&zNui)2!!=Y>J z;INxv*)`y&?F878S%wA2roK*(6@r*$9`0M3<+C&&X)*==?^d>(a!h$7LB=<@Jb5-7 z0FuFFJ%ZF-ql_R(Yq|t!O_w08+AvBcYKR@kiHqbKeWn4 z6C}kx)dVT(O#~^5M+7NCh#*`X z%ZPgoS3*|q-93Q;%3%ykhsQ5Ce0)RCz0hbFERvyTJwVZ2ONsy#I#!z&hgZ`D6jh_S zWPl=aNCqe(MFN!eTY8QID55yJfHLB4-XB`!q5*|spK3r6_15%cOdQZwa#*iwGtm?{ zyvhK@xZ&x|aRDW2wWEUHTMLIVe12~&-f(a2X~UL3{MayA#>18~2at_FGF%B6TNHjf z#8VidGPcAwFufFwmKUC*SE2!X4xFr5~*G*17LVT-0pPipXb zLmX_ut*3dU$t?qXVA`+;&VG|?3OQ!x9L;u_eZ`nzEt;&BeE|Cr6VTgSkUG0WEZvI>JZwq$cT6{W4L$ROI6>@%k#>`1w#BJxP7 zOUs6**s^s3z>u%Py@4XaMB2$qhg+I~nL{%9UwcxdMl91P&=z;6T>mXDVs^z1g)H%TzV4 zWmu;A;PlC0m)vO>Ujn2$(wX0#QQW`n4#V}3aq=#4LtuEfRH$7#E1QizRG|4rjl zTR04Dx%v-pXF??X#YDqU6Mex#SStSla+_aFFkF8bYG36SET|x?Xi+wqE%FIyc@DL& zu_q%?o0`V46KdOOjJzFCd)0Tp;!vw;HVxWF?-n0w8wqMjA;`8zFu0_*u$FK?w)BLw zp+Hm8hQc9jC^^uE!htq)Je%o1gPHzemw6}qg$5va`n05%jWY}}f$nGqeS!9i&TuZg z$#84Pfa~CwKfF7h18zDd(YK=n9C*j0XCh90Xd2fTlju6~?(XE9#<)JgxJ~ppQm8CAe7c_o`fKXq z$y{9whh%d&#BAW43EBKWsbQ!LkSa)@aePtP=clUSR*)IS`NNnp?tq|Q5{`|pF#KiEdrAAW$|Qd z48u6(mf}amWf)^IM@}+VAazArtb!}eCv&Aa9L6g0IIB1_O7r^BhCwnwZKuyFzJk2= zkx_;lQ06kr3mBIvF45yMso9ISqYF8gS;d~1K4||mwGBs;*zQ)G=wgSJB%{K5T*inR zp09wnW3iJ@4%Ab@Wz=-IjL6vtmk~MXaGBF+Fg^t?BdVjzWp-Z|!(~KO5^)(y^>lI> zQHW?RBdQb4WkifZ*#q9O0c$0kg_M2H?3V1= zTRiCC66U$V%)_Fsc%8Og<;SlwjEsRX@tDe2oI(HXO2cg_bD0k=U|i-qG>O;ibWfI~0wrl&y@`_) zTW|Uls)F%J6e6A(EcHCFOQ(Z75xCr>zgcwtr$1{~dUoV9QX$ z;2yXvE~9)prKWC7sj1nKv~-*Lvxs$;@yw4AS7(!lXhyW@yBw|Ly2E&I}va zQ%cNGvgxnK42`WV88_;mgc({jTy8%zw5D$>S(L&!GZeWdV1^xJ)IY^(+v16$y1LBp zrOV~nD+#y&6nrXKq= za?`;1=yJ|J7qO?5*r#N*S&w}hUo0yi zJ1@_03(K5Tg(*}_M7MrTkCW2KjH8u}Fe`np+LpB$<=~uj4Ej7`1u(u=HVG#+z8cuc zNoD1zz~e6sC%x>#PEN}1a)2;!S~zK(RY%R>btyA=O{Qr-(^-97z|3CL8e}uAK@xoE zZwj1AEHBvvlrOg>RmFap+2@FXhQU2_CBsZG(U5`h{`|rN*r!fzU_3YUZTEDIeTVWK z5K5;<3VFg1Iu6@S#g=g@-=Q4loG`g=#@kzF=IqFJjozsa+Ooto<)k`j9h|-DpiN7( zOCT1_WwxOgO=Gs9?|QWu=6CK|UfldTeSU3?*>%^edGMM7=E+`6^n#Gr5wbjwK0^q5 zG2vxDY)cPXeJ+6JiL@?cc>O=g*m;!Ab7%EorTU5tbPBDOPr@AT;9hm~cK$jQD~;rR z57`i(tlAIKIT6)<919U}wn85ZXHT|kGmaSUcI}4=>>aSW1{-WAU=SPD`VTNOL;F}e z=31!a2ZyNk6K2=`616OdPZ4h)_d|y8`!JKeeU!~p!P`c4(7q*9hHXkDUI;i; z2sl&-I87)7PB?zT3b7L@!vY+vV}}aCtRGQl=DN=b6#_=JwL-8^D%i=0LVSioP%69- zxbB1saSu$>x4R|U2DG;&vfAGg_iKenyCpJh{{%6^w*Bswf0!_W>;+pRjObr?GqY%*(} zf1>t)<@2x+{n*yG!2q|5lW^mF<#x|D3`>(Hg{%3uUtTGORVYr1r4O_eT1 z4$0_Jq)2qxepC8-bScV0bSd&9x)dQqmm-AdQiKp)iV&hp3c)X8IwYI+I)tseW)VTyWPc#l z!#xoUS523&)l>;vV>}i-J0x>jxHi1@E55pCbY5YT#(fD_IN78tF+wv38 zfJtdwSDV^N7cQZ^1fp??%_gRWtzwK(cZZes-+8LSO(w&icgzaM7>1itKgZZ=CR_9tY*V4AV zX|Ozto`P28t1a)bC$?{aGkKWJ4%>K-W%c?d-eX|En2GlohR+RsGp3fpF20C)HZf_6 z9x|MqY_?6rDCL%l2q2{{EsUIE6Yuea1F5WPoYiqXj{Rg!#su7)I0Y2CpD;c;gG$XdvbpXn0!1k{WKv|6el*lbLfD)-o0CkFO ztH%c@QPwa(iSmR2N_-UtDDhPopu|^UfD&JY0gArT0P0j4GbeRdq}oxPajFc;|xojtNfwSy~G+kiX+oTJOwypbxM(4{<8m_;L zWIk?N_tT&)#hcU zT^%G-+lOSTF(ebYrG{i8bqUE%u@&?9NG8e}Mlw;JFp`O{!bm2*3L}~LDvV^}t1yz$ zR~nL?O0(g;qV^&(VrE+($`Z`;XqSD|?m!r+qC;nJXm=ntSw)W69oVtBcKcDobR8gT z*wWGqHN_Vb)F-zZuDlFtE4lsJbB@P?S~7#-m!jD@sQo8$rTnE083q;)$POW;5%v2h=oml|cjD{q#Vs5!9W0Zy3L*ki(Z@)7%}T`g-_~Ve$@i zMUzBf+v&L%qGMsc?4aSMkdf}qLN*Z{a+o7sI+nT%(HR`^{>YxBlRlc>jBpR8iA{Us zi*&n_?@Zy7Q{#rZ;|O-#ymC7eNhRKZ-u#NPUt$#YJk#M0V`tdv~g8 zMB^5+<07?H!^`y6JUCKY(?M#Hvk{~gIq4wvX|#}?45>w3qLEsZHyWu$jA*15F`|)L z#E3>}5hEI@DMlnxTVs&=l$)e3(n0F8z_ew@V)WGk!-y21hKm-XznUEG=sv@(C*%2q zuQNP<@e@5fPt6$h%YF^dhoC1TP6kFw-jZ!l9XvOpOr^a`A$d2$RW?$!@5hM>I7e}q z0nTPKbKb+r1L%$%aq(O|6?m?ugXbb=BX}-y(!ul7Xp1@-o{PFfQ<=cS3syT7CWsKzo$xI&Cw{BlV#D>6DZz zOnH#>oO8SFAa;<}`>~ydQ7K@LMe|O!c-;=e4JpI>Qv(^iAN?Q%?=={UY1vyof^u+> zzZYE_0rK%Jdr0<{V`X`LbIUq=P}4QHoKT|YMs3@zQ76e#GM}5;K2^3o0H%u}drq`y zhPsT(_)@Mql70u9TTX>VNOjel14#AJn+Zs<_2vUoY`s~56kBg@AjQ_5A+TPGohKmL znXzyDV?8#rFeNs_^dCvtOvhL@?$`;&=kFLs(!kX^Ea~Z#+PRUwO4`m}6n6f~+lJdt z=0g4ZGcHuNO^*v1F?2i&eaN}cKK3N73dH9^lA&WAE@W(lz_^{`BwWa<;eUHp3pf|D zrf;ZGl)^X{61gVeLLFr1I5jRL>Z;F$M1AzRkch3%g+y$9E+k^>b0HC1p9@iJJuY;H z3=7|>!-c*$*7-V?`OIlB44?rr+#J1p(aGdtu_=K`;p|O@+gWB*clTzD>b1>!jLL{f z;q@p7XH?%o&!;$Dk_;j0Fe>9qAI9t;CSg?Ssbf@X`ix4H!Z@Q6xh7y#9b{2BHAW@s zs?VrIee@ZXh^^14L~MOVC1UF{DiK?sQBiC?Ms>nmdnm}%}hz(v@|7s6Tv};TAA-yM%8zX zVI&P%%AE~%6|!2}%QgNOKK8rj7w7(?cqrdnr{9!#3$dm*P2FsT%wpI?a7TQL0?S*%M5eF1s8?Nv|HlUVAE4 z({YtGK7mowpI?N4PtRkoFlV|2)=D2b4?*3ODobDH+f}K$0{6%Se$#`!c2TO{$Yf6$ zO4SJ(6nDW8@Q@-@Zf&3~>lwH(l>cXpGpDDyZhq^+UdPxe-_@Eq(?zi1`R(&uvvC}_ z$h8>;GV9s%{pPyW_rpjD`QM)*J$I3wGo|M&>A9=)+)aA6NYCA+=N{5?PwBar^xRu| z?t|x@^7b3d%4)wmWrEvC;|=;vr$x>I-^z(hV*PxgNgyLPo%X1H=) zFFGyukIc;ZG@ChfIn3Ds83UxS*R{W*m{~BMR!m3Pmw_;9UCTfi+g&eWj$dnr7nw19 z5muSmi-legvK=9Nt@If}*oy@(yU1R1-+y5Y9-M57JRr|}LMP;5OW72CM82u7re$%N zUE_V0=FgiAf7P<#50C~c*YPA&lm#Y8ACukV+e?63<2?sAuyK> z0jo9y%nt9wIjBp)yv%_vZ3tMkAz)@5&xXNTLR74sHXMQ-3{=anU!RH2S90y89vQezg7;+y=>oaxq7SJDE)$w&S62|d| z|BM;O88mli<9LHSj#V*^U0ddo!6lAm@=F)_B~yOMl3%*YFWux9i~Q1Ee(52<^pszE z$uGU-mp=5uMl~^A25cFjQO!)MX`@=zMs)^8bsh(|x8jcKXNM76*t4^ExGOgU16<_; zT;&5?C{6W;8U;B2KW+|mNdXi&`22IZU2ZF;9b7N z16-Sp=nwEN7~sSB04LL#dfZ!`@hn@Fz5)aLL=NuY#)vjC=M6J+a1FyVpVPGp%W(I= zd*Ix#+kX_cXsXrbI>->k%{$X);NxFTXFvqr)JJaXjI)4NA6}78mE9G8UN=90 zx1B!Odc}+BjN<@J5_E*BGm0`ze@~|>GD&`Rg+`JWvu2S<@=fw!B$@dVBgwhTbxD$D z3nXPNo@SLv@=qYij3|;MwJ{?=vqqBBVn|Z>2$B>&f+U5HAW7jPNK*I+k`z9IB!!P4 zN#P?%Quqjx6h49^g^wUf;Uh?LnnaS+4kX3x(B>u~k}Lp8W<-&sRU=87sf^0*Nl=ruET0th|uMN{kc>+sI zBIPdB#Eg`S@C5Gq_hq`ItWB6;l}9G!4IpK66e+7wr0m){a&CCREZ_+O$gY z(k54umo~+cytIjy-pOb?N=z)_Q#v?|%=wfKZ)bwcuX{e70UjWm zm%3#B1w^_Le@UkaWE%et>`{>Fea4WPEG>z~FQ)coG(Hhepz$|f(4}#0&bYXf#_MH- zGEU>#3^f%Rr}^qkPUAh|(|98WJ5$6k-6EsY7bDa%yKuleG^+&})2tQ_&1&J$td?jy z+ch3ybkOw-#ONB=GZ3#gxSoM{z5VpfcBed-&cF_k6-Zs${=$RZcmJ49gUFOV0V_qE z(jQ@INtAviwKk*lyV(=AHw@Z^C(!)+f8sPhzqt}aNt!sr(w8QshwXxi>9fihd=943 z6V9{fF#63qEx2(}mfShz)UCb^XMbXOzT_Xl_$B`c?l1XAhyap*gd8CGM+gIwe}qIJ z`A3Kal7ED3Ao)iK2$Fwz=-4@Auqsx=RPq(C!v8_csCOrK8l*AYezV{&zm|B z$|;BtABpKYi4c8ZMvtE`kmuUNqn4Xz(>h(hRe}u;EXowAHrw-a7g@s zL$C(tOo$&fze|TA12ogphp5Js+K_7?(`dufrkQ;C*>oC0hNf4rD$Sv(iKQh$(^J&S z44N9)6G7AUzh}^N-5=sXQ&@q(p@|G(#X!@a08P;vK2A8+IM6gX4m1h>C}AJYkl!4&kZ~I1H4y>H}|Q0+cTM zpLA$3K+UHQN?$=>-}l>e+EB)`0QS~!JUjotDJ==lULy~NXC~?@y7yzy&+r6MYsS;@ z@GMe`vUoBXf{MYj4ZyQ#^(e*(k zQZ^dhR1MuSfNoC2J-JV^VlF-mXU!{w2Q7WJzTm=M&!5vot;q6So-H4~sA=L=$ zci7mZZD&zue6^TG+pp7UJsIdsu%W?$?(+Ynv?QS0MIH?3&Y@0XK$k@=)h9l=iu)sg7ER;fZWJ4)bM?jQ9b)-au?re_I(UGV~eb>YU#!usD z>a+th-RIpi5I1N+WA|B<#*PHXzJn}SW4#%I=T6ew(U{|?IwL-+F2qMk=f}@B&{s)O zm1+0VMO971H;8Na;E;3)hctX}&V+RN!GENKAc1ei1>~nwYVF39TAS$s({1h3rVISb zFVbl;8FXJzG|>H!r6qyxFQ`8l=+?0(0^MsCk{^NYFgyWt3l_x#-Ds^K2VF9O6Em0A zK$otR?3w^{tqDPQVnWarp}L?eLUln`gzAE>2-O8$5vmKiB2*W2MW`<5icnq96`{JI zD?)WaSA^<sb5oE4&sVSI1FpK;u3FX0&8bKo(^yX$lRO0;Y z0H$4ACX!8#c*3z9tOL|?untno!8%Ya2kT(99IOM@a`ao% zXzxrS+~(@oWYEnwqqGOTqg1kkxJnid19DzQyqyUk|5H^u&=R;a9*}o(OP$lac6U0B zEaUg}ILgiOdk#xW!tZZT4>J6o%$`Wh-pZZ`zc=6s_`SM19)9cTa69q46Tg|JL*RED zjj>_;CjD^>pjlrC>;!F?3P`~^z@dlJ!4qx~0Cxmg=Jkc$4a>aQnN22j{@j@+fcej+ ztUZd|qBt`)FEgJx_Iz{5#o{Nt?fKx)%*9p@=4ORlOt;v3w~&inYV5sx$n6nwd#-K0 zZ|ws!=CGpOVV8$7Z}bGZ+lQU4AEA)i=%ZgF9?@ z*nVJ}Y@0Os`v=!7jQu;PTyzW(7SRGM+}rZ-b62tIK4vPvuWrw6_SHEs8Dp`-#05F8 znaOW=Hcp^fZ~|?Ag$Y(1*1pGWI8ZN;ePe?NzQcbn+<6ExW@`)jyp z>T^r;M%3p$%i8_y%q&hB?qt4iu&6`EqmXrb#@lz9d5cnnH<*VB9y>DWaYHsmMyu_$ z(1HyO%2iLq2`kSb_KOLv~?#UnLU-X2@LNgX$%KAmAN()_wD^Dj#$_g6 z+Nn}T!Q30!8&y?gr`1>Vmx_*R1KHM>5Za@^4xv|a7eWt+zG$(nL_3=NL(V~;*1C6f zaUV5T+>V;4!40a%xlQ$|LAZ^ox40YYJ}+zZuBzAB7;K*2$$JxpT_C|H2nIlqH^;Qh#?W^ z1)BhT0BQmLqeZ+A&yh!9t!m!SMqpD$AzF|IFru${BTPT~{V@V6Tizcij>-R9ETEmr z{@D0IY=680KSTZTm`)<)@JpdTEM+?VfvzWNMV$Hr4n@ITfcKcWxrM1z@V z06V-G7B-9Oot3S++Y|@T#Nlza+&5UQK3sl%VNKx{X*}2}M`WAIA5ep<)uMMQ&?N_+ zGglNe&0bd$G!<@ecvgej{f~||W8H{`tg{8dJ(_MV+)`NcoVol42MTp$+e{ZSSdWYv zR8Pe=)ibdX2zR>=J>{{Z;J)6k{hUPl-px1`0F+z5YAE%cdB$Lq(sLykp9zUBmyeul-(l9I4bmp5P_-S__DgP{&Cj$@69!vkX}_KJ_`H{iK@OE&J86}tC)ErBHE`=u{nH* zb`_6SO}7Y9F)Bv0A~>H8Mg90EvHACv^8c%r&}aQw{?*5kzs-GJmx^ytLZaTk#&@=r z-4V#^UA2nJNfs!m0n5K@Q?kbtD+MJcJaohVo3in9OCEmi7^W0VZcz#*HYx?q27FS( zOIU*vE=3Ey^dKwY%5a-pi@ch~A!?c_x?)n?!xWRwrT%WLmK7KRJ<*wefOlx9eQPjP zzr62KvpT#JkOeZ6z}!RkXoqK zXWo&x)w6kdYW(;0qiicY5p8`8N>C85CB1pQ0RTqSLS?nUu%r>=sapDvi*)WHTZg|dtHXRby9hjyLD*AE(iiG;NcdB_ea@?>8$?D;kma_ zshW!d-{8yqk;79v*7xmu3D!#rgQcD~rjK%uxc}Pnb4%TI8KuE`)xEB*w5YDa-!x&m zaxqwi0;rG`P{>`NUChtkmbo&rr?4mlkKy$x_eT z6-y}1l0uYVS5sH!)|M9StjJ}lt)s-QLt@|ukR~TNymK3!)xmOQ`e^qFe`MB!&K{f|%cipWt`X^!XMB?EZu$1c_3$v6p&(PTE{Sb3Xf~zh=<@|sB5wR4t z9$Y5_@3vRy7bS6cj+J`0`G-#B<#Bi)&TewE_Tu;-+365}e=^QL_ikdv48KF;Vdb_Q zOj* zF|TGZO%zk44J(e6fS2dx$+{h%I(-iZF(RFcz3rbw6Sl)^!7{c}BYCg1QCi?LeH`8^ zN7BdDhbtyEU4dLaT#OK3?#qu-`JQ?Rxls8&L*uF*aICCu_!^Ncp-8~&-p}(W#VpDX zwJ56)rIbb4LE)aG=$PO;^+*jxz#l6VrM&q*O4SWF zh*tBwP%S-;PS5_}R;uLRye0kZUgx=`!40KFwGL(UdJM&-$QjPl+*!z-O76_$&Yj#D z$DLyC4C787ce1%-;!X=SR>AT{?lf?RwO~$p{xFB9JUeecV8x)qm#a({wYn5+hKcg{gXBCtmpxYQz%9{4V} z88caLRyUqr#W!svboTcD0wwe1Udyulofgx{VrFeepxtxSy&*H$;P8%o3$Ne@B(L>e z%H!p*cz0{@auKf-c<9M`4&lMvXMaX@fIflCKDOYy#AfLat_8G8F6;SqB^R3ormLQS zZKVnI<=_qiy6p#q>T|(Er)7ho{Lr?t4YY)S=l<_96If5x59uA5&#$9+4$rh~hj++j ztiYeK0tbDpqB9my+peNUrzU!xfz?_Rn8Jg(`zu(10a+!UMqBW0Hn{$cgdLuv!QAZ# zMXblxB9^BHJQ;w44h@XJ4`vL{&&Q0RprjFxi}+*1Iw%@~xmTbWKqdFSaxqexjw#~N zJmt~tRz?G?XYSYVFFX)%M5iy&K%E*|V?mtgiheGx3L; z=o^dbu5DwK=xHc>3Iy6vxS?=MFt-;~ifX%_jlSB#nif@A)_d>I9VVsfrx^6;vS4l- zzCtYnli{KDib_a{k`I_}tMB$L)>%lxq@r2Mzu7dLb($yO|NiaB0H0D1#eP|lt$lX| zz6*UbCgWPuN;UvIC6E^I-&0bfWS39_F2z`@MB%itX2&zeXa?Fem>bk8^G%e5kF^O1 z59VG4H3z=B_%Nu?2YJ#{i{YkNOO_%{L5Az){F``Nvtp>-RR$Kb6Ll2pZ!V6f>TOvZu` zBvi%zx(FqG+Q6s1$D zX0w-RD+3epz&gg)`$;J7F++SF&Z>ckhk(pd>{1x{Z2?sq-~P) z3vuMDKUY#b@5BZwQD2mNn<$mPbR*iN@1G4dKquX66irtxT1gI7S+>$1}f&`hfCkJyE0YtCQRer$JrW(Z{%ed_Duum!&-lyyY`Tjk7nq7>iyB|mTa+qhFV<(zM@{{xX$`Assb{ltvFUnm z|8CBL&9ig08hc)I(tL@L86@*u>>wb z=9Ld9mnzje!NwW-_kkBRK@j38bot&x;X^7 zzTW@IzwC>ERb%MO7BI>L^cfmdd6@kaQ<3GulE%7)DVzVYA-2H3f*(;-o-|3~c z&W25%&ainS@N*Ws62F9iuuM-6Sj8x4P!?3vvl$e#uIYEwyA>|!?(ysR6S-HPrC zz&>@86T|=X+1@L0$nh_jamP2dTLA2@*ZacfMpwNGheRnL6nTx zqQh*4!X5c-tJ+ZBlMt;O9Y1dJ8chpd4)rDXQGME)2y@Yp#VM0T3CbL~F4E{PgkL!A z-j6@P2w^*%RWG2J{+vm~m>4`r^SOxij`+j+t#z>(*1(SqYbc!c*H55s-exNAj+WWx zfA(e*V=Gv3NuzyH3)a4$1|j*K{`TFwHnzH(;U~54H}7Zd`yd?NzRLhBX}52=PKI~F zFZK2v_1$)~@5wo#_We1GvvolGR@cS0?=1L9?fcq&tbNZ%$$0yYhs2q7`}Wt#&;-BK z+jsXk-S&+XwT2Uh4!!JP&4SiYnrZ8Bb)jr*3>l%OT6RJzPF)$SC@Eap?yDan%^n$nw{nr-oCZT z+P4?l7t6Kb_H}s6vK<92rA0N$qYo1|MH@qNBHH&GXx|aEj)RXJMXj?h;qANM>1p*J ze4g63&EY9S`_`d-Kd#u=R1n)@&`)DLQH;B9q^am9lxfonMow%=UrZ8W<07K}N{WRj zfjgpFe4@5n0lGzuY}TOAeVA46Z5TA$P^tUAu6l36MB+UXtwy7~su?>D?#M>oY=jSE zY!&)x(mKl{;wbhpsGj#J+6pHX`he=a1LHyJUD7Xyc1y(1A9GES|C+zZ`Mc{<$-GF) z{3W*3$*CCZok?O)K2`KoR%DHz>!8J_DeJPX#}n3=oGsq08az%@z5NF<#iTcLwdz|+ zN*QHE<+*SmE8)A=@@w3!85Kjg;vUmbBw60SMGbbxnkF_+_`iOe$;1PJ2v~eA+|tyS z76^V?OoTFk2~eJ{tT!n*X8x$H&kh5_Z8eqmqXs|MhxaPAp4MccA;6-~U-3Z8UC_B_+m@Q4SSeAKUZ1U0cSm-ZpsAjBRd3c{ zoFFP%66@EGm`7x&Sf^2{{s})UyFiS^p#2VEry`oK#{bwYCeuG zyTy_HKfa?HDureOm+ODt{-grw%Jp1B5)9| z!Q6q<0hm|g$!|pntriZT_}-Gnb;UX6KzF=gzNaTI-x*)*+xdU7rQ85NHkw3B#EeH` zieY)2(r@riJmH@)mYTVwQMB!P|KRV1hNeg?YJ9T&Tr&xLW@;08+CPKw<;%LYoaO^1 zD-lpb1Izy{=-;qV`wfKs<$iQIO*VbBM+fU8*e=1RLw*a$0exHnonPHd>tsw4b2hpuaz= zA<=;{i>jY2Kg|F1F(_ce`tWMf$5Q929$zD=mFuhhaOe+@EqG*F!20UekS{d9@CoS# zs~dQfZJ|J@=RUp*W5_%594Mk}|3tb$2qN1{=eL>>tL)oNInx&^?g5}M&Fd1D9@cNx zBMpad?sHC0UDNflJW^V)O)dDKw5SD2St^!yIc4W4I{XhxUR6eYfYl-@9vqg4_f;xZ zsb@#w1}OdPOwAX37rkLE^?=VcV+kaf`%{$DQ)~D5OFbtYo+G@hSOcj36nWS@HBeC~ z)#E9L+|l^d-THu1eLl+VG=JnQI^t3Fz=&IffdB zwJvH)RlplHFy5%VflDd6m$w5L`GQ|jWqrQq5Jq~+&o`15yP95=Y~Mi$(@g&O%+B~ds`dG@En$bV!6{y}Y-JV}Z-A{xdxOFgh3i=9)syx-b9$>}NR6W;Q z)Riaz{Z*C5^L`h{`mLgDM;A08Z>i z3GGDj1VCvu{+idRS)u06F0nu{{WM?&xbMuyGy3VqbCn#l3tOUM?NYQ}Rc->!_u*|z z3f~y=i&(#=l19>Bo}j10tz7wN$8VMu&gKf!OKzb%M$jFfw$adT>_Iqz@V^f%D@xKo$#!h zn`v=O+>G>S%lDX<+B0|<0SQ04l_=CBVp|kL; z0Xp;v=H7;2D8;JRBVC(ko3m)GQcV+tVD5DYVHiL-<}`oCaxE=di$z~-^6(2FxDg)* zZl@CI0s#ragGW;tmNQ}%2tZ{F6e6Cps9ss{2!IBpzZBGsV)~D5psrp{ud4S|B7Fcs z4LJoIfd%QSUe-YsSJQwzvTc^5X;v`TO*O1nYxjY|H-W+hiQTA@R6>81p@?XkNZ`0` zIR_5xF#LvMWw|Li*nH%>;H4;71JU>JiA1?sJthX;4S}^^s700rR|s zylB~>ccwqw_+oSksfqn7;4MTV0e;EWW2DZGWeQVtlU$g%{91?WbYj1B(qnyw`tzO) zw+Fqm_IUO0(d|J)!T-PTj%^Q;eE9zSVQey~$#d>wUCJ%cJ6E@1uzR!aoyn$Dy|gJ+ zt?FKxM|4n8s`}WIEN|9#!$83B7;`R(?N_p;20VLj$!5zt-d><7dxk}=XKUOTf9~r{ z|pNLTYvzeef+`PZ_^uAJAyS#{;wZnp^~We zW3uT1?z!yU)6JW;d`3jMdqGP%|4#bI-P&dL*Hxc~z0?y%0YB6hnm|GlR$D@|wD~u1 zDRCG{iE-q~Vg9ZV?j;d&oy~#@nyKzRnOL0_cn?yxkTUuFdF4XPN&PiH$K*J?GYcZ5 z1>PiIVyfkN)AM8|UV-|mZ*mPJNxVR9gM9*(|8<$^6%($cJyMUNXP2Y*dLQ};t?CY- z)$X7~-4YT1{v@z^%>GN;^_=AD+k- z`6olP8)-(6;=U2B1dv^i-83rk{wib*2xISnq9fas`BkhPt0_N#jh}s)wPP21qdhrT zd+v%pcKBFW(+$Dgb5LCEOD!JHA?x=%9_`*iwk$D^ZyUV<-FRZTs4^1cMcD7(T?3{t z7QDdWUCyFm4-I`tTUEXeZ>KM_kLu0+-DroY>1)`Su;F@TMXw&VhJfvGty!tM2%lg+ z<}6yLR2@N09G;pI<)3P>qU0E@%%~pA=X71PU zcWyyDx6)ho_V9#udhU5WM@k zlJ4)@YIk?FRqncuidNEnvzDE*;K%4kn;Y9Ks_vkt`9~{JyxFr#Jg?cXPXa}{c;5LX z5M-~yE1H7MTOk5^E^>H&W`R(f z4Gu#Cl}!aFuYo#DEn5GxEC^do?_-oHPht=LdS!8K-sVc2E~&@X{I36+R|A29He1m& zgY{GIBCeP}03NW42Ascj6cIU?#n2z42R*AXwlT&EH~43K2eiZ%M55*2(CoEX^>NA9 z{VFAHDnHK_(&6}6p5767O0>8rP-m^J`AeAxewxg@r_{Pz#p zu9udOz*1AHjH*$+g_s&)j5rkgW(U~SaJI7#4_1{;NTEg}S}I0)Q0x7LTcFQmRP-Dc z#71_(xT=6yyq|58!hVOF2b-`q$^6TQR@cnIV%Wr1rplNDoS{uma}dw7TCLp;5#+TD zO%Fw((16k3x{^$yriExxw!P>t@bft{ntr*~32+^NAn zAjj!hR~lS*gYO|zhVttg^%cS*{LNE~HYvZVwbYjProC%W9Ut>wc@05Lu>70s0MuLl zvgdaP|3OendnQq=qy9_a1Az>J00s*VVXR~GU|U+0fq@mRwj zEqGkcAA8{O&-}3$9{-0w_QB&X@d#ZpPF~eyDn|>^<{k%V^e3QiLr|kUJw=%-F0_z zk&u>Z1JD1NlY-<&2dtv$i#Cx<>*;r5OtN%oQ;J`t?f*e2wY+c+g0o5EOQ@Q-?!SBp zps_DNa_B!Np?&R&{T(d7m@9^YN(#4^6mBPa!33x9a3Fy27~hh@ErA9EC@V&pM+{X; zS`a&eVTp1i{V>#KdZy4WpspuQ=ZNSYF>oQ`fou`&r(JTB#(+`nR z=7^!Te^6FY zcB{xjXj2YiJ-ZTL8>kO1mGh z%|A8?sVUVb@L`GP7}!N0U^*1LR(y+(-T~*ZAkGnc_jl~d%kLnsajL zh>a||D381e04+@#JSu8F>1DJ$1noZBnth_w};5gPBUz-;ow7u(h;y z_b_Mo*O2Y&sDf2lLA!SH9NpJDx;K=*f+(hmH;$g<0AHw{hbUBiRDGi?PR|;? z{8Z{*)2dW$#s?0}wT^s<9xgmw`OxK-Nuh0}z6-8agKOw~k^6XS#oj;$Qs50#%L-_| zMyY-oPs)l6+IRS2s8#LO5X z$djwF2xe2BTw||#zvAX~X6UwoWzz9Z-Zv#^65tQEB4Oq5MEQja(dNBSyrVGY{5O5I1h z%^rLRp|0I0m4AGbFSB1M zl6AKpuGoh!N7uz zs+LG)O3O%!rMUkKZ}rtL(GFbvG35z+@J)Wn;q#F{U*UoHj(y8eH)2ZgUAy;H3UL-4 zsrV@tTyOa&O(+&ZXdCt~y z^)(r4(N?AEE_|xI+>@sj5~Du^Vs5Z8$%F)B42{`u%&+AoqlM}DN2zo+41bJGqE1uO z^J?(Tz-SCRI?NQfhCiGP6ygC5^9&!4y{6J>G-_hf`yTNB@(K(hU+>>ep*c&|KjEyp z35of84X3f1wU+$pc*z0(1reh%wB9=Z)2H!ucqO9bTx5fzF*W5ySbYJA;@EmH_Z#SH z%>0mAvARtOm)I=16iV_Ht2{SMQGZ0V| zEeL9*)>_462BaDon2csJ9ko__+q+e{`-$~##aa=mNCKJwQVjS7VkMx}GY)D%g#gOD zzqQYqj|A+~=e^!PUM|g?v(Nrqd+oK?T6?XvQ9s*YZr8dvf(dnylPcs${lnwJp0}tu z5P>tajTwaPh4sa{v*I1C;WTMCnlptym@Xr;+OhuD#Xw?<{u>ZTThkjHI(r^M%9?^) zVakKm6l(0%Ix*WC+bI=B3;!E10?jx1S?8yH{b{&MC}ckMDq+i{l3Alv^3~)sk0!eG z&&z4V(B^a6mNS%ZiaJqkFD1GcUZj4U?S}u_=hQ*IWoAAEBIRSb*68vVmnOxzllaZF z5rKJ<;oXeB8C8mCsggzlLXgGY&(Kb3*EMsn(8;WKt^*Iyc8r1g0B&q%W=W`oa-qO% zi%gTfL@;w)o=3CeJ}FMP z?M$+%mp2vi+=xaCC+BA0-JZyz5_{k(i+_$QGOg4VDIz=o%q=r8T>!2*kdv{fmxF9M z@SJM{UKfC$;0R|xlI$!Y$v0djQ9-^dGE;nME2I+(0M44>Pabucy-D~ zCOt!4Jlp1pEH3dxmN5rjc1LA<@y?sq2o;)HUn8rT%@Y5)WYa=Vi*rh3(m+?j5_^K@9{!z%5amj0Jd*tkzM8hfRrqW! zrG?#&;)>Ee$ALsq|7$ zWFmc-3I-k1cZ0Sp9rXeClXhuK!bI3c2`pkyFU#ulvA6MrP@*Xu&LLOe}TM zVG=sSoAj-}+MhrJiRnOc=dn54L5a1jszY;yfQhj|&hr~6Y#0%UT>(SMu?$m59j*w9 z!E0sBwUQqk*{m01G!uUyZJ%KRnT3G~0g)wKFat(+nlrm2J=H7dkdQGYB%5rZkTUg8 z=oz&j80$al2Sv(we-0gO#`|+(f}^c2d}OxA;y=$7$$5?k!}P{K3j4t|IZGrVnsc}O z(44p&7k-}?z3prvj5&c+0pAd_|A%4E6VyADYdi4*SsI9rC$Qn2{ zM>Lk`5Xj)j-HP^qCr$YJRPtru!&h^OC@y&MBTdxB|p!=|=m z$F~!1q=dI}Pt=X3ehWl;3yyf0pR{DfpZo5Qx$#F|QjAhm`Dw@Rr-^UAhd{yB!a&;f zXUk3!D3B-8v4zatCA>rby&{~~v4^*74}3~-Pvi`Dv>?kJ-sCQO)1S`>repNk9QUaw zuHZAD6cE3NSBnBQrQgxk3>De-bP;X)W#s!LKG=O^ zkH@+Td6G^nzSnI<56j*LkFdj4w$WFKvMS4W_Ub%-tq6w|BmEjKJmfY z8Y}&CTQ47J4;&n6&ut-;$>n+RtkwDG^gQ9-jTiugr?Kj<9mvdx;Uj9~XyK6?WLb*Y zzJ6b+;zItBPPv_wG=_GwCtZGEGaXFr*^vr~Ng{KN{OV&zo>2}%wL!Dli!_^i80HG% zFSimb9ZN5ljNy+RcDbHD`E8BtE~R`dB~y`e5Iap7WM>03a7^Q@YDZ&zm7~#VM_t4I zw@z9W8@XGV>B?SpW1&V@!eKxkssokU9A6>Y0#C(u|H0S;WEFWov{cHV$xCeazm0WN z{4T@3lv3U12Zpym6Y>6hk?x0?^~CUz8?}Xc{Db1>bjz>IDfr;)i%f6zpBb1i(m%js z-J(2$z7^iY`i3|~{TIhZ=15tyjA0GmDrJGbTA5?l9(m2#kU$;LOo*H@Zk7R6x>*K{ z*Qz}*j=b8M_w2cEJ9A%!rj>foBf!ISdZO7VK$^37?s7#v`9RW(_bBvK_e7EB8$R!q5jx;>bo=YG8g)|_2@SkJ0UyF%=YTN%$B-nyc zht;e#Oc6SP0$mB!g8Z__r4F=NO5eXu*mv0}FFjAKq~}Q>yQGvDDc6&t`e!ERk(^p! zhQ6alcBGo59Usn(#^!s;r*I`}*ejI^epVL?sF^l9k!`2n(jT(A6+A@@v?ul}!g@J) z0zusgLEY%FGOaDS@e%`0gHHOC70)pV=RtSb7H!3EWiqT7A#ct;E(q?bv@Y(4Y7I*g zGx`WHO?B44uuujE#H-}6S>%k9A>QLt8sdlCWm~lsE0HG*h06D&r(WvUf-n3cRfpfV$5KGw*SGyIjK z@r8#aEut#mfM+O`s9u$ty;25?aPy8vwGlbOuR9u}LeT8te>6s4lEShsqK^f5)StOj zy{|+Rx9LyHOT-D84wXpvY|dSXUOJ*zmsa+ejFK5tV>kLpUfA)d94w${Ehqm<@~i;X;1QC8HPP z4=)Ndp%*<#{LvXHax-nHqVb=o6b$Tl>6N5p5}-`|wPD5Y&{k*pFGU=<+mn(Xh^hxT ztF2(O!KbqfXXG}*G>75$ly(~&Fp_l&u7(#orQsifStml5><^$a2B6Saf~UX_&|zpZ%Gxe14jCTsZJl9gycyG4;^Fy+;IyVRQTN`I3^lPY>-3&fNOZJ1bp%4GzMSe4 zV^Y=sV?4RUmVAWKL$*w-zKr_g*HQ-cPqNJG=`z1emO0XaP=T2itTAwD;K0F6} z9HY4Ppy}9^miL(Jp;MSKHWxHjEGv(OwhGfGggcmbd!juRWHMcShWx5OS0M82wIcph z2{KfHayf6gJr?_k&2Trpl1AIbpVz37ci7h=5nJ@5Zvq`Te?~QcRc4>(d)ZfK#l4IS zWd-;mM^=MH$L1drs3`ZJ@qDkUHCbeV=)*3bx4dG3|BgF+?&qyAQ9>pe!cJd5L%7j@ z9obJ*pH3xOpEa4z_=@eTdsSxF^=t0vWyf07n#I`O)E#iO5>WscKc7{##>!ff`d{iU zJ!j|>g9paQAj?t9nJxm`IT;$4wUEeSJM^4C3%1Py;La{}{HmZ zDp7>43D@ZQ&bqVZaBP?UqkqAM_Js#beqciU7sjuF6(5H!n1|1#_#8}$GX5O4*;Ph` z2*YrVxUad|g!Z5tQ%tlu$RZ9%Z3@u0(lh>(V)?{cw1OW}NafKy4_#+VqlKc_&Z{@s#X%av{ z?DDZbs8(i#1ofI(;!13d*SI3Zznm;sxzkr2$=S(c$_L6D$!_M{wBq5}j1yz4NX}h+ zmNSxpcz2Ggwz0_WnGUMKovNck;RZaB3J*f0Cvp=C)E`P?kbo})AvKhWhT_Y)(G`w1 z13edx7yKlO4_~5AMzX^#@hOoUkMyFO1|`xceL%I~M;WO4!)l66^2o~VB5=tAYS=D( z7>Ql8gLMBVu5doB*wlymRUocBg^x1DKl6>?Y5gkcKwD_F%%Xg23$2w${<)$dvv=*1 zCp!KD))6Ikske}-6RSD(Hu{;D<=YE7Z?a3N#Ipvd0#C^9gZY-x^m>VD1juHp)ftuM zJ<*V~pua2XQ;CNlM}jF^d#rK{2dwBoDXAh1M@!VBvbHZ(k3vxJK#!;|%KX^K5;8t# znjd#Q(9@VzD%N+C?2b5H?48E2qiWd6@ftA1L5IHe7$_!bGK!ufTnJK_LnF*hqCGhx zBaDL@)n=yN=%<}^Z1&aOheutc&@_OcZ1Kp! zdDDjjU@R6qoL>LwAd{sjowPZ<-R90lx1^iO9{FOL&FBUlQ&TuV^~N-RNQtxmXZvh5 z{vN}Y_M}q7{yEgMJ()HA4_wxDZ<{N+6f~NP$I0lU7hQzS7l$n8^`ZCi0p0XD ztF4_duoHa0YIPnV6cx*tdhow|&;AnoM8XK5=-X{iycK_oJu4GmGwj)_^tX!C@!vN3 znsb}oV_7;flJh9P%tX>xxc|o0*1)=jv>*Y8qAPBbwi1>`SMKVpO~f@)j4dvKl5C3f z8Jqp;UV$ZpEdJq;!IxvO1aT>jMw zgnkugvrOblm`TI3XKp)e8hm1X2TQV(Xn<^dNa(pO93c~YD>`d!@EnVrV8f$5JxQ@q z?Yao0alcYDaBw1?@6r0TVv)J`ODc#=&uyBF`V%?^0~nnl=N^A?n?-*og9Cwt)0|-w zOVbm;n|NL{O@QhWc$j7eZOj9Eu(;*stGRF151uJ=kJB7=oQgU9Qy`;qi6=?rK*m%H z_uynz=0N=k3zes`APDF`VylWDIHiywwq)Xp`nta6V+M-8(qQg2TQ62fGYAVb>vu(R zel_7FJWnsd5wiAxEJ6cfKf$8iDpuJ<8|o2wgSwf3Dk&bwcXsFty5*SBEk|TB8zQkBRM~ne9~aM2(?6G{bsv z1P$igm zm<8%PJHD%sEm3J`s$n#6JKQ2QM6=D4L+pkaC}skT9brRgiT=}N#?GLO2OzVC z{9L8v6%btoDifM<`FLo?g~YbxH^p&^*L`5EK`{s%5HKl5YgH})7vmHd{%G;;$!cu6 z{_wBSh#3KYQs*;Cv^S0gZ?7UAF;WiJzxcSoC}C_bxDnx`h}Bl$iA=W1a(rj0(d(4i zS!#nY`d@B{B1rI&pCA{Dpm!+o?gH&DXXgUVm-BF zs9Zl0o~6sV!gE&r7Wz=hImO46iRAoaoX0YrGw})91Fw=0g;j=Aevwq-g_7WC^4GY6 zs%=j*K-R`n&si+;n5~7r`YXz?W&hi)uP5cdWOXY4qddl*dgi43 zVtBL4p*)xO8$9$nC^HnxwoTOp;Q{-&s=)uNb*z%O9zx{ytQfh)KapAh6Y@a9}B37|I+d!f#9=3yK%xzIReoS&Ne z1A{I#;vA++z!s4=4LbE?GDc(62GE9|5dTcD!^v)R z=DY%Nu*9b&M{5u7u(!lAK(htVc(ciz)9CE|N)j~t0L_*ZX!z{SAxrN@XP;Np3YGJE zxZZgZs0bhQ#pjuUf&f^yERA2>GJ^A{FU?>@#-d;)W5ZP7U8=Z&$ zt{{OqV0R?pjK}$PqxW#5^T^)?5T3|Y-pJxyZ{!CyZ^g%G1aLFk?k?Nz?xndah|jT? z_Y(l+D-Qbfv7S{sKwK8{f`|Wa*Si`0GFtqrQcRa`{7X;zo%+5==^asj+|gG!2^?nDmnN*@}7tkhE;EiZh2R@oB}a&7F{d)bD^aXcWzQoa0v6jXX;Gz zz#7rzC*doH67UcrAwY}&$VAFsR3ce2M<@F)N?HPU<-|@a6q`6#aET(}m^Q@b({7LK z+Y;_vzs=PqR0XT``|SmlSw8C~&an${7wI#k`(YhTiL@kgbh_KIqqX}JscL2atx9fp z2DBp9r1sD!@=TR5J1Synhk2_T2>G8!E{)JyHw_(Jxl|gfH@YWqsOMh z>^e@aMlUB#fi(lDihi(_VE}n}qZK_%Bxm;}u-Gc3n12W$BM6v}=*wz77(YPnAA?1I zv|az_F}8^CL5vUIZnayj@i)@^BFH2_H|{MgK5U$|!5oU4m>!ZvFFUZXY`aJ~)!CKI z{3+p0NnncPDm6e|*w>*lrwWqHT_nO33H&a-+Za9bbJF_%Kg08@g(t&K`X~63A<%+a zDSVGLQ^pmnKtyUqbTUwAoe;TBt)(cjHQat4&l_;n4@^2T!o*zo%h*~}dQ!LiQ(T@K z_SQZSj@q5*Fp^V$dz{~l0nw8Z-U5fV?9VHKtvvkxVe{dMfcY?Mp`?4~%U@^B0&Q7+ z6@UEY$|gqcmhe<;)q*R?&4m*fZuIs>lsb`uy1*%?9x$P_;uJKC$5;^^U@s8A(goU`{6D|>khZYdvOrsi z9(YYl&%`bV!WHH`s5b!}u1Eqm{%13pIKf5KqaZhwA#nU?85(AR&lHYLznrMum0kJe zWbLl+SK8#~n#vOSaa5M09cleiyQ`r0mk#Z&J9^vXXHM@D`SJ9YuWu~S_G|`)-)(Vn z4*NqO$BXY{`SZmBr?%$+f8Kp(El0^nRBrOO$N3PnpTzK!u=a)(TMC`-SFxeXtr*Jl1&IDuo>W0puej{cp@ zh3CqHr)q_e7GM|JZK3H31f!_T070x%CY?x<)1w7LLDaf2U?8eQg`I+pwBlXuiT)tr zjb1cHnbf+<5G%ZFOa)gNK_pkXtS92b7)k86ROYtgVRtmSR>E&6>~G=&*6FOrh_}S8 z{dP;;E`v|;hEF8v4P*);)KYf=4_CrmYQYVZf>;eEN~Tr(TN5o4$Icmz;$^#UXZ(rj z(f*a3^sl1IQnj8jjrCoku4fU|sJmjP7TjjkfH^k=di%t&1vYPVX2SQDr&s-Ibrptv zjWzZegj5T)@K+pj^M_jja!htU*6R?f_-{KKwk(-1QACJHf*G>UY7Ksj1b4Kf_Db@2 ztXVA|<1LI(mv@k;CY`kxlRC%Ri|l>yI6uwavQI@eapt}5%zM)r-W@+(g)qrGVVpXS(5TX_E(w)naIIg1dlqv+o=_U3aFU4D|yLPC{3R z-UmStw_^Raqa!T-Ps!oyOTV+N4b4lkDmxtEPOa2mu9afBjb(QYf4uYgGixD#)GoxY z+LriL`xIvtvVV0u4n;+=l%wyvSx{9g&;YB*G=_-bkNy2N4{QT$&xJW zR!3anB@)IMHFHv3*xlYX<0fd_dT+M5B7;4V+FW-Vwp0*NY|z<;xZckZ9)6FCva!_W z3`4O)A8DZ=K;V96t)U2TXlwei+w8-5{hl1+5X67z2zLZKhH7iBwi2wz9{6VOBC%$= zB}-!V1V3VlycIawsjc`am1t|G_QK^jJJ`{urGr)SQE%3eBX3_GVB2P2j`2BH!4Hft z7PsV zSM#SE3jej*Da>77ACB^;?qTc$s^zVTMGopX$K&P)_* zeMM^MaRvCHeDgjWCF?2ur<_U6u*q@z#o;t7tcG~XgGM>Ph!m--JCO757TT0L5j6Za z(N8fLb*2{E-N-s?`LrZF>l>8A9dZzR_<0dW>YJf#_X>2Ci<6<+h}nJ8 zFYWwtr8RBV>rv3cNp;A;Z(<|U4Im@uZu-8+xp9xQL>-Px=~N_}>I%cq7Oaz?L2}@N zB!kAEUupaVR`fh>PPg=Rf3v02X-Ou;JQs{ifr;fpkw{eu9G*edoYT(dc<+4L)>lGS-~$WvAAAgb`5M|luIGzYu589^ zTnjN4*^)yd(RhSg6UC>iHP{&wcN(F;J&%JhSq;{=8<&!_>xEy49kgg-#A-05uSrI) zE zmag7}Bxolk-y6ODIKEl(PE6GIv`_%pt;WG>r*F8M&`|z5wo;qeBl>?JuDK$>>yLSq zF#2e7d=?y7&f@9LF`NA^j8K_?VJv0$E!hE&wK>s|Dmy|EA&L`uTWYvk)!^^X5pjuU z+@umeM>P=R$n=5n|51CUIx9wz@Tqw{gPY|6ouHlpRS(8NV6lN7RqC3DO-0dBxjQRo9>djPedr zxJZnfiJV>(-(o(O8;!%KROQJ65Qc?ALlCie6qSpdwaD{WO$gdZc>l~1rS(lpYpD(;mEPS1 z%MVna#J}e>r@Dv zvKK&FQpX=%`f1Igap<)AujR@=am}i?@aM+pNB7 zul0bZ;*(mh$NHhC>=Xa$IPg8`-jmpE*Gl^gj!QwLjsdC;Uv?_$e)nrqn1lng#z}^9 z9P85m@OhGrHO^Q2pq}XH72Io6+G5f;NQ_pdvp`eQ{exI zgVc+FENH%JnZrpOogMaQj#lTGLsi;;VSDj`?~GO}#Xq?-H+yP6Ki`p47+nlYf;rt)R^&4`XEV1bLzmCLbi5+$j8X9&Q!lORR z9?)7n#%lkomBtr0(c>)Njfhq|39p1EhzXMKS>jF@l9)aAze*^lUbQ>;o8x<(zqqZ8 zfqnCG+w#lezpI6YNIrEc6}W1o|BtZ?dC$iKKd^ZCRMQ_elo zLMY1Kqbjurzq!Ph&)+#(=pGUq2hl05p^}Qw0!sWaqpntKpV+4;MP<4?T)%m-_|pwp z$8|mS#D@$nKE*6~fcAQn>>XQel~`e{bOuSkF_Va%dqFeX{9Cq?N%ROCwi(@$0Ei0-Lxkt%es+xaS+gW>U@ z4ki?j_67#^-*vc2Y*i0Kb&NYwi zWn=hoA}nFXk$qAyKS{5UakN`xDA4PsNSXpXOBnH^3E!h}@G)`FGA`0l`&^xMjE>+32l4`=jJGooZ6? zN3*4RIi5}0*BGO~1&e4kZMeh<;t{-6hRko5dQXooT0H4&;j6IL{l`NxLU0m;AiPO+ zWvNbNVYz}MTD(lUr6lFqbSxwOP4fPv8W<4WR49mNoHVHKo|U00Na@EGN}m@>Z`cM9 zYQdpF5+olFGHOx%?oj=t|7O2CPwMxBXQ_U7=*33Ap~uc<`Yjgrt0f|`x;o@+Vm>j4 zXlab=lU!|+3~{h+l7Q8s|9~F8G>|7_LI(0G6LOX-jPKP#FiUL5ikF|GCS{>1>Tr6o z3xU!w%2X$^`r7>>O34PF;{Q&TpB5(d0hto^3)l3Jdb-n#OnFDjt80xl1HO=lUAn(V z`80lHUPZF}z-%_NSN$s2m8Q^~h_NnoS?Yx5r&HC>jm$iz*gIEU4NIf{QIVtsO zAt7akI2&ChB@EZ0wdzs14mGPsb?_=)F!DvY4jEZO#^+2gm=~_@AqlFA^(RS=4?<+$ zOdBk@sEwM$Tnsj%^hhxv>D)I#}Ks=naxdygdIm9M^q8r2(DnY>^$j!{mu z_#u=h_O*B#SQ0e@aefZ{54;^^R2CeFq)c0A3_tQu+?#o9j8;i{G$hTr@GVkrIp3o$ z-pYAv4ZXo%DSDgy@~<`YI#1Td=s)-oH^=sDsY2i@9%J*af-1`;@Ao5%d$sVva8Q725d$_bLpZVO3; z@{fMjNZsM}v-tt6^Z5y^m)W<77fSHNt=i998a5*fQ%h@Tn|xrz@=IBxLm`DM;gFmI z@J&X>w`Su_2F}}N<4p$7n=xnutXvXgd=pUdt%Elly>xyQZ^MSe%_DF--^*qX?Y)ff z8|zg!w9pbd6Id_pS$t5DWPOiIMQx##lFmO@k?4XCQAntoOuwKor|8|79*)%6Lsv3-T)MG?VhbJt& zR`@=V#Kl0Erev2LBUy+QBf6&DiQ=EieBpaWqL7@^@c`9AXRszc6}QgTLWMk;P2w^d zQ7DdgE5}~-Qja*fD(!0Y9=dPR1MHU<)Sz7K8D)xe;`?;c~`f-Yn%sX@QbHt@3Do_UfSM5u71w|jXv#^^`3%Wf5&)21~y=F-Lr2= zf-Cxl61CeW@PHNl1~5y0Rbcj%|2+K zRk##GN>=vLg?E>*GQQa>TaJF-U1&?v@GR2~_9lSlbpCH?15 zPGTQj3ZsEextk zDx*1m_IyVf?~kf?IFDr&s;8%b4;&Q=Gw?3$4pL*&FQX&+lXo!eQ|!0t@$Wyy_|5Sp z;h*&Uh~Sa_pBM_|c@5+gL!pNad^Fpug3RhJ#o`*cp0>Ao%VTcvsHaZtZ-JY>hlpqJ zOhp!tghvtQYEPty^L~^gRu=&uP*Y-6ektiFEwY@^*&Dc%Vy`{8Dc>HgYPScw#@e-s zn}S`M_JGyMRBg3K7j6iCyf@gIPkxohp-udN(AhRE_&(IVxg#6q_nt|vs1xJpfeYHI zgydKCGA7<+8coU)^{*6@OwqSFupA_crq=KU^8jHevczPsP)~BFhPL8vUJZ+F-aBfC z7$({3WZGufUh|B>hnsvf{;i{Nc4C2CkkVR}1&Yo61|5%%a;I}zbcj=!6t8s$k*JC2 zvU5uG^3xAI>64zuu~D76}~PyJ$48GqN&o z6X86vb_8Xz`Qq-CJdBj%O0F2m+u_LD93Q}EIf8WL?TQnC*Dgne4#K!&FHkXFroeXv zBtJkWOcs@ed0+@c;@v$X0CC|;o>{vs{1~@74TX5viIS?@u9GppMQ8t39o&ZsvK-`g^wHc=fRZgAAP{WGlZY{LQduj zhi@=E`g503M6MAU2CELcPW(_C@k4EMJGG)4%eA6wOUzsU;(g%QWxqCrj`<=Ebvs~0 z&{zJDOV6}hUIC9%$Koyei&se_$83xGU=q@z>ezu~Vg|Uul4>V_wmBPiB5)-LGSnWw zjX!o{re>Qnb!_jVE6L_EXG&&bH(JBa+L5HzaBSS1O$lr#oOXn_dh+DL z7GIy(Ot60x5t2GhH36`Gc`!gu>;}kzmZt(o2Q5AeYpa%yUVPdiQd*=xb5{5ZgZ3}xvL?+c1ZLmPw_CgE+??@>3Bi(CmYn;;K0TY!|x`mI`Z+tyee(Y zy99ZxTZ`={yh?mP@*{_MzPLm(WJ?>>OjOtK=6N?74!cR40C#w&+61A>9J;vMHUR@p z*IUFq=*H@%%X3v-Q*6 zDp0I*+UrVDyjq&;&jmAq-C6PEiKt_P%Wk3VmkzO(;zrR3K#Nmmy zsu$(XUGCg#ue;M7xvaV=yLWbbWq#dF=65*Sa_si(FXgM5Zm%0&-87_kU{ibGc;4cH zW+wNMeGAF;Cev738s9w%HFbMkKhavx^Y=0H$gEgfYV*9|sdQz>qBAl8XfP}W$fRgr zDY`*>Q2aWG8YlNGRO}$Wq1>~8c~GFTA0OZ4BZ1(VKc5}qijA9uc1P`t4%#=BBfJEc z4rC?fdBg2~LNB%u>fI)NvF`9)<;HmH66!f^!?H_bzo#M>2gAZSwb^Y#A^080k0o|9 z_@vb0@oAh6`0E8VMx!sQE2Q$%tQ(g0L(dyOUm|=4k0r!;yYQ2NDNNy1XCp1^KYeQi zg4Z4oHXou^JH$qzwt}OwPlSuO_5iH8+eQxt#yTa9_^+xK5eLLxb*Jv83M#MdUO5BS zFX2m)TS()YM7+jK2E>wRO1t%QF;NMOv-)!tV&%rq#mG!h$Wzf-cY0*{z(mXPqhB%f zMMGQBd&IN(3lv1F4Qv$BncIbC>m&LS)Fxa88voEGTCQ>S+`6+cp5PcF%UH0sX!VB5 z!F5G)-w{!_hASlxp<>SrYz%QfOmpDa$D;AYQBM995tyZVhbymrlhQ;B0xv)CI3H44 zi17BtS=fgdJ7^yKdt@42rU%Q9eoe1yM|&cZN@Q||0HlY`VDB14as9F%uvNc^EtwWd zAcL6$k`cx}llRCpIzKH}3y!1`jHH@|K<8T|x~aAX7Rj^pzF^mN+Cy1<4R(2rBZy$v zG~*II;c&iHGq~ySCL+*3%qFz_LkoG6ow)=Rn?y`*c15pgmTmE0%7~!wbNSI6oAsYB zNcC@Cx_^yJb7RwZ4R%#)4gFQy6SW305Da#?wa^LyO!y#HT>3v~-W=ah3Wz!8ImyP+ zh!j3WLn=0}UPem-2DuhAGsnY{gPJXRA2Y{0E`UyRg1Bo8&J__pWVH0&r-}7 z;Q8sk9b&4aa4A4D;kTEhz;Und@=WN|Nn!F>^w{?e_{j+mCDF&s;D|;b`Ug@n%S=o) z_<~ucLCOS$559+|#I%92g_6<@7CVnBSZJYvj4cfh-z8wp2GJTt3s>>eu*Zc%G02&O zk6uF~<`9NRtp>y!Z_JG;Q(6O0e$VPRGaV7wsm}a2PjVKmPM_6;c&-Xe3m(57+*EWi{-nmto` zl}oRLS=1WVlbF#X6)RZm%2bVujT%?#w^E}Ck58nQ$TTu=rQo%aK@MZRJgfyFEa%#7 zT4;hQSA5>-qWqwX7CrxG(qVB@r)r5U?p~x4&Q?`Li;tg{%DVSqHMWLh;0tZWmn4zp zPC)Q2`3&rAycvU{w)pp&=61!tV7ijIT;$p%xtLswelxjfceH{)=qmb^%ttp0pH0>V zhcDz)k!-mzYy`zdB~a6LPv4X*TufoV6lRTD^lxucjUe<)^bH9fzuJFUGT&tKT_^dn z$rs1^)F8SrIE59G+((MPLUGKW*mn%L`*3c-L8p)Ex)xf*mMVB5g#|bKbJgkY9>z>H zCr~gM09mYhp@k-?{MVLnML?&T#phH`YJA~t1=-MWa+qDw8h&on^CI=c{5-45ml}yH zQ4U>x@%}5{x#<&Q)O8;Vb9l0MnmExph6IK}FOBKTZN_7RsJ9*aVv2U}B-hD}0@?#m4IArzy%n@;obf6nVXcFA8tD zV=hfv)y$@fZ{l18)3`|k$A4vIKOdQFTWa!4O=@Qxl&T3|T(!-segAK=?=^1-b`8)T z7^?_&VQ>)CCus?ptW2o>fMnP8ZSzvgsa9qS$|^>t<_eofQsB7Ve`T_;>`WI+VTIBU zQCR5c7_w1ijGF`(aUXAl zwf1PCT1gkyo=+({uRlq6O1UMXp_tE^L_UL{v*EoVhuYD?wfqqXLfn#jw^ zOy=m{rI4|Hu1uHtC!|LvrQX;p+0{c^B}sz7pPz!panOZkf03%;>$%1xJW1YEuD6X` zcc*f_L9W<~l1dBjvV_cOzb#$LCo?`-N(kN1pD^p4WOnQG5^C_9HQb3oQS4UpC2j)La&R6}#a1LGXXce8Zv`Url_q?aX0ZK|tz5)Ne*zunBZmLFh01V8?F zctCy$_`;PC0$O2vU6HFfA(&|6(t*0ufbJ|mp0Qy6L>sOm5^(ykd>O@;sebfVRj8>a zVj$99Hya_$I?+Ev6d@|R@`J!I>nwU6|FQCwx`YNKlGwx)gKw2#sl8_A_ZZe1#o+&! z^dpq;kB^-Y?18ZXhB75_X4Mrj*6SFBOZ8m@_s|-aNWNe_cZi1WHnmksRJosvB>|Vl(*W) zSQoU}tE?7%!$s1^X072&s*q+*XG4(Mo2XqdNw{CsXq|L_)l14WGTip1>-Ta-5KNXm zLcQ+rtL`w)kPI?9eklF)hL1>n6O6qid{inOZC3g*1w4^^8CSx0CiZ-u@TYQ-`v5-U z)FjQmN{*D57??-w-((Zg+eZ1kvZ|?`c%{ZHjDjsK%~xcqh#!P-;Y(5Fw51r+7q3qN z>>J9P7ab9%H#fFbbtpZb+w%alS_muBh1$}ES|=huJjS~kB~AxSjL8v>^OD07KIp%sGfaa;|9ZC6>bJWheZh1w zLI=agP0S_QNTt>9?`xtsq5Ux)Fh)aU(85Qh0=4M=rYi6aK!7GlBUQ=A%=m&h#ilDqkYaD7Zd>BH3(aKiy}UiY)8aQmNY{ zRgt4+o`f99`7xSLJJHFRN}j5<(9hIb0TdwY0H{H{g{@XMC4#r(vgjq;mex=x)e*jy z6^nivn9Ru4-@{2lq+5?vA{yUX)uvc@R*+-|-BQRFavggLO2&qiN>S=C-NW!WgnR~+OFWh7xmP{?N z62cUgv~V$y|BP_^Xz?@xExt&Mx8#12(1Pdm==hNwdZU*0GX!fhN7pHBr#MccOYq(k zEb~$$u1yzwk&K!6^qJJIVCPL|dPHgm;s@v#4GO2TOp>~DIy+?2qlN#Qs-Z762pzmS z-Gb%N_w40Msp8wNNe!=v8dAU>`I(_2_(p1q^cGRz>ZH!8?tHu)liH?W z*VS6XRTK?&U86PRsE1ivLmA~#xYi~-Nwn}cm^v6hy_QyEPpA1m)`rpJRg#5AhW%=d zDN~e@x#s}7lKJ$$=>gQF+f>+BpUU*{)u~aAkcI&BB*JGf+W5Uat9~L?YIVBQ*K{d! z2H)H>Ez}0rk^2>vI6IF>`ZCZ)J5l6z>9 zR|6U!;y+4`U_K+*XEjF*8s7#Q&y9V5MjC-GX%a4}__t&t?@#$@Xod&bs^a|{xgo;nx1<|f&jUyq z{o6TwgD>k?bGSEAC3Co$pOXiQQuc+sCibUt)nl<_~dZ+H>F-{}u@}+xP!(*VCJNSjQHYuX}&Pw(12GvI` z^cV7&JInOc&f=uJ$A7+gl3}jXbM_-2)^}O_Q`p`Wg>B(TFFuUCQ~jr>@`}J3L12v| z)Ev}v)duFDYBZsRu7_mAYs}1XXVcuHNrV4yaH8U9|LUN$fH2c z^y*QurMt4hn!xJ^by8*mP-Ji*?_f?%Ub=HjAi4uair40{DvB&_$AikwQojfpV<&9(Ug<9xkNjDCS z2>y9`5+J2&t{@?C49|^4U#wPwpxCcG0t_uwF7+!$SE!~~X+lxQF;j@8I<)kCQd5Mh z%pj&ot?Ec5IsMnejEX*y;;CkY?0dp7{c^LJExgNgR=^Y+Ye@^eK$_x7y~ zyTd0Kz|>?l)oP}U#Y>FNZ>lWu^E2}%^9}Bn?;`T)FHe??eWTkX4hyyE0-#0}K4N?Cn#Nj3sdJGh=Op!GF z>*6+LU}92*={8zG_6w#wUr*haYm;OukG`BlrY3#|nYzyC3HIl^_4#bV-HFt?{~IEe zw#w|j)}9jdR3MQ6=8CJW5ZT03t(kEftmw~=2_tkNWM3^gg%K7Ezjz|=I#|6F0E zpu8Lg?)X6HlMXNQXGv#K_=t9{7Q}^nQw!o1zJ1q%z`yLE9y!}+Mo>Q4i9yCvj20Hs zZGEWOkw2>DMJD+ z$d4#Ep_b%MY*0~aKvfJsG&Q=U>Ojsfl23o_5DnsEg29n(SU20F1qo|dWMfIJ` zEcYts>^-6ezL}qs_labBuQ(qHuA-}YQ2{Ej6qB%!objq+hTKEjl%=F9PAwioH>&8=3U#hCkbioK7xJOv- zh2jP-q2C(bB_GPZW{9{%p6-&~N6uE-X*n+@w$Nt#;Z}Hh*)Uvd!AkkJ%ss4iTC|c& zD9=V4%?YkJw@eyH79{XVB?2+o6&`szfdtQ)ZSBGFVppn#ej#5X%b0Goq+Kf8(RJtW ztN#Y=nyGKyFX^~}xWa=x%H?y3n1-3P+g0uQl~T1)r)-#Dol(vAsD{Wz2G%GN%U-MM zD~x}g#+rLFDSB*yQ$}hKWKrxrE;$jTEV_p;s#nAhZ|g&frFC+yC2nt;yE$1v@N6*! zC^w&*S>>qs8+e0T6S-+w805O&SEGcIq1z9IZQ$9DsN=lC(N<;$G- zO!ZqHm)i=v=G4ZkX)(d1EwVYV6l-jhCbZC_w4mO@>b;>sz1MfyUtGRA5I<9u^~HOu z-*fP!I>vX4{Y7p`(q8mh7KqWdavk*Qj>xSNno~#3cf=9i&#ke6#l4Bebj`)0RMY_9ZzdWe}W4g2zay%UWBeV7HVP?x*H*sU#ysCbj`nnN}L7()TQjTJUZ&po$_VmkHGy?}*%6>Mc7`cMTaQe`z9=WbCR|Q^+~1 za8njhL7T)uxt|-CphOEFJCv?GlZlP3rMx?c{bR8`*me`pz*w_FNM?c$@e63~hK!!F<2%Uh(4qZRpFgX)U*6FwL+)!NhEc9@WeU3%k0Zf z82CC>;p>TlWtC1KFoUmoT0>B4ov{E3srC9ygs<$qMPPt$b?mT_S)uKT z3w$#vm_}OzUCX($+CbZ}G_26JzyYz@5mI2iPoCetU!Hvn9btkstT`E7FG!*5np2`{ zy`XCc==wQ`hBDMd*Ygy*b~UMnrV$0wTXCTFpGNl$^SbbEQ8@po|94=f{}hvP?k?ed-|414?$$08? z8aJrH*if2Yjc1QmN&CLph_t zO~OA%&l*7W-ii~x>2f%SykSU+X?f#r3NSN|B_@>`yl z%z*%ztVvXXkH`?Rz#08qRht%?2x`b|4ko9gY*A_KauU81(l>U8^aT)nfwV6J(jxv3 z{9H}5m7kL#{WKhg8n_lZAc&mOj>fw|`?JqZ1?@X1JSq`;o`T77Elk0ftyZw>X__@) zd{w%s<$N>X{1++~I6J=s&Uq99&R1u`d8OF88E}q|6>!~xN)P0ZU!3fPtdq;7VFlgS zDpeh_F7z=*Rsn8R;1g?44M(Ppwn$i}azm|g(wr&Rm)3gSi(FD7u8!Fad*G$&2 zT7i2$OdaG)mSpE->VGNllnqQTRh=V>FfT^2-%%{~Tt)%07?^l~0*a|RGA=b^N(9I_ zvk7DrT1=rUr4YLc^vSsRDYlNn-R+R(B)cW7+h=hK45EPkvt%p&auX+%9n!GO-0w;C zIg2p*;{^)mZ^ zmU_hYgQc}G{*>7Vt-&J8C0cla^jg7Y&sdZv`-RIfY<%R1@<+)fl$55IAJ`=zF)b#% z;nzfQF5yVUp|m%jkOWR+ew0j2!+)q{lf_+%7;-gQ!@nd$_{T29GEUu{9Pm0z%&5a0 ztNI7RTfm%uDJ?|&I)O;fR)I+W#5CY_+Tn@(7~a>*9k&~~yJL*EY%2kDt0bOsEZRuzAV;jcm`gpNq0HGSw%8If}pz71B~KhUb+9PVEo``Cm>Y;(^czbIdb zyC&nLN;Pbr%e~RN62ywVis!27(cxp%;K?{fMRmQB04kALRdUyTw32A9ZFLt;RS$$l zzJspXo5s4M*Gn*0ByAv2fG4i+E$$hzw#G+$qXk6Kh`EAC6F!%_;x#RJAw?K!KQ+{T zYN-ADImh)D`R>}sm^A97o}rbtX-4*Zpx*x4jrZCmgt%fZDV{=@KA!oR{8 z87@lVOE!+Tnv;CVE~AvI7qMSe=-2&5P|F>8J0y53o?_$aM|S*7{z^96aF_i(6`$9Y1S+q@VPhgv zl{@@({0t+|5Sj}K#Jin+Q43ul--6%vs=JWCxGzqHW-VAg;Ra0Y&*IVD*2-c_*w+i4 zHE(#iPkXV?=y^9#dd>8#;K6AN@>+ZssxrQ-)WVkfw1!O-Sw3OjJgRDFS2*-(>{-&N zk~1?dcoFI-S^dN8>*YCqZeUp!-QCU-HJUP8kLL%L_2R=8K6ub(T0dtRK(KPTpSIO! zv*TF9a<8&3>5Pr11;qhe&V#)v7e;lrvtiFYdHAJRV}{JO3pX<0Ut>fcJ-&C*T$wQ= z`Y2&j^WGG1zndwLZOoDxdh|nMmUc_%(bwZ1I)`nTc~K4H$f+G3SeCs(dq{NkV9jkh zSaTL#rlMqM(oOMV`+DI=)V|LLBc3QM$w&BnI{lirY=>YYvlV+0nAkVulNlFMywHy4 zX%EZ;TRA{Ob#mkrEii*OXBZDCU0dPg*-OZG6|BkLG#IBKoaaEwjR?BLiw%A_)DwP} zan8hfZvTV;zH?V-Ypw$^LB9P&RNW~-i7x|O*WozVhU46aIL>`|nhMEEkk-7N&b;>= zVH`>Ls?eD*#g6cMT&5gs!+Y*Sd>y$*=9nXTgY-3DTXC&`L99TOQX`rj#`D|BXz(4< zRZnGeb2beI#;LB}8r~7ycTz`3ckifjQoSVA)8M{7E&DS1Y0uj#{X9eZiPxVaZ%245 zdSQCmvacX-D}8h&h@G&6?jfQ8o8U307J3{sk1gd7pcm)WMME&wlBoc(=gst02PVuk z96+%CiWkWT|GCDh;ER7?(`0KU82TD>=7}!0y4zl*`b2!VvEpJfZ%vc4B+HvdmMpT! z%A&gL4MwiYLD~aC#0e^gdy(Mwt0*pT$TD$T7VQwe8@aKp=%t0kJ=a)0vEzVK)Iv&) zcvG&RiQR@{6F((kdnp3Lz-@-Q^-nAfbPvtgRvC413Qb|+$>ZQK>y4KEHsbv{|6#{@ zwWXuP5%F&E=C!aD^13hAo!5e|Ufnz#)~wm$YBUS8x#mdCKu4rzh%1b;%fXIeQ>iW}1 zRaC})?g?+zfB&Soc^w97?2fpjv5l2_!ei(LU0H~Q;C!HP4_R*`xrPnIH3kDPVG=U+ zT$>bKo0p_(Glj0@QmxGR@0up}lG&S2kD1_J%$^Xj*m&kp3*qOU@K{^CWpeusJG!{e zHOOJ3Jur5p7V68>)M!Dz{rQpf4|c#M6bVPbjjYE#u>k!*mCRxa>=#GmPgxPQM)YuK zldujmC3rZiH1CkY{qYpLfym+iVuk+8z(!w!FWh#$Is?3>-Ar~?Rj52 z!|`}O-dV5zV!eI}@*C9VH5y;Oe{W)_CAe`z@YrDX6??R<9km3$e?0BQM;p&g2?tn} z`;LE*J$g0U&-shba;;rP@0aqwOZ#nmU7@>TtFN3z9UBZtpj*qK1>e-#;-A>nVO4A% z@G|DeTp2S+FuuVQxMJ0*SF>Yr8qKUU1*ODrTVY5c7{Fca@>Z{Tm42vK~wa z7k`G&ddW)SwM26skgNncFEU=|E6mxbXUVJegsb8Z0m%=MZ?XDtP>($&9)CHOWTS@X zN&E)VF8VOp5w3~|f2wBtpnm?ZRe?|FnLQQM+q8d;TT zXiVSpD^=AU>8cqzyN#28N`dn-`z@aVp!f7oN)%F2p;HkWx&SKMjq zItFPg>g^!&x{krxiVt~;eJiW&Pec@nWH9Yx|h zZ<@R3RClVKZa3~!%eZZ>CV4wp_e<5zAeg#bs%Bg$m%4E79J?83J>$YTFQE;b88^0Q?9vU2gR9P&V;qzwf(T$;NdR2Vv$ zz!JN~*Jo67>^